Interne und externe Fragmentierung

78

Kann mir bitte jemand den Unterschied zwischen interner und externer Fragmentierung bei der Zuweisung von Speicherplatz für Dateien erklären?

wantobegeek
quelle
1
@binary worrier: Es tut mir leid. Ich bin neu in stackoveerflow. Aber ich bekomme die Antworten auf meine Fragen, ob sie programmierbezogen sind oder nicht.
Wantobegeek
18
Völlig programmierbezogen - jeder Kurs über Betriebssysteme wird dies in Dateisystemen behandeln.
Matt Mitchell

Antworten:

169

Externe Fragmentierung Der
gesamte Speicherplatz reicht aus, um eine Anforderung zu erfüllen oder einen Prozess darin zu speichern. Er ist jedoch nicht zusammenhängend und kann daher nicht verwendet werden.

Externe Fragmentierung

Interne Fragmentierung Der
dem Prozess zugewiesene Speicherblock ist größer. Ein Teil des Speichers bleibt ungenutzt, da er nicht von einem anderen Prozess verwendet werden kann.

Interne Fragmentierung

Ankit Bhatia
quelle
37

Zuallererst gibt es unter dem Begriff Fragmentierungshinweise eine Entität, die in Teile unterteilt ist - Fragmente.

  • Interne Fragmentierung: Ein typisches Papierbuch ist eine Sammlung von Seiten (Text in Seiten unterteilt). Wenn sich das Ende eines Kapitels nicht am Ende der Seite befindet und ein neues Kapitel von einer neuen Seite beginnt, gibt es eine Lücke zwischen diesen Kapiteln und es ist Platzverschwendung - ein Teil (Seite für ein Buch) hat ( intern ) nicht genutzten Platz im Inneren - "weißer Raum"

  • Externe Fragmentierung: Angenommen, Sie haben ein Papiertagebuch und haben Ihre Gedanken nicht Seite für Seite nacheinander geschrieben, sondern eher zufällig. Es kann vorkommen, dass Sie 3 Seiten hintereinander schreiben möchten, dies jedoch nicht. Da es keine 3 sauberen Seiten nacheinander gibt, haben Sie möglicherweise insgesamt 15 saubere Seiten im Tagebuch, aber Sie sind nicht zusammenhängend

poige
quelle
2
Dies ist eine erstaunliche Analogie, mit der man sich identifizieren kann.
Sana Jahan
Unglaubliche Analogie! Ich werde dieses Konzept wahrscheinlich nie vergessen.
Burak.
Bestes Beispiel aller Zeiten
Abhay Patil
1

Ich bin ein Betriebssystem, das Ihnen nur Speicher in 10-MB-Partitionen zuweist.

Interne Fragmentierung

  • Sie fragen nach 17 MB Speicher
  • Ich gebe Ihnen 20 MB Speicher

Das Erfüllen dieser Anfrage hat gerade zu 3 MB interner Fragmentierung geführt.

Externe Fragmentierung

  • Sie fragen nach 20 MB Speicher
  • Ich gebe Ihnen 20 MB Speicher
  • Die 20 MB Speicher, die ich Ihnen gebe, grenzen nicht sofort an einen anderen vorhandenen zugewiesenen Speicher an. Indem ich Ihnen diese Erinnerung übergebe, habe ich einen einzelnen nicht zugewiesenen Raum in zwei Räume "aufgeteilt".

Die Erfüllung dieser Anfrage hat gerade zu einer externen Fragmentierung geführt

Dean P.
quelle
-19

Vermutlich von dieser Seite :

Interne Fragmentierung Interne Fragmentierung tritt auf, wenn der Speicherzuweiser zusätzlichen Speicherplatz in einem Speicherblock leer lässt, der einem Client zugewiesen wurde. Dies geschieht normalerweise, weil das Design des Prozessors vorschreibt, dass Speicher in Blöcke bestimmter Größen geschnitten werden muss. Beispielsweise kann es erforderlich sein, dass Blöcke gleichmäßig durch vier, acht oder 16 Bytes geteilt werden. In diesem Fall kann einem Client, der beispielsweise 57 Byte Speicher benötigt, ein Block zugewiesen werden, der 60 Byte oder sogar 64 Byte enthält. Die zusätzlichen Bytes, die der Client nicht benötigt, gehen verloren, und im Laufe der Zeit werden diese winzigen Blöcke verschwendet Ungenutzter Speicher kann große Speichermengen aufbauen und erzeugen, die vom Allokator nicht verwendet werden können. Da sich alle diese nutzlosen Bytes in größeren Speicherblöcken befinden, wird die Fragmentierung als intern betrachtet.

Externe Fragmentierung Externe Fragmentierung tritt auf, wenn der Speicherzuweiser Abschnitte nicht verwendeter Speicherblöcke zwischen Teilen des zugewiesenen Speichers belässt. Wenn beispielsweise mehrere Speicherblöcke in einer fortlaufenden Zeile zugewiesen sind, aber einer der mittleren Blöcke in der Zeile freigegeben wird (möglicherweise weil der Prozess, der diesen Speicherblock verwendet hat, nicht mehr ausgeführt wird), wird der freie Block fragmentiert. Der Block kann später noch vom Allokator verwendet werden, wenn Speicher benötigt wird, der in diesen Block passt, aber der Block ist jetzt für größere Speicheranforderungen unbrauchbar. Es kann nicht mit dem gesamten freien Speicher, der dem System zur Verfügung steht, zusammengefasst werden, da der gesamte Speicher zusammenhängend sein muss, damit er für größere Aufgaben verwendet werden kann. Auf diese Weise,

Maddy
quelle
19
Maddy, Sie scheinen diesen Text von einer anderen Seite kopiert zu haben, wahrscheinlich von dieser . In diesem Fall müssen Sie mindestens einen Link zur Site hinzufügen, der angibt, von wo Sie ihn kopiert haben. Ich habe das hier für dich getan. Dies ist jedoch immer noch eine Grenzantwort. Verwenden Sie in Zukunft Informationen wie diese als Grundlage für eine Antwort, die Sie selbst schreiben, und nicht als vollständige Antwort .
Michael Petrotta