2017-01-02 5 views
1

Ich habe gelesen, wie Prozesse von Computern implementiert werden, und fand Erwähnung von Stacks und Haufen. Das war ziemlich cool für mich, da ein Mangel an irgendeinem Informatikhintergrund bedeutet, dass diese Dinge für mich ziemlich esoterisch waren.Kann RAM konzeptionell in "Stack" und "Heapspeicher" unterteilt werden?

Mein derzeitiges Verständnis ist, dass ein Prozess auf einer sehr grundlegenden Ebene im RAM als "Stack" in fester Größe und damit verbundenen Datenstrukturen variabler Größe dargestellt wird, die zusammen als "Heap" -Raum bekannt sind. Frames werden zum Stack hinzugefügt, was dazu führen kann, dass im Heap-Space gespeicherte Daten erstellt, bearbeitet oder gelöscht werden, wodurch der Zustand eines Prozesses geändert wird.

Also meine Frage ist, kann alle RAM-Nutzung entweder als Teil eines Heaps oder Teil eines Stapels kategorisiert werden?

Was könnte sonst im RAM gespeichert werden, das nicht in eine dieser Kategorien fällt?

Antwort

1

Ja, in extrem einfachen Systemen, insbesondere alten und nicht unterstützenden Multitasking, kann der gesamte Benutzerspeicher durch eine Kombination aus Benutzercode, Benutzerdaten, Benutzer-Heap-Daten, Benutzerstapeldaten verwendet werden. Es liegt an dem Programmierer, wofür er den Speicher benutzt. Die Erinnerung macht nichts. Aber natürlich muss es Code geben und in den meisten Fällen Stack. Alles andere ist optional.

+0

Selbst wenn ein Computer Multitasking unterstützt, hätte ich gedacht, dass der gesamte Speicher im RAM dem einen oder anderen Prozess entsprach, was bedeutet, dass er einem Stack plus Heap entsprechen muss? Was könnte noch im RAM sein, das nicht unter die Überschrift "Stack" oder "Heap" fällt? –

+1

Mit Multitasking gibt es Optionen. Entweder ist der Adressraum von mehreren Programmen gemeinsam oder jedes Programm hat sein eigenes. Im ersten Fall kann es mehrere Heaps und Stacks und Codeabschnitte innerhalb desselben Adressraums geben. Im letzteren Fall kann es nicht sein (es sei denn, Sie erstellen explizit mehrere). Der physische Speicher (hinter allen Adressräumen) kann mehrere Stapel und Stapel aus mehreren Programmen enthalten, es sei denn, die Umschaltung erfordert das vollständige Speichern des Status eines Programms auf einem Datenträger und das Laden eines anderen an dessen Stelle. –

+0

Wie gesagt, die Erinnerung hat nichts dagegen, was darin gespeichert ist. Code oder Daten (einschließlich Stapel oder Heap). Es kann nicht initialisiert werden (nach dem Einschalten) und etwas zufälligen Inhalt enthalten. –

Verwandte Themen