Kapitel 8.1 Speicherverwaltung - Paging

Slides:



Advertisements
Ähnliche Präsentationen
Seitentauschstrategien in Theorie und Praxis für den Zentralspeicher
Advertisements

Algorithmen und Datenstrukturen
4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme.
Kapitel 11 Deadlocks RW-Systemarchitekur Kap. 11.
Kapitel 8 Speicherverwaltung
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
2.3 Register-Transfer-Strukturen
1 Was ist ein klassischer Prozess? A eine exe-Datei B log. Adressraum, Ablaufumgebung für genau einen Thread C log. Adressraum, Ablaufumgebung für eine.
Übersicht RAID-Verfahren Labor für Betriebsdatenverarbeitung
Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)
5.5 Virtueller Speicher Wenn der reale Speicher sogar für einzelne Prozesse zu klein ist : Virtueller Speicher (virtual memory),  ist „beliebig“ groß,
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
SAP R/3 - Speichermanagement
Systeme 1 Kapitel 3 Dateisysteme WS 2009/10.
Systeme 1 Kapitel 7.1 Deadlocks WS 2009/10.
Kapitel 6.1 Nebenläufigkeit und wechselseitiger Ausschluss
Systeme 1 Kapitel 5 Scheduling WS 2009/10.
Systeme 1 Kapitel 7 Deadlocks WS 2009/10.
Kapitel 7.2 Dining philosophers problem
Kapitel 8 Speicherverwaltung
WS 2009/10 1 Systeme 1 Kapitel 1 Aufbau von Rechnern.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Vorlesung: Betriebssysteme © 2002 Prof. Dr. G. Hellberg 1 Studiengang Informatik FHDW Vorlesung Betriebssysteme 1. Quartal 2002.
1 Linux Paging, Caching und Swapping. 1 Vortragsstruktur Paging – Das Virtuelle Speichermodell –Die Page Table im Detail –Page Allocation und Page Deallocation.
Produktform der Inversen 1
Vorlesung 4: Memory Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin Wintersemester.
Technische Informatik II Wintersemester 2002/03
Vorlesung 10 Mutual Exclusion Peter B. Ladkin Sommersemester 2001 Universität Bielefeld Technische Fakultät.
Vorlesung 2 Rechnerarchitektur Peter B. Ladkin Wintersemester 2001/2002 Universität Bielefeld Technische Fakultät.
Smartphones im Kanzleinetz Vergleich der technischen Umsetzung COLLEGA - TAG Freitag, 27. November 2009.
Referat zum Thema „DLL“
Interrupt Bei dem Transport von Daten zu einem Speichermedium oder zu einer Schnittstelle, muss der PC seine aktuelle Arbeit unterbrechen Man bemüht sich,
2.3 Register-Transfer-Strukturen
So arbeitet ein PC.
Duo- und Quad Prozessor-Architektur
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Speicherverwaltung durch Swapping
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Systeme 1 Kapitel 4 Prozesse WS 2009/10.
Betriebssysteme allgemein
Aufbau eines von-Neumann- Rechners Marcel Waldvogel.
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
INTEL Pentium 4 Prozessor
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 10 SS 2000 Quadtrees.
Zuordnung CacheHauptspeicher
Dualzahlen und ihre logischen Verknüpfungen
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss
Kapitel 8.2 Speicherverwaltung: Paging Segmentierung
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Vorlesung Datenbanksysteme vom Physische Datenorganisation
Bs Gemeinsame Datensegmente am Beispiel Solaris [Beachte: Unix/Linux setzen keine Hardware-Segmentierung voraus und sprechen daher statt von.
Studiengang Informatik FHDW
Betriebssysteme Übung Tutorium „TLB & Virtual Memory“
Gruppe 2 MEMORY MANAGEMENT Jakob Dietschy Arnold Huber
Arbeitsspeicher Eine Präsentation von - Namen wurden entfernt -
Wie Funktioniert es eigentlich?
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
2.3 Implementierung von Prozessen
KA – Rechnerarchitektur II ____________________________________________________________________________________________ ____________________________________________________________________________________________.
Jakob Dietschy Arnold Huber Karl Philip Schneider Lukas Unterberger Daniel Dötzl Gruppe 2 MEMORY MANAGEMENT.
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
Bs Der Speicherverwalter Speicherverwalter (memory manager) = im einfachsten Fall ein Systemprozess, der für die Umlagerung der Seiten (page.
LVM - Logical Volume Management unter Linux
Bs Segmentierung Adressraum besteht aus mehreren Segmenten (segments), die unabhängig voneinander manipulierbar sind. Segmentierungsstruktur ist.
Aktueller Stand der Technik. Auf dem Markt sind heute bereits 64-Bit Mikrocontroller. Die meiste Verwendung finden allerdings noch immer die 8-Bit Modelle.
Von Bits, Bytes und Raid Eine Schnuppervorlesung Inhalt
RAID-Systeme - Standards - Leistungsmerkmal - Redundanz - Datensicherheit eine Präsentation von Jochen Throm an der Berufsakademie Mosbach.
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
Das Betriebssystem Linux
 Präsentation transkript:

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

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

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

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

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

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

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

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

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

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

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 0111011110 6-Bit-Seitennummer 10-Bit-Offset WS 2009/10

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

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

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

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

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

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

Lokalität: Beispiel Zugriffsmuster Beispiel 1: Initalisiere alle Elemente Variante 1 Für N = 300 auf einer aktuellen Intel CPU (IA32): ~ 0.048 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

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): ~ 0.160 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

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

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

Lokalität: Beispiel Zugriffsmuster Beispiel 2: Matrixmultiplikation Test mit N = 1000 (Intel Core Duo 2666 Mhz)‏ Variante 1: 16.765.297.870 CPU Zyklen Variante 2: 3.922.373.010 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

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

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 00 ... 01 0111001110 22-Bit-Seitennummer 10-Bit-Offset WS 2009/10

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)‏ 00 ... 01 0111001110 22-Bit-Seitennummer 10-Bit-Offset P M Weitere Bits Seitenrahmennummer WS 2009/10

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

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

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

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

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

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

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

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

Frohe Weihnachten WS 2009/10