Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Kapitel 8.1 Speicherverwaltung - Paging

Ähnliche Präsentationen


Präsentation zum Thema: "Kapitel 8.1 Speicherverwaltung - Paging"—  Präsentation transkript:

1 Kapitel 8.1 Speicherverwaltung - Paging
Systeme 1 Kapitel 8.1 Speicherverwaltung - Paging WS 2009/10

2 Zwischenklausur: Vorlesungsbeginn Jetzt am Samstag (19.12.2009)
Ort: Technische Fakultät Zeit: 10 Uhr s.t. Dauer: 45 Minuten Räume: /036 Hilfsmittel: Außer Stifte KEINE! (Blätter werden gestellt) Vorlesungsbeginn WS 2009/10

3 Letzte Vorlesung Speicherhierarchie
Anforderungen an das Betriebssystem Relokation Schutz Gemeinsame Nutzung Logische Organisation Physikalische Organisation Grundlegende Methoden der Speicherverwaltung Partitionierung Paging Segmentierung WS 2009/10

4 Letzte Vorlesung Partitionierung Statische Partitionierung
Partitionen mit gleicher Länge Partitionen mit unterschiedlicher Länge Dynamische Partitionierung Defragmentierung erforderlich Speicherzuteilungsalgorithmen: Best Fit, First Fit, Next Fit Buddy-System Kompromiss zwischen statischer und dynamischer Partitionierung WS 2009/10

5 Speicherverwaltung Speicherverwaltung:
Aufteilung des verfügbaren Hauptspeichers zwischen Betriebssystem verschiedenen Prozessen Speicherverwaltung erfordert enges Zusammenspiel von Hardware und Betriebssystem. Zur Erinnerung: Zu jedem Prozess gehört ein Adressraum: zugeordneter Arbeitsspeicher mit minimalen und maximalen Adressen Enthält Ausführbares Programm, Programmdaten und Kellerspeicher (“Stack”)‏ WS 2009/10

6 Grundlegende Methoden der Speicherverwaltung
Partitionierung Für Speicheraufteilung zwischen verschiedenen Prozessen eher veraltetes Konzept Betriebssysteminterne Nutzung von Partitionierung Paging Einfaches Paging Kombiniert mit Konzept des virtuellen Speichers Segmentierung Einfache Segmentierung WS 2009/10

7 Einfaches Paging Wie bisher (im Gegensatz zu virtuellem Speicherkonzept): Prozesse sind entweder ganz im Speicher oder komplett ausgelagert. Im Gegensatz zu Partitionierung werden Prozessen nicht notwendigerweise zusammenhängende Speicherbereiche zugeordnet. Hauptspeicher aufgeteilt in viele gleichgroße Seitenrahmen. Speicher eines Prozesses aufgeteilt in Seiten derselben Größe. Zuordnung von Seiten zu Seitenrahmen beim Laden von Prozessen Logische Adressen der Form „Seitennummer, Offset“ Pro Prozess eine „Seitentabelle“ Seitentabelle übersetzt Seitennummern in Nummern von Seitenrahmen im physikalischen Speicher Interne Fragmentierung nur bei letzter Seite eines Prozesses WS 2009/10

8 Einfaches Paging: Beispiel
Hauptspeicher Hauptspeicher Hauptspeicher Hauptspeicher Rahmen- nummer A.0 A.0 A.0 1 1 A.1 1 A.1 1 A.1 2 2 A.2 2 A.2 2 A.2 3 3 A.3 3 A.3 3 A.3 4 4 4 B.0 4 B.0 Prozess D mit 6 Seiten soll jetzt geladen werden! 5 5 5 B.1 5 B.1 6 6 6 B.2 6 B.2 7 7 7 7 C.0 8 8 8 8 C.1 9 9 9 9 C.2 10 10 10 10 C.3 11 11 11 11 12 12 12 12 13 13 13 13 14 14 14 14 Prozess A geladen Prozess B geladen Prozess C geladen WS 2009/10

