Skip to main content

Was ist eine kostenlose Liste?

Eine kostenlose Liste ist eine Datenstruktur, die die Adressen der Computerspeicherorte enthält, die für ein laufendes Programm bei Verwendung der dynamischen Speicherzuweisung verfügbar sind. Die Liste wird erforderlich, wenn ein Programm zugewiesen wirdPlatz aus einem Bereich des freien Speichers namens Heap. Die Implementierung einer freien Liste kann eine einfache verlinkte Liste sein oder eine komplexere Datenstruktur wie z. B.Ein Sortierbaum.muss eine bestimmte Menge an Speicher aus dem zugrunde liegenden Betriebssystem anfordern. Die Speicherorte von Speicherblöcken, die verwendet werden können, werden in der freien Liste gespeichert. Damit die Zuordnung erfolgreich istmuss in einem oder mehreren dieser Blöcke verfügbar sein. Wenn ein Zeiger auf eine geeignete Speicherlocatio istN wird zurückgegeben, dieses Element der Liste wird entfernt.

Nachdem ein Programm mit dem Speicher fertiggestellt wurde, kann es abgelehnt werden. Dies beinhaltet die Übergabe des Zeigers an den SpeicherBlockieren Sie wieder in die freie Liste, wo sie beim nächsten Versuch einer Zuweisung verfügbar ist. Es ist möglich, dass die Speicherzuweisung fehlschlägt, da die Liste leer ist oder keine verfügbaren Speicherblöcke sind, die groß genug sind, um die zu erfüllenDie Anfrage des Programms.

Die einfachste Form der Speicherverwaltung wird als First Fit -System bezeichnet. Dieses System verwaltet eine einzige Liste kostenloser Speicherorte. Wenn eine Speicheranforderung gesendet wird,Die Liste wird durchquert und der erste Block, der groß genug ist, wird zurückgegeben. Wenn der Block mehr als doppelt so groß ist. Diese Methode handelt die einfache Codierung für das Risiko eines fragmentierten SpeichersBereiche, die möglicherweise nie in die Liste zurückgegeben werden.

Eine andere Form der Speicherverwaltung wird als Buddy -Allokationssystem bezeichnet. Im Gegensatz zum ersten Anpassungssystem hält die Buddy -Allokation mehrere kostenlose Listen, die jeweils gehalten werdenÖffnen Sie Blöcke von nur einer bestimmten Größe. Dies bedeutet, dass die Liste, die Blöcke enthält, die gerade groß genug sind, um die Anfrage zu füllenKostenlose Blöcke, die weniger als doppelt so groß sind, dass die angeforderte Größe verfügbar ist. Ein größerer Block wird in zwei Teile aufgeteilt, um die Anforderungen zu erfüllen.

Die Begriff freie Liste kann sich entweder auf eine einzige verknüpfte Liste von Speicheradressen beziehen.Oder es kann sich auf eine viel komplexere Art von Datenstruktur beziehen. Verschiedene Arten von Sortierbäumen können bei einfach und ausgewogener Weise dazu beitragenDer Quellcode. Eine verknüpfte Liste kann langsamer sein als ein spezialisierter Sortierbaum, erstellt jedoch ProgrammCode, der viel einfacher zu lesen, zu debuggen und zu ändern ist.

Einige Programmiersprachen und Betriebssysteme nutzen einen speziellen Mechanismus namens Müllsammlung. Dies ist ein Prozess, der die verschiedenen Einträge auf einem aufnehmen kannfreie Liste und konsolidieren Sie die freien Räume so, dass sie zusammenhängend sind. Dies wirkt sich aus, um Fragmentierung zu verhindern und größere Speicherblöcke zuzuweisen.