Virtueller Speicher, Segmentierung und Dateisysteme
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 4,55 KB
Virtueller Speicher und Segmentierung
Bei der Segmentierung im virtuellen Speicher sind die Speicherplätze in ihrer Größe anpassbar (resizable). Die Segmentierung nutzt die Tatsache aus, dass Programme in logische Teile, wie zum Beispiel Daten- oder Codestücke, unterteilt sind. In diesem Fall wird das Programm zusammen mit seinen Daten in eine Reihe von Segmenten unterteilt.
Die Adressübersetzung erfolgt ähnlich wie beim Paging, wobei die variable Größe der Segmente durch eine Segmenttabelle gesteuert wird. Jeder Eintrag in dieser Tabelle sollte das Presence-Bit (Wohn-Bit), die Segmentadresse auf dem Datenträger, die Startadresse im Speicher sowie die Länge des jeweiligen Segments enthalten.
Das Betriebssystem (OS) verwaltet für jeden Prozess eine eigene Segmenttabelle. Die Anfangsadresse dieser Tabelle wird in einem Hardware-Register gespeichert, dem sogenannten Resource Origin Table Block (ROTB).
Ladestrategien (Fetch-Strategien)
Diese Strategien bestimmen, wann eine Seite oder ein Segment vom Sekundärspeicher in den Primärspeicher übertragen wird:
- Demand-Fetching (Anforderungsstrategie): Ein laufender Prozess wartet, bis eine Seite oder ein Segment explizit angefordert wird, bevor die Übertragung erfolgt.
- Vorabbeschaffung (Antizipative Strategie): Es wird im Voraus versucht zu bestimmen, welche Seiten oder Segmente demnächst benötigt werden.
Demand Paging: Diese Technik erfordert Hardware-Unterstützung (Präsenz-Bit).
Platzierungs- und Ersetzungsstrategien
Platzierungsstrategien (Placement Strategies): Sie bestimmen, an welcher Stelle im Hauptspeicher eine eingehende Seite oder ein Segment platziert werden soll, also wie viel Speicher zu reservieren ist.
Ersetzungsstrategien (Replacement Strategies): Diese werden genutzt, um zu entscheiden, welche Seite oder welches Segment verschoben werden muss, um Platz für neue Daten zu schaffen, wenn der Hauptspeicher voll belegt ist.
Physikalische Speicherung von Daten
- Track (Spur): Konzentrische Kreise, die den Speicherplatz aufteilen.
- Sektoren: Unterteilung der einzelnen Spuren.
- Zylinder: Ein logischer Zusammenschluss mehrerer paralleler Spuren über verschiedene Speicherflächen hinweg.
- Platten (Platter): Die eigentlichen physischen Speicherbereiche.
- Schreib-/Lesekopf (Head): Physische Einheiten, die den Schreib- und Lesevorgang durchführen.
Leistungsmerkmale von Festplatten
Suchzeit (Seek Time): Die Zeit, die ein Kopf benötigt, um von einer Spur zur nächsten zu gelangen. Sie hängt von der Entfernung zwischen der aktuellen Position und der Zielspur ab.
Latenz oder Rotationsverzögerung: Die Zeit, die verstreicht, bis der gewünschte Sektor unter dem Kopf erscheint.
Disk-Cache: Ein Puffer (Buffer) im Hauptspeicher für Sektoren der Festplatte. Der Cache enthält Kopien bestimmter Festplattenbereiche.
Speicherplatzzuteilung
- Zusammenhängende Belegung (Contiguous Allocation): Beim Erstellen einer Datei werden zusammenhängende Blöcke zugeordnet. Das Verzeichnis enthält den Dateinamen, die Startblockadresse und die Gesamtgröße der Datei.
- Verkettete Belegung (Linked Allocation): Die Zuordnung besteht aus einzelnen Blöcken, die nicht notwendigerweise kontinuierlich liegen. Jeder Block enthält einen Zeiger auf den nächsten. Das Verzeichnis enthält den Dateinamen sowie die Adressen des Start- und Endblocks.
- Indizierte Belegung (Indexed Allocation): Das Verzeichnis ist in einem Index-Block für jede Datei gespeichert, der Verweise auf alle zugehörigen Datenblöcke enthält. Beim Lesen einer Datei erfolgen zwei Zugriffe: einer auf den Index-Block und ein weiterer auf die gewünschte Adresse.
Zugriffsmethoden in Dateisystemen
- Sequenzieller Zugriff: Die Datensätze einer Datei werden nacheinander durchlaufen, bis der gewünschte Datensatz erreicht ist.
- Direkter Zugriff: Ein unmittelbarer Zugriff auf jeden beliebigen Datensatz ist möglich.
- Indiziert-sequenzieller Zugriff: Jede Datei besitzt eine Tabelle von Zeigern, wobei jeder Zeiger auf die Adresse eines Index-Blocks verweist.