22.08.2013 Aufrufe

Hauptspeicherverwaltung - Www I6 Informatik Rwth Aachen

Hauptspeicherverwaltung - Www I6 Informatik Rwth Aachen

Hauptspeicherverwaltung - Www I6 Informatik Rwth Aachen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Contents<br />

7 <strong>Hauptspeicherverwaltung</strong> (Main Memory)<br />

7.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . 255<br />

7.1.1 Speicherhierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255<br />

7.1.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259<br />

7.1.3 Adressenbindung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262<br />

7.1.4 Logische vs. physikalische Adressen . . . . . . . . . . . . . . . . . . . . . . 264<br />

7.1.5 Dynamisches Laden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267<br />

7.1.6 Dynamisches Linken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268<br />

7.1.7 Overlays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269<br />

7.2 Swapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270<br />

7.3 Zusammenhängende Speicherbelegung . . . . . . . . . . . . 273<br />

7.3.1 Memory Mapping and Protection . . . . . . . . . . . . . . . . . . . . . . . . 274<br />

7.3.2 Speicherbelegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276<br />

7.3.3 Fragmentierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287<br />

7.4 Buddy-Systeme . . . . . . . . . . . . . . . . . . . . . . . . . 288<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

253


7.5 Paging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292<br />

7.5.1 Prinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292<br />

7.5.2 Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302<br />

7.5.3 Shared Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305<br />

7.5.4 Hardware und TLB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307<br />

7.6 Struktur der Page Table . . . . . . . . . . . . . . . . . . . . . 312<br />

7.6.1 Hierarchical Paging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312<br />

7.6.2 Hashed Page Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318<br />

7.6.3 Inverted Page Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320<br />

7.7 Segmentierung . . . . . . . . . . . . . . . . . . . . . . . . . . 322<br />

7.8 Beispiel: Intel Pentium . . . . . . . . . . . . . . . . . . . . . . 329<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

254


7.1 Grundlagen<br />

7.1.1 Speicherhierarchie<br />

• Der Hauptspeicher in Verbindung mit der Festplatte kann selbst<br />

als Ressource betrachtet werden, die vom OS verwaltet wird.<br />

• Ziel ist es, einen guten Kompromiß zwischen Kosten und<br />

Leistung (= Zeit + Größe) zu erreichen.<br />

• Der Hauptspeicher sieht nur die Folge der Speicherreferenzen,<br />

unabhängig von der Art der Adressierung.<br />

Wiederholung: Darstellung der Speicherhierarchie<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

255


Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

256


CPU-Auslastung und Multiprogramming:<br />

CPU utilization and multiprogramming<br />

• probabilistisches Modell:<br />

– CPU-Auslastung wird durch I/O behindert<br />

– Wahrscheinlichkeit, daß 1 Prozeß auf I/O wartet: ϑ<br />

– Wahrscheinlichkeit, daß alle n Prozesse warten: ϑ n<br />

• Ergebnis:<br />

CPU-Auslastung = 1 − ϑn (siehe Darstellung im nächsten Bild)<br />

• typische Situation (interaktive Prozesse):<br />

– ϑ = 0.80<br />

– n = 10 Prozesse müssen im Hauptspeicher sein,<br />

damit die CPU-Auslastung bei 90% liegt<br />

Beachte die Näherung:<br />

– Modell: Berechnung basiert auf unabhängigen Prozessen<br />

– Wirklichkeit: zu jedem Zeitpukt kann nur 1 Prozeß die CPU benutzen<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

257


CPU utilization (in percent)<br />

100<br />

80<br />

60<br />

40<br />

20<br />

0<br />

CPU utilization and multiprogramming<br />

20% I/O wait<br />

50% I/O wait<br />

80% I/O wait<br />

1 2 3 4 5 6 7 8 9 10<br />

Degree of multiprogramming<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

258


7.1.2 Hardware<br />

CPU und Speicherzugriffe:<br />

• Cache: extrem schneller Speicher zwischen CPU und Hauptspeicher,<br />

um ’langsamem’ Hauptspeicher entgegenzuwirken.<br />

• legale oder gültige Adressen:<br />

– jeder Prozeß hat eigenen Speicherbereich<br />

– Hardware: base register und limit register<br />

– Vergleich erfolgt bei jedem Speicherzugriff<br />

• OS verwaltet diese beiden Register:<br />

