3. Speicherverwaltung • Überblick 3.1 3.2 3.3 3.4 3.5 Grundlegendes Seitenersetzungsstrategien Speicherverwaltung unter Linux Speicherverwaltung unter Windows Leistungsaspekte des virtuellen Speichers O. Kao Betriebssysteme 3-1 3.1 Grundlegendes • Adressräume Zusammenhängende Menge von Speicheradressen und deren Inhalte Abbildung Virtueller → Physikalischer Speicher zur Laufzeit mit MMU • Dynamische Speicherallokation Prozessteile werden – transparent für den Benutzer – zur Laufzeit und erst bei Bedarf ein- und ausgelagert Beim Zugriff auf einen fehlenden Inhalt wird ein Interrupt (Seitenfehler) ausgelöst, der das Nachladen des Inhalts initiiert Voraussetzung: Relokierbare Prozesse, d.h. Verdrängung und Ausführung an anderer Stelle ohne zusätzlichen Programmieraufwand • Adressierungsarten Seitenadressierung Segmentadressierung Segmentadressierung mit Seitenadressierung O. Kao Betriebssysteme 3-2 Umsetzung der Seitenadressierung Seitenlänge 4K ⇒ 12 Bit für Wortadresse O. Kao Betriebssysteme 3-3 Mehrstufige Seitentabellen • Teil der Seitentabellen wird ausgelagert, da i.d.R zwischen Heap und Stapel ungenutzte Speicherbereiche liegen • Realisierung durch Aufteilung z.B. einer 32 Bit Adresse in 3 Bereiche Second Level 10 10 12 PT1 PT2 Offset Top Level PT 1: 10 Bit, Startadresse der Seitentabelle PT 2: 10 Bit, Startadresse der entsprechenden Seite (je 4 KByte) Offset: 12 Bit, Wortadresse innerhalb der Seite Grau = derzeit • Hier: Trotz über 1 Million möglicher nicht genutzt Adressen, werden nur 4 Seitentabellen tatsächlich gebraucht O. Kao Betriebssysteme 3-4 3.2 Seitenersetzungsstrategien • Wichtig für dynamische Speicherallokation Wann werden Daten in den Speicher geladen (Nachschubstrategie) Wann müssen Prozessdaten aus dem Speicher verdrängt werden (Verdrängungsstrategie) • Nachschubstrategien Auf Verlangen (demand paging): Laden der Seite bei Bedarf Interrupt Seitenfehler (page fault) aktiviert die Allokation Vorgeplant (Pre-paging): Prozessverhalten ist im Voraus bekannt Seite steht zum Referenzierungszeitpunkt zur Verfügung Kenntnis über exaktes Programmverhalten meist nicht verfügbar Kombinierte Ansätze (Meist in Praxis verwendet) Beim Start Pre-paging, z.B. Anfang des Programmcodes, statische Daten, Seiten für Heap und Stapel, … Während Laufzeit: Demand paging O. Kao Betriebssysteme 3-5 Verdrängungsstrategien • Verdrängung der Seite, die Am längsten im Speicher war (First In - First Out, FIFO) Am längsten nicht benutzt wurde (Least Recently Used, LRU) Am wenigsten häufig benutzt wurde (Least Frequently Used, LFU) Innerhalb eines vorgegebenen Zeitraums nicht mehr referenziert wurde (Recently Not Used, RNU) • Probleme bei der Realisierung durch aufwendige Operationen (Stapeloperationen, Zählerinkrementierung, …) ⇒ Nutzung von Annäherungsverfahren • Hardwareunterstützung beim Seitenzugriff Jeder Seite wird ein Referenzbit zugeordnet Die Referenzbits werden bei jedem Zugriff aktualisiert Keine Information über den Zeitpunkt eines Zugriffs • Second-Chance-Algorithmus (Clock-Algorithmus) O. Kao Betriebssysteme 3-6 Working Set • Working-Set (Arbeitsbereich) Menge von Seiten Wi (t,τ), auf die ein Prozess i innerhalb der letzten τ Einheiten ab dem Zeitpunkt t zugegriffen hat rt-τ-1 rt-τ rt-τ+1 rt-3 rt-2 rt-1 rt Working-Set der Länge τ • Exakte Verfahren z.B. mit einem Schieberegister, in dem die letzten k Seiten gespeichert werden, zu aufwendig • Annäherung Verwendung der Ausführungszeit des Prozesses ⇒ Working Set = Seiten, auf die innerhalb der τ Einheiten zugegriffen wurde Wichtig: nur die eigene Ausführungszeit eines Prozesses zählt (virtuelle Zeit, current virtual time) O. Kao Betriebssysteme 3-7 Realisierung des Working-Sets • Jeder Eintrag in der Seitentabelle enthält mindestens Referenzbit (R) Modifikationsbit (M) Ungefähre Zeit des letzten Zugriffs • Basierend auf einer Timerunterbrechung werden die R-Bits in regelmäßigen Abschnitten auf 0 (kein Zugriff) zurückgesetzt • Bei jedem Zugriff wird das R-Bit untersucht und falls gesetzt – Seite im Speicher – wird die Zugriffszeit aktualisiert • Bei Auslagerung wird die Seite mit Referenzbit 0 und ältester Zugriffszeit ausgewählt • Realisierung des Verfahrens umständlich, da bei jedem Seitenfehler die gesamte Seitentabelle durchsucht werden muss O. Kao Betriebssysteme 3-8 Algorithmus Working-Set 2204 Aktuelle virtuelle Zeit . : Zeitpunkt der letzten Verwendung In diesem Zyklus referenzierte Seite In diesem Zyklus nicht referenzierte Seite 2084 1 2003 1 1980 1 1213 0 2014 1 2020 1 2032 1 1620 0 Seitentabelle O. Kao Referenzbit R Scanne alle Seite und untersuche das Referenzbit Falls (R==1) ⇒ setze Zeit des letzten Zugriffs = Aktuelle virtuelle Zeit Falls (R==0 und Alter > τ) ⇒ Entferne die Seite und aktualisiere die restlichen Zeiten in der Tabelle Falls (R==0 und Alter ≤ τ) ⇒ Merke die Seite mit ältester virtueller Zeit Betriebssysteme 3-9 Effizientere Ausführung: WSClock-Algorithmus • WSClock-Algorithmus als Erweiterung des Clock-Algorithmus Ringförmige Liste der Kacheln, jeder Eintrag mit mindestens R-Bit, M-Bit und letzter Zugriffszeit Beim Seitenfehler: Untersuche zuerst die mit dem Zeiger markierte Seite Falls R=1 ⇒ Setze R=0, verschiebe den Zeiger zur nächsten Kachel Falls R=0 ⇒ Auslagerungskandidat Falls Zugriff älter als τ ⇒ untersuche Modifikationsbit Falls M=0 (kein Schreibzugriff) ⇒ Verdränge Seite Falls M=1 ⇒ Inhalt muss auf Festplatte geschrieben werden ⇒Noch kein Austausch, um Prozessblockierung zu vermeiden, lediglich Markieren der Seite als Kandidat Setze Zeiger eine Position fort und untersuche das R-Bit Wenn die gesamte Liste durchlaufen wurde, sind zwei Fälle möglich Mindestens eine Seite wurde zum Auslagern vorgemerkt Keine Seite wurde vorgemerkt O. Kao Betriebssysteme 3-10 WSClock-Algorithmus (2) Aktuelle Zeit: 2204 • Fall 1: Mindestens eine Seite wurde vorgemerkt (Einige) vorgemerkte Seiten werden in der Zwischenzeit auf Festplatte ausgelagert, M-Bit gelöscht ⇒ Seite wird ausgetauscht • Fall 2: Keine vorgemerkte Seite Alle Seiten werden gebraucht ⇒ aktuelle Seite wird ausgelagert und die Kachel für die einzulagernde Seite verwendet Neue Seite einlagern O. Kao Betriebssysteme 3-11 Paging-Daemon • Technik zur Sicherung eines ausreichenden Vorrats an freien Kacheln für schnelle Reaktion auf weitere Speicheranforderungen • Grundidee Trennung von Seitenverdrängung und Seiteneinlagerung Speicherverwaltung hält eine vorab festgelegte Anzahl an Kacheln frei ⇒ Seitenfehler können ohne Verdrängung beseitigt und neue Adressräume direkt angelegt werden • Realisierung Paging-Daemon wird periodisch aktiviert (Üblicher Wert: alle 250 ms) Überprüfung, ob die a-priori vorgegebene Anzahl freier Kachel unterschritten wurde (Üblicher Wert: ca. 25% der Kachel frei) Falls ja ⇒ Auslagerung von Seiten auf die Festplatte gemäß der eingesetzten Verdrängungsstrategie Falls nein ⇒ Blockierung des Paging-Daemons bis zum nächsten Sollzeitpunkt O. Kao Betriebssysteme 3-12 Beispiel: Speicherverwaltung in Solaris 2 • Realisierung eines Paging Daemons • Drei wichtige Parameter Lotsfree: mindestens 1/64 des Speichers frei, Überprüfung alle 0.25 Sek Desfree: Fällt die Anzahl freier Seite unter diesen Schwellwert (Durchschnitt über 30 Sek) ⇒ Start von Swapping, Überprüfung alle 0.1 Sek Minfree: Nur noch minimale Menge freier Seiten vorhanden ⇒ Aufruf der Seitenersetzung bei jeder Speicheranforderung Scanrate Anzahl freier Seiten O. Kao Betriebssysteme 3-13 Solaris 2: Algorithmus • Speicherveraltung mit dem Prozess pageout Variante des Clockalgorithmus (Zweizeigeralgorithmus, two-handed-clock) Erster Zeiger scannt die Seiten und setzt die Referenzbits auf 0 Später läuft der zweite Zeiger nach und gibt alle Seiten mit R immer noch 0 wieder frei • Wichtige Parameter Scanrate: Scangeschwindigkeit (Seiten/Sekunde) Anpassung an aktuellen Systemzustand (slowscan = 100 Seiten/s bis fastscan = Gesamtanzahl von Seiten/2 aber max = 8192) Handspread: Statischer Abstand in Seiten zwischen den Zeigern Tatsächlicher Abstand ergibt sich durch Kombination von scanrate und handspread, z.B. scanrate = 100 und handspread = 1024 ⇒ 10 Sek zwischen den beiden Zeigern Bei höher Belastung Abstände von einigen Tausendstel nicht ungewöhnlich • Erweiterung: Überspringe Seiten von Shared Libraries O. Kao Betriebssysteme 3-14 3.3 Speicherverwaltung unter Linux • Speichermodell Gradlinig, architekturunabhängig ⇒ Hohe Portabilität • Physischer Speicher in Seiten strukturiert 32-bit Architektur meist 4Kb Seiten, 4 GB adressierbar 64-bit Architektur meist 8Kb Seiten, 16 Exabyte adressierbar • Virtueller Adressraum je Prozess (auf 32-bit-Maschinen) 3 GB virtueller Adressraum: Text-, Daten-, BBS-Segment, Stapel 1 GB: Seitentabellen und andere Informationen des Kerns • Fest-verdrahteter Kern ⇒ kein Bestandteil wird jemals ausgelagert • Unterteilung in Kernsegmente und Nutzersegmente Kernsegment-Seitentabellen für alle Prozesse identisch ⇒ Alle Prozesse finden gleiches Kernsegment bei Systemaufrufen vor Clone: Kindthread teilt sich den Speicherbereich mit dem Elternthread ⇒ Verweise auf die Seitentabelle des Vaters Fork: Kopieren der Seitentabellen des Elternprozesses O. Kao Betriebssysteme 3-15 Übersetzung der linearen Adressen Physischer Speicher Lineare Adresse Offset K + + + Seitenverzeichnis Seitentabelle Mittleres Seitenverzeichnis Seitenverzeichnis-Basisadresse O. Kao Betriebssysteme 3-16 Virtueller und physischer Speicher • Benötigte Teile von Shared Libraries werden zur Laufzeit eingeblendet Prozess A Prozess B Physischer Speicher Kellerzeiger Kellerzeiger Eingeblendete Datei BSS Daten Daten Text BSS Daten Betriebssystem O. Kao Betriebssysteme Text 3-17 Virtuelle Speicherbereiche • Virtuelle Speicherbereiche werden häufig von Hardware genutzt, die Speicher in den Adressraum einblenden (z.B. Speicher der Grafikkarte oder Dateien) Vorteil: Schnellere Kommunikation als über Systemaufrufe • Programmcode von Programmen nur einmal im Speicher, kann aber von verschiedenen Prozessen gleichzeitig genutzt werden Attribute zeigen an, ob auf eine Seite privat oder geteilt zugegriffen wird Übereinstimmender Datensegmente können lesend gleichzeitig von mehreren Prozessen genutzt werden ⇒Speicherplatzersparnis, da das Programm / die Bibliothek nur einmal im Speichergehalten werden muss Bei Schreibzugriff eines Prozesses ⇒Copy-On-Write, d.h. es wird eine private Kopie der Seite erzeugt, der von anderen Prozessen nicht lesbar ist O. Kao Betriebssysteme 3-18 Speicherseitenreservierung • Unterscheidung in 3 Speicherzonen ZONE_DMA: Für den Datentransfer mittels DMA geeignete Seiten, für Gerätetreiber, 0-16 MB ZONE_NORMAL: Möglichst alle Benutzerprozesse, über 16 MB ZONE_HIGHMEM: Seiten, die nicht in das Kernsegment eingeblendet werden können (spezieller Fall, bei x86 Prozessoren mit mehr als 896 MB Speicher) • Zonen sind Prioritäten zugeordnet, z.B. werden DMA Seiten erst vergeben, wenn kein „normaler Speicher“ mehr frei ist • Belegung nach dem Buddy System mit Variationen Buddy-Blöcke werden in Scheiben aufgeteilt, die separat verwaltet werden • Freie Seiten werden mittels doppelt verketteter Ringliste (free_area) verwaltet O. Kao Betriebssysteme 3-19 Auslagerungsstrategie • Speicherbereinigung (kswapd) wird beim Unterschreiten eines Prozentsatzes freier Seiten aktiviert Kernelthread kswapd sucht nach inaktiven Speicherseiten, erstellt Liste und ruft dann Bdflush auf Bdflush: Schreibt Seiten auf Platte und markiert sie als sauber und inaktiv im Speicher Bdflush wird auch aktiviert, wenn zu viele der Seiten modifiziert wurden ⇒ Speichern auf Festplatte • Daemon kswapd wird jede Sekunde oder bei Bedarf aufgerufen 1. Freigabe lange nicht benötigter Seiten, zunächst von Prozessen mit langer Verweildauer im Speicher ⇒ Anwendung eines modifizierten Clock-Algorithmus 2. Freigabe selten benötigter gemeinsamer Seiten 3. Freigabe anderer Seiten Minimale Verweilzeit im Speicher (Vermeidung von Trashing) Falls sauber ⇒ sofort freigeben, sonst 2. Chance-Algorithmus O. Kao Betriebssysteme 3-20 Auslagerungsbereiche • Zwei Arten von Auslagerungsbereichen Ganzes Blockgerät/Swapgerät (z.B. Partition): Seite ist in aufeinander folgenden Blöcken gespeichert ⇒ Effizientes Einlesen beim Wiedereinlagern Auslagerungsdatei: Seiten können auf unterschiedlichen Blöcken liegen (je nach Fragmentierung des Dateisystems) ⇒ Verwaltungsund E/A- Aufwand • Parallele Verwendung mehrerer Swapgeräte/-dateien inklusive Priorisierung • Speicherseiten des Kerns werden nicht ausgelagert Routinen, die ausgelagerte Seiten wieder einlagern, müssen immer im Speicher sein O. Kao Betriebssysteme 3-21 3.4 Speicherverwaltung unter Windows • Windows NT/2000/XP Prozess A 32 Bit lange Adresse ⇒ 4 GB virtueller Adressraum je Prozess 4 GB keine Seitenersetzung • Aufteilung des Speichers Seitenersetzung Untere 2 GB für Prozesse Obere 2 GB für Kern Ausnahme: WindowsVersionen für Datenbanken erlauben 3GB für Prozesse Untere/obere • Seitenadressierung, Segmentadressierung wird nicht unterstützt O. Kao Kernmodus Seitentabelle von A Keller, Daten usw. 2 GB 64 KB ungültig Betriebssysteme HAL + BS Systemdaten Code und Daten von Prozess A Benutzermodus 3-22 Seitenadressierung • Maximale Seitengröße 64 KB, wobei jede Zweierpotenz erlaubt ist • Voreingestellte Seitengrößen Pentium 4 KB Itanium 8 oder 16 KB • Bei Zuordnung eines Bereiches des virtuellen Adressraums wird die Datenstruktur VAD (Virtual Address Descriptor) angelegt VAD speichert abgebildete Adressbereiche, zuständige Auslagerungsdatei auf Hintergrundspeicher, Offset und Schutzcode Erste Berührung der Seiten führt zu Erzeugung von Seitentabellenverzeichnis ⇒ Eintrag des Zeigers in VAD • Adressraum wird vollständig durch Liste seiner VADs beschrieben • Kein Prepaging vorhanden Beim Prozessstart sind keine Seiten im Speicher Dynamische Einlagerung bei Seitenfehler O. Kao Betriebssysteme 3-23 Eigenschaften der Seiten • Zustände virtueller Speicherseiten Frei (nicht im Gebrauch, Verweis = Seitenfehler) Belegt (Code/Daten eingelagert) Reserviert (Steht bis zur Freigabe nicht zur Verfügung) • Seitentabelleneintrag für eingelagerte Seite bei Pentium • Bedeutung der Bits bei eingelagerten Seiten G: Seite global für alle Prozesse D: Dirty Bit C: Caching Ein/Ausschalten U: Seite sichtbar im Benutzermodus V: Gültiger Eintrag O. Kao L: Große (4MB) Seite A: Accessed (Referenzbit) Wt: Write through (kein Caching) W: Beschreibbare Seite Betriebssysteme 3-24 Seitenfehler • Arten von Seitenfehlern Referenzierte Seite ist nicht belegt Schutzverletzung ist aufgetreten } Fatale Fehler (keine Prozessrettung) Auf eine geteilt genutzte Seite wurde geschrieben Stapel muss wachsen Referenzierte Seite ist } Copy-On-Write } Allokation einer neuen Kachel + Einlagerung (nur zeroed pages) Normaler belegt, aber nicht eingelagert Seitenfehler } • Behandlung von Seitenfehlern Sprung in Kernmodus erforderlich Kern erstellt maschinenunabhängigen Descriptor und leitet ihn an den Speichermanager der Executive weiter zur Gültigkeitsüberprüfung Falls fehlende Seite im belegten/reservierten Bereich Suche in Liste der VADs nach Adresse Finden/Erzeugen der Seitentabelle und Suche nach relevanten Eintrag O. Kao Betriebssysteme 3-25 Seitenersetzungsalgorithmus • Ziel: Gewisser Prozentsatz aller Seiten wird freigehalten (Freibereichsliste) ⇒ Keine Auslagerung bei Seitenfehlern erforderlich • Working-Set Verfahren Eingelagerte Seiten eines Prozesses ⇒ kein Prozess nimmt einem anderen Prozess Speicher weg Zu Beginn ist das Minimum des Working-Sets auf einen Wert zwischen 20 und 50 und das Maximum zwischen 45 und 345 gesetzt Jeder Prozess startet mit demselben Minimum und Maximum Entscheidung bei Seitenfehler Größe des WS<MIN ⇒ Seite wird hinzugefügt Größe des WS>MAX ⇒ Seite wird aus WS entfernt (aber nicht aus dem Speicher) • Parameter werden der aktuellen Systemsituation angepasst, z.B. Erhöhung des WS-Maximalwerts für einen aktiven Prozess O. Kao Betriebssysteme 3-26 Speicherfreigabe und Seitenauslagerung • Balance-Set-Manager: Sind genügend freie Seiten vorhanden? Falls nicht: Start des Working-Set-Managers zur Seitenfreigabe Prüfreihenfolge anhand von Leerlaufzeiten und Größe der Prozess (Untersuche große, über längere Zeit leer laufende Prozesse) Prozesse mit Working Set < Minimum oder mit vielen Seitenfehlern werden ignoriert Falls nicht genügend Seiten freigegeben ⇒ Anpassung der Schwellwerte für groß/lange Zeit leer ⇒ aggressiveres Vorgehen • Seitenauslagerung Forderung: Fester Platz für Seiten auf Platte bei Auslagerung Problem: Auslagerungsdatei mit Größe der virtuellen Adressräume aller Prozesse zu groß Lösung: Zuweisung von Seiten auf Platte erst bei Auslagerung ⇒ komplexes Zuordnungssystem mit bis zu 16 Auslagerungsdateien verteilt auf bis zu 16 Platten O. Kao Betriebssysteme 3-27 Physische Speicherverwaltung • Jede Seite im Speicher ist in einem oder mehreren Working-Sets oder in genau einer von vier Listen Modified list Veränderte Seiten, kürzlich aus Working-Set entfernt Befinden sich noch im Speicher und gehören noch zum Prozess Standby list Unveränderte Seiten, kürzlich aus Working-Set entfernt Befinden sich noch im Speicher und gehören noch zum Prozess Im Unterschied zu Seiten der Modified List existieren noch Originale auf der Platte ⇒ können jederzeit entfernt werden Free list: unveränderte Seiten, die nicht länger zum Prozess gehören Zeroed pages list: wie free list, Seiten jedoch mit Nullen aufgefüllt • Ausnahme: fünfte Liste mit allem Seiten, die physischen RAM Defekt aufweisen O. Kao Betriebssysteme 3-28 Physische Speicherverwaltung (Grafische Darstellung) O. Kao Betriebssysteme 3-29 Physische Speicherverwaltung: Hintergrundprozesse • Swapper-Thread läuft alle 4 Sekunden und sucht alle Prozesse, deren Threads für eine bestimmte Zeitspanne im Leerlauf waren Prozess gefunden ⇒ Auflösung des Stapels, Prozessseiten werden auf Standby oder Modified List geschoben • Mapped-Page-Writer/Modified-Page-Writer (Hintergrundthreads) Periodische Prozesse, die nachsehen, ob genügend freie Seiten vorhanden sind Keine freien Seiten ⇒ Seiten von der Spitze der Modified list holen, zurück auf die Festplatte schreiben, verschieben in Standby list • Lagert ein Prozess eine Seite aus ⇒ Seite wird in Free list verschoben, es sei denn, diese wird mit anderen Prozessen geteilt • Stapelwachstum ⇒ eine Seite gefüllt mit Nullen zwingend notwendig (Sicherheitsgründe) O. Kao Betriebssysteme 3-30 3.5 Leistungsaspekte des virtuellen Speichers • WSClock bietet den besten Kompromiss zwischen effizienter Implementierung und guter Leistung • Leistung des virtuellen Speichers hängt von Lokalität ab Gute Lokalität: Auf wenige Seiten wird mit hoher Wahrscheinlichkeit und auf viele Seiten mit geringer Wahrscheinlichkeit zugegriffen Seitenzugriffswahrscheinlichkeit 0.8 Häufig benötigte Seiten sollen im Speicher sein! α=0.1 0.6 α drückt die Streuung aus 0.4 α=0.2 0.2 α=0.5 α=1 0.0 Seiten geordnet nach Zugriffswahrscheinlichkeit O. Kao Betriebssysteme 3-31 Modellierung des Seitentausches • Kenngrößen S: Anzahl verfügbarer Kachel S0: Adressraumgröße 0.4 • Seien die S am häufigsten benötigten Seiten im Speicher 0.3 0.2 Trefferwahrscheinlichkeit S p hit (S ) = ∫ p (z )dz p = Zugriffswahrscheinlichkeit Treffer 0.1 Seitenfehler 0 Seitenfehlerwahrscheinlichkeit 0.0 p miss (S ) = 1 − p hit (S ) Im Speicher auf Platte S Speicherangebot S0 Seiten geordnet nach Zugriffswahrscheinlichkeit σ = S /S0 Normierte Seitenfehlerwahrscheinlichkeit p 'miss (σ ) = p miss (S ) O. Kao Betriebssysteme 3-32 Modellierung des Seitentausches (2) • Abhängigkeit der Seitenfehlerwahrscheinlichkeit vom Speicherangebot Seitenfehlerwahrscheinlichkeit 1.0 0.8 0.6 α=0.5 0.4 α=1 α=0.3 0.2 α=0.2 α=0.1 Speicherangebot σ 0.0 0.0 0.4 0.2 O. Kao 0.6 0.8 1.0 Betriebssysteme 3-33 Modellierung des Seitentausches beim Mehrprogrammbetrieb • Kenngrößen Κ Anzahl Kacheln n Anzahl der Programme im ts Zeit zwischen zwei Seitenfehlern Hauptspeicher (Multiprogramming Level, MPL) S0 Größe des Adressraums in Seiten ts Zeit zwischen zwei Seitenfehlern tT Seitentransferzeit S Speicherangebot in Seiten σ =S/S0 Normiertes Speicherangebot Lifetime-Function Speicherangebot • Bei n identischen Programmen gilt S(n) = Κ/n bzw. σ(n) = Κ/(nS0) • Partielle Modellierung der Zeit zwischen zwei Fehlern (Annäherung durch 2 Parabel) Κ 2 ts sinkt mit wachsendem n t s = aσ = a nS 0 O. Kao Betriebssysteme 3-34 Verzahnung von Rechen- und Seitentauschphasen 1. Fall: ts>tT ts ts Zeit zwischen zwei tT ts ts tT ts ts tT ts ts tT ts ts ts tT tT tT ts ts ts tT tT tT ts 2. Fall: ts ≤ tT Seitenfehlern tT Seitentransferzeit tT tT tT ts ts ts tT ts tT CPU leer tT tT … CPU phasenweise leer, da alle Prozesse auf ihre Seiten warten O. Kao Betriebssysteme 3-35 Thrashing-Effekt • Als Thrashing-Effekt wird jener Systemzustand bezeichnet, bei dem das System nur noch mit Seitenaustausch beschäftigt ist und kaum noch zu produktiver Arbeit kommt • Spezielle Ausprägung eines Überlastphänomens, das in vielen Bereichen auftritt Rechnernetze: Netzwerkkollaps durch zu viele Pakete Datenbanken: Datenbankkollaps durch zu viele Transaktionen Straßenverkehr: Stau durch zu viele Fahrzeuge Parallelverarbeitung: Schlechte Prozessorauslastung durch die simultane Bearbeitung von zu vielen Prozessen • Grund für diese Überlastphänomene Der Koordinationsaufwand wächst überproportional an O. Kao Betriebssysteme 3-36 Thrashing-Entstehung und Thrashing-Kurve CPU-Auslatung Ziel: Gute CPU-Auslastung Thrashing-Bereich Viele Programme gleichzeitig bearbeiten Hoher Multiprogramminggrad n Geringer Speicherplatz s pro Prozess Kurze Zeit zwischen zwei Seitenfehlern Stau bei Datenträgern nmax Multiprogramminggrad n Fast alle Prozesse blockiert Ergebnis: Schlechte CPU-Auslastung O. Kao Forderung: Überlastkontrolle soll verhindern, dass das System in Überlastbereich gelangt Betriebssysteme 3-37 Überlastkontrolle • Zur Verhinderung des Thrashing muss der Multiprogramminggrad begrenzt werden Ist nmax erreicht, so werden Unterschiedliche Betriebssituationen CPU-Auslastung keine neuen Prozesse zugelassen Programmverhalten ändert sich über die Zeit Individuelles Programmverhalten Zusammensetzung der Programmmenge nmax Multiprogramminggrad n • Wie lässt sich ein optimales nmax bestimmen? Keine Magic-Number vorhanden ⇒ dynamische Anpassung an die aktuelle Betriebssituation Thrashing-Verhinderung ist eine Regelungsaufgabe O. Kao Betriebssysteme 3-38 Strategien zur Verhinderung von Thrashing • Strategien zur Thrashing-Verhinderung werden aufgeteilt in Indirekte oder lokale Strategien Direkte oder globale Strategien • Indirekte Strategien Für jeden Prozess i wird individuell eine sinnvolle Kachelanzahl si festgelegt Maximaler Multiprogramminggrad ergibt sich indirekt durch n max n = max n ∑ s i ≤ Κ i =1 • Direkte Strategie Anhand von Messungen der globalen Seitentauschaktivität wird ein optimaler Wert für nmax berechnet O. Kao Betriebssysteme 3-39 Lokale Regelung der Seitentauschaktivität • Anpassung des Working-Set-Verfahrens Es werden nur so viele Prozesse zugelassen, dass diese ihre Working-Sets im Speicher ablegen können • Schätzung der notwendigen Kachel Welches Zeitfenster τ soll betrachtet werden? Größe des Working-Sets bei gegebenem τ: wi(t,τ) = |Wi(t,τ)| ⇒ wi(t,τ) Kacheln werden zum vernünftigen Arbeiten benötigt • Schätzung von wi(t,τ) durch Referenzinformationen pro Prozess • Laden eines neuen Prozesses x nur dann, wenn n wx ≤ Κ − ∑ wi (t ,τ ) i =1 O. Kao Betriebssysteme 3-40 Page-Fault-Frequency-Modell • Seitenfehlerrate = Anzahl Seitenfehler / Zeiteinheit • Für jeden Prozess wird die Seitenfehlerrate ρ gemessen Einführung von zwei Schwellwerten ρ1 (obere Intervallgrenze) und ρ2 (untere Intervallgrenze) Einstellung der Kachelanzahl S in Abhängigkeit von Seitenfehlerrate durch Verringere Anzahl Kacheln, falls ρ < ρ1, d.h. S =S -1 Erhöhe Anzahl Kacheln, falls ρ > ρ2, d.h. S = S + 1 Seitenfehlerrate ρ S erhöhen ρ2 ρ1 S verringern O. Kao Anzahl Kacheln S Betriebssysteme 3-41 Globale Regelung der Seitentauschaktivität • Kriterium der Zwischenseitenfehlerzeit (L=S-Kriterium) Prozessanzahl so bestimmen, dass die durchschnittliche Zeit zwischen Seitenfehlern (ts hier L) so groß ist wie die Seitentransferzeit (tT hier S) • 50%-Regel Zu viele Prozesse am Seitentausch blockiert ⇒ mittlere Warteschlangenlänge nst an Festplatte größer 1 (nst =1 entspricht 50% Gerätauslastung) ⇒ Neue Prozesse nur dann zulassen, wenn die Gerätauslastung über ein längeres Intervall unter 50% liegt Auslastung 1 Festplatte (Seitentausch) 0.5 CPU nopt n50% O. Kao Betriebssysteme 3-42