9 Einfaches Paging: Beispiel
Datenstrukturen zum aktuellen Zeitpunkt: Hauptspeicher Hauptspeicher Rahmen- nummer A.0 A.0 - 1 A.1 1 A.1 1 1 1 - 2 A.2 2 A.2 2 2 2 - 3 A.3 3 A.3 3 3 Seitentabelle Prozess B 4 4 D.0 Seitentabelle Prozess A 5 5 D.1 6 6 D.2 7 C.0 7 C.0 7 4 8 C.1 8 C.1 1 8 1 5 9 C.2 9 C.2 2 9 2 6 10 C.3 10 C.3 3 10 3 11 11 11 D.3 4 Seitentabelle Prozess C 12 12 12 D.4 Seitentabelle Prozess D 13 13 14 14 Prozess B ausgelagert Prozess D geladen 13 Liste der freien Rahmen 14 WS 2009/10

10 Einfaches Paging Berechnung von physikalischen Adressen aus logischen Adressen: Voraussetzung: Länge der Seiten ist eine Zweierpotenz. Logische Adresse besteht aus Seitennummer und Offset. Absolute Adresse wird durch Hardware auf Grundlage der Seitentabelle des Prozesses berechnet. WS 2009/10

11 Einfaches Paging Beispiel: logische Adresse der Länge 16 Bit
Der Prozess kann somit bis zu 26 verschiedene Seiten haben, die über die Seitentabelle des Prozesses auf Seitenrahmen im Hauptspeicher abgebildet werden. Jede Seite besteht aus 210 = 1024 Bytes. Berechnung der physikalischen Adresse: 000001 6-Bit-Seitennummer 10-Bit-Offset WS 2009/10

12 Einfaches Paging => Reale Adresse: 6-Bit-Seitennummer 10-Bit-Offset
000001 = 478 = 1 1 Speicherzelle Nr. 478 (=< >) Innerhalb des Seitenrahmens. 2 3 Seitentabelle des Prozesses => Reale Adresse: Seitenrahmen Nr. 147 (=< >) WS 2009/10

13 Einfaches Paging Entfernen eines Prozesses aus dem Speicher:
Lagere Prozess auf Hintergrundspeicher aus (z.B. Festplatte). Über Seitentabelle kann man feststellen, welche Seitenrahmen dem Prozess gehören. Füge diese Rahmen zur Liste der freien Rahmen hinzu. (Keine zusätzlichen Datenstrukturen des Betriebssystems benötigt.)‏ WS 2009/10

14 Paging mit virtuellem Speicher
Grundidee: Wenn man im Zusammenhang mit Auslagern sowieso mit Hintergrundspeicher arbeitet, dann hat man auch die Möglichkeit, nur Teile der Daten von Prozessen ein- bzw. auszulagern. Das Programm kann momentan weiter ausgeführt werden, wenn die aktuell benötigten Informationen (Code und Daten) im Speicher sind. Wird auf Informationen zugegriffen, die ausgelagert (auf der Festplatte) sind, so müssen diese nachgeladen werden. Bezeichnungen: Hauptspeicher = realer Speicher Hauptspeicher + Hintergrundspeicher = virtueller Speicher WS 2009/10

15 Paging mit virtuellem Speicher
Vorteile: Mehr aktive Prozesse im Speicher (=> Pseudoparallelismus!)‏ Tatsächlicher Speicherplatzbedarf eines Prozesses muss nicht von vornherein feststehen. Adressraum eines Prozesses kann jetzt größer sein als verfügbarer Hauptspeicher. Nachteil: Bei Zugriff auf Code/Daten, die nicht im Hauptspeicher vorhanden sind, muss das Betriebssystem die entsprechenden Seiten nachladen. Dabei müssen evtl. andere Seiten ausgelagert werden, um Platz zu schaffen. WS 2009/10

16 Lokalität Kann das überhaupt effizient funktionieren?
Antwort: meistens! Grund: Räumliche und zeitliche Lokalität von Programmen, d.h. Abarbeitung während kürzerer Zeit bewegt sich häufig in engen Adressbereichen. Abarbeitung von Schleifen In zeitlich engem Abstand Zugriff auf gleiche Daten Zugriffe auf benachbarte Daten Aufgabe des Programmierers WS 2009/10

17 Lokalität: Beispiel Matrix mit N x N Elementen.
Arbeitsspeicher „1-dimensional“, daher: Ordne jede Zeile nacheinander im Speicher an. Zugriff auf Element (i ,j) (i-te Spalte in Zeile j): j * N + i i j WS 2009/10