– Schutz der Speicherbereiche der anderen Prozesse<br />

– Schutz des OS-Speicherbereichs<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

259


Definition of logic address space using base and limit registers<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

260


HW address protection with base and limit registers<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

261


7.1.3 Adressenbindung<br />

Erstellung des ausführbaren Codes erfolgt in mehreren Schritten.<br />

Adressen können zu verschiedenen Zeiten und in verschiedenen<br />

Varianten festgelegt werden:<br />

• Compilierzeit (compile time):<br />

– ’absolute code’: Startaddresse muß bekannt sein<br />

– ’relocatable code’: Adressen relativ zur Startadresse<br />

• Ladezeit (load time):<br />

– ’relocatable code’: absolute Adressen werden jetzt festgelegt<br />

• Laufzeit (execution or run time):<br />

– Speicherbereich kann sich während der Laufzeit ändern<br />

– Hardware erforderlich: MMU (memory management unit)<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

262


Multistep Processing of a User Program<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

263


7.1.4 Logische vs. physikalische Adressen<br />

Unterscheide zwei Arten von Adressen:<br />

• logische oder virtuelle Adressen:<br />

Adreßraum der CPU<br />

= Adreßraum des Programms<br />

• physikalische Adresse:<br />

reale Adresse des (physikalischen) Hauptspeichers<br />

• Memory Management Unit (MMU):<br />

– setzt die logischen in physikalische Adressen um<br />

– einfachste Form: relocation register = base register<br />

– typische Form: Paging (und/oder Segmentierung)<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

264


Relocation register and logical vs. physical addresses<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

265


CPU<br />

Memory mangagement unit (MMU) and its function<br />

CPU<br />

package<br />

The MMU sends physical<br />

addresses to the memory<br />

The CPU sends virtual<br />

addresses to the MMU<br />

Memory<br />

management<br />

unit<br />

Memory<br />

Disk<br />

controller<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

266<br />

Bus


7.1.5 Dynamisches Laden<br />

Motivation:<br />

– gesamtes Programm im Hauptspeicher<br />

– Aufteilung des Programms zur besseren Nutzung des Hauptspeichers<br />

Dynamisches Laden (dynamic loading):<br />

• Prinzip:<br />

eine Routine wird erst zum Zeitpunkt des Aufrufs geladen<br />

• Festplatte: Routinen in ’relocatable’ Format<br />

• Ablauf:<br />

– aufrufendes Programm prüft, ob Routine schon geladen ist<br />

– gegebenenfalls Aufruf der entsprechenden Lade-Routine<br />

• Vorteil:<br />

– Routinen werden nur bei Bedarf geladen<br />

– gegeignet für Routinen für Fehlerbehandlung und (seltene) Sonderfälle<br />

• Verantwortlichkeit:<br />

liegt beim Programmierer<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

267


7.1.6 Dynamisches Linken<br />

Dynamisches Linken (dynamic linking):<br />

• Prinzip (ähnlich zu dynamischem Laden):<br />

der Link-Vorgang wird aufgeschoben bis zur Laufzeit<br />

• typische Anwendung:<br />

Routinen, die von mehreren Prozessen benötigt werden<br />

(z.B. system and language subroutine libraries)<br />

• Vorteile:<br />

– Speicherplatz (Hauptspeicher und Festplatte) wird nur einmal benötigt<br />

– library updates: kein neuer Link-Vorgang nötig<br />

• Realisierung:<br />

– ’stub’: kurzer Code am Anfang jedes ’image’ einer library routine<br />

– lokalisiert die library routine im Hauptspeicher oder lädt sie bei Bedarf<br />

• Mitwirkung des OS bei ’memory protection’:<br />

mehrere Prozesse benutzen denselben Speicherbereich<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

268


7.1.7 Overlays<br />

Overlay-Technik (nicht mehr benutzt):<br />

• Es gibt Teile des Programms, die niemals gleichzeitig<br />

im Hauptspeicher benötigt werden.<br />

• Diesen Teilen wird derselbe Adreßbereich zugeordnet,<br />

d.h. sie werden ‘übereinandergelegt’.<br />

• Entwurf dieser Overlay-Struktur erfolgt durch den Programmierer.<br />

• Problem: mühsam und fehleranfällig<br />

Erweiterung dieses Konzepts:<br />

