Fragmentare internă vs. externă
Diferența dintre fragmentarea internă și cea externă este un subiect de interes pentru mulți cărora le place să-și îmbunătățească cunoștințele computerului. Înainte de a cunoaște această diferență, trebuie să vedem ce este fragmentarea. Fragmentarea este un fenomen care apare în memoria computerului, cum ar fi memoria cu acces aleatoriu (RAM) sau hard disk-urile, care provoacă risipă și utilizarea ineficientă a spațiului liber. În timp ce utilizarea eficientă a spațiului disponibil este împiedicată, acest lucru cauzează și probleme de performanță. Fragmentarea internă are loc atunci când alocarea memoriei se bazează pe partiții de dimensiuni fixe, unde după ce o aplicație de dimensiune mică este atribuită unui slot, spațiul liber rămas din acel slot este irosit. Fragmentarea externă are loc atunci când memoria este alocată dinamic, unde, după încărcarea și descărcarea mai multor sloturi ici și colo, spațiul liber este distribuit mai degrabă decât contiguu.
Ce este fragmentarea internă?
Luați în considerare figura de mai sus în care este urmat un mecanism de alocare a memoriei de dimensiuni fixe. Inițial, memoria este goală, iar alocatorul a împărțit memoria în partiții de dimensiune fixă. Apoi, mai târziu, trei programe numite A, B, C au fost încărcate în primele trei partiții, în timp ce a patra partiție este încă liberă. Programul A se potrivește cu dimensiunea partiției, deci nu există pierderi în acea partiție, dar Programul B și Programul C sunt mai mici decât dimensiunea partiției. Deci în partea 2 și partiția 3 rămâne spațiu liber. Cu toate acestea, acest spațiu liber este inutilizabil, deoarece alocatorul de memorie atribuie doar partiții complete programelor, dar nu părți ale acestuia. Această risipă de spațiu liber se numește fragmentare internă.
În exemplul de mai sus, este vorba de partiții fixe de dimensiuni egale, dar acest lucru se poate întâmpla chiar și într-o situație în care sunt disponibile partiții de diferite dimensiuni fixe. De obicei, memoria sau cel mai greu spațiu este împărțit în blocuri care au, de obicei, mărimea puterilor de 2, cum ar fi 2, 4, 8, 16 octeți. Deci, un program sau un fișier de 3 octeți va fi alocat unui bloc de 4 octeți, dar un octet din acel bloc va deveni inutilizabil, cauzând fragmentare internă.
Ce este fragmentarea externă?
Luați în considerare figura de mai sus în care alocarea memoriei se face dinamic. În alocarea dinamică a memoriei, alocatorul alocă doar dimensiunea exactă necesară pentru programul respectiv. Prima memorie este complet liberă. Apoi, programele A, B, C, D și E de diferite dimensiuni sunt încărcate unul după altul și sunt plasate în memorie contiguu în această ordine. Apoi, mai târziu, Programul A și Programul C se închid și sunt descărcate din memorie. Acum există trei zone de spațiu liber în memorie, dar nu sunt adiacente. Acum va fi încărcat un program mare numit Program F, dar niciunul dintre blocurile de spațiu liber nu este suficient pentru Programul F. Adăugarea tuturor spațiilor libere este cu siguranță suficientă pentru Programul F, dar din cauza lipsei de adiacență, spațiul este suficient. inutilizabil pentru Programul F. Aceasta se numește fragmentare externă.
Care este diferența dintre fragmentarea internă și cea externă?
• Fragmentarea internă apare atunci când se utilizează o tehnică de alocare a memoriei cu dimensiune fixă. Fragmentarea externă are loc atunci când se utilizează o tehnică de alocare dinamică a memoriei.
• Fragmentarea internă are loc atunci când o partiție cu dimensiune fixă este atribuită unui program/fișier cu o dimensiune mai mică decât partiția, ceea ce face ca restul spațiului din acea partiție să fie inutilizabil. Fragmentarea externă se datorează lipsei unui spațiu adiacent suficient după încărcarea și descărcarea programelor sau fișierelor de ceva timp, deoarece atunci tot spațiul liber este distribuit ici și colo.
• Fragmentarea externă poate fi extrasă prin compactare, unde blocurile alocate sunt mutate într-o parte, astfel încât să se câștige spațiu contiguu. Cu toate acestea, această operațiune necesită timp și, de asemenea, anumite zone alocate critice, de exemplu serviciile de sistem, nu pot fi mutate în siguranță. Putem observa acest pas de compactare făcut pe hard disk-ul când rulăm defragmenterul de disc în Windows.
• Fragmentarea externă poate fi prevenită prin mecanisme precum segmentarea și paginarea. Aici este dat un spațiu de memorie virtual contiguu logic, în timp ce în realitate fișierele/programele sunt împărțite în părți și plasate ici și acolo.
• Fragmentarea internă poate fi afectată prin existența unor partiții de mai multe dimensiuni și alocarea unui program bazat pe cea mai bună potrivire. Cu toate acestea, fragmentarea internă încă nu este eliminată complet.
Rezumat:
Fragmentare internă vs. externă
Atât fragmentarea internă, cât și fragmentarea externă sunt fenomene în care memoria este irosită. Fragmentarea internă are loc în alocarea memoriei cu dimensiune fixă, în timp ce fragmentarea externă are loc în alocarea memoriei dinamice. Când o partiție alocată este ocupată de un program mai mic decât partiția, spațiul rămas se irosește, provocând fragmentare internă. Când nu poate fi găsit suficient spațiu adiacent după încărcarea și descărcarea programelor, din cauza faptului că spațiul liber este distribuit ici și colo, acest lucru provoacă fragmentarea externă. Fragmentarea poate apărea în orice dispozitiv de memorie, cum ar fi RAM, hard disk și unități flash.