Fragmentierung bezeichnet in der Informationstechnik die Zerstückelung eines Speicherraums in viele kleine, nicht zusammenhängende Bereiche. Sie entsteht, wenn Speicher dynamisch in unterschiedlich großen Blöcken belegt und wieder freigegeben wird — übrig bleiben Lücken, die für neue Anforderungen zu klein sind. Man unterscheidet zwei Grundformen: die interne und die externe Fragmentierung.
Interne Fragmentierung (Verschnitt)
Bei der internen Fragmentierung wird einem Prozess oder einer Datei mehr Speicher zugeteilt, als tatsächlich benötigt wird. Der ungenutzte Rest innerhalb des zugeteilten Blocks ist verloren, solange der Block belegt bleibt. Typisches Beispiel ist der Slack Space bei Festplatten: Eine 1-Byte-Datei belegt einen ganzen Speicherblock oder Cluster. Auch das Buddy-System erzeugt internen Verschnitt, weil nur Blöcke in Zweierpotenzgrößen vergeben werden — eine 70-KB-Anforderung erhält einen 128-KB-Block und lässt 58 KB ungenutzt.
Externe Fragmentierung
Externe Fragmentierung entsteht, wenn zwischen belegten Bereichen viele kleine freie Lücken verbleiben. Die Summe des freien Speichers wäre ausreichend, aber keine einzelne Lücke ist groß genug für eine neue Anforderung. Die Ursache liegt in der dynamischen Allokation variabel großer Blöcke: Mit der Zeit „zerfällt“ der freie Speicher in immer kleinere Stücke. Klassisches Gegenmittel ist die Kompaktierung (auch Verdichtung genannt): Der Speicherinhalt wird umsortiert, sodass alle belegten Blöcke zusammenrücken und der freie Speicher zu einem großen Bereich verschmilzt. Das kostet jedoch Rechenzeit und erfordert, dass sich Adressen zur Laufzeit verschieben lassen.
Gegenmaßnahmen und verwandte Verfahren
- Platzierungsstrategien wie First-Fit, Next-Fit oder Best-Fit beeinflussen, wie schnell externe Fragmentierung entsteht.
- Paging mit festen Seitengrößen (siehe Memory Paging) vermeidet externe Fragmentierung, erzeugt aber interne Fragmentierung im letzten Seitenrest.
- Das Buddy-System halbiert und verschmilzt Blöcke in Zweierpotenzen und hält so die externe Fragmentierung gering.
- Die Speichersegmentierung arbeitet mit variabel großen Segmenten und erzeugt dadurch externe Fragmentierung, die kompaktiert werden muss.
- Bei Dateisystemen spricht man analog von Dateifragmentierung; Defragmentierung fasst verstreute Blöcke wieder zusammen.
Verwandte Grundlagen: Memory Paging, Virtueller Speicher, Heap.