virtueller Speicher, bei dem die Verwaltung vom OS übernommen wird<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

269


7.2 Swapping<br />

Swapping:<br />

• Prozeßauslagerung vom Hauptspeicher auf Hintergrundspeicher (backing store)<br />

oder Festplatte (hard disk) und umgekehrt.<br />

• Multiprogramming erfordert Swapping, da nicht alle Prozesse<br />

gleichzeitig im Hauptspeicher gehalten werden können.<br />

Swapping kostet Zeit:<br />

• (head) seek time: 0 msec (hier; sonst typisch: 15 msec)<br />

• (rotational) latency time: 8 msec<br />

• transfer time: 40 MByte/sec<br />

Prozeß mit 10 MByte: 2 · 258 msec (1 GByte: 2 · 25 sec!)<br />

(Faktor 2: ein- und ausladen)<br />

Konsequenz:<br />

• Prozeßwechsel soll zwischen Prozessen stattfinden,<br />

die bereits im Hauptspeicher sind.<br />

• deswegen: mehrere Prozesse gleichzeitig im Hauptspeicher<br />

• Aufgabe der Speicherbelegung<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

270


Swapping and backing store (hard disk)<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

271


Swapping und I/O-Operationen:<br />

Swapping: Einzelheiten<br />

• Methode A: Prozeß, der I/O ausführt (ohne CPU!),<br />

darf nicht ausgelagert werden.<br />

• Methode B: I/O erfolgt in 2 Schritten:<br />

a) zwischen I/O-Gerät und OS-Speicherpuffer<br />

b) zwischen OS-Speicherpuffer und Prozeß-Speicherbereich<br />

Varianten des Swappings:<br />

• standard swapping: nicht mehr weit verbreitet,<br />

weil Swapping-Zeit zu groß ist im Vergleich zur Bearbeitungszeit<br />

• weitere Varianten:<br />

– UNIX: nur falls zuviele Prozesse laufen und Memory knapp wird<br />

– MS Windows (Version 3.1): Steuerung durch den Benutzer<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

272


7.3 Zusammenhängende Speicherbelegung<br />

• einfachste Form der Speicherbelegung:<br />

(bisher mehr oder weniger vorausgesetzt):<br />

– jeder Prozeß hat einen zusammenhängenden Bereich im Hauptspeicher<br />

– gilt für OS und Benutzerprozesse<br />

• Hardware (meistens):<br />

Interrupt-Vektoren im niedrigen Adreßbereich<br />

(verweist auf die Addresse der Interrupt-Service-Routine)<br />

• deswegen meistens:<br />

OS ebenfalls im unteren Adreßbereich<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

273


7.3.1 Memory Mapping and Protection<br />

Verwendung der ’relocation-’ und ’limit-’Register:<br />

• Prozeß (nach Auswahl durch CPU-Scheduler und vor Start):<br />

’relocation-’ und ’limit-’Register werden geladen.<br />

• Speicherschutz:<br />

für die Speicherbereiche des OS und der anderen Prozesse<br />

• dynamische Anpassung:<br />

Speicherbereich eines Prozesses (und des OS) kann sich dynamisch verändern.<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

274


Hardware support for relocation and limit registers<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

275


7.3.2 Speicherbelegung<br />

Zusammenhängende Speicherbelegung:<br />

• einfachste Form der Nutzung des Hauptspeichers<br />

• Unterteilung des Hauptspeichers in sog. Partitionen oder Bereiche:<br />

a) Die Partitionen variieren in ihrer Größe.<br />

b) Die Partitionen werden vom OS verwaltet und den Jobs zugewiesen.<br />

• Vorstufe zu modernen Verfahren:<br />

Paging und Segmentieren<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

276


OS<br />

process 5<br />

process 8<br />

process 2<br />

Example of Contiguous Memory Allocation<br />

OS<br />

process 5<br />

process 2<br />

OS<br />

process 5<br />

process 9<br />

process 2<br />

OS<br />

process 5<br />

process 9<br />

process 10<br />

process 2<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

277


system<br />

system <br />

system<br />

system <br />

system<br />

system <br />

system<br />

Memory allocation changes as processes come into memory and leave it<br />

Time<br />

C<br />

C<br />

C<br />

C<br />

B<br />

B<br />

B<br />

A<br />

A<br />

A<br />

A<br />

