Grundlagen von Betriebssystemen Speichervirtualisierung mit gekachelter Speicherverwaltung 05. November 2020 Peter Ulbrich Proseminar: Konzepte von Betriebssystemkomponenten Rekapitulation Logische Adressräume Abstraktion Abstrakte Speicheradressen Logische Adressräume Adressraumsegmentierung Dynamische Relokation Strategien → Mehrprogrammbetrieb Speicherzuteilung (First Fit, Buddy, …) Speicherverwaltung Datenstrukturen Mechanismen (Software) Speicherverwaltung (Bitmap, Verkettete Liste) Swapping Zuteilungsalgorithmen → Wo ist noch Platz? Mechanismus (Hardware) Base- & LimitRegister 1 Rekapitulation Logische Adressräume Abstraktion Abstrakte Speicheradressen Logische Adressräume Adressraumsegmentierung Dynamische Relokation Strategien → Mehrprogrammbetrieb Speicherzuteilung (First Fit, Buddy, …) Speicherverwaltung Datenstrukturen Mechanismen (Software) Speicherverwaltung (Bitmap, Verkettete Liste) Mechanismus (Hardware) Base- & LimitRegister Swapping Zuteilungsalgorithmen → Wo ist noch Platz? Grenzen → Adressraumüberlauf? → Simultaner Mehrprogrammbetrieb? 1 Lernziele dieser Vorlesung Abstraktion Logische Adressräume Virtuelle Adressräume Virtuelle Adressräume Abstrakter Speicher Strategien Speicherzuteilung (First Fit, Buddy, …) → Entkopplung Speicherort Seitenersetzung (Optimal, LRU) Gekachelte Speicherverwaltung Seitentabellen Mechanismen (Software) Speicherverwaltung Swapping (Bitmap, Verkettete Liste) Mechanismus (Hardware) Base- & LimitRegister MMU Kachelung (Seitentabellen, Seitenumlagerung) Adressumsetzung Seitenersetzung → Welches Datum ist wann im Speicher? (Adressumsetzung, Seitenfehler) 2 Gliederung Virtueller Speicher Grundlagen Gekachelte Speicherverwaltung Seitenersetzung Grundlagen Least-Recently-Used-Algorithmus Zusammenfassung 3 Gliederung Virtueller Speicher Grundlagen Gekachelte Speicherverwaltung Seitenersetzung Grundlagen Least-Recently-Used-Algorithmus Zusammenfassung 4 Grundlagen virtueller Adressräume Prozessor Simultanes ausführen von Programmen die potentiell größer sind als der verfügbare physische Speicher Rechenkern 0xA0FF Virtuelle Adresse Virtueller Speicher ⇝ abstrakter Speicher Virtueller Adressraum (Av ) 7→ Partielle Abbildung f : Av 7→ Ap MMU Eine virtuelle Adresse erscheint echt, bildet jedoch entweder auf den Haupt- oder Ablagespeicher ab 0x12FF → Mehr Arbeits- als Hauptspeicher Physische Adresse Seitenbasierte (gekachelte) Speicherverwaltung Einteilung in (virtuelle) Seiten und (physischen) Seitenrahmen fester Größe Speicher Adressumsetzung mittels spezieller Hardwareeinheit (MMU) Betriebssystem übernimmt die Ein- bzw. Auslagerung Festplatte Bus 5 Adressumsetzung Mechanismen der Hardware p Virtuelle Adresse 000 0 1 000 0 2 010 1 3 100 1 4 011 0 5 001 1 6 111 0 7 110 0 Seitenfehler 1 0 1 0 1 1 0 0 Seitentabelle 0 o anwesend Verarbeitet virtuelles Adressetupel (p, o): Seitennummer p im (linearen) Adressraum des Prozesses Offset o innerhalb der Seite Bezogen auf die passende Seitentabelle → Erzeugt eine physische Adresse, welche auf den Speicherbus gelegt wird Seitenfehler Erfolgt bei nicht abgebildeter Seite (Präsenz-Bit = 0) Synchrone Programmunterbrechung (trap) abwesend Physische Adresse Memory Management Unit 0 0 1 0 1 1 0 0 → Bedingt Einlagerung der adressierten Seite durch das Betriebssystem 6 Seitentabellen (1) Seitentabelle Beschreibt den einem Prozess zugewiesenen Adressraum (ggf. mehrere davon) Dient der Abbildung von virtuellen Seiten auf Seitenrahmen (physischen Speicher) Menge von Seitendeskriptoren mit der virtuellen Seitenummer als Index 7 Seitentabellen (1) Seitentabelle Beschreibt den einem Prozess zugewiesenen Adressraum (ggf. mehrere davon) Dient der Abbildung von virtuellen Seiten auf Seitenrahmen (physischen Speicher) Menge von Seitendeskriptoren mit der virtuellen Seitenummer als Index Seitendeskriptor ReferenzBit Modifikations -Bit SchutzBits Präsenz -Bit Seitenrahmennummer Seitendeskriptor Beschreibt die statischen/dynamischen Eigenschaften einer Seite: Seitenrahmennummer: Gemäß der Seitengröße ausgerichtete physische Attribute: Adresse des Seitenrahmens Präsenz-Bit (Seite im Hauptspeicher präsent) Schutz-Bits (Lese-/Schreib-/Ausführungsschutz) Modifikations-Bit (Änderungsindikator, dirty bit) Referenz-Bit (Zugriffsindikator lesen/schreibend) 7 Seitentabellen (1) Seitentabelle Beschreibt den einem Prozess zugewiesenen Adressraum (ggf. mehrere davon) Dient der Abbildung von virtuellen Seiten auf Seitenrahmen (physischen Speicher) Menge von Seitendeskriptoren mit der virtuellen Seitenummer als Index Seitendeskriptor ReferenzBit Modifikations -Bit SchutzBits Präsenz -Bit Seitenrahmennummer Seitendeskriptor Beschreibt die statischen/dynamischen Eigenschaften einer Seite: Seitenrahmennummer: Gemäß der Seitengröße ausgerichtete physische Attribute: Adresse des Seitenrahmens Präsenz-Bit (Seite im Hauptspeicher präsent) Schutz-Bits (Lese-/Schreib-/Ausführungsschutz) Modifikations-Bit (Änderungsindikator, dirty bit) Referenz-Bit (Zugriffsindikator lesen/schreibend) Aufbau ist grundsätzlich stark plattformabhängig, vorgegeben durch die MMU 7 Seitentabellen (2) Ausflug in die Umsetzungsaspekte Umgang mit großen bzw. dünn besetzten Adressräumen Mehrstufige Seitentabellen Nicht benötigte Seitentabellen auslagern Adressraumsegmentierung (Text, Daten, Stapel) fördert Löcher im Adressraum Aufteilung in zweistufige Seitentabellen 2x 10-Bit-Felder p1 und p2 für Seitenummern + 12-Bit-Offset o → Seitentabellen mit je nur 1024 Einträgen 8 Seitentabellen (2) Ausflug in die Umsetzungsaspekte Umgang mit großen bzw. dünn besetzten Adressräumen Mehrstufige Seitentabellen Nicht benötigte Seitentabellen auslagern Adressraumsegmentierung (Text, Daten, Stapel) fördert Löcher im Adressraum Aufteilung in zweistufige Seitentabellen 2x 10-Bit-Felder p1 und p2 für Seitenummern + 12-Bit-Offset o → Seitentabellen mit je nur 1024 Einträgen Invertierte Seitentabellen [3] Mehrstufigkeit (> 3) wird ineffizient und stößt bei 64-Bit-Rechensystemen schnell an Grenzen (≈252 Einträge) Seitendeskriptoren lediglich für Seitenrahmen speichern 32 GiB physischer Speicher erfordern lediglich ≈8,4 Mio. Einträge (= 64 MiB) Zuordnung Prozess zu Seite wird schwieriger (Suche statt Index) → Hash-Tabellen lösen das Problem 8 Gliederung Virtueller Speicher Grundlagen Gekachelte Speicherverwaltung Seitenersetzung Grundlagen Least-Recently-Used-Algorithmus Zusammenfassung 9 Grundlagen der Seitenersetzung Zeitmultiplexen von Seitenrahmen durch Umlagerung Vorraussetzungen die zu erbringen sind: Geeignete Mechanismen zur Seitenumlagerung (vgl. Folie 4 ff.) Ein Seitenrahmen muss zur Ausnahme der angeforderten Seite verfügbar sein Freie Seitenrahmen ermöglichen direkte Speicherzuteilung (vgl. Kapitel 4) Andernfalls muss ein belegter Seitenrahmen freigegeben werden Freigeben bedingt ggf. die vorherige Auslagerung Strategie für die Suche nach einem geeigneten Kandidaten → Welche Seite im Hauptspeicher ist ersetzbar? 10 Grundlagen der Seitenersetzung Zeitmultiplexen von Seitenrahmen durch Umlagerung Vorraussetzungen die zu erbringen sind: Geeignete Mechanismen zur Seitenumlagerung (vgl. Folie 4 ff.) Ein Seitenrahmen muss zur Ausnahme der angeforderten Seite verfügbar sein Freie Seitenrahmen ermöglichen direkte Speicherzuteilung (vgl. Kapitel 4) Andernfalls muss ein belegter Seitenrahmen freigegeben werden Freigeben bedingt ggf. die vorherige Auslagerung Strategie für die Suche nach einem geeigneten Kandidaten → Welche Seite im Hauptspeicher ist ersetzbar? Die ideale Seitenersetzungsstrategie (Optimaler Algorithmus) [1] Ersetze die Seite die am längsten nicht referenziert wird Höchste Anzahl an Instruktionen bis zum erneuten Zugriff Diese Information ist i.A. nicht Verfügbar ⇝ Vorhersagbarkeit Nicht realisierbar, jedoch als Vergleichskandidat geeignet 10 Der Least-Recently-Used-Algorithmus (LRU) (Gute) Annäherung an den optimalen Algorithmus Der Least-Recently-Used-Algorithmus (LRU) Ersetze die Seite die am längsten nicht mehr referenziert wurde Der Beobachtung folgend, dass Zugriffe meist lokal gehäuft sind Eine alte Referenz deutet darauf hin, dass die Seite nicht mehr gebraucht wird LRU ist realisierbar, jedoch nicht billig Verkettete Liste aller Seiten, sortiert nach Alter ⇝ Suche und Manipulation aufwendig 11 Der Least-Recently-Used-Algorithmus (LRU) (Gute) Annäherung an den optimalen Algorithmus Der Least-Recently-Used-Algorithmus (LRU) Ersetze die Seite die am längsten nicht mehr referenziert wurde Der Beobachtung folgend, dass Zugriffe meist lokal gehäuft sind Eine alte Referenz deutet darauf hin, dass die Seite nicht mehr gebraucht wird LRU ist realisierbar, jedoch nicht billig Verkettete Liste aller Seiten, sortiert nach Alter ⇝ Suche und Manipulation aufwendig Umsetzung durch Hardwareunterstützung Erfordert einen Zähler C, welcher nach jedem Maschinenbefehl inkrementiert wird Jeder Eintrag der Seitentabelle wird um ein Feld für C ergänzt, welches bei jedem Speicherzugriff aktualisiert Vergrößert den notwendigen Speicherbedarf enorm (C typischerweise 64 Bit) Alternative Umsetzung durch Bitmatrizen (n × n, für n Seitenrahmen) → Betriebssystem sucht den Eintrag mit dem niedrigsten Zählerstand/Binärwert Entsprechende Hardwareunterstützung fehlt meist (teuer) 11 Der Aging-Algorithmus 0 1 2 3 4 5 R-Bits 0 0 0 0 0 0 Simulation von LRU in Software [4, S.261 ff.] Zeitintervall: 0 Seite Alter 0 00000000 0 1 00000000 0 2 00000000 0 3 00000000 0 4 00000000 0 5 00000000 0 Seitentabelle Reduktion der zeitlichen Auflösung, anstelle von C werden Zeitintervalle gezählt ⇝ Zeitgeberunterbrechung → Wesentlich geringerer Speicherbedarf (typ. 8 Bit) Ablauf in jedem Zeitintervall Die Zähler für das Alter werden nach rechts geschoben (vergessen) Das höchstwertige Bit des Zählers wird auf das Referenz-Bit gesetzt (merken) 12 Der Aging-Algorithmus 0 1 2 3 4 5 R-Bits 1 0 1 0 1 1 Simulation von LRU in Software [4, S.261 ff.] Zeitintervall: 1 Seite Alter 0 10000000 128 1 00000000 0 2 10000000 128 3 00000000 0 4 10000000 128 5 10000000 128 Seitentabelle Reduktion der zeitlichen Auflösung, anstelle von C werden Zeitintervalle gezählt ⇝ Zeitgeberunterbrechung → Wesentlich geringerer Speicherbedarf (typ. 8 Bit) Ablauf in jedem Zeitintervall Die Zähler für das Alter werden nach rechts geschoben (vergessen) Das höchstwertige Bit des Zählers wird auf das Referenz-Bit gesetzt (merken) 12 Der Aging-Algorithmus 0 1 2 3 4 5 R-Bits 1 1 0 0 1 0 Simulation von LRU in Software [4, S.261 ff.] Zeitintervall: 2 Seite Alter 0 11000000 192 1 10000000 128 2 01000000 64 3 00000000 0 4 11000000 192 5 01000000 64 Seitentabelle Reduktion der zeitlichen Auflösung, anstelle von C werden Zeitintervalle gezählt ⇝ Zeitgeberunterbrechung → Wesentlich geringerer Speicherbedarf (typ. 8 Bit) Ablauf in jedem Zeitintervall Die Zähler für das Alter werden nach rechts geschoben (vergessen) Das höchstwertige Bit des Zählers wird auf das Referenz-Bit gesetzt (merken) 12 Der Aging-Algorithmus 0 1 2 3 4 5 R-Bits 1 1 0 1 0 1 Simulation von LRU in Software [4, S.261 ff.] Zeitintervall: 3 Seite Alter 0 11100000 224 1 11000000 192 2 00100000 32 3 10000000 128 4 01100000 96 5 10100000 160 Seitentabelle Reduktion der zeitlichen Auflösung, anstelle von C werden Zeitintervalle gezählt ⇝ Zeitgeberunterbrechung → Wesentlich geringerer Speicherbedarf (typ. 8 Bit) Ablauf in jedem Zeitintervall Die Zähler für das Alter werden nach rechts geschoben (vergessen) Das höchstwertige Bit des Zählers wird auf das Referenz-Bit gesetzt (merken) 12 Der Aging-Algorithmus 0 1 2 3 4 5 R-Bits 1 0 0 0 1 0 Simulation von LRU in Software [4, S.261 ff.] Zeitintervall: 4 Seite Alter 0 11110000 240 1 01100000 96 2 00010000 16 3 01000000 64 4 10110000 176 5 01010000 80 Seitentabelle Reduktion der zeitlichen Auflösung, anstelle von C werden Zeitintervalle gezählt ⇝ Zeitgeberunterbrechung → Wesentlich geringerer Speicherbedarf (typ. 8 Bit) Ablauf in jedem Zeitintervall Die Zähler für das Alter werden nach rechts geschoben (vergessen) Das höchstwertige Bit des Zählers wird auf das Referenz-Bit gesetzt (merken) 12 Der Aging-Algorithmus 0 1 2 3 4 5 Simulation von LRU in Software [4, S.261 ff.] R-Bits 0 1 1 0 0 0 Reduktion der zeitlichen Auflösung, anstelle von C werden Zeitintervalle gezählt ⇝ Zeitgeberunterbrechung Zeitintervall: 5 → Wesentlich geringerer Speicherbedarf (typ. 8 Bit) Seite Alter 0 01111000 120 1 10110000 176 2 10001000 136 3 00100000 32 4 01011000 88 5 00101000 40 Seitentabelle Ablauf in jedem Zeitintervall Die Zähler für das Alter werden nach rechts geschoben (vergessen) Das höchstwertige Bit des Zählers wird auf das Referenz-Bit gesetzt (merken) Bei einem Seitenfehler Wird die Seite mit dem niedrigsten Zählerstand entfernt 12 Der Aging-Algorithmus Simulation von LRU in Software [4, S.261 ff.] 0 1 2 3 4 5 R-Bits 0 1 1 0 0 0 Reduktion der zeitlichen Auflösung, anstelle von C werden Zeitintervalle gezählt ⇝ Zeitgeberunterbrechung Zeitintervall: 5 → Wesentlich geringerer Speicherbedarf (typ. 8 Bit) Seite Alter 0 01111000 120 1 10110000 176 2 10001000 136 3 00100000 32 4 01011000 88 5 00101000 40 Seitentabelle Ablauf in jedem Zeitintervall Die Zähler für das Alter werden nach rechts geschoben (vergessen) Das höchstwertige Bit des Zählers wird auf das Referenz-Bit gesetzt (merken) Bei einem Seitenfehler Wird die Seite mit dem niedrigsten Zählerstand entfernt 12 Gliederung Virtueller Speicher Grundlagen Gekachelte Speicherverwaltung Seitenersetzung Grundlagen Least-Recently-Used-Algorithmus Zusammenfassung 13 Resümee und Ausblick Grundlagen virtuellen Speichers Arbeitsspeicher als Abstraktion des physischen Hauptspeichers Simultaner Mehrprogrammbetrieb von Prozessen die potentiell (zu) hohen Speicheranforderungen Realisierung in Form einer gekachelten Speicherverwaltung Erfordert Unterstützung durch die Hardware: Memory Management Unit Mechanismen des Betriebssystems zur Seitenverwaltung und Seitenumlagerung 14 Resümee und Ausblick Grundlagen virtuellen Speichers Arbeitsspeicher als Abstraktion des physischen Hauptspeichers Simultaner Mehrprogrammbetrieb von Prozessen die potentiell (zu) hohen Speicheranforderungen Realisierung in Form einer gekachelten Speicherverwaltung Erfordert Unterstützung durch die Hardware: Memory Management Unit Mechanismen des Betriebssystems zur Seitenverwaltung und Seitenumlagerung Strategien für die Seitenverwaltung Seitenersetzungsalgorithmen Optimaler Algorithmus ist nicht realisierbar Least-Recently-Used-Algorithmus (teuer) und dessen Annäherung durch Aging 14 Resümee und Ausblick Grundlagen virtuellen Speichers Arbeitsspeicher als Abstraktion des physischen Hauptspeichers Simultaner Mehrprogrammbetrieb von Prozessen die potentiell (zu) hohen Speicheranforderungen Realisierung in Form einer gekachelten Speicherverwaltung Erfordert Unterstützung durch die Hardware: Memory Management Unit Mechanismen des Betriebssystems zur Seitenverwaltung und Seitenumlagerung Strategien für die Seitenverwaltung Seitenersetzungsalgorithmen Optimaler Algorithmus ist nicht realisierbar Least-Recently-Used-Algorithmus (teuer) und dessen Annäherung durch Aging → Weitere Strategien (z.B. auf Basis der Arbeitsmenge) und Umsetzungsaspekte (z.B. Seitenflattern, Segmentierung) im nächsten Kapitel 14 Literaturverzeichnis (1) [1] BELADY, L. A.: A Study of Replacement Algorithms for a Virtual-storage Computer. In: IBM Systems journal 5 (1966), Nr. 2, S. 78–101 [2] STALLINGS, W. : Operating Systems: Internals and Design Principles. Upper Saddle River, NJ: Pearson/Prentice Hall„ 2009 [3] TALLURI, M. ; HILL, M. D. ; KHALIDI, Y. A.: A New Page Table for 64-bit Address Spaces. In: Proceedings of the 15th ACM symposium on Operating systems principles, 1995, S. 184–200 [4] TANENBAUM, A. S.: Moderne Betriebssysteme. Pearson Deutschland GmbH, 2009