Interne versus externe fragmentatie
Het verschil tussen interne en externe fragmentatie is een onderwerp van belang voor velen die hun computerkennis willen verbeteren. Voordat we dit verschil kennen, moeten we zien wat fragmentatie is. Fragmentatie is een fenomeen dat optreedt in computergeheugen, zoals Random Access Memory (RAM) of harde schijven, wat leidt tot verspilling en inefficiënt gebruik van vrije ruimte. Hoewel het efficiënte gebruik van de beschikbare ruimte wordt belemmerd, veroorzaakt dit ook prestatieproblemen. Interne fragmentatie treedt op wanneer geheugentoewijzing is gebaseerd op partities met een vaste grootte, waarbij nadat een kleine toepassing is toegewezen aan een sleuf, de resterende vrije ruimte van die sleuf wordt verspild. Externe fragmentatie treedt op wanneer geheugen dynamisch wordt toegewezen, waarbij na het laden en lossen van verschillende slots hier en daar de vrije ruimte wordt verdeeld in plaats van aaneengesloten te zijn.
Wat is interne fragmentatie?
Beschouw de bovenstaande afbeelding waarin een geheugentoewijzingsmechanisme met een vaste grootte wordt gevolgd. Aanvankelijk is het geheugen leeg en heeft de allocator het geheugen opgedeeld in partities met een vaste grootte. Later zijn er drie programma's genaamd A, B, C geladen naar de eerste drie partities terwijl de 4e partitie nog vrij is. Programma A komt overeen met de grootte van de partitie, dus er is geen verspilling in die partitie, maar programma B en programma C zijn kleiner dan de partitiegrootte. Dus in deel 2 en deel 3 blijft er vrije ruimte over. Deze vrije ruimte is echter onbruikbaar omdat de geheugenallocator alleen volledige partities aan programma's toewijst, maar geen delen ervan. Deze verspilling van vrije ruimte wordt interne fragmentatie genoemd.
In het bovenstaande voorbeeld zijn het vaste scheidingswanden van gelijke grootte, maar dit kan zelfs gebeuren in een situatie waarin scheidingswanden van verschillende vaste afmetingen beschikbaar zijn. Gewoonlijk is het geheugen of de hardste ruimte verdeeld in blokken die gewoonlijk de grootte hebben van bevoegdheden van 2, zoals 2, 4, 8, 16 bytes. Dus een programma of een bestand van 3 bytes wordt toegewezen aan een blok van 4 bytes, maar één byte van dat blok wordt onbruikbaar en veroorzaakt interne fragmentatie.
Wat is externe fragmentatie?
Beschouw de bovenstaande figuur waar geheugentoewijzing dynamisch wordt gedaan. Bij dynamische geheugentoewijzing wijst de allocator alleen de exacte benodigde grootte voor dat programma toe. Het eerste geheugen is volledig gratis. Vervolgens worden de programma's A, B, C, D en E van verschillende grootte achter elkaar geladen en in die volgorde aaneengesloten in het geheugen geplaatst. Later worden programma A en programma C gesloten en worden ze uit het geheugen verwijderd. Nu zijn er drie gebieden met vrije ruimte in het geheugen, maar ze zijn niet aangrenzend. Nu wordt een groot programma met de naam Programma F geladen, maar geen van de vrije ruimte-blokken is niet genoeg voor Programma F. De toevoeging van alle vrije spaties is zeker voldoende voor Programma F, maar vanwege het gebrek aan nabijheid is die ruimte onbruikbaar voor programma F. Dit wordt externe fragmentatie genoemd.
Wat is het verschil tussen interne en externe fragmentatie?
• Interne fragmentatie treedt op wanneer een geheugentoewijzingstechniek met een vaste grootte wordt gebruikt. Externe fragmentatie treedt op wanneer een dynamische geheugentoewijzingstechniek wordt gebruikt.
• Interne fragmentatie treedt op wanneer een partitie met een vaste grootte wordt toegewezen aan een programma / bestand met een kleinere grootte dan de partitie, waardoor de rest van de ruimte in die partitie onbruikbaar wordt. Externe fragmentatie is te wijten aan het gebrek aan voldoende aangrenzende ruimte na het enige tijd laden en lossen van programma's of bestanden omdat dan alle vrije ruimte hier en daar wordt verdeeld.
• Externe fragmentatie kan worden gedolven door verdichting waarbij de toegewezen blokken naar één kant worden verplaatst, zodat aaneengesloten ruimte wordt gewonnen. Deze handeling kost echter tijd en ook bepaalde kritieke toegewezen gebieden, bijvoorbeeld systeemservices, kunnen niet veilig worden verplaatst. We kunnen deze verdichtingsstap op harde schijven waarnemen bij het uitvoeren van de schijfdefragmentatie in Windows.
• Externe fragmentatie kan worden voorkomen door mechanismen zoals segmentatie en paginering. Hier wordt een logisch aaneengesloten virtuele geheugenruimte gegeven terwijl in werkelijkheid de bestanden / programma's in delen worden opgesplitst en hier en daar worden geplaatst.
• Interne fragmentatie kan worden verminkt door partities van verschillende groottes te hebben en een programma toe te wijzen op basis van de beste pasvorm. De interne fragmentatie is echter nog niet volledig geëlimineerd.
Samenvatting:
Interne versus externe fragmentatie
Zowel interne fragmentatie als externe fragmentatie zijn verschijnselen waarbij geheugen wordt verspild. Interne fragmentatie treedt op bij geheugentoewijzing met een vaste grootte, terwijl externe fragmentatie optreedt bij dynamische geheugentoewijzing. Wanneer een toegewezen partitie wordt bezet door een programma dat kleiner is dan de partitie, gaat de resterende ruimte verloren en veroorzaakt interne fragmentatie. Wanneer na het laden en lossen van programma's onvoldoende aangrenzende ruimte kan worden gevonden, veroorzaakt dit door het feit dat hier en daar vrije ruimte wordt verdeeld, externe fragmentatie. Fragmentatie kan optreden in elk geheugenapparaat, zoals RAM, harde schijf en flashstations.