Im Kontext eines Dateisystems ist die Fragmentierung eine ineffiziente Verwendung von Speicherplatz zum Speichern von Inhalten einer einzelnen Datei an verschiedenen Stellen auf einer Platte und nicht in einer einzigen zusammenhängenden Folge von Bits an einer Stelle. Fragmentierung ist ein natürliches Phänomen, das physisch auf einer Festplatte oder manchmal auf einem Speichermodul auftritt, wenn die Daten nicht genau genug auf die Festplatte geschrieben werden.
Die Daten werden manchmal außerhalb der Reihenfolge geschrieben, was bedeutet, dass die Daten auf der Festplatte aufgrund der häufigen Verwendung von Dateien nicht nebeneinander platziert werden. Diese Daten werden als Fragmente bezeichnet. Irgendwann müsste das Betriebssystem auf das Dateisystem zugreifen, um herauszufinden, wo sich die verschiedenen Fragmente auf dem Laufwerk befinden.
Wenn Sie beispielsweise ein neues Dokument erstellen, sagen wir eine Wortdatei. Die Datei scheint an einem Ort zu sein. Sie können die Datei öffnen, bearbeiten oder löschen - ganz wie Sie möchten. Alle Aktivitäten scheinen sich physisch auf der Festplatte zu bewegen, zumindest denken Sie so.
Die Festplatte speichert möglicherweise Datenblöcke in einem Bereich des Geräts, der Rest ist jedoch buchstäblich an einem anderen Ort auf dem Speichergerät vorhanden. Vereinfacht ausgedrückt bezieht sich Fragmentierung auf den verschwendeten Speicherplatz im Dateisystem, der die Entwicklung einer Lücke zwischen den verschiedenen Teilen einer Datei ermöglicht.
Fragmentierung tritt im dynamischen Speicherzuordnungssystem grundsätzlich auf, weil für die Datei zu viel Speicherplatz reserviert wurde, was zu offenen Bereichen um sie herum führte.
Es bezieht sich irgendwie auf eine feste Größe der Partitionierung. Das System ordnet Speicherplatz für verschiedene Programme und Prozesse zu, indem es diese je nach Bedarf in kleine Blöcke unterteilt. In manchen Fällen wird jedoch mehr Speicher zugewiesen, als vom Prozess benötigt wird, was dazu führt, dass übermäßig viel Speicherplatz verschwendet wird oder ungenutzt bleibt.
Beispielsweise kann Speicher nur Programmen zugeordnet werden, die in Blöcken unterteilt sind, die durch 4, 8 oder 16 teilbar sind. Wenn ein Prozess 24 Bytes anfordert, erhält er normalerweise einen Block von 32 Bytes, und die überschüssigen 8 Bytes bleiben unbenutzt. Nicht genutzter Speicher befindet sich also in einem bestimmten zugewiesenen Speicherort und ist so klein, dass ihm kein neuer Prozess zugeordnet werden kann, was zu Abfall führt. Dieser Abfall wird als interne Fragmentierung bezeichnet. Diese Fragmentierung kann wahrscheinlich nur durch dynamische Speicherzuweisung entfernt werden.
Der Hauptspeicher bildet Lücken zwischen den Teilen des zugewiesenen Speichers, die zu klein sind, um einen Prozess aufzunehmen. Dies ist der Nachteil von Speicherzuweisungsalgorithmen, wenn zusammenhängende Blöcke nicht verwendeter Speicherplätze keine neue Anforderung erfüllen können, da die Speicherplätze für große Speicheranwendungen zu klein sind. Einfach ausgedrückt, erzeugen die nicht zusammenhängenden Blöcke Lücken im Speicher, was zu ungenutztem Speicher führt, der sich außerhalb der zugewiesenen Bereiche befindet. Dies bedeutet, dass er nicht zusammen mit dem Hauptspeicher für größere Speicheraufgaben verwendet werden kann. Sie sind am Ende isoliert und können nicht vollständig aus dem Speicher gelöscht werden. Dies wird als externe Fragmentierung bezeichnet. Es kann durch Komprimierung entfernt werden, wodurch der Inhalt des Speichers gemischt wird, um den gesamten freien Speicher zusammenzusetzen.
Interne Fragmentierung:
Interne Fragmentierung bezieht sich auf zusätzliche Speicherplätze, die verschwendet werden, wenn einem Prozess mehr Speicher zugewiesen wird als benötigt. Dies tritt normalerweise auf, wenn Speicherblöcke mit fester Größe den Programmen oder Prozessen zugewiesen werden.
Externe Fragmentierung:
Externe Fragmentierung bezieht sich dagegen auf die ungenutzten Räume, die zwischen den benachbarten Speicherblöcken gebildet werden, die nicht nebeneinander liegen.
Interne Fragmentierung:
Der freie Speicherplatz, der innerhalb des zugewiesenen Speicherblocks entsteht, wenn der dem Prozess zugewiesene Speicher größer ist als der vom Prozess angeforderte Speicher, wird als interne Fragmentierung bezeichnet. "Intern" bezieht sich auf die nicht verwendeten Bytes, die sich in den größeren Speicherblöcken befinden.
Externe Fragmentierung:
Wenn der Hauptspeicher Löcher bildet, die zu klein sind, um eine Anforderung zu erfüllen, spricht man von externer Fragmentierung.
Interne Fragmentierung:
Der Hauptgrund für die interne Fragmentierung ist, wenn der Speicher in Blöcke fester Größe unterteilt wird .
Externe Fragmentierung:
Externe Fragmentierung ist ein Phänomen, das auftritt, wenn der Speicher basierend auf der Größe verschiedener Prozesse in Blöcke mit variabler Größe unterteilt wird.
Interne Fragmentierung:
Die interne Fragmentierung ist ein natürliches Phänomen, das durch dynamische Speicherzuweisung beseitigt werden kann, bei der Teile von Speicherblöcken auf ihre Anforderung Prozessen dynamisch zugewiesen und freigegeben werden, wenn sie während der Ausführung eines Programms nicht mehr benötigt werden.
Externe Fragmentierung:
Externe Fragmentierung kann dagegen durch Komprimierung, Paging und Segmentierung beseitigt werden, so dass Speicher einem Prozess auf nicht zusammenhängende Weise zugewiesen werden kann.
Sowohl die interne als auch die externe Fragmentierung sind natürliche Phänomene, die sich auf ungenutzten Speicherplatz beziehen. Die interne Fragmentierung leidet an einer ineffizienten Speicherzuordnung, die dann auftritt, wenn der einem Prozess zugewiesene Speicher mehr ist als der angeforderte, was ungenutzten Speicherplatz im Speicherblock belässt, was schließlich zu einer internen Fragmentierung führt. Nachdem der Prozess aus dem physischen Speicher entfernt wurde, wird der freie Speicherplatz hier verteilt, und es können keine angrenzenden Speicherblöcke gefunden werden, die eine externe Fragmentierung verursachen. Beide Phänomene können jedoch vermieden werden. Die interne Fragmentierung kann durch die dynamische Zuweisung von Speicher für Prozesse reduziert werden, während die externe Fragmentierung am besten durch Komprimierung, Paging und Segmentierung vermieden werden kann.