D<br />

D<br />

D<br />

Operating Operating Operating Operating Operating Operating Operating<br />

(a)<br />

(b)<br />

(c)<br />

(d)<br />

(e)<br />

(f)<br />

(g) BC<br />

278<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008


unterscheide:<br />

• Speicherbelegung grenzt an Lücke:<br />

Prozeß kann wachsen<br />

Dynamisch wachsender Speicherbedarf<br />

• Speicherbelegung grenzt nicht an Lücke:<br />

Prozeß muss ausgelagert werden und warten,<br />

bis genügend zusammenhängender Speicherbereich verfügbar ist.<br />

• alternative Strategie:<br />

von vorneherein Platz für Wachstum einplanen<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

279


AA-Program<br />

B<br />

Operating<br />

system<br />

Allocating memory for growing segments<br />

Room for growth<br />

in use<br />

Room for growth<br />

Actually in use<br />

Actually<br />

B-Stack<br />

B-Data<br />

B-Program<br />

A-Stack<br />

A-Data<br />

Operating<br />

system<br />

(a) (b)<br />

Room for growth<br />

Room for growth<br />

growing data segment only growing stack and growing data segment<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 280<br />

c○RWTH <strong>Aachen</strong> 28. Januar 2008


• Bitmaps: 0 frei, 1 belegt<br />

Verwaltung der Speicherbelegung<br />

• Linked List (verkettete Liste):<br />

Partition := belegter oder freier Speicherbereich<br />

Liste der Partitionen mit den folgenden Einträgen:<br />

– Flag (belegt/frei),<br />

– Startadresse der Partition,<br />

– Größe der Partition,<br />

– Zeiger zum nächsten Eintrag<br />

Dabei ist ein Sortieren nach Startadresse vorteilhaft<br />

• weitere Varianten:<br />

– getrennte Listen für belegte und freie Partitionen<br />

– freie Partitionen: sortieren nach der Größe<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

281


Memory allocation for five processes<br />

A B C D E<br />

8 16 24<br />

1 1 1 1 1 0 0 0 P 0 5 H 5 3 P 8 6 P 14 4<br />

(a)<br />

1 1 1 1 1 1 1 1<br />

1 1 0 0 1 1 1 1<br />

1 1 1 1 1 0 0 0<br />

H 18 2 P 20 6 P 26 3 H 29 3 X<br />

Hole Starts Length<br />

Process<br />

at 18 2<br />

(b) (c)<br />

a) Speicherbelegung (5 Prozesse, 3 Lücken)<br />

b) zugehörige Bitmap<br />

c) zugehörige verkettete Liste<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

282


• einfache und effiziente Listenoperationen<br />

• zweckmässig: doppelt-verzeigerte Liste<br />

Before X terminates A<br />

(a) A X B<br />

(b) A X(c) X B<br />

(d) X<br />

Aktualisieren der verketteten Liste<br />

becomes<br />

becomes<br />

becomes<br />

becomes<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 283<br />

c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

After X terminates<br />

BAB


• First Fit:<br />

die erste passende Lücke wird ausgewählt.<br />

Belegungsstrategien<br />

• Best Fit:<br />

die kleinste passende Lücke wird ausgewählt.<br />

• Worst Fit:<br />

die größte Lücke wird ausgewählt.<br />

• Rotating First Fit (auch: Next Fit):<br />

fast wie First Fit: der Speicher wird jeweils ausgehend<br />

von der letzten Plazierung zirkulär durchsucht.<br />

• Quick Fit:<br />

separate Listen für verschiedene Partitionsgrößen<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

284


Beispiel: Belegungsstrategien<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

285


Beispiel: Belegungsstrategien<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

286


7.3.3 Fragmentierung<br />

• Beobachtung:<br />

der Hauptspeicher wird zerstückelt (’Fragmentierung’)<br />

• Gegenmaßnahmen:<br />

’Garbage Collection’ oder ’Compaction’<br />

Fragmentierung des Hauptspeichers:<br />

• interne Fragmentierung:<br />

ungenutzter Speicher innerhalb einer Partition<br />

(kleinste Einheit: 1 KByte)<br />

• externe Fragmentierung:<br />

Lücken zwischen den belegten Partitionen<br />

• 50%-Regel (im zeitlichen Mittel) für externe Fragmentierung:<br />

Bei N belegten Partitionen gibt es 0.5N freie Partitionen<br />

(Asymmetrie: Lücken werden vereinigt, Prozesse nicht).<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

287


7.4 Buddy-Systeme<br />

Speicher-Segmente mit festen Längen:<br />

• Anforderungen nur in 2-er Potenzen<br />

• Ansatz:<br />

Binär-Darstellung der Speicheradressen wird als binärer Baum interpretiert<br />

• Liste der freien und belegten Speicherbereiche<br />

mit den Operationen:<br />

– sukzessives Verschmelzen (falls möglich) bei Freiwerden eines Segmentes<br />

– sukzessives Spalten eines freien Segmentes, bis passende 2-er Potenz erreicht ist.<br />

• Vorteil: effizientes Verschmelzen und Spalten der Segmente<br />

• Nachteil: erhebliche Fragmentierung<br />

Terminologie (siehe Beispiel):<br />

Paare von Buddies (=Kumpel): (AL, AR), (BL, BR), (CL, CR)<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

288


Buddy System Allocator<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

289


Darstellung aller 4-Bit-Folgen:<br />

Binär-Darstellung für Buddy-Systeme<br />

0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1<br />

0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1<br />

0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1<br />

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1<br />

Darstellung der 4-Bit-Folgen durch binären Baum:<br />

0 1<br />

0 1 0 1<br />

0 1 0 1 0 1 0 1<br />

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

290


Beispiel: Anforderung der Größe 2 16<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

291


7.5 Paging<br />

7.5.1 Prinzip<br />

Unterteilung des Adreßraums in Blöcke fester Größe<br />

• Logischer Speicher: (Virtual) Pages (= Seiten)<br />

• Physikalischer Speicher: (Page) Frames (= Rahmen, Kacheln)<br />

• Adresse mit n Bits wird zerlegt: n = p + d<br />

– p Bits = page number: 2 p Pages<br />

– d Bits = displacement (=page offset): Offset innerhalb der Page<br />

Fragmentierung des Speichers:<br />

• externe Fragmentierung:<br />

existiert nicht bei Paging<br />

• interne Fragmentierung:<br />

existiert nur für die ’letzte Page’<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

292


Paging Model of Logical and Physical Memory<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

293


Paging Example: Pages of 4 Bytes<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

294


Adreßkonvertierung: von virtuellen zu physikalischen Adressen<br />

(4+12 Bits → 3+12 Bits)<br />

Virtual<br />

address<br />

space<br />

60K-64K<br />

56K-60K<br />

52K-56K<br />

48K-52K<br />

44K-48K<br />

40K-44K<br />

36K-40K<br />

32K-36K<br />

28K-32K<br />

24K-28K<br />

20K-24K<br />

16K-20K<br />

12K-16K<br />

8K-12K<br />

4K-8K<br />

0K-4K<br />

X<br />

X<br />

X<br />

X<br />

7<br />

X<br />

5<br />

X<br />

X<br />

X<br />

3<br />

4<br />

0<br />

6<br />

1<br />

2<br />

Virtual page<br />

Physical<br />

memory<br />

address<br />

28K-32K<br />

24K-28K<br />

20K-24K<br />

16K-20K<br />

12K-16K<br />

8K-12K<br />

4K-8K<br />

0K-4K<br />

Page frame<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

295


Page<br />

table<br />

MMU: Konvertierung der Adressen<br />

(4+12 Bits → 3+12 Bits)<br />

1 1 0 0 0 0 0 0 0 0 0 0 1 0 0<br />

15<br />

14<br />

13<br />

12<br />

11<br />

10<br />

9<br />

8<br />

7<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

000<br />

000<br />

000<br />

000<br />

111<br />

000<br />

101<br />

000<br />

000<br />

000<br />

011<br />

100<br />

000<br />

110<br />

001<br />

010<br />

0<br />

0<br />

0<br />

0<br />

1<br />

0<br />

1<br />

0<br />

0<br />

0<br />

1<br />

1<br />

1<br />

1<br />

1<br />

1<br />

Virtual page = 2 is used<br />

as an index into the<br />

page table<br />

110<br />

Present/<br />

absent bit<br />

0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0<br />

12-bit offset<br />

copied directly<br />

from input<br />

to output<br />

Outgoing<br />

physical<br />

address<br />

(24580)<br />

