8 Virtueller Speicher (Paging) Contents 8.1 Grundlagen ...
8 Virtueller Speicher (Paging) Contents 8.1 Grundlagen ...
8 Virtueller Speicher (Paging) Contents 8.1 Grundlagen ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Contents</strong><br />
8 <strong>Virtueller</strong> <strong>Speicher</strong> (<strong>Paging</strong>)<br />
<strong>8.1</strong> <strong>Grundlagen</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . 338<br />
8.2 Demand <strong>Paging</strong> . . . . . . . . . . . . . . . . . . . . . . . . . 344<br />
8.2.1 <strong>Grundlagen</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344<br />
8.2.2 Behandlung eines Page Faults . . . . . . . . . . . . . . . . . . . . . . . . . 350<br />
8.3 Page Replacement (Seitenersetzung) . . . . . . . . . . . . . . 354<br />
8.3.1 <strong>Grundlagen</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354<br />
8.3.2 FIFO-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360<br />
8.3.3 LRU-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362<br />
8.3.4 Optimaler Algorithmus: OPT . . . . . . . . . . . . . . . . . . . . . . . . . . 364<br />
8.3.5 Übersicht: Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365<br />
8.3.6 Belady-Anomalie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368<br />
8.4 Modellierung der Seitenersetzung . . . . . . . . . . . . . . . 370<br />
8.4.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370<br />
8.4.2 Strategien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371<br />
8.4.3 Stack-Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376<br />
8.4.4 Probabilistische Modelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
336
8.5 Hardware und Implementierung . . . . . . . . . . . . . . . . 385<br />
8.5.1 Second-Chance-Algorithmus (CLOCK) . . . . . . . . . . . . . . . . . . . . . 388<br />
8.5.2 Enhanced Second Chance Algorithmus (NRU) . . . . . . . . . . . . . . . . . 392<br />
8.5.3 Additional Reference Bits Algorithm (AGING) . . . . . . . . . . . . . . . . . 393<br />
8.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . 394<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
337
<strong>8.1</strong> <strong>Grundlagen</strong><br />
Das gesamte Programm wird oft nicht benötigt:<br />
• Behandlung von Fehlersituationen<br />
• Arrays, Listen und Tabellen:<br />
oft größer dimensioniert als tatsächlich gebraucht<br />
• Sonderfälle im Programm:<br />
fast nie gebraucht<br />
Abhilfe: virtueller <strong>Speicher</strong> (mit <strong>Paging</strong>)<br />
• Trennung: virtuelle Adressen vs. physikalische Adresse<br />
• Größe des virtuellen Adreßraums:<br />
– nicht durch HS beschränkt<br />
– ’fehlende’ Teile werden auf Festplatte ausgelagert<br />
• Multiprogramming:<br />
CPU-Benutzung kann besser unter mehreren Prozessen aufgeteilt werden.<br />
• Weniger I/O für die Festplatte:<br />
Nur die wirklich benötigten Programmteile werden bearbeitet.<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
338
• Prinizp:<br />
Ein Prozeß kann nur ausgeführt werden, wenn er sich im HS befindet.<br />
• <strong>Virtueller</strong> <strong>Speicher</strong>:<br />
In der Regel befinden sich immer nur Teile eines Prozesses im HS.<br />
• Konsequenz: Ein Prozeß kann ausgeführt werden,<br />
ohne daß er sich vollständig im HS befindet.<br />
• Die Teile des Prozesses, die sich nicht im HS befinden,<br />
liegen auf der Festplatte.<br />
Erwartung: Lokalität der <strong>Speicher</strong>referenzen<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
339
Virtual Memory, Page Table, Physical Memory and Hard Disk<br />
<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
340
Belegung des Adressraums:<br />
• virtuelle Adressen (für den Programmierer):<br />
’übliche’ Belegung:<br />
– oben: Stack<br />
– unten: Code, Daten, Heap<br />
Virtual Address Space<br />
• Abbildung auf physikalische Adressen:<br />
Memory Mangament Unit (MMU) mit Page Table<br />
Shared Memory:<br />
– system libraries (meist: read-only)<br />
– <strong>Speicher</strong>: Kommunikation zwischen Prozessen<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
341
Virtual Address Space<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
342
Shared Library Using Virtual Memory<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
343
8.2 Demand <strong>Paging</strong><br />
8.2.1 <strong>Grundlagen</strong><br />
allgemeine Unterscheidung<br />
(unabhängig von <strong>Paging</strong> und virtuellem <strong>Speicher</strong>):<br />
• Pager: lagert die Pages eines Prozesses vom HS<br />
auf die Festplatte aus und umgekehrt.<br />
• Swapper: bearbeitet ganze Prozesse.<br />
• lazy ’swapper’:<br />
eine Page wird nur dann geladen, wenn sie benötigt wird.<br />
virtueller <strong>Speicher</strong> und <strong>Paging</strong>:<br />
Demand <strong>Paging</strong> (= lazy swapper):<br />
Die Pages werden erst bei Bedarf von der Festplatte in HS geladen.<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
344
Transfer of a Paged Memory to Contiguous Disk Space<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
345
Valid/Invalid-Bit<br />
Frage: Welche Pages sind im Hauptspeicher und welche nicht?<br />
Valid/Invalid-Bit:<br />
– ein Bit in der Page Table<br />
– falls Adresse legal: markiert, ob die Page sich im HS befindet<br />
Frame # valid-invalid bit<br />
….<br />
page table<br />
v<br />
v<br />
v<br />
v<br />
i<br />
i<br />
i<br />
During address translation, if valid–invalid bit in page table entry<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
346
Page Table When Some Pages Are Not in Main Memory<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
347
Sechs Schritte:<br />
• prüfe mttels PCB: ’valid’ <strong>Speicher</strong>referenz?<br />
• invalid: Prozeß beenden<br />
valid: Start der Page-Ladeprozedur<br />
• freien Frame finden<br />
Schritte bei Page Fault<br />
• I/O-Operation für Festplatte anfordern und starten<br />
• I/O fertig: Page Table aktualisieren<br />
• Neu-Start des unterbrochenen Befehls<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
348
Steps in Handling a Page Fault<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
349
8.2.2 Behandlung eines Page Faults<br />
Bei einem Page Fault Trap werden die folgenden Schritte durchgeführt:<br />
1. Page Fault Trap<br />
(a) MMU stellt fest, daß das invalid-Bit in der Page Table eine fehlende Seite anzeigt<br />
(b) MMU erzeugt einen Trap zum OS<br />
(c) CPU-Register und Prozeß-Status werden gesichert<br />
(d) Prüfung, ob die Page-Referenz legal ist<br />
und wo sich die Seite auf der Festplatte befindet<br />
(e) Auffinden eines freien Frames für die neue Page<br />
(f) Anfordern des Datentransfers von der Platte<br />
2. Einlesen der Page<br />
(a) optional: Prozeß wird blockiert,<br />
so daß die CPU von anderen Prozessen genutzt werden kann<br />
(b) Warten in der Queue der Festplatte (ggf. vorher andere Leseanforderungen!)<br />
(c) Warten: Seek- und Latency-Time<br />
(d) Eigentlicher Datentransfer<br />
(e) Interrupt signalisiert an CPU: ’I/O completed’<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
350
3. Fortführung des Prozesses<br />
(a) OS empfängt die Meldung und aktualisiert die Page Table<br />
(b) Falls der Prozeß blockiert war, wird er in die Ready-Queue gebracht<br />
(c) Warten auf Zuteilung der CPU<br />
(d) Laden der CPU-Register, Prozeß-Status und der aktualisierten Page Table.<br />
(e) Wiederaufnahme des Befehls, bei dem der Page Fault aufgetreten ist.<br />
Verfeinerung:<br />
falls kein Frame mehr frei ist:<br />
– es wird zunächst eine auszulagernde Page aus dem <strong>Speicher</strong> gewählt<br />
– danach wird diese auf die Platte ausgelagert<br />
in diesem Falle: 2 Page Transfers<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
351
dramatische Unterschiede:<br />
– <strong>Speicher</strong>: TM = 100ns,<br />
– Festplatte: TD = 25ms.<br />
Kosten eines Page Faults<br />
Die mittlere Zugriffszeit (bei Wahrscheinlichkeit q eines Page Faults) beträgt:<br />
T = (1 − q) · TM + q · TD<br />
= TM + q · (TD − TM) ≈ TM + q · TD<br />
q[%] T[nsec]<br />
0 100<br />
10 −6 125<br />
10 −4 2.600<br />
10 −2 250.100<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
352
Transparenz<br />
• Idealfall:<br />
Programmierer braucht nichts über virtuellen <strong>Speicher</strong> zu wissen<br />
(’Transparenz’).<br />
• Realität:<br />
Die Lokalität der <strong>Speicher</strong>referenzen kann einen dramatischen<br />
Effekt auf die Rechenzeit haben.<br />
Beispiel: Bearbeiten einer zweidimensionalen Tabelle A[1 : N, 1 : N]<br />
falls <strong>Speicher</strong>bedarf einer Zeile (oder Spalte) größer als die Page Size.<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
353
8.3 Page Replacement (Seitenersetzung)<br />
8.3.1 <strong>Grundlagen</strong><br />
Over-Allocation of Memory (Überbuchen des HS):<br />
• OS vergibt mehr virtuellen Adreßraum (an einen oder mehrere Prozesse)<br />
als der physikalische <strong>Speicher</strong> umfaßt<br />
(Ziel: bessere Auslastung der CPU)<br />
• Notwendigkeit des Page Replacement (Seitenersetzung):<br />
Bei Bedarf werden Pages während der Prozeßausführung geladen und ausgelagert.<br />
Beispiel:<br />
– zwei Prozesse: user 1 und user 2<br />
– wenn Page M geladen ist, ist kein Platz mehr im HS für Page B<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
354
Over-Allocation of Memory and Page Replacement<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
355
Page Fault und Freigabe eines Frames:<br />
Seitenersetzung<br />
• finde die entsprechende Page auf der Festplatte<br />
• finde einen freien Frame:<br />
– falls es eine gibt, verwende ihn.<br />
– falls nicht: wähle ein ’Opfer’ aus (mittels eines Algorithmus)<br />
und lagere die entsprechende Page auf Festplatte aus<br />
Modify-Bit: falls Page nicht beschrieben wurde, ist Auslagern nicht nötig!<br />
• lade die benötigte Seite in den ’neuen’ Frame;<br />
aktualisiere Page Table und Frame Table (oder List).<br />
• startete den User-Prozeß neu<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
356
Seitenersetzung<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
357
• Frage:<br />
Welche der im Memory vorhandenen Pages soll auf die Platte ausgelagert werden?<br />
• Ideales Ziel: Die Zahl der Page Faults soll minimal sein<br />
• Methode: ’Page Replacement Algorithm’<br />
Abbildung:<br />
erwarteter monotoner Zusammenhang zwischen Anzahl der Page Faults<br />
und der Anzahl der Frames<br />
(Warnung: wird nicht immer zutreffen!)<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
358
Graph of Page Faults Versus The Number of Frames<br />
(erhoffte Relation)<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
359
8.3.2 FIFO-Algorithmus<br />
Ansatz:<br />
• Jeder Page wird ihre Ladezeit zugeordnet.<br />
• Verdrängen: Bei Bedarf wird die älteste Page ausgelagert.<br />
’Reference String’: die Folge der <strong>Speicher</strong>-Referenzen eines Prozesses<br />
(wird reduziert auf die Page-Nummern)<br />
r T<br />
1 := r1, ..., rt, ..., rT<br />
= 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1<br />
Reference 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1<br />
Frame 1 7 7 7 2 * 2 2 4 4 4 0 * * 0 0 * * 7 7 7<br />
Frame 2 0 0 0 * 3 3 3 2 2 2 * * 1 1 * * 1 0 0<br />
Frame 3 1 1 * 1 0 0 0 3 3 * * 3 2 * * 2 2 1<br />
Notation: * bedeutet:<br />
es findet keine Änderung statt, d.h. alle Pages bleiben im <strong>Speicher</strong><br />
Ergebnis:<br />
Anzahl der Page Faults: 3 + 12<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
360
Interpretation des FIFO:<br />
– Ordnungskriterium: Alter der Seiten im HS<br />
Beim FIFO-Algorithmus kann die sogenannte Belady-Anomalie auftreten:<br />
ein Erhöhen der Framezahl kann in manchen Fällen<br />
zu einer Verhöhung (!) der Page Faults führen.<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
361
8.3.3 LRU-Algorithmus<br />
LRU-Algorithmus (LRU = Least Recently Used):<br />
ersetze die Page, die am längsten nicht referenziert wurde.<br />
Interpretation:<br />
Approximation an optimalen Algorithmus (siehe später)<br />
Beispiel:<br />
Reference 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1<br />
Frame 1 7 7 7 2 * 2 * 4 4 4 0 * * 1 * 1 * 1 * *<br />
Frame 2 0 0 0 * 0 * 0 0 3 3 * * 3 * 0 * 0 * *<br />
Frame 3 1 1 * 3 * 3 2 2 2 * * 2 * 2 * 7 * *<br />
Ergebnis:<br />
Anzahl der Page Faults: 3 + 9<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
362
Interpretation des LRU-Algorithmus:<br />
– Prinzip: fast wie FIFO<br />
– Unterschied: Wenn eine Seite bereits im HS ist, wird sie verjüngt<br />
und rückt an die erste Position.<br />
– Implementierung als erweiterter ’Stack’<br />
Anmerkung:<br />
Bei dem LRU-Algorithmus kann die Belady-Anomalie nicht auftreten.<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
363
8.3.4 Optimaler Algorithmus: OPT<br />
Frage: was ist der optimale Algorithmus?<br />
• Annahme: Look-Ahead in die Zukunft ist erlaubt!<br />
(d.h. Realisierbarkeit bleibt zunächst offen)<br />
• Antwort:<br />
ersetze die Page, die für die längste Zeit nicht referenziert werden wird.<br />
Beispiel:<br />
Reference 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1<br />
Frame 1 7 7 7 2 * 2 * 2 * * 2 * * 2 * * * 7 * *<br />
Frame 2 0 0 0 * 0 * 4 * * 0 * * 0 * * * 0 * *<br />
Frame 3 1 1 * 3 * 3 * * 3 * * 1 * * * 1 * *<br />
Ergebnis:<br />
Anzahl der Page Faults: 3 + 6<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
364
8.3.5 Übersicht: Algorithmen<br />
verschiedene Kriterien:<br />
• Zeit des HS-Eintritts (Ladezeit)<br />
• Zeit der Referenzierung<br />
• Häufigkeit der Referenzierung<br />
• Approximationen,<br />
um Software– und/oder Hardware–Aufwand zu reduzieren<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
365
Übersicht: Kriterium für die Seitenverdrängung<br />
• OPT: optimal bzgl. PFF:<br />
Zeit der zukünftigen Benutzung<br />
• FIFO: first in, first out:<br />
Zeit des HS-Eintritts (= Zeit der ersten Refenzierung)<br />
• LIFO: last in, first out:<br />
Zeit des HS-Eintritts<br />
• CLIMB:<br />
wie FIFO, aber mit ’Aufstieg bei Bewährung’<br />
• LRU: least recently used,<br />
Zeit der letzten Benutzung im HS (= Zeit der letzten Referenzierung)<br />
• LFU: least frequently used<br />
• MFU: most frequently used<br />
• RR: random replacement:<br />
Seite wird zufällig ausgewählt<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
366
• (Hardware-)Approximationen an LRU oder OPT:<br />
– second chance (CLOCK)<br />
– enhanced second chance (NRU: not recently used)<br />
– additional reference bits (AGING)<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
367
8.3.6 Belady-Anomalie<br />
• Hoffnung:<br />
Anzahl der Seitenfehler sinkt mit wachsender Größe m<br />
des physikalischen <strong>Speicher</strong>s<br />
• Realität:<br />
Es gibt Fälle, bei denen die Anzahl der Seitenfehler steigt.<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
368
Referenzstring: 1,2,3,4,1,2,5,1,2,3,4,5<br />
FIFO: Belady-Anomalie<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
369
8.4 Modellierung der Seitenersetzung<br />
8.4.1 Motivation<br />
ähnliche Problemstellungen wie page replacement:<br />
• hardware cache<br />
• file cache<br />
• browser or web server: caching of webpages<br />
(difference: no write commands)<br />
Aussagen zu konkreten Fragen:<br />
• Belady-Anomalie<br />
• generelle Aussagen, e.g. zu PFF = page fault frequency<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
370
8.4.2 Strategien<br />
Folgen von <strong>Speicher</strong>referenzen und <strong>Speicher</strong>zuständen:<br />
r T<br />
1 := r1, ..., rt, ...., rT<br />
M T<br />
1 := M1, ..., Mt, ...., MT<br />
beachte: Mt = Zustand NACH der <strong>Speicher</strong>referenz rt<br />
Physikalischer <strong>Speicher</strong> Mt und Seitenersetzung zur Zeit t:<br />
Mt := Mt−1 ∪ Xt \ Yt<br />
Mt := Mt(A, r T<br />
1 )<br />
mit den verdrängten Seiten Yt und den geladenen Seiten Xt<br />
• demand paging: bisher betrachtet<br />
• non-demand paging:<br />
mögliche Vorteile:<br />
– Prozeß kann ohne viele Seitenfehler starten<br />
– Ladekosten sind geringer für eine Menge von Seiten<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
371
Verfahren (sog. ’One-Block Look-Ahead’):<br />
• Funktionsweise: im wesentlichen wie LRU<br />
Non-Demand-<strong>Paging</strong><br />
• Unterschied:<br />
wenn rt referenziert wird, wird zusätzlich rt+1 betrachtet und geladen,<br />
falls nicht schon im HS.<br />
• zwei Varianten:<br />
Demand Prepaging und Look-Ahead<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
372
Zusammenhang: Demand- und Non-Demand-<strong>Paging</strong><br />
Frage: Ist Demand- oder Non-Demand-<strong>Paging</strong> besser?<br />
Zusammenhang:<br />
• Non-Demand-<strong>Paging</strong>:<br />
man merkt sich, welche Seiten geladen und verdrängt werden<br />
• Demand-<strong>Paging</strong>:<br />
man baut ein Verfahren nach, das dieselben Seiten lädt<br />
• Vergleich:<br />
– PFF: gleich oder kleiner für Demand-<strong>Paging</strong><br />
– Zeitkosten: u.U. kleiner für Non-Demand-<strong>Paging</strong><br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
373
Voraussetzungen:<br />
• Referenzstring r T 1<br />
• physikalischer <strong>Speicher</strong> zur Zeit t: Mt mit m Frames<br />
Seitenersetzung zur Zeit t:<br />
Mt :=<br />
⎧<br />
⎪⎨<br />
⎪⎩<br />
Mt ⊆ {r1, ..., rt}<br />
Mt−1 if rt ∈ Mt−1<br />
Mt−1 ∪ {rt} if rt /∈ Mt−1 |Mt−1| < m<br />
Mt−1 ∪ {rt} \ {yt} if rt /∈ Mt−1 |Mt−1| = m<br />
Sprechweise: yt = verdrängte Seite (bei Seitenfehler)<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
374
Demand <strong>Paging</strong><br />
Die verdrängte Seite ist eine Funktion des Algorithmus A<br />
zur Seitenersetzung und des Referenzstrings r T 1 :<br />
unterscheide:<br />
• Nur die Vergangenheit r t 1<br />
yt = yt(A(r T<br />
1 ))<br />
Mt ⊆ {r1, ..., rt}<br />
wird betrachtet (immer realisierbar)<br />
A = A(r t<br />
1 )<br />
• Look-Ahead-Methode:<br />
physikalisch nicht oder nur approximativ realisierbar:<br />
Anwendung: Algorithmus OPT<br />
A = A(r T<br />
1 )<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
375
8.4.3 Stack-Algorithmen<br />
im folgenden nur: demand paging<br />
drei Konzepte zur Seitenersetzung:<br />
• Inklusionseigenschaft<br />
• Stack-Algorithmus<br />
(hier: stack = Folge)<br />
• Prioritäts-Algorithmus<br />
Äquivalenz:<br />
Die drei Konzepte sind äquivalent.<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
376
Inklusionseigenschaft<br />
• Definition (Referenzstring rT 1 , physikalischer <strong>Speicher</strong> mit m Frames):<br />
Mt(m, r T<br />
1 ) ⊆ Mt(m + 1, r T<br />
1<br />
) ∀ rT<br />
1 , t = 1, ..., T, m > 0<br />
• Hinweise:<br />
– Mt besteht nur aus bisherigen <strong>Speicher</strong>referenzen:<br />
Mt ⊆ {r1, ..., rt}<br />
– <strong>Paging</strong>-Algorithmus A kann Zugriff auf ALLE <strong>Speicher</strong>referenzen haben,<br />
e.g. OPT: A = A(r T 1 )<br />
• Folgerung:<br />
– Zahl der Seitenfehler sinkt mit wachsendem m<br />
– speziell: Belady-Anomalie kann nicht auftreten<br />
andere Schreibweise:<br />
M(m, r t<br />
1<br />
) ⊆ M(m + 1, rt)<br />
∀ rt,<br />
m > 0<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
377<br />
1<br />
1
Stack-Algorithmen<br />
Ein Algorithmus zur Seitenersetzung ist ein Stack-Algorithmus<br />
unter den folgenden Bedingungen:<br />
• wir betrachten die bis zur Zeit t erfolgten <strong>Speicher</strong>referenzen r t 1<br />
• Stack := permutierte Folge dieser <strong>Speicher</strong>referenzen<br />
(nach Entfernen der Duplikate, n = Anzahl der Pages):<br />
St := St(r t<br />
1 ) := [st(1), ..., st(n)]<br />
Beachte:<br />
– Sortierkriterium A: A = A(r T 1 )<br />
– hier geht m noch nicht ein;<br />
d.h. das Sortierkriterium A muß unabhängig von m sein.<br />
• wähle die ersten m Elemente (m ≤ n):<br />
Mt(m) := Mt(m, r T<br />
1 ) := {st(1), ..., st(m)}<br />
(Vereinfachung der Notation: immer derselbe Referenzstring r T 1 )<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
378
Äquivalenz:<br />
• Stack-Algorithmus → Inklusionseigenschaft<br />
Beweis: klar<br />
• Inklusionseigenschaft → Stack-Algorithmus<br />
Beweis: betrachte m = n, n − 1, ..., 1<br />
FIFO-Algorithmus:<br />
– erfüllt nicht die Inklusionseigenschaft<br />
– zeigt Belady-Anomalie<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
379
Eigenschaften für Stack Updates St → St+1:<br />
• erste Position: Zu jeder Zeit t muß gelten:<br />
Stack-Algorithmus: Updates<br />
rt ∈ Mt(m) ∀m > 0<br />
Konsequenz: rt muß immer die ersten Position des Stacks haben.<br />
• Übergang t → t + 1:<br />
– das Element rt+t wird einsortiert an die erste Position;<br />
– das bisherige erste Element wird neu einsortiert<br />
– alle Elemente dazwischen können ihre Position verändern<br />
– alle Elemente darunter behalten ihre Position<br />
• beachte: alle bisherigen Operationen sind unabhängig von m<br />
• physikalischer <strong>Speicher</strong>: die ersten m Elemente<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
380
Prioritäts-Algorithmen<br />
Die konkrete Ordnung wird durch ein ’Prioritätskriterium’ definiert.<br />
Beispiele:<br />
Algorithmus Kriterium<br />
OPT wachsende Vorwärtsdistanz<br />
LRU wachsende Rückwärtsdistanz<br />
LFU abnehmende Häufigkeit der Benutzung<br />
LIFO wachsende Zeit des HS-Eintritts<br />
FIFO ? ? abnehmende Zeit des HS-Eintritts<br />
Problem bei FIFO:<br />
– Das Kriterium ist nicht von m unabhängig!<br />
– Demnach ist FIFO kein Stack-Algorithmus<br />
Weitere Gegenbeispiele:<br />
CLIMB, CLOCK (=second chance)<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
381
Definition:<br />
• Prioritätskriterium (= Sortierkriterium) π<br />
für jedes Element in Mt(m)<br />
Prioritäts-Algorithmen<br />
• minimum- und maximum-Operationen auf Menge Mt(m)<br />
mittels Prioritätskriterium<br />
• verdrängte Seite yt+1 bei Seitenfehler und <strong>Speicher</strong>referenz rt+1:<br />
yt+1 := min<br />
π [Mt(m)]<br />
• Formulierung der Stack-Eigenschaft mittels Prioritätskriterium<br />
= Zusammenhang zwischen Mt(m) und Mt(m + 1):<br />
Mt(m + 1) := Mt(m) ∪ {st(m + 1)}<br />
min<br />
π [Mt(m + 1)] = min<br />
π [st(m + 1), min<br />
π [Mt(m)]]<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
382
Stack-Algorithmus: Update-Operationen<br />
Update-Operation von t nach t + 1 für i = 1, ..., n<br />
(Positionsindex in den Stack: kt):<br />
define kt: st(kt) = rt+1<br />
st+1(i) :=<br />
⎧<br />
⎪⎨<br />
⎪⎩<br />
rt+1<br />
i = 1<br />
maxπ[minπ[Mt(i − 1)], st(i)] 1 < i < kt<br />
minπ[Mt(k − 1)] i = kt<br />
st(i) i > kt<br />
beachte: kt = ∞, falls rt+1 noch nicht referenziert wurde<br />
Implementierung:<br />
rekursive Realisierung der Operation ’max-min’ mittels paarweiser Vergleiche<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
383
8.4.4 Probabilistische Modelle<br />
Bewertungskriterien:<br />
• Belady-Anomalie: wie oft tritt der Effekt auf?<br />
(pathologischer Fall?)<br />
• PFF: page fault frequency<br />
minimale Anzahl der PFFs im statistischen Mittel<br />
• Notwendigkeit probabilistischer Modelle:<br />
Wahrscheinlichkeit eines Referenzstrings r T 1 :<br />
p(r T<br />
1 ) =<br />
mit einer geeigneten Initialisierung für t = 1<br />
allgemeine Tendenz der Anzahl der PFFs:<br />
LRU < CLIMB < ... < FIFO<br />
T<br />
t=1<br />
p(rt|r t−1<br />
1 )<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
384
8.5 Hardware und Implementierung<br />
Aspekte der <strong>Paging</strong>-Algorithmen:<br />
• Qualität<br />
• Kosten: Software (Zeit) und/oder Hardware (Geld)<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
385
Implementierung von FIFO und LRU:<br />
• FIFO: zyklische verkettete Liste:<br />
einfach, aber nicht gut<br />
• LRU:<br />
– Hardware:<br />
zusätzlicher Eintrag in Page Table: Zeit der Referenzierung<br />
verdränge Page mit der niedrigsten Zeit<br />
– Stack (Software, Microcode):<br />
verkettete Liste der Page-Nummern<br />
Aktualisierung bei jeder <strong>Speicher</strong>referenz<br />
insgesamt: aufwendig, aber gut<br />
Alternative:<br />
Approximationen an LRU mittels Hardware-Unterstützung<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
386
Hardware: Reference- und Modify–Bit<br />
Hardware-Unterstützung für Eintrag in der Page Table:<br />
• reference (use) bit: R-Bit<br />
– R=0: Initialisierung bei Laden der Seite in den HS<br />
– R=1: bei Referenzieren der Page (Read/Write)<br />
– wird zurückgesetzt (Zeitintervalle, Page Fault, ...)<br />
• modify (dirty) bit: M-Bit:<br />
– M=0: Initialisierung bei Laden der Seite in den HS<br />
– M=1: bei Write-Befehl auf diese Page<br />
(d.h. die Page muß bei Verdrängung auf Festplatte geschrieben werden)<br />
– wird niemals zurückgesetzt<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
387
8.5.1 Second-Chance-Algorithmus (CLOCK)<br />
Ansatz: Verbesserung des FIFO-Algorithmus mit R-Bit<br />
Algorithmus:<br />
• Die zu verdrängende Page wird mittels FIFO ausgewählt.<br />
• Das R-Bit wird geprüft:<br />
– R=0: die Page wird ersetzt.<br />
– R=1: das Bit wird zurückgesetzt,<br />
und die Ladezeit wird auf die aktuelle Zeit gesetzt.<br />
Diese Page erhält eine ’second chance’,<br />
d.h. die nächste Page in der FIFO-Reihenfolge wird betrachtet<br />
usw., bis eine Page mit R=0 gefunden wird.<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
388
Konsequenzen:<br />
• Eine Page, der eine ’second chance’ gegeben wurde, wird nicht ersetzt, bis alle anderen<br />
Seiten ersetzt sind oder eine ’second chance’ erhalten haben.<br />
• Falls eine Page genügend oft referenziert wird, wird sie nie ersetzt.<br />
• Falls alle R-Bits gesetzt sind, entartet der Algorithmus in reinen FIFO-Algorithmus.<br />
Implementierung:<br />
• lineare verkettete Liste:<br />
ineffizient<br />
• zyklische verkettete Liste:<br />
’clock algorithm’<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
389
Second-Chance Algorithm<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
390
J<br />
K<br />
I<br />
L<br />
H<br />
A<br />
G<br />
Clock Algorithm<br />
B<br />
F<br />
C<br />
E<br />
D<br />
When a page fault occurs,<br />
the page the hand is<br />
pointing to is inspected.<br />
The action taken depends<br />
on the R bit:<br />
R = 0: Evict the page<br />
R = 1: Clear R and advance hand<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
391
8.5.2 Enhanced Second Chance Algorithmus (NRU)<br />
anderer Name: NRU (= not recently used)<br />
Verwendung beider Bits:<br />
– R: reference bit (wird in regelmäßigen Intervallen zurückgesetzt)<br />
– M: modify bit (wird niemals zurückgesetzt)<br />
Klassifizierung:<br />
• Klasse 1: R=0, M=0<br />
• Klasse 2: R=0, M=1<br />
• Klasse 3: R=1, M=0<br />
• Klasse 4: R=1, M=1<br />
Die Page in der niedrigsten nichtleeren Klasse (Reihenfolge 1,2,3,4) wird ersetzt.<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
392
8.5.3 Additional Reference Bits Algorithm (AGING)<br />
Algorithmus:<br />
• jede Page:<br />
zusätzliches Byte zur Buchführung über R-Bit<br />
• regelmäßige Zeitintervalle (bspw. 100 ms):<br />
– das R-Bit jeder Page wird mit diesem Byte kombiniert (’addiert’)<br />
– das Byte wird geshiftet<br />
– das R-Bit wird zurückgesetzt<br />
Beispiel:<br />
1 1 1 1 1 1 1 1 8mal benutzt<br />
1 1 0 0 0 0 0 0 nur die letzten beiden Male benutzt<br />
0 1 1 1 0 1 1 1 beim vorletzten Mal benutzt und ...<br />
Das Byte wird als unsigned int interpretiert,<br />
und die Page mit dem niedrigsten Wert wird bei einem Page Fault verdrängt.<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
393
8.6 Zusammenfassung<br />
• ’Over-allocation of memory’:<br />
mehr virtueller <strong>Speicher</strong> als physikalisch vorhanden<br />
• Notwenddigkeit der Seitenersetzung<br />
und entsprechender Algorithmen<br />
• Bewertungskriterium:<br />
Belady-Anomalie und PFF (= page fault frequency)<br />
• Analyse der Algorithmen<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
394
Übersicht: Algorithmen für die Seitenersetzung<br />
• OPT: optimal bzgl. PFF:<br />
Zeit der zukünftigen Benutzung<br />
• FIFO: first in, first out:<br />
Zeit des HS-Eintritts (= Zeit der ersten Refenzierung)<br />
• LIFO: last in, first out:<br />
Zeit des HS-Eintritts<br />
• CLIMB:<br />
wie FIFO, aber mit ’Aufstieg bei Bewährung’<br />
• LRU: least recently used,<br />
Zeit der letzten Benutzung im HS (= Zeit der letzten Referenzierung)<br />
• LFU: least frequently used<br />
• MFU: most frequently used<br />
• RR: random replacement:<br />
Seite wird zufällig ausgewählt<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
395
• (Hardware-)Approximationen an LRU oder OPT:<br />
– second chance (CLOCK)<br />
– enhanced second chance (NRU: not recently used)<br />
– additional reference bits (AGING)<br />
Ney: Betriebssysteme und Systemsoftware, WS 2007/8 c○RWTH Aachen 28. Januar 2008<br />
396