Kapitel 8.2 Speicherverwaltung: Paging Segmentierung

Slides:



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

Algorithmen und Datenstrukturen
Hash-Tabellen und -Funktionen Hash-Tabellen in Java
4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme.
Eine dynamische Menge, die diese Operationen unterstützt,
Vorlesung Programmieren II
Kapitel 8 Speicherverwaltung
Prof. Dr. T. Kudraß1 Hash-Verfahren. Prof. Dr. T. Kudraß2 Einführung Drei Alternativen, wie Dateneinträge k* im Index aussehen können: 1. Datensatz mit.
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
FH-Hof Der B-Baum Richard Göbel. FH-Hof Wahl des Verzweigungsgrad Verzweigungsgrad kann größer als 2 sein v Nachfolger für einen Knoten v-1 Werte in einem.
5.5 Virtueller Speicher Wenn der reale Speicher sogar für einzelne Prozesse zu klein ist : Virtueller Speicher (virtual memory),  ist „beliebig“ groß,
Suche in Texten (Stringsuche )
SAP R/3 - Speichermanagement
Kapitel 8.1 Speicherverwaltung - Paging
Systeme 1 Kapitel 3 Dateisysteme 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
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Effizienz: Indexstrukturen
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Algorithmentheorie 04 –Hashing
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (15 Hashverfahren: Verkettung der Überläufer) Prof. Th. Ottmann.
Algorithmentheorie 7 – Bin Packing
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.
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.
High Performance = Innovative Computer Systems + Efficient Algorithms Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen.
Algorithmen und Komplexität
Referat zum Thema „DLL“
Kakuro Regeln und Strategien
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
Systeme 1 Kapitel 4 Prozesse WS 2009/10.
Einführung in die Programmierung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 10 SS 2000 Quadtrees.
Zuordnung CacheHauptspeicher
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
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.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Aufgabe 1 In einem Mikroprozessorsystem mit 32-bit-Datenzugriff auf den Hauptspeicher ist ein Daten-Cache vorhanden. Das Laden des Caches erfolgt in Blöcken.
Bs Gemeinsame Datensegmente am Beispiel Solaris [Beachte: Unix/Linux setzen keine Hardware-Segmentierung voraus und sprechen daher statt von.
Algorithmen und Datenstrukturen Übungsmodul 11
Die Idee hinter Copying Garbage Collection (1) Aufteilung des Heaps in zwei Teile: To-Space und From-Space Nutzung eines Teiles durch das Programm Ist.
Studiengang Informatik FHDW
Betriebssysteme Übung Tutorium „TLB & Virtual Memory“
Fingerprint Matching On Card
Gruppe 2 MEMORY MANAGEMENT Jakob Dietschy Arnold Huber
Grundlagen, Prinzipien und Aufgaben eines Betriebssystems
2.3 Implementierung von Prozessen
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.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
4.4 Speicherarchitektur E/AGeräte E/A-Einheiten Leitwerk Prozessor
Bs Segmentierung Adressraum besteht aus mehreren Segmenten (segments), die unabhängig voneinander manipulierbar sind. Segmentierungsstruktur ist.
Programmiersprachen II Fortsetzung Datenstrukturen Hashing Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Von Bits, Bytes und Raid Eine Schnuppervorlesung Inhalt
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
Das Betriebssystem Linux
 Präsentation transkript:

Kapitel 8.2 Speicherverwaltung: Paging Segmentierung Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/10

Speicherverwaltung (Wiederholung) Grundlegende Anforderungen an Speicherverwaltung: Aufteilung des verfügbaren Hauptspeichers zwischen Betriebssystem verschiedenen Prozessen 5 Anforderungen nach Lister / Eager: Relokation: Übersetzung der Speicherreferenzen im Programmcode in tatsächliche physikalische Speicheradressen durch Prozessorhardware und Betriebssystemsoftware. Schutz Schutz von Prozessen gegen beabsichtigte oder unbeabsichtigte Störungen durch andere Prozesse mittels in Hardware integrierter dynamischer Adressüberprüfung. WS 2009/10

Speicherverwaltung (Wiederholung) 5 Anforderungen nach Lister / Eager (ff): Gemeinsame Nutzung Gemeinsame und kontrollierte Nutzung von Speicher durch mehrere Prozesse: z.B. Bibliotheken oder gemeinsam genutzter Speicher zur Kooperation. Logische Organisation Logische Aufteilung von linear organisierten Speicher anhand der speziellen Anforderungen der Programme. Physikalische Organisation Organisation des Datenflusses zwischen den verschiedenen Speicherarten (z.B. zwischen Hauptspeicher und Sekundärspeicher). WS 2009/10

Grundlegende Methoden der Speicherverwaltung Partitionierung Aufteilung des Speichers in Bereiche mit festen Grenzen Fester, zusammenhängender Teil des Hauptspeichers für Betriebssystem und pro Prozess ein zusammenhängender Teil des Speichers Verschiedene Varianten: Statische Partitionierung Einteilung des Speichers in feste Anzahl von Partitionen Dynamische Partitionierung Einteilung in Partitionen variabler Länge Buddy-Verfahren Kombination von statischen und dynamischen Verfahren. Vorteil: geringe Komplexität Nachteil: Prozesse sind entweder ganz im Speicher oder komplett ausgelagert. -> Paging WS 2009/10

Relokation Nach Aus- und Wiedereinlagern von Prozessen liegen Programmcode bzw. Daten an anderer Stelle. Absolute Sprungbefehle und Datenzugriffsbefehle sollen weiterhin funktionieren. Unterscheidung: Logische Adresse: Bezug auf eine Speicherstelle unabhängig von der aktuellen Zuteilung von Daten im Speicher Relative Adresse: Spezialfall einer logischen Adresse Adresse relativ zu einem bekannten Punkt (meist Programmanfang) ausgedrückt Physikalische bzw. absolute Adresse: konkrete Stelle im Hauptspeicher WS 2009/10

Relokation Berechnung von absoluten Adressen aus relativen Adressen durch Hardware. Beim Einlagern eines Prozesses: Adresse des Programmanfangs in Basisregister. Zusätzlich: Zur Realisierung von Speicherschutz enthält Grenzregister die höchste erlaubte Speicheradresse WS 2009/10

Relokation (Relative Adresse) Prozesskontrollblock Programm Daten Stapel Basisregister Addierer Absolute Adresse Grenzregister Vergleicher Unterbrechung an Betriebssystem Prozessabbild im Hauptspeicher WS 2009/10

Grundlegende Methoden der Speicherverwaltung Einfaches Paging 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 000001 0111011110 6-Bit-Seitennummer 10-Bit-Offset WS 2009/10

Grundlegende Methoden der Speicherverwaltung Einfaches Paging Hier Seite 1 des Seitenrahmen physikalische Adresse 100100110111011110 mit 26 Seiten pro Prozess und 210 Bytes Seitengröße. Nachteil: Bei Auslagerung in den Hintergrundspeicher immer nur für vollständigen Prozess möglich. Paging mit virtuellem Speicher 000001 0111011110 6-Bit-Seitennummer 10-Bit-Offset 10010010 10010011 11011001 11111010 Seitentabelle des Prozesses 1 2 3 Logische Adresse WS 2009/10

Grundlegende Methoden der Speicherverwaltung Paging mit virtuellem Speicher 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. Hauptspeicher + Hintergrundspeicher = virtueller Speicher erlaubt logische Adressen über vollen Adressraum (32 bzw. 64 Bit), da Seiten zu jeder Zeit in den Hintergrundspeicher ausgelagert werden können. WS 2009/10

Grundlegende Methoden der Speicherverwaltung Paging mit virtuellem Speicher Wie bei einfachem Paging: Trennung der logischen Adressen in Seitennummer und Offset, z.B.: Logische Adresse: Seitentabelleneintrag: Umsetzung der Adresse mit Hardwareunterstützung (MMU). 00 ... 01 0111001110 22-Bit-Seitennummer 10-Bit-Offset P M Weitere Bits Seitenrahmennummer P (Present Bit), M (Modify Bit), weitere Bits für Schutzrechte etc. WS 2009/10

Grundlegende Methoden der Speicherverwaltung Paging mit virtuellem Speicher Da Programmcode und Daten eines Prozesses teilweise oder vollständig ausgelagert sein können ergeben sich zwei Probleme: Eine angeforderte logische Adresse befindet sich nicht im Speicher Seitenfehler Muss eine ausgelagerte Seite geladen werden und der Hauptspeicher ist voll, dann muss Platz geschaffen werden durch Auslagerung einer anderen Seite Verdrängung WS 2009/10

Grundlegende Methoden der Speicherverwaltung Paging mit virtuellem Speicher Verdrängung (MMU) stellt anhand des present bits fest, dass angefragte Seite nicht im Hauptspeicher ist (=> „Seitenfehler“ bzw. „page fault“). Der laufenden (und anfragende Prozess) muss unterbrochen werden Betriebssystemroutine zum Laden der angeforderten Seite wird gestartet Falls die angeforderte Seite auf der Festplatte existiert: Falls freier Seitenrahmen vorhanden: Lade Seite in freien Seitenrahmen Sonst Starte Betriebssystemroutine zur Verdrängung Sonst: => angeforderte Adresse ist unbekannt / ungültig Stoppe Prozess => Speicherschutzverletzung WS 2009/10

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

Größe von Seitentabellen Problem: Größe der Seitentabelle Bsp.: 32-Bit-Adressraum 20-Bit Seitennummer, 12-Bit Offset 220 Seiten der Größe 212 Byte Seitentabelle mit 220 Zeilen => 4 MB für Seitentabelle bei 4 Byte pro Zeile, d.h. 210 Seiten für die Seitentabelle! Für jeden Prozess! Noch schlimmer bei 64-Bit-Adressraum … Abhilfe: Zwei- und Mehrstufige Seitentabellen „Invertierte Seitentabellen“ WS 2009/10

Zweistufige Seitentabellen „Hierarchische Seitentabelle“ (vgl. Pentium)‏ Idee: Speichere auch Seitentabelle im virtuellen Speicher Im Beispiel: 220 Seiten mit jeweils 212 Byte, pro Eintrag 4 Byte => 222 Byte für Seitentabelle, d.h. 210 Seiten für Seitentabelle benötigt Führe „Hauptseite“ (212 Byte) ein, die immer im Speicher liegt. Hauptseite enthält 210 Verweise auf Seiten der „Benutzerseitentabelle“, indiziert mit ersten 10-Bit der Adresse Wenn gesuchte Seite der Benutzerseitentabelle nicht im Speicher: Lade in einen freien Seitenrahmen Benutze 10 mittlere Bit, um in „Untertabelle“ den gesuchten Seitenrahmen zu finden (evtl. Nachladen von Festplatte)‏ Restliche 12-Bit wie üblich als Offset innerhalb des Seitenrahmens WS 2009/10

Adressumsetzung Virtuelle Adresse Reale Adresse 10-Bit 10-Bit 12-Bit Rahmennr. Offset … Register Hauptseiten- tabellenzeiger Hauptseitentabelle (210 Einträge) Seiten- rahmen … Untertabelle (210 Einträge) Programm Paging-Verfahren Hauptspeicher WS 2009/10

Beispiel: Vierstufige Seitentabellen Aktuelle Implementierungen verwenden meist Vierstufige Seitentabellen: Aber recht aufwändiger Berechnung. Diese Berechnungen werden sehr häufig vorgenommen => Optimierungen! Virtuelle Adresse Level 4 Index Level 3 Index Level 2 Index Level 1 Index Offset Physikalische Adresse Hauptspeicher Level 1 Eintrag Level 1 Tabelle Level 2 Eintrag Level 2 Tabelle Level 3 Eintrag Level 3 Tabelle Level 4 Eintrag Level 4 Tabelle WS 2009/10

Translation Lookaside Buffer (TLB) Effizienzproblem: Bei Paging zieht ein Speicherzugriff auf Code / Daten einen zusätzlichen Zugriff auf die Seitentabelle im Speicher nach sich (sogar zwei bei zweistufiger Seitentabelle). Doppelte (dreifache) Zugriffszeit Hardwaremäßige Beschleunigung durch einen zusätzlichen Cache für Adressübersetzung: Translation Lookaside Buffer (TLB) = „Adressumsetzungspuffer“ Ablauf: Nachsehen, ob Eintrag zu virtueller Adresse in TLB Wenn ja: Lese Seitenrahmennummer aus TB Sonst: Nachsehen in Seitentabelle Evtl. Seite von Festplatte nachladen WS 2009/10

Translation Lookaside Buffer (TLB) Virtuelle Adresse Hauptspeicher Seitennr. Offset Sekundärspeicher … … TLB TLB-Treffer Offset Seite laden Seiten- rahmen Seitentabelle … … TLB- Fehlschlag Rahmennr. Offset Reale Adresse Seitenfehler WS 2009/10

Translation Lookaside Buffer (TLB) Der TLB ist ein Hardware-Cache. Meist realisiert als assoziativer Speicher: Einträge der Form (Seitennummer, Seitentabelleneintrag)‏ Angefragte Seitennummer wird durch Hardware parallel mit allen Einträgen in TLB verglichen. Ausgabe: Vorhanden, Seitentabelleneintrag Nicht vorhanden Bei Eintrag: Verdrängungsstrategien notwendig … Teuerste Realisierungsmöglichkeit eines Caches! WS 2009/10

Translation Lookaside Buffer (TLB) Virtuelle Adresse Seitennr. Offset 5 502 Seitennr. Seitentabelleneinträge 19 128 1 5 37 90 … … 37 502 Rahmennr. Offset Reale Adresse Adressumsetzungspuffer WS 2009/10

Physikalische Adresse TLB und Caches Zusätzlich noch Caches für Programme und Daten: Caches für Programme und Daten sind TLB / MMU nachgeschaltet. Verwenden physikalische Adressen. Virtuelle Adresse MMU Physikalische Adresse Cache Hauptspeicher WS 2009/10

Virtuelle Cache-Adressierung Alternative: Cache mit der virtuellen Adresse adressieren. Vorteil: Adressumsetzung und Cachezugriff parallel Nachteil: Verschiedene Prozesse benutzen gleiche virtuelle Adresse für verschiedene reale Adressen. Daten- / Programmcache bei Prozesswechsel ungültig Abhilfe bei Single-Prozessor-Umgebungen: Trage zusätzlich zur virtuellen Adresse auch PID (process identifier)-Tag ein Schwierig in Zusammenhang mit Konsistenz von Caches bei Multiprozessoren Meist reale Cache-Adressierung verwendet. Virtuelle Adresse MMU Cache Physikalische Adresse Hauptspeicher WS 2009/10

Invertierte Seitentabellen Siehe Power PC, IBM AS/400 Beobachtung: Sei n die Zahl der Seiten im virtuellen Adressraum, m die Zahl der einem Prozess zugeordneten Seitenrahmen. Dann ist üblicherweise n >> m. Seitentabellen sind meist nur sehr dünn besetzt Seitentabelle zur Abbildung Seitennummer ! Seitenrahmennummer verschwendet Speicherplatz. Allgemeines Problem: Gegeben Schlüssel k1, …, km aus {0, …, n-1} oder allgemein k1, …, km aus U mit |U| = n. Gesucht ist eine Methode, die jedem Schlüssel ki einen Wert vi zuordnet. Die Zuordnung soll speicher- und laufzeiteffizient sein. WS 2009/10

Invertierte Seitentabellen Methoden aus Gebiet „Algorithmen und Datenstrukturen“ (Informatik II, Algorithmentheorie)! Bei „Invertierten Seitentabellen“ benutzt: Hashing Schlüssel ki sind Seitennummern Wert vi sind Seitenrahmennummern Benutze Tabellen der Länge m (Anzahl der Seitenrahmen) (oder auch etwas größer)‏ Benutze „Hash-Funktion“ WS 2009/10

Invertierte Seitentabellen Benutze „Hash-Funktion“ h: {0, …, n-1} -> {0, …, m-1} zur Abbildung von Seitennummern auf „Plätze in der Hashtabelle“ Einfaches Beispiel: h(ki) = ki mod m Bei Vergabe eines neuen Seitenrahmens vi: Speichere an Platz h(ki) das Paar (ki, vi) ab. Problem: Hashkollisionen An Stelle h(ki) kann sich schon ein Eintrag (kj, vj) befinden mit ki ≠ kj, aber h(ki) = h(kj). Zur Überprüfung muss ki bei (ki, vi) mitgespeichert werden! Lösung z.B. durch „Überläuferketten“ Suche mit Schlüssel ki: Nachschauen an Stelle h(ki)‏ Wenn Stelle belegt, überprüfe, ob Schlüssel übereinstimmt Sonst: Verfolge Überläuferkette Löschen von Einträgen: analog WS 2009/10

Invertierte Seitentabellen - Aufbau Virtuelle Adresse Reale Adresse Seitennr. Offset Rahmennr. Offset Invertierte Seitentabelle Zeiger Überläuferkette Seitennr. Eintrag ki kj vj Hashfunktion h h(ki) ki Rahmennr. WS 2009/10

Seitengröße - Problem Wahl der Seitengröße sehr wichtig für Systemleistung Kleine Seiten: Kein zufälliges Datensegment füllt immer eine ganze Zahl von Seiten => im Durchschnitt bleibt die letzte Seite halb leer. Somit bei n zu speichernden Datensegmenten und einer Seitengröße von p Bytes werden np/2 Bytes für interne Fragmentierung verschwendet. kleine Seiten verschwenden weniger Speicher. Große Seiten: Große Seiten => Kleinere Seitentabellen => weniger Verwaltungsaufwand WS 2009/10

Seitengröße - Problem Analytisch: Die durchschnittliche Prozessgröße sei s Bytes. Die Seitengröße sei p Bytes und ein Eintrag in der Seitentabelle e Bytes. Ein Prozess belegt dann s/p Seiten und damit es/p Bytes in der Seitentabelle. es/p wird kleiner mit wachsender Seitengröße. Durch interne Fragmentierung gehen nochmal p/2 Bytes verloren. p/2 wird kleiner mit schrumpfender Seitengröße. Somit lautet das Minimierungsproblem: V = es/p + p/2 Optimum durch erste Ableitung nach p Null setzen: -se/p2 + ½ = 0 => p = (2se)1/2 Beispiel: für s = 1 Mb und e = 8 Byte ist die optimale Seitengröße 4Kb. WS 2009/10

Seitengröße - Problem „Moderne“ Probleme: In Realität: Objektorientierte Techniken mit vielen kleinen, verstreuten Programm- und Datenmodulen => Schwächung der Lokalität Multithreading-Anwendungen wirken Lokalität entgegen. In Realität: Seitengrößen um 4 Kbyte Teilweise auch variierbar (z.B. Pentium bis 4 Mbyte)‏ 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

Segmentierung Im Gegensatz zu Partitionierung werden Prozessen nicht notwendigerweise zusammenhängende Speicherbereiche zugeordnet. Speicher eines Prozesses aufgeteilt in Segmente, deren Größe im Gegensatz zu den Seiten beim Paging verschieden sein kann. Keine interne Fragmentierung, aber externe Fragmentierung (wie bei dynamischer Partitionierung. Segmentierung ist für Programmierer / Compiler sichtbar. Aufteilung in Codesegmente, Datensegmente, … Einfache Segmentierung: Prozesse sind entweder ganz im Speicher oder komplett ausgelagert. WS 2009/10

Segmentierung Logische Adresse besteht aus Segmentadresse und Offset. Berechnung der realen Adresse durch Addition von Basisadresse des Segments Offset Segmenttabelle enthält pro Segment Basisadresse des Segments (Startadresse im Speicher)‏ Segmentlänge WS 2009/10

Segmentierung Bsp.: logische Adresse mit 16-Bit 0000010000000000 4-Bit-Segmentnummer 12-Bit-Offset 0001 001011110000 0000010000000000 0010010000100000 0011010100000000 001011101110 011110011110 000110010100 1 2 Länge Basis 0011011100010000 Prozesssegmenttabelle 16-Bit physikalische Adresse WS 2009/10

Segmentierung Segmentierung mit virtuellem Speicher Nicht alle Segmente eines nicht komplett ausgelagerten Prozesses müssen im Speicher vorhanden sein. Restliche Segmente auf Festplatte Segmenttabelleneintrag: Present-Bit P: „Segment ist im Hauptspeicher“ Modify-Bit M: „Segment wurde verändert“ Weitere Bits für Schutzrechte und gemeinsame Nutzung Schutz und gemeinsame Nutzung auf Segmentbasis einfach zu regeln Größe der Segmente unterschiedlich und dynamisch festlegbar Bei Segmentvergrößerung: Allokieren von nachfolgendem Speicher oder Verschiebung in einen größeren freien Bereich oder Auslagerung P M Weitere Bits Länge Basis WS 2009/10

Segmentierung und Paging kombiniert Vorteile Paging: Für den Nutzer tranparent Feste Seitengrößen => anspruchsvolle, leistungsfähige Speicherverwaltungsalgorithmen Vorteile Segmentierung: Anpassung an dynamischen Speicherbedarf von Prozessen Gemeinsame Nutzung und Schutz auf Grundlage „natürlicher Organisationseinheiten“ Kombination beider Verfahren: Prozesse aufgeteilt in Segmente, pro Prozess eine Segmenttabelle Segmente aufgeteilt in Seiten, pro Segment eine Seitentabelle Aufbau einer Adresse: Für den Programmierer besteht Adresse aus Segmentnummer und OffsetSegmentierung. OffsetSegmentierung wird beim Paging interpretiert als (Seitennummer, OffsetPaging). WS 2009/10

Segmentierung und Paging kombiniert Virtuelle Adresse Reale Adresse Seg- mentnr. Seiten- nr. Offset Rahmennr. Offset … Register Segment tabellenzeiger Seitentabelle Seiten- rahmen Segmenttabelle … Programm Segmentierung Paging Hauptspeicher WS 2009/10

Betriebssystemaufgaben bei Speicherverwaltung Festlegung verschiedener Strategien: Abrufstrategie (Fetch Policy): Wann wird eine Seite in den Hauptspeicher geladen? „Demand Paging“ „Prepaging“ Speicherzuteilungsstrategie (Placement Policy): Wo im Speicher wird ein Prozessteil abgelegt? Nur wichtig bei Segmentierung / Partitionierung, nicht bei Paging z.B. Best-Fit, Next-Fit, First-Fit WS 2009/10

Betriebssystemaufgaben bei Speicherverwaltung Festlegung verschiedener Strategien (ff): Verdrängungsstrategie (Replacement Policy): Welche Seite soll ausgelagert werden, wenn alle Seitenrahmen belegt sind? Gesperrte Seiten sind ausgenommen! Vielzahl von Verfahren, z.B. LRU (Least Recently Used) FIFO (First In First Out)‏ Clock-Algorithmus Strategien arbeiten auf der Grundlage von Daten, die durch die Hardware gesammelt werden müssen. WS 2009/10

Betriebssystemaufgaben bei Speicherverwaltung Festlegung verschiedener Strategien (ff): Strategie zur Verwaltung des „Resident Set“: Welchem Prozess wird wieviel Platz im Hauptspeicher zugeteilt? Feste oder variable Zuteilung von Speicher an Prozesse Variable Zuteilung meist auf Grundlage der Seitenfehlerrate (mit Hardwareunterstützung gemessen / abgeschätzt)‏ Lokale oder globale Austauschstrategie (nur Seiten des eigenen Prozesses ausgelagert oder auch von anderen)‏ Cleaning-Strategie: Wann lagert man eine geänderte Seite in den Sekundärspeicher aus? Demand Cleaning Precleaning (Motivation: Schreiben mehrerer Seiten in Gruppen)‏ Strategie zur Lastkontrolle: Wieviele Prozesse werden gleichzeitig zugelassen (teilweise im Speicher)‏ Ab welcher Zahl von Prozessen beginnt man mit Suspendieren von Prozessen? Welche Prozesse werden suspendiert? WS 2009/10

Zusammenfassung Speicherverwaltungsstrategien sind extrem wichtig die Effizienz des Gesamtsystems. Moderne Betriebssysteme arbeiten mit virtuellem Speicher. Lokalität ist die Grundvoraussetzung für das effiziente Funktionieren virtueller Speicherkonzepte. In der Praxis meist vorhanden. Paging unterteilt den Speicher in viele gleich große Teile. Segmentierung unterteilt in verschieden große Teile, deren Größe variabel ist. Es ist auch möglich, Paging und Segmentierung zu kombinieren. WS 2009/10