Heap-Speicher und Plattenzuordnung

Ich bin verwirrt in Bezug aufheap undfree list. Ich habe ein paar Fragen und ich verstehe selbst, wie Malloc in C funktioniert. Bitte korrigieren Sie mich, wenn ich mich irre.

Ist der Heapspeicher als verknüpfte Liste (freie Liste) von Datenblöcken organisiert?Gibt es einen Unterschied zwischen Heapspeicher und freier Liste?

Mein Verständnis der Speicherzuordnung (verbesserungswürdig): - Wenn wir malloc aufrufen, ordnet es Speicher auf dem Heap zu, und zwar durch Auswählen eines Datenblocks geeigneter Größe aus demfree list, Recht ?

Wenn ein bestimmter Speicherblock von malloc zurückgegeben wird, wird er aus der freien Liste entfernt und die physikalische Adresse dieses Speicherblocks in der Seitentabelle aktualisiert.

Wenn der Speicher zur freien Verfügung stehtfree()wird der Datenblock wieder in die freie Liste eingefügt und möglicherweise, um die Fragmentierung zu verringern, mit dem Nachbarblock verbunden, und derpresent Bit im Seitentabelleneintrag wird gelöscht.

Der gesamte Heap ist also eine freie Liste (verknüpfte Liste von freien Blöcken) + zugewiesene Datenblöcke.

Ist das ein umfassendes Bild der Speicherzuweisung?

BEARBEITEN: Von Linux Kernel Development (Robert Love) Kapitel über Speicherverwaltung,Plattenbelegung

Eine freie Liste enthält einen Block verfügbarer, bereits zugewiesener Datenstrukturen. Wenn Code eine neue Instanz einer Datenstruktur benötigt, kann er eine der Strukturen von der freien Liste entfernen, anstatt die ausreichende Menge an Speicher zuzuweisen und einzurichten Wenn die Datenstruktur später nicht mehr benötigt wird, wird sie an die freie Liste zurückgegeben, anstatt aufgehoben zu werden. In diesem Sinne fungiert die freie Liste als Objekt-Cache, der einen häufig verwendeten Objekttyp zwischenspeichert. "

Freie Liste wird als "Block verfügbarer, zugewiesener Datenstruktur" bezeichnet.

Wie ist daszugeteilt, wenn es in einer freien Liste ist?Und wie wird ein Speicherblock an die freie Liste zurückgegeben?nicht_ das gleiche wie das Aufheben der Zuweisung dieses Blocks?Wie unterscheidet sich die Plattenzuordnung von der Speicherzuordnung?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage