Externe fragmentatie treedt op wanneer er meerdere vrije geheugenblokken zijn die te klein zijn om door welk proces dan ook te worden gebruikt. Dit kan gebeuren wanneer aan processen geheugen wordt toegewezen in blokken van verschillende grootte, en het resterende vrije geheugen niet aaneengesloten is. Externe fragmentatie kan worden verminderd door een geheugenbeheeralgoritme te gebruiken dat geheugen in aaneengesloten delen toewijst, of door een compactiealgoritme te gebruiken dat processen verplaatst om aaneengesloten geheugen vrij te maken.
Interne fragmentatie treedt op wanneer een geheugenblok dat aan een proces is toegewezen, niet volledig wordt benut. Dit kan gebeuren wanneer het proces geheugen in blokken van verschillende grootte toewijst, en het resterende vrije geheugen binnen het blok niet aaneengesloten is. Interne fragmentatie kan worden verminderd door een geheugenbeheeralgoritme te gebruiken dat geheugen in aaneengesloten delen toewijst, of door een compactiealgoritme te gebruiken dat gegevens binnen een blok verplaatst om aaneengesloten geheugen vrij te maken.
Hier is een tabel met een samenvatting van de belangrijkste verschillen tussen externe en interne fragmentatie:
| Kenmerk | Externe fragmentatie | Interne fragmentatie |
|---|---|---|
| Oorzaak | Meerdere vrije geheugenblokken die te klein zijn om te gebruiken | Aan een proces toegewezen geheugenblok wordt niet volledig benut |
| Effect | Aan processen kan geen geheugen worden toegewezen | Het proces kan niet al het toegewezen geheugen gebruiken |
| Oplossing | Gebruik een geheugenbeheeralgoritme dat geheugen in aaneengesloten delen toewijst, of gebruik een compactiealgoritme dat processen verplaatst om aaneengesloten geheugen vrij te maken | Gebruik een geheugenbeheeralgoritme dat geheugen in aaneengesloten delen toewijst, of gebruik een compactiealgoritme dat gegevens binnen een blok verplaatst om aaneengesloten geheugen vrij te maken | |