18 Lokalität: Beispiel Zugriffsmuster Beispiel 1: Initalisiere alle Elemente Variante 1 Für N = 300 auf einer aktuellen Intel CPU (IA32): ~ s i // jede Zeile for(j = 0; j < N; j++)‏ { // jede Spalte for(i = 0; i < N; i++)‏ pos = j * N + i; element[pos] = 0; } j WS 2009/10

19 Lokalität: Beispiel Zugriffsmuster Beispiel 1: Initalisiere alle Elemente Variante 2: Vertausche Zeilenindex mit Spaltenindex Für N = 300 auf einer aktuellen Intel CPU (IA32): ~ s j // jede Spalte for(j = 0; j < N; j++)‏ { // jede Zeile for(i = 0; i < N; i++)‏ pos = i * N + j; element[pos] = 0; } i WS 2009/10

20 Lokalität: Beispiel Zugriffsmuster Beispiel 2: Matrixmultiplikation
Variante 1: for (i = 0; i < N; ++i)‏ { for (j = 0; j < N; ++j)‏ for (k = 0; k < N; ++k)‏ res[i][j] += ma[i][k] * mb[k][j]; } WS 2009/10

21 Lokalität: Beispiel Zugriffsmuster Beispiel 2: Matrixmultiplikation
Variante 2: Transponiere Matrix // transponiere Matrix B in temporäre Matrix for (i = 0; i < N; ++i) { for (j = 0; j < N; ++j) { tmp[i][j] = mb[j][i]; } for (k = 0; k < N; ++k) { res[i][j] += ma[i][k] * tmp[j][k]; WS 2009/10

22 Lokalität: Beispiel Zugriffsmuster Beispiel 2: Matrixmultiplikation
Test mit N = 1000 (Intel Core Duo 2666 Mhz)‏ Variante 1: CPU Zyklen Variante 2: CPU Zyklen Relativer Gewinn: >70% !!! Analyse: Variante 2 benötigt zusätzlichen Speicher für die transponierte Matrix. Zudem müssen N*N Elemente kopiert werden. Dennoch: Die 1000 nicht-sequentiellen Zugriffe (Matrix B) in Variante 1 sind wesentlich teurer. In Variante 2 kann über beide Matrizen sequentiell iteriert werden. Anmerkung: In diesem Beispiel wirken Cache-Effekte. Die Datenmenge ist zu klein, um in den Hintergrundspeicher ausgelagert zu werden. Dennoch ähnlicher Effekt, da Cache-Speicher um ein Vielfaches schneller als Hauptspeicher. WS 2009/10

23 Lokalität Paging mit virtuellem Speicher ist nur dann effizient, wenn Lokalität gegeben. Falls nicht: Ständiges Aus- und Einlagern von Seiten zwischen Hauptspeicher und Festplatte Bezeichnung: Seitenflattern („thrashing“) WS 2009/10

24 Technische Realisierung
Technische Realisierung von Paging mit virtuellem Speicher: Die Daten des Prozesses befinden sich im Hintergrundspeicher (Festplatte), bei nicht komplett ausgelagerten Prozessen zusätzlich noch Teile im Speicher. Wie bei einfachem Paging: Trennung der logischen Adressen in Seitennummer und Offset, z.B.: Im Gegensatz zu einfachem Paging: Logische Adressen überdecken kompletten virtuellen Adressraum, z.B. 32-Bit- / 64-Bit-Adressen. Pro Prozess eine Seitentabelle zur Übersetzung Seitennummer => Seitenrahmen 22-Bit-Seitennummer 10-Bit-Offset WS 2009/10

25 Technische Realisierung
Logische Adresse: Seitentabelleneintrag: Present-Bit P: „Seite ist im Hauptspeicher“ Modify-Bit M: „Seite wurde verändert“ Weitere Bits für Schutzrechte und gemeinsame Nutzung Seitentabelle liegt im Hauptspeicher. Umsetzung der virtuellen Adressen in reale Adressen mit Hardwareunterstützung (Memory Managment Unit (MMU) des Prozessors)‏ 22-Bit-Seitennummer 10-Bit-Offset P M Weitere Bits Seitenrahmennummer WS 2009/10

