Upload
herrick-gerberich
View
111
Download
3
Embed Size (px)
Citation preview
1
Systeme 1
Kapitel 8.2Speicherverwaltung:
• Paging •Segmentierung
WS 2009/10
2
Speicherverwaltung (Wiederholung)
• Grundlegende Anforderungen an Speicherverwaltung:– Aufteilung des verfügbaren Hauptspeichers zwischen
• Betriebssystem• verschiedenen Prozessen
• 5 Anforderungen nach Lister / Eager: 1. Relokation:
• Übersetzung der Speicherreferenzen im Programmcode in tatsächliche physikalische Speicheradressen durch Prozessorhardware und Betriebssystemsoftware.
2. Schutz• Schutz von Prozessen gegen beabsichtigte oder unbeabsichtigte Störungen
durch andere Prozesse mittels in Hardware integrierter dynamischer Adressüberprüfung.
WS 2009/10
3
Speicherverwaltung (Wiederholung)
• 5 Anforderungen nach Lister / Eager (ff): 1. Gemeinsame Nutzung
• Gemeinsame und kontrollierte Nutzung von Speicher durch mehrere Prozesse: z.B. Bibliotheken oder gemeinsam genutzter Speicher zur Kooperation.
2. Logische Organisation• Logische Aufteilung von linear organisierten Speicher anhand
der speziellen Anforderungen der Programme.
3. Physikalische Organisation• Organisation des Datenflusses zwischen den verschiedenen
Speicherarten (z.B. zwischen Hauptspeicher und Sekundärspeicher).
WS 2009/10
4
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. -> PagingWS 2009/10
5
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
6
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
7
Relokation (Relative Adresse)
WS 2009/10
Prozesskontrollblock
Programm
Daten
Stapel
Prozessabbild imHauptspeicher
Basisregister
Addierer
VergleicherGrenzregister
Unterbrechung anBetriebssystem
Absolute Adresse
Relative Adresse
8
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
WS 2009/10
0 0 0 0 0 1 0 1 1 1 0 1 1 1 1 0
6-Bit-Seitennummer 10-Bit-Offset
9
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 SpeicherWS 2009/10
0 0 0 0 0 1 0 1 1 1 0 1 1 1 1 0
6-Bit-Seitennummer 10-Bit-Offset
Logische Adresse
10010010100100111101100111111010
Seitentabelledes Prozesses
0123
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
11
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).
WS 2009/10
P (Present Bit), M (Modify Bit), weitere Bits für Schutzrechte etc.
0 0 . . . 0 1 0 1 1 1 0 0 1 1 1 0
22-Bit-Seitennummer 10-Bit-Offset
P M Weitere Bits Seitenrahmennummer
12
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:
1. Eine angeforderte logische Adresse befindet sich nicht im SpeicherSeitenfehler
2. Muss eine ausgelagerte Seite geladen werden und der Hauptspeicher ist voll, dann muss Platz geschaffen werden durch Auslagerung einer anderen SeiteVerdrängung
WS 2009/10
13
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 => SpeicherschutzverletzungWS 2009/10
14
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
15
Verdrängung
WS 2009/10
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
Seite P … Rahmen
0 0 …
1 0 …
2 1 … 1
3 0 …
4 0 …
5 0 …
6 1 … 2
7 0 …
Seite P … Rahmen
0 0 …
1 0 …
2 1 … 0
3 0 …
4 1 … 3
5 0 …
6 0 …
7 0 …
Seitentabelle von Prozess 2
Seite 0
Seite 1
Seite 2
Seite 3
Seite 4
Seite 5
Seite 6
Seite 7
virtueller Adressraum
Prozess 2Seite 6 vonProzess 2 soll Aus-gelagert werden=> P = 0
Seitenrahmen 2 sollfreigeräumt werden.
virtueller Adressraum
Prozess 1
16
Verdrängung
WS 2009/10
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
Rahmen Prozess Seite
0 1 2
1 2 2
2 2 6
3 1 4
Abbildung Seitenrahmennummer -> (Prozessnummer, Seitennummer)
Seite 0
Seite 1
Seite 2
Seite 3
Seite 4
Seite 5
Seite 6
Seite 7
17
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
18
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
19
Adressumsetzung
WS 2009/10
Seiten-rahmen
……
Rahmennr. Offset
Reale Adresse
Hauptseiten-tabellenzeiger
Register
Virtuelle Adresse
10-Bit 12-Bit
Programm Paging-Verfahren Hauptspeicher
10-Bit
Hauptseitentabelle(210 Einträge)
Untertabelle(210 Einträge)
20
• Aktuelle Implementierungen verwenden meist Vierstufige Seitentabellen:
• Aber recht aufwändiger Berechnung. Diese Berechnungen werden sehr häufig vorgenommen => Optimierungen!
Beispiel: Vierstufige Seitentabellen
WS 2009/10
Level 4 Eintrag
Level 4 Tabelle
Level 3 Eintrag
Level 3 Tabelle
Level 2 Eintrag
Level 2 Tabelle
Level 1 Eintrag
Level 1 TabellePhysikalische
Adresse
HauptspeicherLevel 4 Index Level 3 Index Level 2 Index Level 1 Index Offset
Virtuelle Adresse
21
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
22
Translation Lookaside Buffer (TLB)
WS 2009/10
……
Seitennr. OffsetVirtuelle Adresse
Hauptspeicher
Rahmennr. OffsetReale Adresse
Seitentabelle
TLB
TLB-Fehlschlag
Seitenfehler
Seiten-rahmen
……
Sekundärspeicher
Seiteladen
TLB-Treffer
Offs
et
23
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
24
Translation Lookaside Buffer (TLB)
WS 2009/10
Seitennr. OffsetVirtuelle Adresse
5 502
19
128
1
5
90
37
……
Seitennr. Seitentabelleneinträge
37 502Rahmennr. Offset
Reale AdresseAdressumsetzungspuffer
25
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.
WS 2009/10
Virtuelle Adresse
Physikalische Adresse
MMU
Cache
Hauptspeicher
26
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.
WS 2009/10
Virtuelle Adresse
Physikalische Adresse
MMU Cache
Hauptspeicher
27
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
28
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
29
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: analogWS 2009/10
30
Invertierte Seitentabellen - Aufbau
WS 2009/10
Rahmennr.
Seitennr. EintragZeigerÜberläuferkette
h
Seitennr. OffsetVirtuelle Adresse
Rahmennr. Offset
Reale Adresse
Invertierte Seitentabelle
Hashfunktion
h(ki)
kj vj
ki
ki
31
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
32
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
33
Seitengröße - Problem
• „Moderne“ Probleme:– 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
34
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/10
35
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
36
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
37
Segmentierung
• Bsp.: logische Adresse mit 16-Bit
WS 2009/10
0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 0
4-Bit-Segmentnummer 12-Bit-Offset
0000010000000000
0010010000100000
0011010100000000
001011101110
011110011110
000110010100
0
1
2
0011011100010000
16-Bit physikalische AdresseProzesssegmenttabelle
Länge Basis
38
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– AuslagerungWS 2009/10
P M Weitere Bits Länge Basis
39
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
40
Segmentierung und Paging kombiniert
WS 2009/10
Seiten-rahmen
……
Rahmennr. Offset
Reale Adresse
Segmenttabellenzeiger
Register
Virtuelle Adresse
Programm Paging Hauptspeicher
SegmenttabelleSeitentabelle
Seg-mentnr.
Seiten-nr. Offset
Segmentierung
41
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
42
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
43
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
44
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