Zusammenhängende Speicherzuordnung

Definition - Was bedeutet zusammenhängende Speicherzuordnung?

Die zusammenhängende Speicherzuweisung ist ein klassisches Speicherzuweisungsmodell. Hier weist ein System einem Prozess aufeinanderfolgende Speicherblöcke (dh Speicherblöcke mit aufeinanderfolgenden Adressen) zu.

Die zusammenhängende Speicherzuweisung ist eine der ältesten Speicherzuweisungsmethoden. So funktioniert es: Wenn ein Prozess ausgeführt werden muss, wird vom Prozess Speicher angefordert. Die Größe des Prozesses wird mit der Menge des zusammenhängenden Hauptspeichers verglichen, der zur Ausführung des Prozesses verfügbar ist.

Wenn genügend zusammenhängender Speicher gefunden wird, wird der Speicher zugewiesen und der Prozess beginnt mit seiner Ausführung. Andernfalls wird der Prozess zu einer Warteschlange wartender Prozesse hinzugefügt, bis ausreichend freier zusammenhängender Speicher verfügbar ist.

Technische.me erklärt die zusammenhängende Speicherzuordnung

Eine zusammenhängende Speicherzuordnung kann in Betriebssystemen mit Hilfe von zwei Registern implementiert werden, die als Basis- und Grenzregister bekannt sind.

Wenn ein Prozess im Hauptspeicher ausgeführt wird, enthält sein Basisregister die Startadresse des Speicherorts, an dem der Prozess ausgeführt wird, während die vom Prozess verbrauchte Bytemenge im Grenzregister gespeichert wird.

Ein Prozess bezieht sich nicht direkt auf die tatsächliche Adresse für einen entsprechenden Speicherort. Stattdessen verwendet es eine relative Adresse in Bezug auf sein Basisregister. Alle Adressen, auf die ein Programm verweist, gelten als virtuelle Adressen. Die CPU generiert die logische oder virtuelle Adresse, die mit Hilfe der Memory Management Unit (MMU) in eine tatsächliche Adresse umgewandelt wird.

Das Basisadressregister wird von der MMU zur Adressumsetzung verwendet. Somit wird eine physikalische Adresse wie folgt berechnet:

Physische Adresse = Basisregisteradresse + Logische Adresse / Virtuelle Adresse

Die Adresse eines Speicherorts, auf den ein Prozess verweist, wird überprüft, um sicherzustellen, dass er nicht auf eine Adresse eines benachbarten Prozesses verweist. Diese Verarbeitungssicherheit wird vom zugrunde liegenden Betriebssystem übernommen.

Vor- und Nachteile der zusammenhängenden Speicherzuordnung

Eine andere Möglichkeit, die kontinuierliche Speicherzuweisung zu verstehen, besteht darin, sie der entgegengesetzten Methode gegenüberzustellen: der nicht zusammenhängenden Speicherzuweisung. Bei der nicht zusammenhängenden Speicherzuweisung muss der Speicher nicht in zusammenhängenden Adressblöcken zugewiesen werden.

Im Gegensatz zur nicht zusammenhängenden Speicherzuweisung hat die zusammenhängende Speicherzuweisung einige deutliche Vorteile. Die Ausführung ist in der Regel schneller, für das Betriebssystem einfacher zu handhaben und erfordert häufig weniger Overhead.

Es gibt jedoch auch Nachteile bei der zusammenhängenden Speicherzuweisung. Eine der wichtigsten ist, dass Speicher auf diese Weise verschwendet werden kann, wenn die kleineren Speichermengen aufgrund der Notwendigkeit zusammenhängender Speicherblöcke nicht verwendet werden. Außerdem können Prozesse länger auf die Ausführung warten, da auf den zusammenhängenden Block nicht leicht zugegriffen werden kann.

Stapel- und Heapzuordnung

Die zusammenhängende Speicherzuweisung ist auch im Zusammenhang mit verschiedenen Speicherzuweisungstechniken interessant. Beispielsweise stellen Experten häufig zwei Arten der Speicherzuweisung gegenüber, die als "Stapelzuweisung" und "Heapzuweisung" bezeichnet werden.

Bei der Stapelzuweisung wird die Speicherzuweisung während des Kompilierens vorab angeordnet und implementiert, wobei die Heapzuweisung später zur Laufzeit erfolgt.

Es ist wichtig zu beachten, dass die Stapelzuweisung häufig in Form einer zusammenhängenden Speicherzuweisung erfolgt, wobei die Speicherzuweisung in Blöcken zugewiesen wird. Im Gegensatz dazu ist bei der Heap-Zuweisung eine zusammenhängende Speicherzuweisung schwierig, da das System nicht nur ausreichend Speicher finden muss, sondern auch Speicher, der sich in einem ausreichend großen zusammenhängenden Block befindet. Infolgedessen ist die Heap-Zuweisung häufig eine nicht zusammenhängende Speicherzuweisung.

Experten sprechen auch über statische und dynamische Speicherzuweisungsmethoden und darüber, wie solche implementiert werden können, die entweder zusammenhängende oder nicht zusammenhängende Speicherzuweisungsmethoden verwenden.