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

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

Embed Size (px)

Citation preview

Page 1: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

1

Systeme 1

Kapitel 8.2Speicherverwaltung:

• Paging •Segmentierung

WS 2009/10

Page 2: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 3: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 4: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 5: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 6: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 7: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

7

Relokation (Relative Adresse)

WS 2009/10

Prozesskontrollblock

Programm

Daten

Stapel

Prozessabbild imHauptspeicher

Basisregister

Addierer

VergleicherGrenzregister

Unterbrechung anBetriebssystem

Absolute Adresse

Relative Adresse

Page 8: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 9: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

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

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

Page 11: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 12: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 13: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 14: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 15: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 16: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 17: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 18: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 19: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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)

Page 20: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 21: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 22: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 23: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 24: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 25: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 26: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 27: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 28: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 29: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 30: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 31: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 32: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 33: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 34: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 35: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 36: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 37: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 38: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 39: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 40: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 41: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 42: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 43: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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

Page 44: Systeme 1 Kapitel 8.2 Speicherverwaltung: Paging Segmentierung WS 2009/101

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