Incoming<br />

virtual<br />

address<br />

(8196)<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

296


Paging Hardware<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

297


• Interpretation des Paging:<br />

spezielle Form einer dynamischen Relokation<br />

• typische Größe einer Page:<br />

4-8 KByte<br />

• virtueller Adreßraum für 32 bit:<br />

– Anzahl der Speicherzellen: 2 32 = 2 2 · 2 30 = 4G<br />

– Größe einer Page: 2 12 = 4K<br />

– Anzahl der Pages: 2 20 = 1M<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

298


Allokation freier Frames<br />

• neuer Prozeß:<br />

braucht eine Anzahl freier Frames (siehe Beispiel)<br />

• OS verwaltet den physikalischen Hauptspeicher:<br />

frame table: spezielle Datenstruktur mit den Informationen:<br />

– frei oder belegt;<br />

– falls belegt, welcher Prozeß<br />

• OS:<br />

separate Page Table für jeden Prozeß<br />

(wie PC und CPU-Register; Teil des PCB)<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

299


Allocation of Free Frames<br />

Before allocation After allocation<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

300


Paging: Konzept<br />

• Wunsch des Pogrammierers:<br />

– einheitlicher Adreßraum von 0 bis ∞ (oder 2 32 = 4G)<br />

– kein Interesse an Speicherverwaltung<br />

• Realisierung durch Paging:<br />

– Speicherbereiche können über den Hauptspeicher verteilt sein<br />

– Zuordnung erfolgt mittels Page Table<br />

• Vorteile des virtuellen Adreßraums:<br />

– kann deutlich größer sein als der physikalische;<br />

– inaktive Programmteile werden vom OS auf Hintergrundspeicher ausgelagert.<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

301


7.5.2 Protection<br />

• für jeden Page Frame:<br />

read-only, read-write, execution<br />

• zusätzliches Bit: legale vs. illegale Adressen<br />

valid-invalid bit<br />

• Sonderfall (interne Fragmentierung):<br />

die letzte Page (siehe Beispiel)<br />

• illegale Adressen:<br />

trap zum OS<br />

manchmal zusätzlich:<br />

PTLR: page table length register<br />

= aktuelle Größe der Page Table<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

302


Valid/Invalid Bit In A Page Table<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

303


• Nummer des Page Frames<br />

• valid/invalid-Bit (auch: present/absent)<br />

• Protection-Bits:<br />

read/write, read only, execute only, ...<br />

Struktur der Einträge der Page Table<br />

• Modified- und Referenced-Bits:<br />

– Modified (= dirty): die Page ist beschrieben worden<br />

– Referenced (= Use): die Page ist gelesen oder beschrieben worden<br />

• caching-Bit: für I/O-Operationen<br />

Caching<br />

disabled Modified Present/absent<br />

Referenced Protection<br />

Page frame number<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

304


7.5.3 Shared Pages<br />

• Code, der von mehreren Programmen benutzt wird:<br />

– z.B. Texteditor, Compiler, Datenbanksysteme, Laufzeit-Bibliotheken, ...<br />

• Voraussetzung:<br />

– re-entrant code (reiner Code)<br />

(sollte vom OS geprüft werden!)<br />

– jeder Prozeß: Daten + CPU-Register<br />

• Konzept: vergleichbar mit Threads<br />

(shared: Adreßraum)<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

305


Example of Shared Pages<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

306


7.5.4 Hardware und TLB<br />

Beispiel eines 16-bit-Minicomputers: DEC PDP 11<br />

• Entwurf des Paging: 16 = 3+13<br />

– page size of 8K = 2 13 : 13 Bits<br />

– 3 Bits für die Pages: Tabelle mit 2 3 = 8 Einträgen<br />

• Hardware:<br />

– 8 spezielle Register (schneller als Hauptspeicher)<br />

Beispiel eines 32-bit-Prozessors:<br />

• Entwurf des Paging: 32 = 20 + 12<br />

– page size of 4K = 2 12 : 12 Bits<br />

– 20 Bits für die Pages: Tabelle mit 2 20 = 1M Einträgen<br />

• Hardware:<br />

– Page Table wird im normalen Hauptspeicher gehalten<br />

– PTBR: ’page table base register’ zeigt auf die Page Table<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

307


Zugriffszeit und TLB:<br />

• Page Table:<br />

