Fragmentering (datateknik)
Från Rilpedia
Fragmentering i ett filsystem är oförmågan för filsystemet att lägga ut relaterad data sekventiellt (kontinuerligt). En hög fragmentering ökar diskhuvudets rörelser på till exempel en hårddisk eftersom fler sökningar måste genomföras, vilket hindrar genomfarten av data. För att korrigera fragmentering i ett filsystem använder man en process kallad defragmentering.
Det finns tre olika men besläktade sorters fragmentering: extern fragmentering, intern fragmentering, och datafragmentering. Olika lagringsmedier uppvisar en eller flera av dessa svagheter, vilket leder till reducerad effektiv lagringskapacitet.
Extern fragmentering
Extern fragmentering uppstår när det lediga lagringsutrymmet blir uppstyckat i allt mindre bitar som inte ligger jämte varandra. Detta är en svaghet hos vissa lagringsalgoritmer som förekommer i minneshanterare och filsystem och uppstår när minnesareor av varierande storlekar allokeras och frigörs, varpå de frigjorda områdena lämnas orörda. Resultatet blir att trots det finns ledigt minnesutrymme, är det utrymmet i praktiken obrukbart eftersom det är uppdelat i så små bitar att de är oanvändbara. Termen "extern" syftar på att de otillgängliga minnesområdena ligger utanför de allokeringsenheterna.
Extern fragmentering i ett filsystem kan ge upphov till långsamma söktider, eftersom filer inte lagras i efter varandra följande sektorer utan istället utspritt över diskens hela yta. I de flesta moderna operativsystem finns program som kan användas för att i viss mån defragmentera hårddisken, det vill säga göra den mindre fragmenterad.
Extern fragmentering i arbetsminnet är svårare att åtgärda. Vissa skräpsamlare kan slå ihop små oanvända minnesblock till större minnesblock som då kan användas för större allokeringenheter.
Intern fragmentering
Intern fragmentering uppstår när lagringsutrymme begärs och allokeras, men används sedan inte. Även om det kan verka vara slösaktigt att göra så, accepteras det ofta i gengäld mot ökad effektivitet eller enkelhet. Termen "intern" syftar på att det oanvända minnesområderna ligger inom allokeringsenheterna.
Till exempel börjar filer i de flesta filsystem alltid i början av en diskblock, eftersom detta förenklar filsystemets organisation och gör det lättare att förlänga filer -- en väldigt vanlig operation. Allt utrymme mellan filens sista byte och slutet av diskblocket som byten befinner sig i är intern fragmentation. Ju större blocken är, desto större blir den interna fragmentationen, speciellt om filerna är små.
Till skillnad från andra typer av fragmentering är intern fragmentering svårare att åtgärda. Oftast är det bäst att forma om programmet för att undvika fragmentering.