22.08.2013 Aufrufe

8 Virtueller Speicher (Paging) Contents 8.1 Grundlagen ...

8 Virtueller Speicher (Paging) Contents 8.1 Grundlagen ...

8 Virtueller Speicher (Paging) Contents 8.1 Grundlagen ...

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.

<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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!