– befindet sich im Hauptspeicher<br />

– Problem: Verdoppelung der Zugriffszeit<br />

• Abhilfe:<br />

– spezielle (und teure) Hardware innerhalb der MMU<br />

– assoziativer Speicher: Translation Look Aside Buffer (TLB)<br />

• Größe des TLB: 64 - 1024 Einträge<br />

d.h. nur ein Teil der Page Table wird im TLB gehalten<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

308


Paging Hardware With TLB<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

309


Mit den Größen:<br />

• TMem = 100 nsec: Zugriffszeit des Hauptspeichers<br />

• TTLB = 20 nsec: Zugriffszeit des TLB<br />

• q: hit ratio (’Adresse steht im TLB’)<br />

ergibt sich die effektive (=mittlere) Zugriffszeit:<br />

T = q · (TTLB + TMem) + (1 − q) · (TTLB + 2 TMem)<br />

= TTLB + TMem + (1 − q) · TMem<br />

q[%] T[nsec]<br />

0 220<br />

80 140<br />

90 130<br />

98 122<br />

100 120<br />

Folgerung: ’hit ratio’ sollte bei 98% und höher liegen.<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

310


TLB<br />

• Einträge im TLB:<br />

– die ausgewählten Pages müssen laufend aktualisiert werden<br />

– Frage der Ersetzungstrategie (vgl. Paging)<br />

• Aufbau der Einträge im TLB: i.w. wie Page Table<br />

<br />

<br />

Valid Virtual page Modified Protection Page frame <br />

<br />

<br />

<br />

<br />

<br />

1 140 1 RW 31<br />

<br />

<br />

<br />

<br />

<br />

1 20 0 R X 38 <br />

<br />

1 130 1 RW 29 <br />

<br />

<br />

1<br />

<br />

129<br />

<br />

<br />

1<br />

<br />

RW<br />

<br />

62<br />

<br />

<br />

<br />

<br />

<br />

<br />

1 19 0 R X 50 <br />

<br />

1 21 0 R X 45 <br />

<br />

<br />

<br />

1<br />

<br />

<br />

860<br />

<br />

<br />

1<br />

<br />

<br />

RW<br />

<br />

<br />

14<br />

<br />

<br />

<br />

1 861 1 RW 75 <br />

• manchmal zusätzlich: Prozeß-ID<br />

Vorteil: keine Initialierung des TLB bei Prozeßwechsel erforderlich<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

311


7.6 Struktur der Page Table<br />

7.6.1 Hierarchical Paging<br />

virtueller Adreßraum mit 32 Bits:<br />

• Größe der Page: 2 12 = 4KByte<br />

• Größe der Page Table:<br />

– 2 32 /2 12 = 2 20 = 1M Einträge<br />

– 4 Byte pro Eintrag<br />

• Ergebnis:<br />

4 MByte werden für die Page Table benötigt!<br />

• Gegenmaßnahmen:<br />

– Hierachical Paging<br />

– Hashed Page Table<br />

– Inverted Page Table<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

312


Two-Level Page-Table Scheme<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

313


Address Translation Scheme<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

314


Beispiel:<br />

• Prozeß:<br />

– Programm-Code<br />

– Daten<br />

– Stack<br />

jeweils: 4 MByte<br />

• erste Stufe des Paging:<br />

jeder Eintrag steht für 2 22 = 4 MByte<br />

• zweite Stufe des Paging:<br />

jeder Eintrag steht für 2 12 = 4 KByte<br />

• Speicher: effiziente Nutzung<br />

– erste Stufe: Page Table<br />

– zweite Stufe: 3 Page Tables<br />

Beispiel: Zweistufiges Paging<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

315


Bits 10 10 12<br />

PT1 PT2 Offset<br />

(a)<br />

Beispiel: Zweistufiges Paging<br />

1023<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

Top-level<br />

page table<br />

1023<br />

(b)<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

Second-level<br />

page tables<br />

Page<br />

table for<br />

the top<br />

4M of<br />

memory<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

316<br />

To<br />

pages


Zerlegung der Adresse mit 64 Bits:<br />

= 42 + 10 + 12<br />

= (32+10) + 10 + 12<br />

d.h. dreistufiges Paging (?)<br />

Three-Level Paging: 64 Bits<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

317


7.6.2 Hashed Page Table<br />

