Es existieren unterschiedliche Speicherkonzepte zum Ansteuern des Speichers.
Überblick
Folgende Speicherkonzepte sind von Bedeutung:
Direkte Speicherverwaltung |
Swapping |
Segmentorientierter Speicher |
Seitenorientierter Speicher |
|
Virtueller Speicher |
= Arbeitsspeicher |
> Arbeitsspeicher |
> Arbeitsspeicher |
> Arbeitsspeicher |
Kleinste Einheit für Aus-/Einlagern |
– |
Gesamtes Programm/Prozess + Daten |
Segment |
Seite (Page) |
Größe |
Fix |
Variabel, abhängig von Prozess und Daten |
Variabel große Segmente |
Gleich große Seiten (Pages) |
Direkte Speicherverwaltung
Bei der direkten Speicherverwaltung wird ausschließlich der vorhandene physikalische Hauptspeicher (RAM) zur Adressierung verwendet. Die direkte Speicherverwaltung wird nur bei einfach eingebetteten Systemen eingesetzt, da sie nur auf den Einprogrammbetrieb ausgerichtet ist und sich mehrere Prozesse untereinander durch die Speicherverwaltung behindern würden.
Swapping
Beim Swapping werden RAM-Speicherbereiche in einen sekundären Speicher ausgelagert. Typischerweise werden die Daten in einer Auslagerungsdatei auf der Festplatte des Computers gespeichert. Wird ein Prozess ausgelagert, da er derzeit nicht aktiv ist oder ein „wichtigerer“ Prozess den Speicherbereich benötigt, werden alle Daten und der Programmcode vollständig in die Auslagerungsdatei verschoben. Aus diesem Grund lässt sich ein Prozess auch nur ausführen, wenn er nicht ausgelagert ist.
Im Gegensatz zum Swapping ist der virtuelle Speicher in der Lage Prozesse zum Teil auf dem RAM (Hauptspeicher) und zum anderen Teil auf dem externen Speicher abzulegen.
Virtueller Speicher
Ein virtueller Speicher vereint Hauptspeicher und externe Speicher so, dass er wie ein einziger Speicher auf das System wirkt. Das führt zu mehr Speicheradressen, als der reelle Hauptspeicher wirklich besitzt. Dieser virtuelle Adressraum wird von der Speicherverwaltung des Betriebssystems verwaltet. Bei der Nutzung werden Teile der RAM-Inhalte, die derzeit nicht benötigt werden, temporär auf den externen Speicher ausgelagert.
Beim virtuellen Speicher unterscheidet man zwischen zwei Organisationsformen: Segmentorientierter Speicher, Seitenorientierter Speicher.
Segmentorientierte Speicherverwaltung
Bei der segmentorientierten Speicherverwaltung ist der virtuelle Speicher in Segmente eingeteilt, die verschieden groß sein können und unabhängige Adressräume besitzen. Die Größe eines Segments kann sich während der Ausführung ändern, was zum Vorteil hat, dass der vorhandene Speicherraum durch die Segmentierung optimal genutzt werden kann. Andererseits werden aufwendige Algorithmen benötigt, um eine hohe Fragmentierung zu verhindern.
Segmenttabelle:
Segment-Nr. | Länge (Größe) | ValidBit | reelle Anfangsadresse (VCN) |
0 | 1428 | 1 | 1000 |
1 | 1000 | 0 | 10000 |
2 | 253 | 1 | 500 |
Offset: Der Offset (Zeilenadresse) stellt die Positionsnummer eines Speicherworts innerhalb des Segments (Segmentadresse) dar.
Valid-Bit: Das Valid-Bit gibt an, ob das Segment im Hauptspeicher liegt.
Seitenorientierte Speicherverwaltung
Bei der seitenorientierten Speicherverwaltung ist der virtuelle Speicher in gleich große Stücke, die sogenannten Seiten, unterteilt. Dies hat den Vorteil, dass keine Speicherbereiche im Hauptspeicher ungenutzt bleiben. Andererseits ist die Größe einer Seite nicht an den Prozess angepasst. Werden die Daten einer Seite nicht benötigt, wird sie ausgelagert und eine andere Seite kann geladen werden.
- Größe des virtuellen Speichers wird durch die Anzahl der Adressbits bestimmt
- Anzahl Seiten
Aufgabe
Eine Speicherverwaltung verwendet Seiten mit einer Größe von 4 KByte. Der virtuelle 16-Bit-Adressraum wird auf einem Achtel so großen Arbeitsspeicher (RAM) abgebildet.
- Bestimme die Seitenzahl des virtuellen Speichers.
- Bestimme auf wie viele virtuelle Seiten „gleichzeitig“ zugegriffen werden kann.
Lösung
16 Adressbits → 216 = 65536 Bytes = 64 KiB virtueller Speicher
Anzahl Seiten im virtuellen Speicher:= 16 Seiten
64 KiB virtueller Speicher * 1/8 so großen Arbeitsspeicher = 8 KiB großer Arbeitsspeicher
= 2 Seiten im Arbeitsspeicher