Extern fragmentering inträffar när det finns flera lediga minnesblock som är för små för att användas av någon process. Detta kan hända när processer tilldelas minne i olika stora bitar och det återstående lediga minnet inte är sammanhängande. Extern fragmentering kan minskas genom att använda en minneshanteringsalgoritm som allokerar minne i sammanhängande bitar, eller genom att använda en komprimeringsalgoritm som flyttar runt processer för att frigöra sammanhängande minne.
Intern fragmentering inträffar när ett minnesblock som är allokerat till en process inte utnyttjas fullt ut. Detta kan hända när processen allokerar minne i olika stora bitar och det återstående lediga minnet i blocket inte är sammanhängande. Intern fragmentering kan minskas genom att använda en minneshanteringsalgoritm som allokerar minne i sammanhängande bitar, eller genom att använda en kompakteringsalgoritm som flyttar runt data inom ett block för att frigöra sammanhängande minne.
Här är en tabell som sammanfattar de viktigaste skillnaderna mellan extern och intern fragmentering:
| Funktion | Extern fragmentering | Intern fragmentering |
|---|---|---|
| Orsak | Flera lediga minnesblock som är för små för att användas | Minnesblock som allokerats till en process utnyttjas inte fullt ut |
| Effekt | Processer kan inte tilldelas minne | Processen kan inte använda allt minne som den har tilldelats |
| Lösning | Använd en minneshanteringsalgoritm som allokerar minne i sammanhängande bitar, eller använd en komprimeringsalgoritm som flyttar runt processer för att frigöra sammanhängande minne | Använd en minneshanteringsalgoritm som allokerar minne i sammanhängande bitar, eller använd en komprimeringsalgoritm som flyttar runt data inom ett block för att frigöra sammanhängande minne |