logischer Adreßraum: 64 bit<br />

• hierachisches Paging: zu ineffizient<br />

• Abhilf: Hashing<br />

weitere Einzelheiten:<br />

– kann mit TLB kombiniert werden<br />

– Clustering: mehrer Pages werden zu einem Cluster zusammengefaßt.<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

318


Hashed Page Table<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

319


7.6.3 Inverted Page Table<br />

Adreßraum: 32 und 64 Bits (Page Size: 2 12 = 4K Byte)<br />

• 32 Bits: 2 20 · 4 Byte = 4 MByte (noch machbar)<br />

• 64 Bits: 2 52 · 8 Byte = 32 Millionen GByte (unmöglich)<br />

Ansatz: eine einzige Page Table für alle Prozesse<br />

• Vorteil: weniger Speicherplatz<br />

• Nachteil: mehr Aufwand bei Adreßkonvertierung:<br />

– Eintrag: (pid,p,d)<br />

– Suche nach (pid,p)<br />

• Effizienzsteigerung:<br />

– Verwendung eines TLB<br />

– Hash Table<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

320


Inverted Page Table Architecture<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

321


7.7 Segmentierung<br />

• Sicht des Programmierers:<br />

Programm besteht aus verschiedenen Teilen (= Segmenten), z.B.:<br />

– Hauptprogramm<br />

– Subroutinen<br />

– Stack<br />

– lokale Variable<br />

– globale Variable<br />

– Tabellen<br />

– (große) Arrays<br />

• Ergebnis:<br />

logischer Adressraum ist zweidimensional: (segment, offset)<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

322


Segmentierung: Sicht des Programmierers<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

323


Segmentierung<br />

Abbildung der Programmierer-Sicht auf eindimensionalen Adreßraum:<br />

3<br />

1<br />

4<br />

2<br />

user space physical memory space<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

324<br />

1<br />

4<br />

2<br />

3


Segmentation Hardware<br />

• logische Adresse: (s,d)<br />

s= Segment-Nummer<br />

d= Verschiebung (Displacement oder Offset)<br />

• Segment Table: Adreßkonvertierung in physikalische Adressen<br />

– limit: Länge des Segmentes<br />

– base: Startadresse des Segmentes<br />

• zwei Register für die Segment Table:<br />

– STBR: segment table base register<br />

– STLR: segment table length register<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

325


Segmentation Hardware<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

326


Example of Segmentation<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

327


Vergleich: Paging und Segmentierung<br />

• Zweck der Methode:<br />

– Paging: großer linearer logischer Adreßraum<br />

– Segmentierung: Zerlegung des Programms in logisch unabhängige Teile<br />

• Hat der Programmierer sich darum zu kümmern?<br />

– Paging: Nein, Segmentierung: Ja<br />

• Wieviele lineare Adreßräume gibt es?<br />

– Paging: 1, Segmentierung: mehrere<br />

• Kann der logische Adreßraum größer sein als der physikalische?<br />

– Paging: Ja, Segmentierung: Ja<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

328


7.8 Beispiel: Intel Pentium<br />

Segmentierung, Paging und Kombination dieser Methoden:<br />

• Segmentierung:<br />

– 8 private Segmente: ’private for each process’<br />

– 8 globale Segmente: ’shared among all processes’<br />

• Paging mit 32-Bit-Adresse:<br />

zwei Größen der Pages:<br />

– 4 MByte: einstufiges Paging: 10 + 22<br />

– 4 KByte: zweistufiges Paging: 10 + 10 + 12<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

329


Logical-to-Physical Address Translation in Pentium<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

330


Segmentation on Pentium<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

331


Pentium Paging Architecture<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

332


Linux unterstützt Segmentierung nur begrenzt;<br />

es verwendet 6 Segmente:<br />

• kernel code<br />

• kernel data<br />

• user code<br />

• user data<br />

Pentium und Linux<br />

• state-task segment<br />

(hardware context during context switches for each process)<br />

• local descriptor table (LDT) (i.d.R. nicht benutzt)<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

333


Linear Address in Linux<br />

Pentium-Hardware:<br />

– hat nur zweistufiges Paging<br />

– middle directory: 0 Bits<br />

Pentium und Linux<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

334


Three-Level Paging in Linux<br />

Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH <strong>Aachen</strong> 28. Januar 2008<br />

335

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!