26 Seitentabellen- zeiger
Adressumsetzung Virtuelle Adresse Reale Adresse Seitennr. Offset Rahmennr. Offset Register Seitentabellen- zeiger Offset Seitentabelle Seiten- rahmen Seitennummer Rahmennr. Programm Paging-Verfahren Hauptspeicher WS 2009/10

27 Seitentabelle Seitenrahmen 0 Seitenrahmen 1 Seitenrahmen 2
Hauptspeicher Seitennr. P Rahmennr. 1 2 3 4 5 6 7 virtueller Adressraum WS 2009/10 Seitentabelle des Prozesses im Hauptspeicher

28 Seitenfehler Was passiert beim Zugriff auf eine Seite, die sich nicht im Hauptspeicher befindet? Hardware (MMU) stellt anhand des present bits fest, dass angefragte Seite nicht im Hauptspeicher ist (=> „Seitenfehler“ bzw. „page fault“). Auslösen einer Unterbrechung („Interrupt“) durch die Hardware Behandlung des Interrupts: Laufendes Programm wird unterbrochen, Sichern des aktuellen Programmzustandes durch Hardware (Stand des Programmzählers!)‏ Routine zur Interruptbehandlung wird aufgerufen. Feststellen des Grundes der Unterbrechung (hier: page fault)‏ Behandlung abhängig vom Grund der Unterbrechung, hier: Betriebssystem lädt die entsprechende Seite von der Festplatte in einen freien Seitenrahmen. Wenn kein Seitenrahmen frei: Vorheriges Verdrängen eines belegten Seitenrahmens Aktualisierung der Seitentabelle Danach: Laufendes Programm wird wieder fortgesetzt. WS 2009/10

29 Seitenfehler Welche Informationen benötigt das Betriebssystem zum Einlagern von Seiten (d.h. während der Behandlung einer Unterbrechung wegen eines page faults)? Abbildung Seitennummer --> Festplattenadresse, um die gesuchte Seite auf der Festplatte zu finden Liste freier Seitenrahmen WS 2009/10

30 Seitenfehler Seitenrahmen 0 Seitenrahmen 1 Seitenrahmen 2
Hauptspeicher Seitennr. P Rahmennr. 1 2 3 4 5 6 7 Festplatten-Adresse A D B X Y C E F virtueller Adressraum WS 2009/10 Seitentabelle des Prozesses im Hauptspeicher

31 Verdrängung Festplatte.
Wenn kein freier Seitenrahmen vorhanden: Verdrängen von Seitenrahmen Festplatte. Je nach Betriebssystem: Alle Seitenrahmen sind Kandidaten für Verdrängung oder Nur Seitenrahmen des eigenen Prozesses Entscheidung unter diesen Kandidaten gemäß Verdrängungsstrategie (Ziel: gute Ausnutzung von Lokalität) Ist das Modify-Bit M gesetzt, dann muss Seite im entsprechenden Rahmen auf Festplatte zurückgeschrieben werden. Nach Verdrängen eines Seitenrahmens muss die Seitentabelle des zugehörigen Prozesses aktualisiert werden. Da Seitentabellen meist nur dünn besetzt: Suchen des verdrängten Seitenrahmens in Seitentabelle des Prozesses ineffizient Abbildung Seitenrahmennummer --> (Prozessnummer, Seitennummer) hilfreich WS 2009/10

32 Verdrängung Seitenrahmen 2 soll freigeräumt werden. Seitenrahmen 0
Hauptspeicher Seite P Rahmen 1 2 3 4 5 6 7 Seite P Rahmen 1 2 3 4 5 6 7 virtueller Adressraum Prozess 1 virtueller Adressraum Prozess 2 Seite 6 von Prozess 2 soll Aus- gelagert werden => P = 0 WS 2009/10 Seitentabelle von Prozess 1 Seitentabelle von Prozess 2

33 Verdrängung Seitenrahmen 0 Seitenrahmen 1 Seitenrahmen 2
Hauptspeicher Rahmen Prozess Seite 1 2 6 3 4 Abbildung Seitenrahmennummer -> (Prozessnummer, Seitennummer) WS 2009/10

34 Frohe Weihnachten WS 2009/10


Herunterladen ppt "Kapitel 8.1 Speicherverwaltung - Paging"

Ähnliche Präsentationen


Google-Anzeigen