8. Swapping und Virtueller Speicher Der physikalische Adreßraum wird weiter abgebildet auf Arbeitsspeicher und Plattenspeicher. Prozesse (deren benutzte Seiten) die nicht laufen (und bald nicht laufen) werden ausgelagert: swapping. Einrichtung eines virtuellen Speichers, welcher wesentlich größer als der physikalische ist. Nicht gebrauchte Seiten können auf Platte ausgelagert sein: Demand Paging. page page page... memory map page n virtual memory physical memory disk Figure 4: Der virtuelle Speicher kann viel größer als der physikalische sein. Betriebssysteme Harald Kosch Seite 4
Swapping operating system swap out process p user space swap in process p main memory backing store Figure 4: Swapping von zwei Prozessen mit der Platte als Auslagerungsspeicher Programme werden ein- und ausgelagert (roll in/roll out) Die CPU-Zeit muß deutlich größer als die Übertragungszeit sein sonst ist es sinnlos I/-Puffer dürfen nicht ausgelagert werden Kleinere Prozesse werden schneller ausgelagert Betriebssysteme Harald Kosch Seite 44
Swapping in UNIX Frühere Systeme (auf PDP-) haben den ganzen Prozeß ein- und ausgelagert BSD und System V benutzen Demand Paging (siehe später) Dedizierter Swap-Bereich Swap-in: Wählt den am längsten ausgelagerten Prozeß oder den mit höchster Priorität aus Lagert eventuell andere Prozesse aus Swap-out: Gelockte Prozesse werden nicht ausgelagert Schlafende Prozesse werden beim Auslagern bevorzugt Verbrauchte Zeit im HS, sowie Priorität werden berücksichtigt Eine minimale Zeit (z.b. sec) ist jedem Prozeß garantiert (um thrashing zu vermeiden siehe später) Bei ready-prozessen werden die schon verbrauchte Zeit im HS und der nice -Wert berücksichtigt. Betriebssysteme Harald Kosch Seite 45
Swap-Ereignisse fork brk (vergrößert Speicherbedarf) Stack-Vergrößerung um swap-in möglich zu machen Probleme Es kann nicht genügend Speicher frei gemacht werden Thrashing Deadlock Das System verwendet mehr Zeit mit Swapping als mit nützlicher Arbeit Ausgelagerte und eingelagerte Prozesse blockieren einander gegenseitig Betriebssysteme Harald Kosch Seite 46
Demand Paging program A swap out 4 5 6 7 8 9 4 5 program B swap in 6 7 8 9 main memory Figure 44: Swapping von Pages. Benachbarte Seiten werden auf der Platte auch nebeneinander gespeichert wenn möglich Lazy Swapper Wir laden nur die Seiten, die wirklich gebraucht werden Wir speichern nur die veränderten Seite Betriebssysteme Harald Kosch Seite 47
4 5 7 A B C D E F 6 G H logical memory frame 4 5 6 7 4 6 9 valid/ invalid bit v i v i i v i i 4 5 6 7 8 9 A C F A backing store B C D E F 4 physical memory Figure 45: Die Pagetabelle, wenn einige Seiten nicht im Hauptspeicher sind. Page Fault (z.b. bei Zugriff auf Seite, mit Inhalt B): Das Betriebssystem wird aktiviert. Es muß die fehlende Seite laden. Betriebssysteme Harald Kosch Seite 48
page is on backing store operating system trap reference LOAD M i 6 restart instruction page table 5 reset page table free frame 4 bring in missing page physical memory Figure 46: Schritte bei der Behandlung eines Page Faults. Prüfe den Grund. Finde einen Frame. Lade die Seite 4. Ändere die Pagetabelle 5. Befehl von vorne anfangen Problemfälle: MVC: bewegt viele Bytes durch einen Befehl MOVE (A)+, -(A) typischerweise in einer Schleife push -t Vektor[A] auf Stack ( top of stack =A) Betriebssysteme Harald Kosch Seite 49
Seitenersetzung Overallocation Gesamtbedarf von aktiven Prozessen ist größer als der Arbeitsspeicher Die Seitentabelle darf voll werden Bei Bedarf lagern wir Seiten aus, um andere Seiten laden zu können Betriebssysteme Harald Kosch Seite 5
PC H Load M J M logical memory for user A B D E logical memory for user frame frame v 4 v 5 v i page table for user 6 7 valid/ invalid bit valid/ invalid bit v i v v page table for user 4 5 6 A 7 Monitor D H Load M J E physical memory B backing store M Figure 47: Seitenersetzung ist notwendig frame valid/ invalid bit swap out victim page f f v i v 4 change to invalid reset page table for new page f victim swap desired page in backing store physical memory Figure 48: Seitenersetzung Betriebssysteme Harald Kosch Seite 5
Algorithmen für Seitenersetzung 7 4 7 7 7 7 4 4 4 7 7 7 FIFO (First In First Out) Stragegie (5 Page Faults) 7 4 7 7 7 7 7 4 Der optimale Ersetzungsalgorithmus (9 Page Faults) 7 4 7 7 7 7 4 4 4 7 LRU (Least Recently Used) Algorithmus ( Page Faults) FIFO Die älteste Seite wird ersetzt Der optimale Algorithmus Die Seite, die in der weitesten Zukunft wiederverwendet wird, wird ersetzt die Zukunft kennen wir nicht LRU (Least Recently Used) Versucht von der Vergangenheit auf die Zukunft zu schließen. Ersetzt die am längsten unbenutzte Seite Betriebssysteme Harald Kosch Seite 5
Youngest Oldest 4 4 4 = = = = = 4 = = = 4 = frames, 9 faults 4 4 = = 4 4 = = 4 = = 4 = = 4 4 frames, faults Figure 49: Belady s Anomaly mit dem FIFO Algorithmus Betriebssysteme Harald Kosch Seite 5
Implementierung von LRU Ein Zähler wird durch die Hardware nach jedem Befehl erhöht und der aktuellen Seite zugewiesen. Die Seite mit dem kleinsten Wert ist zu ersetzen Bei n Seiten wird eine n n Matrix von der Hardware verwaltet. Beim Zugriff auf die Seite k; Zeile k, Spalte k. Die Zeile mit dem kleinsten Binärwert gibt die am längsten unbenützte Seite an (a) Page (b) Page (c) Page (d) Page (e) (f) (g) (h) (i) (j) Page Figure 5: LRU mit einer Matrix. Referenzsequenz: LRU ist viel zu teuer. Betriebssysteme Harald Kosch Seite 54
NFU (Not Frequently Used) Annäherung an LRU Jede Seite hat einen mit ihr assoziierten Zähler Das Betriebssystem addiert das R-Bit (Referenced) periodisch zum Seitenzähler. Die Seite mit dem kleinsten Zählerwert ist zu ersetzen Problem: NFU vergißt nichts, einmal häufig benutzte Seiten haben einen hohen Zählerstand Lösung: Aging Der Zähler von unbenutzten Seiten wird periodisch dekrementiert Betriebssysteme Harald Kosch Seite 55
Implementierung von Aging Die Zähler werden vor der Aktualisierung um nach rechts geschoben Das R-Bit wird beim höchsten Stellenwert (links) addiert Damit tendiert ein alter Zähler gegen R bits for pages -5, clock tick R bits for pages -5, clock tick R bits for pages -5, clock tick R bits for pages -5, clock tick R bits for pages -5, clock tick 4 Page 4 5 (a) (b) (c) (d) (e) Figure 5: Der Aging-Algorithmus simuliert LRU in Software. Die Darstellung zeigt sechs Seiten für fünf Clock-ticks (a) - (e) Achtung: -(d) ist falsch, richtig wäre:! Betriebssysteme Harald Kosch Seite 56
NRU (Not Recently Used) Benötigt die R (Referenced) und M (Modified) Bits pro Seite, möglicherweise durch die Hardware gesetzt Die Seiten können folgende Klassen bilden: Class: R = M = Class: R = M = Class: R = M = Class: R = M = (Class kann indirekterweise aus Class entstehen: Clock-IT löscht das R-Bit, das M-Bit aber bleibt gesetzt.) Seiten der unteren Klassen werden ersetzt Simulation der R und M Bits in Software:. Seite wird als invalid markiert. Erster Fault R. Seite wird als read-only markiert Zweiter Fault M Hardware Valid Software Valid Software Reference Hardware Valid Software Valid Software Reference Off On Off Off On On (a) Before Referencing Page (a) After Referencing Page Figure 5: Nachbildung des R-Bits in Software. Betriebssysteme Harald Kosch Seite 57
Second Chance Eine Modifikation von FIFO Einer Seite wird vor der Ersetzung eine zweite Möglichkeit gegeben Wird sie wieder benutzt, bleibt sie geschont Wird wieder ans Ende der FIFO-Liste gereiht Benötigt nur R-Bit als Unterstützung in der Hardware Page loaded first A B 7 C 8 D E 4 F 5 G 8 H Most recently loaded page (a) B 7 C 8 D E 4 F 5 G 8 H A A is treated like a newly loaded page (b) Figure 5: Arbeitsweise von Second Chance. (a) Seiten nach FIFO sortiert. (b) Seitenliste wenn ein Seitenfehler auftritt zum Zeitpunkt und A hat sein R-Bit gesetzt Betriebssysteme Harald Kosch Seite 58
Der Clock-Algorithmus Ist eine verbesserte Implementierung von Second Chance Hält die Seiten in einem Ringpuffer. Damit entfällt die Verschiebung der Seite vom Kopf zum Ende der Liste Wenn auf der Seite auf die der Zeiger gerade zeigt, das R-Bit gesetzt ist, wird sie begnadigt sonst ersetzt L A B J K I C E D When a page fault occurs, the page the hand is pointing to is inspected. The action taken depends on the R bit: R = : Evict the page R = : Clear R and advance hand H G F Figure 54: Der Clock-Algorithmus Betriebssysteme Harald Kosch Seite 59
Thrashing Thrashing tritt auf, wenn das System (zumindest ein Prozeß) mehr Zeit mit Paging als mit der Durchführung seiner Aufgabe verbringt Das Betriebssystem merkt, daß die CPU-Auslastung sinkt Es erhöht den Grad der Multiprogrammierung Swapping wird noch intensiver: Positive Rückkoppelung (eine Art teuflischer Kreis ) Anzahl der Page Faults steigt Multiprogramming sinkt Swapping und Warten steigt Scheduler erhöht Multiprogramming CPU utilization thrashing degree of multiprogramming Figure 55: Thrashing Betriebssysteme Harald Kosch Seite 6
Speicherverwaltung in Linux Seitenallozierung, -deallozierung Abstraktes Modell des virtuellen Speichers: -stufige Page-Tabellen muß auf die jeweilige Hardware abgebildet werden Virtual address Level Level Level Byte in page PFN PFN PFN Page Table Page Table Page Table Physical page Figure 56: Linux Pagetabelle Alle physikalischen Seiten (mem map t, auch page genannt) sind auf einer Liste (mem map) zusammengefaßt Betriebssysteme Harald Kosch Seite 6
Wichtigste Felder im mem map t count: Anzahl der Benutzer der Seite age: Alter Wie gut geeignet für Auslagern map nr: Physikalische Framenummer (PFN ) (Seitengröße ist fix, z.b. 4KB auf Intel, 8KB auf Alpha) Seitenallozierung: Verwendet Buddy Algorithmus free area-vektor:. Element enthält Einzelseiten,. Element Doppelseiten,. Element Blöcke von 4 Seiten etc. Enthält sowohl freie als auch belegte Blöcke list: Kopf der Liste der freien Blöcke map: Zeigt auf ein Bitmap (pro Seitengruppe). Bit N ist gesetzt, wenn der N-te Block frei ist Deallozierung Zusammenhängnde Blöcke werden mit Hilfe des Bitmaps verschmolzen (und im Vektor entsprechend verschoben) Betriebssysteme Harald Kosch Seite 6
6... Here, the elements keep the number of pages a block consists of. 5 56 8 64 6 8 4 free_area Figure 57: Behandlung von freien Blöcken in Linux Betriebssysteme Harald Kosch Seite 6