Intern vs Extern Fragmentering
Skillnaden mellan intern och extern fragmentering är ett ämne av intresse för många som gillar att förbättra sina datorkunskaper. Innan vi vet denna skillnad måste vi se vad fragmentering är. Fragmentering är ett fenomen som uppstår i datorminne som Random Access Memory (RAM) eller hårddiskar, vilket orsakar slöseri och ineffektiv användning av ledigt utrymme. Även om effektiv användning av tillgängligt utrymme hindras, orsakar detta även prestandaproblem. Intern fragmentering uppstår när minnesallokering baseras på partitioner med fast storlek, där efter att en applikation av liten storlek har tilldelats en plats det återstående lediga utrymmet på den plats slösas bort. Extern fragmentering uppstår när minnet är dynamiskt allokerat där det lediga utrymmet distribueras istället för att vara sammanhängande efter laddning och urladdning av flera platser här och där.
Vad är intern fragmentering?
Tänk på figuren ovan där en minnesallokeringsmekanism med fast storlek följs. Till en början är minnet tomt och allokatorn har delat upp minnet i partitioner med fast storlek. Senare har tre program med namnet A, B, C laddats till de tre första partitionerna medan den 4:e partitionen fortfarande är ledig. Program A matchar storleken på partitionen, så det finns inget slöseri i den partitionen, men Program B och Program C är mindre än partitionsstorleken. Så i del tion 2 och partition 3 finns det kvar ledigt utrymme. Detta lediga utrymme är dock oanvändbart eftersom minnesallokatorn bara tilldelar fullständiga partitioner till program men inte delar av det. Detta slöseri med ledigt utrymme kallas intern fragmentering.
I exemplet ovan är det lika stora fasta partitioner men detta kan till och med hända i en situation där partitioner av olika fasta storlekar är tillgängliga. Vanligtvis är minnet eller det svåraste utrymmet uppdelat i block som vanligtvis är storleken på potenser av 2 såsom 2, 4, 8, 16 byte. Så ett program eller en fil på 3 byte kommer att tilldelas ett 4 byte block men en byte av det blocket kommer att bli oanvändbar vilket orsakar intern fragmentering.
Vad är extern fragmentering?
Betrakta figuren ovan där minnesallokering görs dynamiskt. Vid dynamisk minnesallokering tilldelar allokatorn endast den exakta storlek som behövs för det programmet. Första minnet är helt gratis. Sedan laddas programmen A, B, C, D och E av olika storlek efter varandra och de placeras i minnet i den ordningen. Senare stängs Program A och Program C och de laddas ur minnet. Nu finns det tre lediga utrymmesområden i minnet, men de ligger inte intill. Nu kommer ett stort program som heter Program F att laddas men inget av lediga utrymmesblocken är inte tillräckligt för Program F. Tillägget av alla lediga utrymmen räcker definitivt för Program F, men på grund av bristen på närhet är det utrymmet oanvändbar för Program F. Detta kallas extern fragmentering.
Vad är skillnaden mellan intern och extern fragmentering?
• Intern fragmentering inträffar när en minnesallokeringsteknik med fast storlek används. Extern fragmentering uppstår när en dynamisk minnesallokeringsteknik används.
• Intern fragmentering uppstår när en partition med fast storlek tilldelas ett program/fil med mindre storlek än partitionen, vilket gör resten av utrymmet i den partitionen oanvändbart. Extern fragmentering beror på att det inte finns tillräckligt med intilliggande utrymme efter att program eller filer laddats upp och urladdats under en tid eftersom allt ledigt utrymme då distribueras här och där.
• Extern fragmentering kan brytas genom packning där de tilldelade blocken flyttas åt ena sidan, så att sammanhängande utrymme erhålls. Denna operation tar dock tid och även vissa kritiska tilldelade områden, till exempel systemtjänster, kan inte flyttas säkert. Vi kan observera detta komprimeringssteg som görs på hårddiskar när vi kör diskdefragmenteraren i Windows.
• Extern fragmentering kan förhindras med mekanismer som segmentering och personsökning. Här ges ett logiskt sammanhängande virtuellt minnesutrymme medan i verkligheten filerna/programmen delas upp i delar och placeras här och där.
• Intern fragmentering kan lemlästas genom att ha partitioner i flera storlekar och tilldela ett program baserat på den bästa passformen. Den interna fragmenteringen är dock inte helt eliminerad.
Sammanfattning:
Intern vs Extern Fragmentering
Både intern fragmentering och extern fragmentering är fenomen där minnet slösas bort. Intern fragmentering sker vid minnesallokering med fast storlek medan extern fragmentering sker vid dynamisk minnesallokering. När en allokerad partition är upptagen av ett program som är mindre än partitionen går återstående utrymme till spillo vilket orsakar intern fragmentering. När tillräckligt med intilliggande utrymme inte kan hittas efter in- och urladdning av program, på grund av att ledigt utrymme distribueras här och där, orsakar detta extern fragmentering. Fragmentering kan förekomma i vilken minnesenhet som helst som RAM, hårddisk och flashenheter.