Vnútorná verzus vonkajšia fragmentácia
Rozdiel medzi internou a externou fragmentáciou je témou záujmu mnohých, ktorí si radi zdokonaľujú svoje počítačové znalosti. Predtým, ako spoznáme tento rozdiel, musíme zistiť, čo je fragmentácia. Fragmentácia je jav, ktorý sa vyskytuje v pamäti počítača, ako je pamäť RAM (Random Access Memory) alebo pevné disky, čo spôsobuje plytvanie a neefektívne využitie voľného miesta. Aj keď je bránené efektívnemu využívaniu dostupného priestoru, spôsobuje to aj problémy s výkonom. K vnútornej fragmentácii dochádza, keď je alokácia pamäte založená na oddieloch s pevnou veľkosťou, pričom po priradení aplikácie malej veľkosti k slotu sa plytvá zostávajúci voľný priestor tohto slotu. Vonkajšia fragmentácia nastáva, keď je pamäť dynamicky prideľovaná, kde po načítaní a uvoľnení niekoľkých slotov tu a tam sa voľné miesto distribuuje, nie je súvislé.
Čo je vnútorná fragmentácia?
Zvážte obrázok vyššie, kde sa používa mechanizmus prideľovania pamäte s pevnou veľkosťou. Na začiatku je pamäť prázdna a alokátor rozdelil pamäť na oddiely s pevnou veľkosťou. Potom sa do prvých troch oddielov nahrali tri programy pomenované A, B, C, zatiaľ čo štvrtý oddiel je stále voľný. Program A zodpovedá veľkosti partície, takže v tejto partícii nedochádza k plytvaniu, ale Program B a Program C sú menšie ako veľkosť partície. Takže v časti 2 a časti 3 zostáva voľné miesto. Toto voľné miesto je však nepoužiteľné, pretože alokátor pamäte priraďuje programom iba celé oblasti, ale nie ich časti. Toto plytvanie voľným priestorom sa nazýva vnútorná fragmentácia.
Vo vyššie uvedenom príklade ide o rovnako veľké pevné oddiely, ale to sa môže stať aj v situácii, keď sú k dispozícii oddiely rôznych pevných veľkostí. Pamäť alebo najťažší priestor je zvyčajne rozdelený do blokov, ktoré majú zvyčajne veľkosť 2, napríklad 2, 4, 8, 16 bajtov. Takže program alebo súbor s 3 bajtmi bude priradený k 4 bajtovému bloku, ale jeden bajt tohto bloku sa stane nepoužiteľným, čo spôsobí vnútornú fragmentáciu.
Čo je vonkajšia fragmentácia?
Zvážte obrázok vyššie, kde sa prideľovanie pamäte vykonáva dynamicky. Pri dynamickom prideľovaní pamäte alokátor prideľuje iba presne potrebnú veľkosť pre daný program. Prvá pamäť je úplne zadarmo. Potom sa jeden po druhom načítajú programy A, B, C, D a E rôznych veľkostí a uložia sa do pamäte súvisle v tomto poradí. Neskôr sa program A a program C zatvoria a uvoľnia sa z pamäte. Teraz sú v pamäti tri oblasti voľného miesta, ale nie sú vedľa seba. Teraz sa načíta veľký program s názvom Program F, ale ani jeden z blokov voľného miesta nestačí na program F. Pridanie všetkých voľných miest určite stačí na program F, ale kvôli nedostatku susedstva je tento priestor nepoužiteľné pre program F. Toto sa nazýva vonkajšia fragmentácia.
Aký je rozdiel medzi vnútornou a vonkajšou fragmentáciou?
• K vnútornej fragmentácii dochádza pri použití techniky prideľovania pamäte s pevnou veľkosťou. K externej fragmentácii dochádza pri použití techniky dynamickej alokácie pamäte.
• K vnútornej fragmentácii dochádza, keď je programu/súboru priradená oblasť s pevnou veľkosťou s menšou veľkosťou ako oblasť, čím sa zvyšok priestoru v tejto oblasti stáva nepoužiteľným. Externá fragmentácia je spôsobená nedostatkom dostatočného priľahlého priestoru po načítaní a uvoľňovaní programov alebo súborov na určitý čas, pretože potom sa všetok voľný priestor rozdelí sem a tam.
• Vonkajšiu fragmentáciu možno ťažiť zhutňovaním, kde sa priradené bloky presúvajú na jednu stranu, čím sa získa súvislý priestor. Táto operácia si však vyžaduje čas a tiež určité kritické priradené oblasti, napríklad systémové služby, nemožno bezpečne presunúť. Tento krok zhutnenia môžeme pozorovať na pevných diskoch pri spustení defragmentácie disku v systéme Windows.
• Externej fragmentácii možno predchádzať mechanizmami, ako je segmentácia a stránkovanie. Tu je daný logický súvislý priestor virtuálnej pamäte, zatiaľ čo v skutočnosti sú súbory/programy rozdelené na časti a umiestnené sem a tam.
• Vnútornú fragmentáciu je možné narušiť tak, že budete mať oddiely niekoľkých veľkostí a priradíte program podľa toho, čo najlepšie vyhovuje. Stále však vnútorná fragmentácia nie je úplne eliminovaná.
Zhrnutie:
Vnútorná verzus vonkajšia fragmentácia
Vnútorná aj vonkajšia fragmentácia sú javy, pri ktorých sa plytvá pamäťou. K vnútornej fragmentácii dochádza pri prideľovaní pamäte s pevnou veľkosťou, zatiaľ čo k externej fragmentácii dochádza pri dynamickom prideľovaní pamäte. Keď je pridelená oblasť obsadená programom, ktorý je menší ako oblasť, zostávajúce miesto sa stráca, čo spôsobuje vnútornú fragmentáciu. Keď po načítaní a vyložení programov nie je možné nájsť dostatok priľahlého miesta, pretože voľné miesto je rozdelené sem a tam, spôsobuje to vonkajšiu fragmentáciu. Fragmentácia sa môže vyskytnúť v akomkoľvek pamäťovom zariadení, ako je RAM, pevný disk a flash disky.