Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Systeme 1 Kapitel 8.1 Speicherverwaltung - Paging WS 2009/101.

Ähnliche Präsentationen


Präsentation zum Thema: "Systeme 1 Kapitel 8.1 Speicherverwaltung - Paging WS 2009/101."—  Präsentation transkript:

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

2 Zwischenklausur: – Jetzt am Samstag ( ) – 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/102

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/103

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/104

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/105

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 – Kombiniert mit Konzept des virtuellen Speichers WS 2009/106

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/107

8 Einfaches Paging: Beispiel WS 2009/108 Rahmen- nummer Hauptspeicher Prozess A geladen Prozess B geladen Prozess C geladen A.0 A.1 A.2 A.3 A.0 A.1 A.2 A.3 A.0 A.1 A.2 A.3 B.0 B.1 B.2 B.0 B.1 B.2 C.0 C.1 C.2 C.3 Prozess D mit 6 Seiten soll jetzt geladen werden!

9 Einfaches Paging: Beispiel WS 2009/109 Rahmen- nummer Hauptspeicher Prozess D geladen A.0 A.1 A.2 A.3 A.0 A.1 A.2 A.3 C.0 C.1 C.2 C.3 C.0 C.1 C.2 C.3 Prozess B ausgelagert D.0 D.1 D.2 D.3 D.4 Datenstrukturen zum aktuellen Zeitpunkt: Seitentabelle Prozess A Seitentabelle Prozess B Seitentabelle Prozess C Seitentabelle Prozess D Liste der freien Rahmen

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/1010

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

12 Einfaches Paging WS 2009/ Bit-Seitennummer10-Bit-Offset Seitentabelle des Prozesses = 1 … … … … Speicherzelle Nr. 478 (= ) Innerhalb des Seitenrahmens. => Reale Adresse: = 478 Seitenrahmen Nr. 147 (= )

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/1013

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/1014

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/1015

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/1016

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 WS 2009/1017 i j

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

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 WS 2009/1019 j i // jede Spalte for(j = 0; j < N; j++) { // jede Zeile for(i = 0; i < N; i++) { pos = i * N + j; element[pos] = 0; }

20 Lokalität: Beispiel Zugriffsmuster Beispiel 2: Matrixmultiplikation – Variante 1: WS 2009/1020 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]; }

21 Lokalität: Beispiel Zugriffsmuster Beispiel 2: Matrixmultiplikation – Variante 2: Transponiere Matrix WS 2009/1021 // 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 (i = 0; i < N; ++i) { for (j = 0; j < N; ++j) { for (k = 0; k < N; ++k) { res[i][j] += ma[i][k] * tmp[j][k]; }

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/1022

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/1023

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 WS 2009/ Bit-Seitennummer10-Bit-Offset

25 22-Bit-Seitennummer 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) WS 2009/ Bit-Offset PMWeitere BitsSeitenrahmennummer

26 Adressumsetzung WS 2009/1026 Seiten- rahmen … … Rahmennr.Offset Reale Adresse Seitentabelle Seitennummer Seitentabellen- zeiger Register Virtuelle Adresse Seitennr.Offset Rahmennr. Offset ProgrammPaging-VerfahrenHauptspeicher

27 Seitentabelle WS 2009/1027 Seite 0 Seite 1 Seite 2 Seite 3 Seite 4 Seite 5 Seite 6 Seite 7 Seitenrahmen 0 Seitenrahmen 1 Seitenrahmen 2 Seitenrahmen 3 Seitennr.P…Rahmennr. 00… 10… 21…0 30… 41…3 50… 60… 70… virtueller Adressraum Hauptspeicher 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/1028

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/1029

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

31 Verdrängung 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/1031

32 Verdrängung WS 2009/1032 Seite 0 Seite 1 Seite 2 Seite 3 Seite 4 Seite 5 Seite 6 Seite 7 Seitenrahmen 0 Seitenrahmen 1 Seitenrahmen 2 Seitenrahmen 3 Hauptspeicher Seitentabelle von Prozess 1 SeiteP…Rahmen 00… 10… 21…1 30… 41… 50… 60…2 70… SeiteP…Rahmen 00… 10… 21…0 30… 41…3 50… 60… 70… Seitentabelle von Prozess 2 Seite 0 Seite 1 Seite 2 Seite 3 Seite 4 Seite 5 Seite 6 Seite 7 virtueller Adressraum Prozess 2 Seite 6 von Prozess 2 soll Aus- gelagert werden => P = 0 Seitenrahmen 2 soll freigeräumt werden. virtueller Adressraum Prozess 1

33 Verdrängung WS 2009/1033 Seite 0 Seite 1 Seite 2 Seite 3 Seite 4 Seite 5 Seite 6 Seite 7 Seitenrahmen 0 Seitenrahmen 1 Seitenrahmen 2 Seitenrahmen 3 Hauptspeicher RahmenProzessSeite Abbildung Seitenrahmennummer -> (Prozessnummer, Seitennummer) Seite 0 Seite 1 Seite 2 Seite 3 Seite 4 Seite 5 Seite 6 Seite 7

34 Frohe Weihnachten WS 2009/1034


Herunterladen ppt "Systeme 1 Kapitel 8.1 Speicherverwaltung - Paging WS 2009/101."

Ähnliche Präsentationen


Google-Anzeigen