Intern mot extern fragmentering
Skillnad mellan intern och extern fragmentering är ett ämne av intresse för många som gillar att förbättra sin datorkunskap. Innan vi känner till denna skillnad måste vi se vad fragmentering är. Fragmentering är ett fenomen som förekommer i datorminne, så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 också prestandaproblem. Intern fragmentering inträffar när minnesallokering baseras på partitioner i fast storlek där efter en liten applikation tilldelas en plats det återstående lediga utrymmet för den platsen slösas bort. Extern fragmentering inträffar när minnet tilldelas dynamiskt där efter in- och urladdning av flera platser här och där distribueras det fria utrymmet snarare än att vara sammanhängande.
Vad är intern fragmentering?
Tänk på figuren ovan där en minnesfördelningsmekanism med fast storlek följs. Ursprungligen är minnet tomt och allokeraren 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 gratis. Program A matchar partitionens storlek, så det finns inget slöseri i den partitionen, men Program B och Program C är mindre än partitionsstorleken. Så i del ition 2 och partition 3 finns det kvar ledigt utrymme. Detta lediga utrymme är dock oanvändbart eftersom minnesallokeraren endast tilldelar hela partitioner till program men inga delar av det. Detta slöseri med ledigt utrymme kallas intern fragmentering.
I ovanstående exempel är det fasta partitioner av samma storlek men detta kan till och med hända i en situation där partitioner av olika fasta storlekar finns tillgängliga. Vanligtvis är minnet eller det svåraste utrymmet uppdelat i block som vanligtvis är lika stora som 2, t.ex. 2, 4, 8, 16 byte. Så ett program eller en fil på 3 byte kommer att tilldelas ett 4 byte block men en byte i det blocket blir oanvändbar och orsakar intern fragmentering.
Vad är extern fragmentering?
Tänk på figuren ovan där minnesallokering görs dynamiskt. Vid dynamisk minnesallokering allokerar allokeraren bara den exakta storleken som behövs för det programmet. Första minnet är helt gratis. Sedan laddas program A, B, C, D och E av olika storlekar efter varandra och de placeras i minnet sammanhängande i den ordningen. Senare stängs program A och program C och de laddas ur minnet. Nu finns det tre lediga utrymmen i minnet, men de ligger inte intill varandra. Nu kommer ett stort program som heter Program F att laddas men inget av det fria rymdblocket räcker inte 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 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 tilldelningsteknik med fast storlek används. Extern fragmentering uppstår när en dynamisk minnestilldelningsteknik 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ändbar. Extern fragmentering beror på bristen på tillräckligt med intilliggande utrymme efter in- och urladdning av program eller filer under en tid, för då distribueras allt ledigt utrymme här och där.
• Extern fragmentering kan brytas genom komprimering där de tilldelade blocken flyttas åt sidan, så att sammanhängande utrymme vinns. Denna operation tar dock tid och vissa kritiska tilldelade områden, till exempel systemtjänster, kan inte flyttas säkert. Vi kan observera detta komprimeringssteg 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 filerna / programmen i verkligheten delas upp i delar och placeras här och där.
• Intern fragmentering kan förstöras genom att ha partitioner i flera storlekar och tilldela ett program baserat på bästa passform. Fortfarande elimineras fortfarande inte den interna fragmenteringen.
Sammanfattning:
Intern mot extern fragmentering
Både intern fragmentering och extern fragmentering är fenomen där minne slösas bort. Intern fragmentering sker i minnesallokering med fast storlek medan extern fragmentering sker i dynamisk minnesallokering. När en tilldelad partition upptas av ett program som är mindre än partitionen går det kvarvarande utrymmet bort och orsakar intern fragmentering. När tillräckligt med intilliggande utrymme inte kan hittas efter in- och nedladdning av program, på grund av att ledigt utrymme distribueras här och där, orsakar detta extern fragmentering. Fragmentering kan förekomma i alla minnesenheter som RAM, hårddisk och Flash-enheter.