Betriebssysteme - Speicherverwaltung
Transcription
Betriebssysteme - Speicherverwaltung
Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Alois Schütte 18. Mai 2016 1 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Inhaltsverzeichnis Der Hauptspeicher ist neben dem Prozessor das wichtigste Betriebsmittel eines Rechners. Dieser Teil beschreibt, wie die Verwaltung des Speichers durch das Betriebssystem organisiert wird. 1 Überblick 2 Ohne Prozessauslagerung 3 Swapping 4 Virtuelle Speicher 2 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Überblick Überblick Die Speicherverwaltung hat folgende Aufgaben: • Verwaltung des freien und belegten Speichers • Zuweisung von Speicherbereichen zu Prozessen • Wiederverfügbarmachen des von Prozessen freigegebenem Speicher • Auslagern von Hauptspeicherbelegungen auf Festplatte, wenn nicht genügend Hauptspeicher für alle Prozesse verfügbar ist Prinzipiell werden Speicherverwalter in zwei Kategorien unterteilt: • Prozesse werden während der Ausführung zwischen Haupt- und Sekundärspeicher verlagert • Prozesse behalten den einmal zugewiesenen Hauptspeicher 3 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Überblick Überblick Die Speicherverwaltung hat folgende Aufgaben: • Verwaltung des freien und belegten Speichers • Zuweisung von Speicherbereichen zu Prozessen • Wiederverfügbarmachen des von Prozessen freigegebenem Speicher • Auslagern von Hauptspeicherbelegungen auf Festplatte, wenn nicht genügend Hauptspeicher für alle Prozesse verfügbar ist Prinzipiell werden Speicherverwalter in zwei Kategorien unterteilt: • Prozesse werden während der Ausführung zwischen Haupt- und Sekundärspeicher verlagert • Prozesse behalten den einmal zugewiesenen Hauptspeicher 3 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Ohne Prozessauslagerung 1 Überblick 2 Ohne Prozessauslagerung Einprogrammbetrieb Mehrprogrammbetrieb 3 Swapping 4 Virtuelle Speicher 4 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Einprogrammbetrieb Einprogrammbetrieb Das einfachste Verfahren ist es, stets nur einen Prozess im Speicher zu halten. Konsequenz: Jedes Programm muss alle Gerätetreiber eingebunden haben. Besser: Aufteilung des Speichers in verschiedene Teile, z.B. wie im PC organisiert: Es läuft jeweils nur ein Prozess, der vom Prompt aus gestartet wird und den ganzen Speicher belegt. Ist der Prozess terminiert, wird der Speicher frei gegeben und das nächste Programm kann gestartet werden. 5 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Einprogrammbetrieb Einprogrammbetrieb Das einfachste Verfahren ist es, stets nur einen Prozess im Speicher zu halten. Konsequenz: Jedes Programm muss alle Gerätetreiber eingebunden haben. Besser: Aufteilung des Speichers in verschiedene Teile, z.B. wie im PC organisiert: Es läuft jeweils nur ein Prozess, der vom Prompt aus gestartet wird und den ganzen Speicher belegt. Ist der Prozess terminiert, wird der Speicher frei gegeben und das nächste Programm kann gestartet werden. 5 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Mehrprogrammbetrieb Heute ist Einprogrammbetrieb auch auf kleinen Rechnern die Ausnahme. Durch Mehrprogrammbetrieb wird erreicht: • Anwendungsentwicklung ist einfacher, wenn eine Anwendung in mehrere logische Prozesse unterteilt werden kann (Beispiel: Browser mit GUI Interaktion und Laden der Seiten im Hintergrund) • Bessere Performance, wenn interaktive Dienste für mehrere Benutzer zur Verfügung stehen. Annahme Laden eines Prozesses und Ausführen des Dienstes = 100 msec Auslagern auf Platte = 100 msec Folgerung 50% der Zeit für Speicherverwaltung erforderlich, wenn Prozess ausgelagert werden würde. Wird der Prozess nicht ausgelagert, entfällt Verwaltungsoverhead. 6 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb • Viele Programme lesen Datenblöcke aus einer Datei und führen dann damit Berechnungen aus. Annahme Lesen eines Blocks der Datei = 40 msec Berechnung = 10 msec Folgerung Bei Einprogrammbetrieb wartet CPU 80% (40/(40+10)) der Zeit. Insgesamt folgt: Mehrprogrammbetrieb verbessert die Ausnutzung der CPU! 7 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Grad des Mehrprogrammbetriebs Wie viele Prozesse müssen auf einmal im Speicher sein, damit die CPU optimal ausgenutzt wird? 1 Einfache Überlegung: Annahme ein Prozess ist 20% der Zeit, in der er im Speicher ist, rechnend Folgerung die CPU ist mit 5 gleichzeitigen Prozessen voll ausgelastet. Diese Überlegung ist unrealistisch, da vorausgesetzt ist, das alle Prozesse nicht gleichzeitig auf E/A warten. 8 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Grad des Mehrprogrammbetriebs Wie viele Prozesse müssen auf einmal im Speicher sein, damit die CPU optimal ausgenutzt wird? 1 Einfache Überlegung: Annahme ein Prozess ist 20% der Zeit, in der er im Speicher ist, rechnend Folgerung die CPU ist mit 5 gleichzeitigen Prozessen voll ausgelastet. Diese Überlegung ist unrealistisch, da vorausgesetzt ist, das alle Prozesse nicht gleichzeitig auf E/A warten. 2 Wahrscheinlichkeitsbetrachtung: Annahme ein Prozess ist den Bruchteil p seiner Zeit wartend ” auf E/A“ Folgerung bei n Prozessen im Speicher ist die Wahrscheinlichkeit, das die CPU untätig ist p ∗ p ∗ ... ∗ p = p n . Damit ist die CPU Ausnutzung = 1 − p n 8 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Grad des Mehrprogrammbetriebs Wie viele Prozesse müssen auf einmal im Speicher sein, damit die CPU optimal ausgenutzt wird? 1 Einfache Überlegung: Annahme ein Prozess ist 20% der Zeit, in der er im Speicher ist, rechnend Folgerung die CPU ist mit 5 gleichzeitigen Prozessen voll ausgelastet. Diese Überlegung ist unrealistisch, da vorausgesetzt ist, das alle Prozesse nicht gleichzeitig auf E/A warten. 2 Wahrscheinlichkeitsbetrachtung: Annahme ein Prozess ist den Bruchteil p seiner Zeit wartend ” auf E/A“ Folgerung bei n Prozessen im Speicher ist die Wahrscheinlichkeit, das die CPU untätig ist p ∗ p ∗ ... ∗ p = p n . Damit ist die CPU Ausnutzung = 1 − p n 8 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Der Grad des Mehrprogrammbetriebs zeigt die CPU Ausnutzung als Funktion von n: Man erkennt, dass z.B. bei Prozessen, die zu 80% auf E/A warten, mindestens 8 Prozesse im Speicher sein müssen, um eine Auslastung von über 80% zu erlangen. 9 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Aufgabe Ein Rechner habe 1M Speicher, ein Benutzerprozess belege 200K, das BS ebenfalls 200K. Wie gross ist die CPU Ausnutzung bei 80% E/A Wartezeit und wie erhöht sie sich, wenn der Speicher 1 zuerst um 1M und 2 dann danach um 2M erweitert wird (BS Overhead soll vernachlässigt werden)? 10 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Mehrprogrammbetrieb mit fixierten Partitionen Mehrprogrammbetrieb verbessert die Ausnutzung der CPU. Wie ist der Speicher zu organisieren, so dass mehr als ein Prozess in ihm gehalten werden kann? 11 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Einfache Überlegung Der Speicher wird in n Bereiche mit fester aber unterschiedlicher Grösse eingeteilt. Für jeden dieser Bereiche existiert eine Warteschlange für Prozesse. Nachteil: • Wenn ein Prozess z.B. 250k gross ist, wird er der Partition 3 zugeteilt. Damit sind 50 k Speicher ungenutzt. • Ist eine grosse Partition ungenutzt (z.B. Partition 2), eine kleine hat viele Einträge (Partition 1, Warteschlange voll), dann kann ein Prozess (Größe 80k) lange nicht zugeteilt werden 12 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Einfache Überlegung Der Speicher wird in n Bereiche mit fester aber unterschiedlicher Grösse eingeteilt. Für jeden dieser Bereiche existiert eine Warteschlange für Prozesse. Nachteil: • Wenn ein Prozess z.B. 250k gross ist, wird er der Partition 3 zugeteilt. Damit sind 50 k Speicher ungenutzt. • Ist eine grosse Partition ungenutzt (z.B. Partition 2), eine kleine hat viele Einträge (Partition 1, Warteschlange voll), dann kann ein Prozess (Größe 80k) lange nicht zugeteilt werden 12 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Eine Warteschlange ohne Zusatzregel Der Speicher wird in n Bereiche mit fester aber unterschiedlicher Grösse eingeteilt. Es existiert nur eine Warteschlange. Nachteil Ein kleiner“ Prozess belegt u.U. eine grosse Partition. ” Lösung Wird eine Partition frei, wird in der Eingabeschlange der Prozess gesucht, der am besten passt. Es kann dann aber vorkommen, dass ein Prozess nie Speicher bekommt ! Wann passiert das ? 13 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Eine Warteschlange ohne Zusatzregel Der Speicher wird in n Bereiche mit fester aber unterschiedlicher Grösse eingeteilt. Es existiert nur eine Warteschlange. Nachteil Ein kleiner“ Prozess belegt u.U. eine grosse Partition. ” Lösung Wird eine Partition frei, wird in der Eingabeschlange der Prozess gesucht, der am besten passt. Es kann dann aber vorkommen, dass ein Prozess nie Speicher bekommt ! Wann passiert das ? 13 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Eine Warteschlange mit Zusatzregel Der Speicher wird in n Bereiche mit fester aber unterschiedlicher Grösse eingeteilt. Es existiert nur eine Warteschlange. → Beispiel an Tafel Warteschlange 80k 290k 300k 290k, k=2 und Prozesse in Partition 3 werden fertig 14 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Relokation Wird ein Programm aus Hauptprogramm, Benutzerprozeduren und Bibliotheksprozeduren zu einem Adressraum zusammen gebunden, muss der Linker wissen, an welcher Stelle (Startadresse) im Speicher das Programm beginnt. Wird das Programm in die Partition 1 geladen, wird der JUMP Befehl im Betriebssystem landen!!!. Benötigt wird ein Mechanismus, so dass der Linker Code relativ zur Startadresse zur ausgewählten Partition erzeugt. Diese Art der Codeerzeugung heißt Relokation. 15 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Relokation Wird ein Programm aus Hauptprogramm, Benutzerprozeduren und Bibliotheksprozeduren zu einem Adressraum zusammen gebunden, muss der Linker wissen, an welcher Stelle (Startadresse) im Speicher das Programm beginnt. Wird das Programm in die Partition 1 geladen, wird der JUMP Befehl im Betriebssystem landen!!!. Benötigt wird ein Mechanismus, so dass der Linker Code relativ zur Startadresse zur ausgewählten Partition erzeugt. Diese Art der Codeerzeugung heißt Relokation. 15 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Relokation - Bitkarte Der Linker erzeugt Code und fügt eine Liste ( Bitkarte“) in die ” Binärdatei ein, die angibt, welche Stellen im Programm relative Adressen sind, da Konstanten nicht ersetzt werden dürfen. Der Lader des Programms verwendet diese Liste in der Binärdatei und addiert an diese Stellen die Startadresse der ausgewählten Partition. 16 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Aufgabe • Wie könnte ein HAL1957 Programm um die Bitkarte erweitert werden (Format), so dass ein HAL1957 Loader das Programm in eine beliebige Partition laden und ausführen kann? • Wie wäre damit der Loader zu programmieren? 17 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Zugriffsschutz Durch die Relokation ist sichergestellt, dass ein Programm einer beliebigen Partition zugewiesen werden kann. Trotzdem kann es passieren, dass ein Programm, das in Partition i läuft, eine Speicheradresse anspricht, die in der Partition j liegt (i != j). Im Normalfall ist dies ein Fehler (C-Prg. mit a[-100];) aber in speziellen Fällen (z.B. mehrere Threads teilen sich den selben Speicher) kann dies erwünscht sein. Durch spezielle Register in Rechnern kann der Zugriff und auch die Relokation vereinfacht werden: • Ein Basisregister wird beim Prozesswechsel mit der Startadresse der ausgewählten Partition geladen. Alle Adressen sind im Programm dann relativ zu diesem Basisregister. • Ein Grenzregister beinhaltet die maximale Adresse, ausgehend vom Basisregister. Das Laufzeitsystem kann vor jedem Zugriff auf eine Adresse prüfen, ob eine Überschreitung statt- finden würde. Beim IBM PC ist dies teilweise implementiert (Basisregister heißt dort Segmentregister, ein Grenzregister gibt es nicht). 18 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Zugriffsschutz Durch die Relokation ist sichergestellt, dass ein Programm einer beliebigen Partition zugewiesen werden kann. Trotzdem kann es passieren, dass ein Programm, das in Partition i läuft, eine Speicheradresse anspricht, die in der Partition j liegt (i != j). Im Normalfall ist dies ein Fehler (C-Prg. mit a[-100];) aber in speziellen Fällen (z.B. mehrere Threads teilen sich den selben Speicher) kann dies erwünscht sein. Durch spezielle Register in Rechnern kann der Zugriff und auch die Relokation vereinfacht werden: • Ein Basisregister wird beim Prozesswechsel mit der Startadresse der ausgewählten Partition geladen. Alle Adressen sind im Programm dann relativ zu diesem Basisregister. • Ein Grenzregister beinhaltet die maximale Adresse, ausgehend vom Basisregister. Das Laufzeitsystem kann vor jedem Zugriff auf eine Adresse prüfen, ob eine Überschreitung statt- finden würde. Beim IBM PC ist dies teilweise implementiert (Basisregister heißt dort Segmentregister, ein Grenzregister gibt es nicht). 18 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Ohne Prozessauslagerung Mehrprogrammbetrieb Aufgabe HAL1958 hat diese Eigenschaft integriert: • Basisregister ist Register 1 • Grenzregister ist Register 2 Wie wäre damit der Loader zu programmieren? 19 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Swapping 1 Überblick 2 Ohne Prozessauslagerung 3 Swapping Swapping mit Partitionen fester Größe Swapping mit variablen Partitionen Speicherverwaltung mit Bitmaps Speicherverwaltung mit verketteten Listen Analyse der Swapping-Systeme 4 Virtuelle Speicher 20 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Swapping Wenn mehrere Benutzer mit einem System arbeiten, ist es wahrscheinlich, dass nicht alle Prozesse gleichzeitig im Hauptspeicher gehalten werden können. Dann ist es erforderlich, einige Prozesse vom Hauptspeicher in den Sekundärspeicher (Festplatte) zu verlagern und umgekehrt, Prozesse von Platte in den Hauptspeicher zu laden. Dieses Ein-/Auslagern wird Swapping genannt. 21 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Swapping mit Partitionen fester Größe Swapping mit Partitionen fester Größe Verfahren: Immer wenn ein Prozess blockiert und keine freie Partition mehr verfügbar ist, wird Swapping durchgeführt. Nachteil: • Durch die feste Grösse der Partitionen geht Speicher verloren. Das ist aber gerade das Hauptproblem. • Es muss ein Prozess auf der Platte gefunden werden, der in die frei gewordene Partition passt → Suchaufwand. Wegen der Nachteile wird dieses Verfahren i.A. nicht eingesetzt. 22 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Swapping mit variablen Partitionen Swapping mit variablen Partitionen Bei variablen Partitionen ändert sich die Speicherbelegung im Verlaufe der Zeit: Vorteil: • kein ungenutzter Platz in belegten Partitionen • Prozesse dynamisch in jedem freien Speicherbereich einlagerbar (vgl. Prozess 3) Nachteil: • mehr Verwaltungsaufwand (Allokation, Deallokation) 23 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Swapping mit variablen Partitionen Wenn der gesamte Speicher stark fragmentiert ist (viele kleine Bereiche, in die kein Prozess mehr passt), können alle Löcher zu einem freien Bereich zusammengefasst werden (Speicherverdichtung). Dies wird in wenigen Betriebssystemen getan (Non Stop BS). 24 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Swapping mit variablen Partitionen Festzulegen ist, wieviel Speicher bei der Erzeugung oder Einlagerung eines Prozesses allokiert werden soll. Werden Programme z.B. mit C++ geschrieben, kann Speicher dynamisch erzeugt werden (new ...). Dann kann es passieren, dass ein Speicherbereich wachsen muss und kein Platz ist: 25 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Swapping mit variablen Partitionen Um diese Auslagerungen bzw. Verschiebeoperationen möglichst selten durchführen zu müssen, wird i.A. mehr Platz als erforderlich bei der Prozesserzeugung oder Einlagerung allokiert. Die Verwaltung des freien Speichers erfolgt mit unterschiedlichen Techniken: 1 Bitmaps, 2 verkettete Listen 26 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Swapping mit variablen Partitionen Um diese Auslagerungen bzw. Verschiebeoperationen möglichst selten durchführen zu müssen, wird i.A. mehr Platz als erforderlich bei der Prozesserzeugung oder Einlagerung allokiert. Die Verwaltung des freien Speichers erfolgt mit unterschiedlichen Techniken: 1 Bitmaps, 2 verkettete Listen 26 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Speicherverwaltung mit Bitmaps Speicherverwaltung mit Bitmaps Hierbei wird der gesamte Speicher in Allokationseinheiten fester Grösse eingeteilt. Eine Bitmap speichert, ob die Allokationseinheit belegt (=1) oder frei (=0) ist. Die Wahl der Grösse der Allokationseinheit ist der entscheidende Faktor: • kleine Allokationseinheit → grosse Bitmap aber wenig Speicherverlust, wenn Prozess kein Vielfaches der Allokationseinheit ist • grosse Allokationseinheit → kleine Bitmap aber viel Speicherverlust, wenn Prozess kein Vielfaches der Allokationseinheit ist 27 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Speicherverwaltung mit Bitmaps Speicherverwaltung mit Bitmaps Hierbei wird der gesamte Speicher in Allokationseinheiten fester Grösse eingeteilt. Eine Bitmap speichert, ob die Allokationseinheit belegt (=1) oder frei (=0) ist. Die Wahl der Grösse der Allokationseinheit ist der entscheidende Faktor: • kleine Allokationseinheit → grosse Bitmap aber wenig Speicherverlust, wenn Prozess kein Vielfaches der Allokationseinheit ist • grosse Allokationseinheit → kleine Bitmap aber viel Speicherverlust, wenn Prozess kein Vielfaches der Allokationseinheit ist 27 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Speicherverwaltung mit Bitmaps Beurteilung Vorteil einfaches Verwaltungsverfahren: Suche k freie aufeinanderliegende Allokationseinheiten Nachteil Muss Platz für k Allokationseinheiten gesucht werden, muss in der Bitmap eine Folge von k Nullen gefunden werden (→ langsame Operation). Wegen des genannten Nachteils findet das Verfahren in der Praxis wenig Bedeutung. 28 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Speicherverwaltung mit verketteten Listen Speicherverwaltung mit verketteten Listen In einer verketteten Liste (Segmentliste) werden allokierte und freie Speicherbereiche verwaltet. Ein Knoten der Liste definiert einen Speicher für einen Prozess oder ein Loch (freien Bereich). Die Liste ist nach den Startadressen sortiert. Dadurch wird die Aktualisierung der Liste bei Termination eines Prozesses recht einfach. 29 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Speicherverwaltung mit verketteten Listen Aufgabe 1 Wie sieht die Liste nach Termination von Prozess 2 aus? 2 Wie sieht die Liste aus, wenn erneut ein Prozess eingefügt wird? 30 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Speicherverwaltung mit verketteten Listen Der Speicherverwalter muss bei Prozesserzeugung oder Einlagerung einen Knoten finden, der ausreichend Platz für den Prozess bietet. Folgende Strategien können realisiert werden: • First Fit Strategie Durchsuchen vom Anfang der Liste, bis der erste L-Knoten gefunden ist, der gross genug ist. Beurteilung einfach und schnell • Best Fit Strategie Durchsuchen der ganzen Liste, bis optimal grosser L-Knoten gefunden ist. Beurteilung nicht so schnell, da immer die ganze Liste durchsucht wird; es entstehen viele kleine Löcher 31 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Speicherverwaltung mit verketteten Listen Der Speicherverwalter muss bei Prozesserzeugung oder Einlagerung einen Knoten finden, der ausreichend Platz für den Prozess bietet. Folgende Strategien können realisiert werden: • First Fit Strategie Durchsuchen vom Anfang der Liste, bis der erste L-Knoten gefunden ist, der gross genug ist. Beurteilung einfach und schnell • Best Fit Strategie Durchsuchen der ganzen Liste, bis optimal grosser L-Knoten gefunden ist. Beurteilung nicht so schnell, da immer die ganze Liste durchsucht wird; es entstehen viele kleine Löcher • Quick Fit Strategie Mehrere getrennte Listen fester Länge für Standardgrössen (1k, 2k, 4k, ...) und eine allgemeine Liste für den Rest. Beurteilung schnell und es entstehen nicht so viele kleine Löcher, mehr Verwaltungsaufwand → Bild an Tafel 31 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Speicherverwaltung mit verketteten Listen Der Speicherverwalter muss bei Prozesserzeugung oder Einlagerung einen Knoten finden, der ausreichend Platz für den Prozess bietet. Folgende Strategien können realisiert werden: • First Fit Strategie Durchsuchen vom Anfang der Liste, bis der erste L-Knoten gefunden ist, der gross genug ist. Beurteilung einfach und schnell • Best Fit Strategie Durchsuchen der ganzen Liste, bis optimal grosser L-Knoten gefunden ist. Beurteilung nicht so schnell, da immer die ganze Liste durchsucht wird; es entstehen viele kleine Löcher • Quick Fit Strategie Mehrere getrennte Listen fester Länge für Standardgrössen (1k, 2k, 4k, ...) und eine allgemeine Liste für den Rest. Beurteilung schnell und es entstehen nicht so viele kleine Löcher, mehr Verwaltungsaufwand → Bild an Tafel 31 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Speicherverwaltung mit verketteten Listen Aufgabe 1 Wie sieht die Segmentliste aus und wie verändern sich die Liste wenn ein 110 k großer Prozess eingelagert werden muss bei 1 2 2 First Fit Best fit Wie könnte bei Quick Fit die Verwaltung der einzelnen Listen realisiert werden? 32 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Analyse der Swapping-Systeme Analyse der Swapping-Systeme Durch die Speicherverwaltung wird der Speicher fragmentiert. Eine Analyse kann durch Simulation des Speicherverwalter in folgender Form erfolgen: 1 Der Simulator (C++ Programm) erzeugt zufällig Segmentgrößen als Prozess oder als Loch. Das Resultat sind ungefähr gleich viele Löcher und Prozesse. 2 Jetzt werden angrenzende Löcher verschmolzen. 33 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Analyse der Swapping-Systeme Analyse der Swapping-Systeme Durch die Speicherverwaltung wird der Speicher fragmentiert. Eine Analyse kann durch Simulation des Speicherverwalter in folgender Form erfolgen: 1 Der Simulator (C++ Programm) erzeugt zufällig Segmentgrößen als Prozess oder als Loch. Das Resultat sind ungefähr gleich viele Löcher und Prozesse. 2 Jetzt werden angrenzende Löcher verschmolzen. 3 Jetzt werden als Operationen zufällig Allokation“ und ” Deallokation“ ausgeführt. Im Mittel also die Hälfte Allokationen ” und die Hälfte Deallokation, wobei bei der Deallokation verschmolzen wird, wenn links und/oder rechts ein Loch ist. 33 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Analyse der Swapping-Systeme Analyse der Swapping-Systeme Durch die Speicherverwaltung wird der Speicher fragmentiert. Eine Analyse kann durch Simulation des Speicherverwalter in folgender Form erfolgen: 1 Der Simulator (C++ Programm) erzeugt zufällig Segmentgrößen als Prozess oder als Loch. Das Resultat sind ungefähr gleich viele Löcher und Prozesse. 2 Jetzt werden angrenzende Löcher verschmolzen. 3 Jetzt werden als Operationen zufällig Allokation“ und ” Deallokation“ ausgeführt. Im Mittel also die Hälfte Allokationen ” und die Hälfte Deallokation, wobei bei der Deallokation verschmolzen wird, wenn links und/oder rechts ein Loch ist. 33 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Analyse der Swapping-Systeme Aus Sicht des gelben Prozesses ist während der Simulation links von ihm zur Hälfte der Zeit ein Loch, zur anderen Hälfte der Zeit ein Prozess. Über die Zeit hinweg existieren im Mittel dadurch halb so viele Löcher wie Prozesse, da nur bei Löchern verschmolzen wird. Daraus resultiert die 50% Regel: Ist die mittlere Anzahl der Prozesse im Speicher n, so sind im Mittel n/2 Löcher im Speicher. 34 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Analyse der Swapping-Systeme Aus Sicht des gelben Prozesses ist während der Simulation links von ihm zur Hälfte der Zeit ein Loch, zur anderen Hälfte der Zeit ein Prozess. Über die Zeit hinweg existieren im Mittel dadurch halb so viele Löcher wie Prozesse, da nur bei Löchern verschmolzen wird. Daraus resultiert die 50% Regel: Ist die mittlere Anzahl der Prozesse im Speicher n, so sind im Mittel n/2 Löcher im Speicher. 34 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Analyse der Swapping-Systeme Aufgabe (als Ergänzung zum Praktikum): Schreiben Sie ein Programm, das die 50% Regel durch Simulation der o.a. Form widerlegt oder bestätigt. → Terminal 35 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Analyse der Swapping-Systeme Eine weitere Analyse beantwortet die Frage, wie viel Speicher durch Löcher prozentual verloren geht. Gegeben: • f sei der Teil des Speichers, der durch Löcher verloren geht (gesuchte Größe). • s sei die durchschnittliche Grösse der insgesamt n Prozesse. • k ∗ s (k > 0) sei die durchschnittliche Grösse der insgesamt n/2 Löcher. (z.B. k=0.5 → Loch halb so gross wie Prozess) • m sei die Grösse des Speichers (in Bytes). 36 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Analyse der Swapping-Systeme Gegeben: • f sei der Teil des Speichers, der durch Löcher verloren geht (gesuchte Größe). • s sei die durchschnittliche Grösse der insgesamt n Prozesse. • k ∗ s (k > 0) sei die durchschnittliche Grösse der insgesamt n/2 Löcher. (z.B. k=0.5 → Loch halb so gross wie Prozess) • m sei die Grösse des Speichers (in Bytes). Folgerung: • Die n/2 Löcher belegen somit m − n ∗ s Bytes im Speicher. (Speicher – #Prozesse*Prozessgröße) • Also gilt: n/2 ∗ k ∗ s = m − n ∗ s (#Löcher * Lochgrösse = Speicher – Prozesse) → m = n/2 ∗ k ∗ s + n ∗ s (nach m auflösen) → m = n ∗ s ∗ (k/2 + 1) Der Anteil an Löchern f des Speichers errechnet sich aus: f = n/2 ∗ k ∗ s n ∗ k ∗ s/2 k k = = = m n ∗ s ∗ (k/2 + 1) 2 ∗ (k/2 + 1) k +2 37 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Swapping Analyse der Swapping-Systeme Resultat • Sind die Löcher halb so gross wie die Prozesse (k=1/2), dann geht 20% Speicher verloren (0.5/2.5). • Wird die Lochgrösse durch einen guten Speicherverwalter (BestFit) auf z.B. 1/4 der Prozessgrösse reduziert, geht nur 11% Speicher verloren. Insgesamt lohnt der Aufwand für gute Speicherverwaltungsalgorithmen! 38 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Virtuelle Speicher 1 Überblick 2 Ohne Prozessauslagerung 3 Swapping 4 Virtuelle Speicher Paging Paging mit Assoziativspeicher Paging - Seitenersetzungsverfahren Paging - Design der Systeme Paging - Design der Systeme Segmentierung Reine Segmentierung Reine Segmentierung Segmentierung kombiniert mit Paging 39 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Virtuelle Speicher Swapping löst das Problem, mehrere Prozesse gleichzeitig im Speicher zu halten und bei Bedarf ein-/ und auszulagern. Was muss aber getan werden, wenn ein einzelner Prozess mehr Speicherplatz braucht, als der Hauptspeicher gross ist? Früher wurde das Problem dadurch gelöst, dass der Programmierer explizit sein Programm in Stücke zerlegte, die jeweils in den Hauptspeicher passten. Das Betriebssystem übernahm das Laden der einzelnen Programmstücke. 40 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Virtuelle Speicher Swapping löst das Problem, mehrere Prozesse gleichzeitig im Speicher zu halten und bei Bedarf ein-/ und auszulagern. Was muss aber getan werden, wenn ein einzelner Prozess mehr Speicherplatz braucht, als der Hauptspeicher gross ist? Früher wurde das Problem dadurch gelöst, dass der Programmierer explizit sein Programm in Stücke zerlegte, die jeweils in den Hauptspeicher passten. Das Betriebssystem übernahm das Laden der einzelnen Programmstücke. Heute gibt es dazu das Konzept der virtuellen Speicher: Ein Programm (Code, Daten, Stack und Heap) kann beliebig gross sein, das Betriebssystem lädt immer nur die gerade benötigten Teile in den Hauptspeicher, der Rest bleibt auf der Platte. 40 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Virtuelle Speicher Swapping löst das Problem, mehrere Prozesse gleichzeitig im Speicher zu halten und bei Bedarf ein-/ und auszulagern. Was muss aber getan werden, wenn ein einzelner Prozess mehr Speicherplatz braucht, als der Hauptspeicher gross ist? Früher wurde das Problem dadurch gelöst, dass der Programmierer explizit sein Programm in Stücke zerlegte, die jeweils in den Hauptspeicher passten. Das Betriebssystem übernahm das Laden der einzelnen Programmstücke. Heute gibt es dazu das Konzept der virtuellen Speicher: Ein Programm (Code, Daten, Stack und Heap) kann beliebig gross sein, das Betriebssystem lädt immer nur die gerade benötigten Teile in den Hauptspeicher, der Rest bleibt auf der Platte. 40 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging Paging In Programmen werden Daten angesprochen, indem eine Speicheradresse verwendet wird. 1 2 3 4 5 6 7 01 IN 1 02 STORE 10 03 IN 1 04 STORE 11 05 SUB 10 06 JUMPPOS 10 ... ← Speicheradresse ← Speicheradresse Diese Adressen werden von HAL als die absoluten Adresse seines Speichers verstanden. Damit sind keine Programme möglich, die mehr als n (=Grösse des Speichers) Daten zu einem Zeitpunkt benötigen. Wenn HAL mit virtuellen Adressen umgehen könnte und der Rechner bei einem Zugriff eine Umrechnung in eine physikalische Adresse durchführen könnte, wäre die o.a. Restriktion nicht mehr vorhanden. 41 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging Paging In Programmen werden Daten angesprochen, indem eine Speicheradresse verwendet wird. 1 2 3 4 5 6 7 01 IN 1 02 STORE 10 03 IN 1 04 STORE 11 05 SUB 10 06 JUMPPOS 10 ... ← Speicheradresse ← Speicheradresse Diese Adressen werden von HAL als die absoluten Adresse seines Speichers verstanden. Damit sind keine Programme möglich, die mehr als n (=Grösse des Speichers) Daten zu einem Zeitpunkt benötigen. Wenn HAL mit virtuellen Adressen umgehen könnte und der Rechner bei einem Zugriff eine Umrechnung in eine physikalische Adresse durchführen könnte, wäre die o.a. Restriktion nicht mehr vorhanden. 41 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging MMU Moderne Prozessoren verfügen dazu über eine MMU (memory management unit): • Wird eine (virtuelle) Adresse im Programm angesprochen, wandelt die MMU sie in eine physische Adresse des Hauptspeichers um. • Der virtuelle Adressraum ist dabei in Einheiten, so genannte Seiten, unterteilt. Die korrespondierenden Einheiten (gleicher Grösse) im Speicher heissen Seitenrahmen. 42 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging MMU Moderne Prozessoren verfügen dazu über eine MMU (memory management unit): • Wird eine (virtuelle) Adresse im Programm angesprochen, wandelt die MMU sie in eine physische Adresse des Hauptspeichers um. • Der virtuelle Adressraum ist dabei in Einheiten, so genannte Seiten, unterteilt. Die korrespondierenden Einheiten (gleicher Grösse) im Speicher heissen Seitenrahmen. 42 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging 2 MMUs im HAL • eine MMU zur Umrechnung der virtuellen Registeradressen in physische HAL-Register • eine MMU zur Umrechnung der virtuellen Programmspeicherzellen in physische HAL-Programmspeicherzellen 43 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging Seitentabelle Zur Umrechnung von virtuellen in physische Adresse braucht die MMU eine Seitentabelle: Die Seitentabelle bei einem Rechner mit 16 Bit Adressen und 4k Seitengrösse ist dargestellt: • Es können 216 = 64k virtuelle Adressen angesprochen werden. • Wenn der Rechner über nur 32k Speicherzellen verfügt, muss eine Abbildung der o.a. Art erfolgen. • Auf der Platte ist der gesamte Speicher von 64k Speicherzellen vorhanden; es wird aber immer nur 32k in den Hauptspeicher geladen. In der Seitentabelle wird vermerkt, welche Seite aktuell im Speicher ist. 44 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging • Wird z.B. LOAD 10 im Programm ausgeführt, so ermittelt die MMU aus der 10 und der Seitentabelle den Seitenrahmen 1 und die physische Adresse 4k+10=4096+10=4106 wird geladen. • Wird eine ausgeblendete Adresse, z.B LOAD 8285 (Seite nicht im Speicher, absent = NULL) angesprochen, wird ein Seitenfehler erzeugt und das Betriebssystem lagert eine Seite aus und die benötigte Seite ein. Zu beantworten sind Fragen wie: 1 Wie ist die Seitentabelle zu organisieren, so dass die Umrechnung schnell erfolgt? 2 Welche Seite soll bei einem Seitenfehler ausgelagert werden? 45 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging • Wird z.B. LOAD 10 im Programm ausgeführt, so ermittelt die MMU aus der 10 und der Seitentabelle den Seitenrahmen 1 und die physische Adresse 4k+10=4096+10=4106 wird geladen. • Wird eine ausgeblendete Adresse, z.B LOAD 8285 (Seite nicht im Speicher, absent = NULL) angesprochen, wird ein Seitenfehler erzeugt und das Betriebssystem lagert eine Seite aus und die benötigte Seite ein. Zu beantworten sind Fragen wie: 1 Wie ist die Seitentabelle zu organisieren, so dass die Umrechnung schnell erfolgt? 2 Welche Seite soll bei einem Seitenfehler ausgelagert werden? 45 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging Organisation von Seitentabellen Zur Umrechnung von virtuellen Adressen in physikalische Adressen wird die virtuelle Adresse zweigeteilt: Die Seitennummer der virtuellen Adresse dient als Index in der Seitentabelle, um den Seitenrahmen zu finden; der Offset dient dann dazu, die physische Adresse zu finden. 46 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging Virtuelle Adresse → physische Adresse Das folgende Bild verdeutlicht, wie aus einer virtuellen Adresse mittels Seitennummer, Offset und Seitentabelle, die physische Adresse gefunden wird: 16 Bit Adressen mit 12 Bit Offset, Seitennummer dient als Index in der Seitentabelle 47 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging Zwei Hauptprobleme treten auf: • die Seitentabelle kann sehr gross werden: Moderne Prozessoren haben virtuelle Speicher mit 32 Bit. Bei 4k Seitengrösse besitzt ein 32 Bit Adressraum 1 Million Seiten. Daher muss die Seitentabelle 1 Million (232 /(4 ∗ 1024)) Einträge haben. Da jeder Prozess seine eigene Seitentabelle hat, sind mehrere Millionen Einträge gleichzeitig zu halten. • die Umrechnung muss schnell erfolgen: Die meisten Instruktionen eines Prozessors haben mehr als eine Adresse (oft 2 und mehr Operanden). Daher ist die Umrechnung meist zwei- oder mehrmals erforderlich. Bei angenommenen 5 nsec pro Instruktion (Hochleistungsprozessors) muss die Umrechnung in wenigen Nanosekunden erfolgen. Zur Lösung der beiden Probleme sind auf Hardwareebene unterschiedliche Lösungen entwickelt worden ( → Mikroprozessortechnik). 48 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging Ein Eintrag der Seitentabelle umfasst im Prinzip folgende Informationen: • Das Present/Absent Bit gibt an, ob der Eintrag benutzt werden darf. Ist das Bit 0 (=absent), so ist die virtuelle Seite nicht im Speicher; es entsteht ein Seitenfehler (Seite muss zuerst geladen werden). • Das Schutzbit zeigt an, ob die Seite nur gelesen oder auch geschrieben werden darf. • Wird auf die Seite geschrieben, wird von der Hardware das Modifiziertbit gesetzt. Das Betriebssystem muss alle Seiten auf Platte schreiben, die dieses Bit gesetzt haben, die anderen nicht. • Das Referenziertbit wird gesetzt, wenn lesend oder schreibend auf die Seite zugegriffen wird. Das Betriebssystem verwendet die Information, um Seiten auszuwählen, die bei Seitenfehler auszulagern sind. (Es wird von Hardware gesetzt, von Software gelöscht → später). • Das Cachingbit kann verwendet werden, um zu entscheiden, ob für Seiten ein Cache verwendet werden soll oder nicht. 49 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging Gegeben sei folgende Seitentabelle, wobei eine Seite aus 1k Worten besteht: 0 1 2 3 Modifiziert 0 1 1 1 referenziert 1 1 1 1 Schutz rw rw rw r present 1 1 1 1 Seitenrahmen 0 3 1 2 Wir gehen von 16 Bit Adressen aus, wobei der Offset 10 Bit hat. Im Speicher stehe in der Speicherzelle i der Wert i. Gegeben sei folgendes HAL-Programmfragment: 0 1 ... 1024 ... 2048 ... 3072 ... 0 1 ... 1024 ... 2048 ... 3072 ... 110 120 130 LOAD SUBNUM STORE 0000110000000110 // virtuelle Adresse 0000000000000101 0000100000000001 // virtuelle Adresse Aufgabe: Was macht das o.a. HAL Programmfragment (Operanden sind binär angegeben) und wie verändert sich der Hauptspeicherinhalt? 50 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging Gegeben sei folgende Seitentabelle, wobei eine Seite aus 1k Worten besteht: 0 1 2 3 Modifiziert 0 1 1 1 referenziert 1 1 1 1 Schutz rw rw rw r present 1 0 0 1 Seitenrahmen 0 3 1 2 Wir gehen von 16 Bit Adressen aus, wobei der Offset 10 Bit hat. Im Speicher stehe in der Speicherzelle i der Wert i. Gegeben sei folgendes HAL-Programmfragment: 0 1 ... 1024 ... 2048 ... 3072 ... 0 1 ... 1024 ... 2048 ... 3072 ... 110 120 130 LOAD SUBNUM STORE 0000110000000110 // virtuelle Adresse 0000000000000101 0000100000000001 // virtuelle Adresse Aufgabe: Tritt bei dem HAL-Programm ein Seitenfehler auf, wenn ja wann? 51 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging mit Assoziativspeicher Paging mit Assoziativspeicher Die Performance eines Prozessors hängt u.a. davon ab, wie effizient der Seitenrahmen einer virtuellen Seite gefunden wird. Da die Seitentabelle i.a. sehr gross ist, aber bei sequentiellen Programmen i.a. nur auf eine kleine Menge von Seiten auf einmal zugegriffen wird, ist häufig eine Caching-Technick in die MMU hardwareseitig integriert. Dieser so genannte Assoziativspeicher (auch Translation lookaside buffer genannt) hat folgenden Aufbau (zwischen 16 und 64 Einträge): • Gültigkeitsbit • Virtuelle Seitennummer • Modifiziertbit • Schutzbit • Seitenrahmennumme 52 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging mit Assoziativspeicher Arbeitsweise bei Zugriff auf virtuelle Adresse: 1 Hardware prüft, ob Eintrag für die virtuelle Seite im Assoziativspeicher ist. 2 Ist dies der Fall und das Gültigkeitsbit gesetzt, wird der Seitenrahmen zurück gegeben (Schutzbits werden auch geprüft). Dabei braucht die Seitentabelle nicht gelesen zu werden. 3 Ist die virtuelle Seitennummer nicht im Assoziativspeicher, wird die Seitentabelle gelesen, der Assoziativspeicher wird um die Seitentabelleneinträge aktualisiert und der Seitenrahmen zurück gegeben. Der aus dem Assoziativspeicher entfernte Eintrag wird mit der Seitentabelle synchronisiert (ist im Assoziativspeicher das Modifiziertbit gesetzt, muss dies in die Seitentabelle eingetragen werden). 53 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging mit Assoziativspeicher Gegeben sei der folgende Inhalt des Assoziativspeichers (der Grösse 2): virt. Seite 2 0 modifiziert 1 0 Schutz rw rw Seitenrahment 1 3 gültig 1 1 und die Seitentabelle, wobei eine Seite 256 Worte umfasst ist. Wir gehen von 8 Bit Adressen aus, wobei der Offset 6 Bit hat. 0 1 2 3 modifiziert 0 1 1 1 referenziert 1 1 1 1 Schutz rw rw rw r present 1 1 1 1 Seitenrahmen 3 0 1 2 Wir gehen von 8 Bit Adressen aus, wobei der Offset 6 Bit hat. Im Speicher stehe in der Speicherzelle i der Wert i. 110 120 130 LOAD SUBNUM STORE 10000010 00000001 01000001 Aufgabe: Was macht dann das HAL Programmfragment und wie ändert sich der Assoziativspeicher? 54 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging mit Assoziativspeicher Arbeitsweise bei Kontextwechsel Bei Mehrprogrammbetrieb existiert für jeden Adressraum eine Seitentabelle. Bei einem Kontextwechsel muss 1 die Anfangsadresse der Seitentabelle in die MMU geladen werden und 2 der Assoziativspeicher invalidiert werden (er baut sich für den aktuellen Prozess dann langsam wieder auf). 55 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Paging - Seitenersetzungsverfahren Ein Seitenfehler (Zugriff auf Adresse, deren Seite nicht im Hauptspeicher ist) bewirkt, dass das Betriebssystem eine Seite auswählt, die aus dem Speicher entfernt wird, um Platz für die neu einzulagernde Seite zu schaffen. Aktivitäten: 1 Wähle auszulagernde Seite n aus. 2 Wenn n seit der Einlagerung modifiziert wurde, ist ein Update des korrespondierenden Seitenrahmens auf der Platte vorzunehmen. (eine nicht modifizierte Seite ist z.B. eine Seite mit Programmtext) 3 Ersetze n durch die neue Seite. Im Folgende werden Verfahren zur Realisierung des Schrittes 1 diskutiert. 56 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Seitenersetzungsverfahren benutzen dabei das Modifiziert-, Schutz und das Referenziertbit wie folgt: 1 Wird ein Prozess gestartet, werden alle Present/Absent-Bits auf 0 gesetzt (Seite nicht im Speicher). 2 Wird eine Seite referenziert und das Present/Absent-Bits ist 0, tritt ein Seitenfehler auf. 3 Das Present/Absent-Bit wird auf 1 gesetzt. 4 Der Seitentabelleneintrag wird auf die Nummer des entsprechenden Seitenrahmens aktualisiert. 5 Das Schutzbit wird auf r“ (für read) gesetzt. ” Wird die Seite verändert und das Schutzbit ist nicht gesetzt, tritt ein Seitenfehler auf und das Modifiziertbit wird gesetzt und das Schutzbit auf rw“ gesetzt. ” 6 57 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Zufallsauswahl Verfahren: Wähle mit Hilfe eines Zufallszahlengenerators eine Seite aus. 1 Beurteilung: • Das Verfahren ist einfach zu implementieren. • Die Performance ist mit hoher Wahrscheinlichkeit schlecht, da eine häufig benutzte Seite u.U. ständig aus- und dann wieder eingelagert wird → Seitenflattern. Seite mit Programmtext, etwa 1 2 3 4 5 6 7 main (){ ... while (1) { f () ← häufig ... } } benutzt 58 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Zufallsauswahl Verfahren: Wähle mit Hilfe eines Zufallszahlengenerators eine Seite aus. 1 Beurteilung: • Das Verfahren ist einfach zu implementieren. • Die Performance ist mit hoher Wahrscheinlichkeit schlecht, da eine häufig benutzte Seite u.U. ständig aus- und dann wieder eingelagert wird → Seitenflattern. Seite mit Programmtext, etwa 1 2 3 4 5 6 7 main (){ ... while (1) { f () ← häufig ... } } benutzt 58 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Optimaler Algorithmus Verfahren: 1 Tritt ein Seitenfehler auf, so befinden sich m Seiten im Speicher. Eine Seite wird durch die aktuelle Instruktion referenziert (die Seite, die die Instruktion enthält). Die m-1 Seiten werden erst viele Instruktionen später referenziert. 2 Markiere die m-1 Seiten mit der Anzahl der Instruktionen, die ausgeführt werden, bevor die Seite zum ersten Mal referenziert wird. 3 Entferne die Seite mit der grössten Markierung (sie wird ja zuletzt gebraucht). Beurteilung: • Das Verfahren ist optimal, da eine Seite erst zum spätesten Zeitpunkt eingelagert wird. • Leider ist das Verfahren nicht implementierbar, da die Markierung (Anzahl der Instruktionen) nicht ermittelbar ist (wieso eigentlich?). 59 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Optimaler Algorithmus Verfahren: 1 Tritt ein Seitenfehler auf, so befinden sich m Seiten im Speicher. Eine Seite wird durch die aktuelle Instruktion referenziert (die Seite, die die Instruktion enthält). Die m-1 Seiten werden erst viele Instruktionen später referenziert. 2 Markiere die m-1 Seiten mit der Anzahl der Instruktionen, die ausgeführt werden, bevor die Seite zum ersten Mal referenziert wird. 3 Entferne die Seite mit der grössten Markierung (sie wird ja zuletzt gebraucht). Beurteilung: • Das Verfahren ist optimal, da eine Seite erst zum spätesten Zeitpunkt eingelagert wird. • Leider ist das Verfahren nicht implementierbar, da die Markierung (Anzahl der Instruktionen) nicht ermittelbar ist (wieso eigentlich?). 59 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Not recently used (NRU) Das Betriebssystem teilt alle Seiten in 4 Kategorien/Klassen ein: Klasse 0 1 2 3 referenziert 0 1 0 1 modifiziert 0 0 1 1 Die Idee ist, besser eine nicht referenzierte Seite auszuwählen, als eine modifizierte. Verfahren: 1 2 3 Periodisch (etwa bei jeder Unterbrechung) werden alle Seiten als nicht referenziert gesetzt. Bei einem Seitenfehler werden alle Seiten untersucht und einer der o.g. Kategorien zugeordnet. Ausgewählt (zum Auslagern) wird eine zufällige Seite aus der kleinsten nicht leeren Klasse bzgl. der o.g. Kategorie. Beurteilung: • Leicht zu verstehen, effiziente Implementierung möglich. 60 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Not recently used (NRU) Das Betriebssystem teilt alle Seiten in 4 Kategorien/Klassen ein: Klasse 0 1 2 3 referenziert 0 1 0 1 modifiziert 0 0 1 1 Die Idee ist, besser eine nicht referenzierte Seite auszuwählen, als eine modifizierte. Verfahren: 1 2 3 Periodisch (etwa bei jeder Unterbrechung) werden alle Seiten als nicht referenziert gesetzt. Bei einem Seitenfehler werden alle Seiten untersucht und einer der o.g. Kategorien zugeordnet. Ausgewählt (zum Auslagern) wird eine zufällige Seite aus der kleinsten nicht leeren Klasse bzgl. der o.g. Kategorie. Beurteilung: • Leicht zu verstehen, effiziente Implementierung möglich. 60 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren First-In, First-Out (FIFO) Die Idee ist, die Seiten als FIFO Speicher (verkettete Liste mit beschränkter Grösse k) von aktuell im Speicher befindlichen Seiten zu verwalten, wobei die älteste Seite am Anfang steht: Auslagern: Einlagern: “älteste Seite” am → 0 → 3 →...→ 7 ← am Ende einfügen Kopf entfernen Verfahren: 1 Bei Seitenfehler wird die (älteste) Seite am Kopf der Liste entfernt 2 die eingelagerte Seite wird am Ende eingefügt. Beurteilung: • Intensiv genutzte Seiten werden genauso behandelt, wie wenig benutzte. • In dieser einfachen Form wird FIFO in der Praxis nicht eingesetzt. 61 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren First-In, First-Out (FIFO) Die Idee ist, die Seiten als FIFO Speicher (verkettete Liste mit beschränkter Grösse k) von aktuell im Speicher befindlichen Seiten zu verwalten, wobei die älteste Seite am Anfang steht: Auslagern: Einlagern: “älteste Seite” am → 0 → 3 →...→ 7 ← am Ende einfügen Kopf entfernen Verfahren: 1 Bei Seitenfehler wird die (älteste) Seite am Kopf der Liste entfernt 2 die eingelagerte Seite wird am Ende eingefügt. Beurteilung: • Intensiv genutzte Seiten werden genauso behandelt, wie wenig benutzte. • In dieser einfachen Form wird FIFO in der Praxis nicht eingesetzt. 61 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren FIFO mit Berücksichtigung des Referenziertbit Berücksichtigt man bei dem FIFO Verfahren das Referenziertbit, so wird das Problem des Auslagerns intensiv genutzter Seiten vermieden. Das Verfahren wird auch als Second-Chance bezeichnet. Verfahren: 1 Bei Seitenfehler wird die Seite am Kopf der Liste untersucht. 2 Ist das Referenziertbit des Kopfelementes 0, wird das Kopfelement gelöscht; ansonsten wird das Kopfelement am Ende neu eingefügt, sein Referenziertbit auf 0 gesetzt und das jetzt neue Kopfelement wird untersucht. 3 Punkt 2 wird wiederholt, bis ein Kopfelement gefunden ist, das gelöscht werden kann. Beurteilung: • Insgesamt wird dadurch die älteste Seite gesucht, die seit der letzten Unterbrechung nicht mehr referenziert wurde. • Relativ einfach zu realisieren. • Aufwand zum Verschieben der Seiten (Elemente der Liste) relativ hoch. 62 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren FIFO mit Berücksichtigung des Referenziertbit Berücksichtigt man bei dem FIFO Verfahren das Referenziertbit, so wird das Problem des Auslagerns intensiv genutzter Seiten vermieden. Das Verfahren wird auch als Second-Chance bezeichnet. Verfahren: 1 Bei Seitenfehler wird die Seite am Kopf der Liste untersucht. 2 Ist das Referenziertbit des Kopfelementes 0, wird das Kopfelement gelöscht; ansonsten wird das Kopfelement am Ende neu eingefügt, sein Referenziertbit auf 0 gesetzt und das jetzt neue Kopfelement wird untersucht. 3 Punkt 2 wird wiederholt, bis ein Kopfelement gefunden ist, das gelöscht werden kann. Beurteilung: • Insgesamt wird dadurch die älteste Seite gesucht, die seit der letzten Unterbrechung nicht mehr referenziert wurde. • Relativ einfach zu realisieren. • Aufwand zum Verschieben der Seiten (Elemente der Liste) relativ hoch. 62 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Beispiel: FIFO mit Berücksichtigung des Referenziertbit 1 Ausgangssituation: Seite 11 soll eingelagert werden Kopf → 0,0 → 3,1 → 1,0 → 18,0 2 R-Bit ist 0, Kopfelement wird einfach gelöscht, neue Seite 11 wird hinten eingefügt Kopf → 3,1 → 1,0 → 18,0 → 11,1 Seitenrahmen,Referenziertbit 63 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Beispiel: FIFO mit Berücksichtigung des Referenziertbit 1 Ausgangssituation: Seite 11 soll eingelagert werden Kopf → 0,0 → 3,1 → 1,0 → 18,0 2 R-Bit ist 0, Kopfelement wird einfach gelöscht, neue Seite 11 wird hinten eingefügt Kopf → 3,1 → 1,0 → 18,0 → 11,1 Seite 17 soll eingelagert werden. R-Bit ist 1, Seite wird hinten eingefügt. Kopf → 1,0 → 18,0 → 11,1 → 3,0 R-Bit ist 0, Kopfelemet wird gelöscht, Seite hinten eingefügt Kopf → 18,0 → 11,1 → 3,0 → 17,1 3 Seitenrahmen,Referenziertbit 63 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Beispiel: FIFO mit Berücksichtigung des Referenziertbit 1 Ausgangssituation: Seite 11 soll eingelagert werden Kopf → 0,0 → 3,1 → 1,0 → 18,0 2 R-Bit ist 0, Kopfelement wird einfach gelöscht, neue Seite 11 wird hinten eingefügt Kopf → 3,1 → 1,0 → 18,0 → 11,1 Seite 17 soll eingelagert werden. R-Bit ist 1, Seite wird hinten eingefügt. Kopf → 1,0 → 18,0 → 11,1 → 3,0 R-Bit ist 0, Kopfelemet wird gelöscht, Seite hinten eingefügt Kopf → 18,0 → 11,1 → 3,0 → 17,1 3 Seitenrahmen,Referenziertbit 63 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Uhr Seitenersetzung Dieses Verfahren ist mit dem letzten Verfahren vergleichbar; es unterscheidet sich nur in der Implementierung: man verwendet eine zyklische Liste mit einem Zeiger auf das Kopfelement“: ” Verfahren: Kopfelement, wird untersucht: 1 R=0: lagere Seite aus und setze neue Seite an diese Stelle, Schalte Kopfzeiger weiter 2 R=1: Lösche R und rücke Zeiger vor 3 Wiederhole Schritt 1 bis Fall R=0 eingetreten ist 64 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Least recently used (LRU) Der LRU Algorithmus geht davon aus, dass Seiten, die durch die letzte Instruktion benutzt wurden, mit grosser Wahrscheinlichkeit auch in Zukunft benutzt werden – und umgekehrt, dass Seiten die schon lange nicht mehr benutzt werden, auch in Zukunft nicht verwendet werden. Idee: Bei einem Seitenfehler wird die am längsten nicht mehr benutzte Seite entfernt. Verfahren: 1 Seiten werden als verkettete Liste verwaltet. 2 Am Anfang der Liste steht die aktuelle Seite – am Ende die am längsten nicht mehr benutzte Seite. 3 Bei Seitenfehler wird das Element am Ende gelöscht. 4 Bei Zugriff auf Referenz wird die Seite in der verketteten Liste gesucht und an den Anfang verschoben, bzw. neu am Anfang eingefügt. Beurteilung: • Punkt 4 im o.g. Verfahren ist zeitaufwendig. Auch mit Spezialhardware für MMU ist Punkt 4 aufwendig. • Der Algorithmus ist (fast) so gut, wie der optimale Algorithmus. 65 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Least recently used (LRU) Der LRU Algorithmus geht davon aus, dass Seiten, die durch die letzte Instruktion benutzt wurden, mit grosser Wahrscheinlichkeit auch in Zukunft benutzt werden – und umgekehrt, dass Seiten die schon lange nicht mehr benutzt werden, auch in Zukunft nicht verwendet werden. Idee: Bei einem Seitenfehler wird die am längsten nicht mehr benutzte Seite entfernt. Verfahren: 1 Seiten werden als verkettete Liste verwaltet. 2 Am Anfang der Liste steht die aktuelle Seite – am Ende die am längsten nicht mehr benutzte Seite. 3 Bei Seitenfehler wird das Element am Ende gelöscht. 4 Bei Zugriff auf Referenz wird die Seite in der verketteten Liste gesucht und an den Anfang verschoben, bzw. neu am Anfang eingefügt. Beurteilung: • Punkt 4 im o.g. Verfahren ist zeitaufwendig. Auch mit Spezialhardware für MMU ist Punkt 4 aufwendig. • Der Algorithmus ist (fast) so gut, wie der optimale Algorithmus. 65 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Seitenersetzungsverfahren Hörsaalübung Wie verändert sich die u.a. Liste bei LRU wenn das folgende HAL Programm ausgeführt wird? Dabei bedeute LOAD, STORE,... x n dass x ein Register der Seite n ist. LOAD a2 ADD b 1 STORE c 4 LOAD d 3 SUB a5 STORE x 1 Anfang → 0 → 3 → 1 → 18 ← Ende 66 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Design der Systeme Paging - Arbeitsbereich-Modell Bei Time-Sharing Systemen werden Prozesse häufig zwischen Platte und Speicher hin- und hergeschoben. demand paging Wird ein Prozess wieder in den Speicher geholt, kann bei einem Zugriff auf eine Referenz, die entsprechende Seite eingelagert werden. Working-Set Die Menge an Seiten, die ein Prozess zu einem Zeitpunkt benutzt, wird Working-Set oder Arbeitsbereich genannt. Viele Paging-Systeme verwenden nicht reines Demand Paging, sondern merken“ sich den Arbeitsbereich und ” lagern diese Verwaltungsinformation mit aus und ein. Damit wird die Fehlerrate stark gesenkt. 67 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Design der Systeme Paging - Seitengrösse Die Seitengröße ist bei Betriebssystemen eine Größe, die von unterschiedlichen Faktoren bestimmt wird: • Hardware setzt Allokationseinheiten fest (z.B. werden in einem Zyklus 512 Byte gelesen). • Anzahl Register, die für Seitentabelle verfügbar sind. • Prozesswechsel bewirken das Laden der Seitentabelle. 68 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Design der Systeme Wenn man von einem Programm zufällig einen Teil (Segment) auswählt, wird nicht immer eine ganze Anzahl von Seiten gefüllt. Im Durchschnitt wird die letzte Hälfte der letzten Seite leer sein (dies wird interne Fragmentierung genannt): • Mit n Segmenten im Speicher und einer Seitengrösse von p Byte, gehen n*p/2 Byte durch interne Fragmentierung verloren. Also ist eine kleine Seitengröße besser bzgl. interner Fragmentierung. • Kleine Seiten bewirken aber, dass die Seitentabelle groß wird. • Normalerweise wird immer in einem Zyklus eine Seite von der Festplatte in den Speicher geladen, wobei die meiste Zeit für das Suchen der Seite vergeht. Der eigentliche Ladevorgang ist für größere Seiten genauso schnell wie für kleine Seiten. Also sind bzgl. der Ladezeit eine größere Seiten zu bevorzugen. 69 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Paging - Design der Systeme Seitengröße In der Praxis werden Seitengrößen von 4k bis 512k verwendet. Das folgende C-Programm gibt die Seitengröße in Linux 2.4 für Intel-Prozessoren aus: pagesize.c 1 2 3 4 5 6 # include " / usr / src / linux -2.4.20 -18.9/ include / asm - i386 / page . h " /* # define PAGE_SIZE 1 UL < <12 */ int main () { printf ( " % d Byte \ n " , PAGE_SIZE ); return 0; } $ pagesize 4096 Byte $ Hier sieht man, Linux 2.4 auf Intel-Plattformen. Auf Sparc-Prozessoren verwendet Solaris 8kB als Seitengröße. 70 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Segmentierung Segmentierung Beim Paging ist der virtuelle Adressraum eindimensional, d.h. die Adressen waren von 0 bis zu einer Maximalgröße n durchnummeriert und in Seiten fester Grösse eingeteilt. Segmentierung teilt den virtuellen Adressraum in mehrere Bereiche (Segmente genannt) unterschiedliche Länge auf. Die einzelnen Segmente entsprechen Segmente können damit logischen Einheiten eines wachsen und schrumpfen. Jedes Programms wie: Segment besteht aus Adressen zwischen Null und einer • Programmtext, • statische Daten, • Heap, • Stack. segmentspezifischen Maximalzahl, die konstant bleibt (im folgenden Bild: n,m,l): Der Compiler übernimmt die Aufteilung in die einzelnen Bereiche. 71 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Segmentierung Segmentierung - Aufbau virtueller Adresse Eine virtuelle Adresse v besteht aus: • Segmentnummer s und • dem Offset o innerhalb des Segments. Die MMU verwaltet eine Segmenttabelle, bei der die Segmentnummer s als Index dient, um die Startadresse a des Segments im Speicher zu bestimmen. Die physikalische Adresse wird in der MMU dann aus der virtuellen Adresse v gebildet: 1 ermittle aus v die Segmentnummer s und den Offset o, 2 nehme aus Segmenttabelle die Startadresse a, die zur Segmentnummer s gehört und 3 addiere zu a den Offset o. Daraus ergibt sich die endgültige physikalische Adresse. 72 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Segmentierung Segmentierung - Aufbau virtueller Adresse Eine virtuelle Adresse v besteht aus: • Segmentnummer s und • dem Offset o innerhalb des Segments. Die MMU verwaltet eine Segmenttabelle, bei der die Segmentnummer s als Index dient, um die Startadresse a des Segments im Speicher zu bestimmen. Die physikalische Adresse wird in der MMU dann aus der virtuellen Adresse v gebildet: 1 ermittle aus v die Segmentnummer s und den Offset o, 2 nehme aus Segmenttabelle die Startadresse a, die zur Segmentnummer s gehört und 3 addiere zu a den Offset o. Daraus ergibt sich die endgültige physikalische Adresse. 72 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Segmentierung Bewertung Segmentierung Vorteile: • Einfache Handhabung von Datenstrukturen, die sich dynamisch verändern. • Falls der Compiler für jedes Modul ein eigenes Segment erzeugt, können Module unabhängig voneinander übersetzt werden. • Gemeinsam benutzte Prozeduren und Bibliotheken (shared libraries) brauchen nur einmal eingelagert zu werden, und nicht mehr ausgelagert zu werden. Dadurch werden mehrfache Ladezeiten vermieden. • Die logischen Einheiten können inhaltsbezogen geschützt werden: • z.B. shared libraries für alle lesbar, • Stack und Heap nur für den eigenen Prozess les- und schreibbar, • globale Daten für alle schreibbar. Nachteil: • Jedes Segment muss klein sein, da es zusammenhängend im Speicher liegen muss. 73 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Segmentierung Bewertung Segmentierung Vorteile: • Einfache Handhabung von Datenstrukturen, die sich dynamisch verändern. • Falls der Compiler für jedes Modul ein eigenes Segment erzeugt, können Module unabhängig voneinander übersetzt werden. • Gemeinsam benutzte Prozeduren und Bibliotheken (shared libraries) brauchen nur einmal eingelagert zu werden, und nicht mehr ausgelagert zu werden. Dadurch werden mehrfache Ladezeiten vermieden. • Die logischen Einheiten können inhaltsbezogen geschützt werden: • z.B. shared libraries für alle lesbar, • Stack und Heap nur für den eigenen Prozess les- und schreibbar, • globale Daten für alle schreibbar. Nachteil: • Jedes Segment muss klein sein, da es zusammenhängend im Speicher liegen muss. 73 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Segmentierung Aufgabe Gegeben sei folgende Segmenttabelle (ohne absent/present und Schutzbits). Wir gehen von 8 Bit Adressen aus, wobei der Offset 6 Bit hat. Startadresse 0 1 2 3 100 1 320 410 Segmentgröße in #Speicherzellen 200 80 10 20 Im Speicher stehe in der Speicherzelle i der Wert i. 110 120 130 LOAD SUBNUM STORE 10000010 00000001 01000101 Aufgabe: Was macht dann das HAL Programmfragment (Operanden sind binär angegeben) ? 74 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Reine Segmentierung Reine Segmentierung Die reine Segmentierung kann dazu führen, dass der physische Speicher fragmentiert wird: 75 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Reine Segmentierung Verdichtung Diese externe Fragmentierung tritt zwangsläufig auf, wenn das System eine Zeit lang läuft. Als Gegenmaßnahme wird periodisch durch Verdichtung eine Restrukturierung des Speichers vorgenommen: Merkt man das beim Betrieb (z.B. bei Windows) ? 76 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Segmentierung kombiniert mit Paging Segmentierung kombiniert mit Paging Bei reiner Segmentierung kann es passieren, dass ein Segment so groß ist, dass es nicht in den Hauptspeicher passt. virtueller Addressraum Stack frei Hauptspeicher Heap Data Text Abbildung: Das Text-Segment passt nicht in den Hauptspeicher 77 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Segmentierung kombiniert mit Paging Segmentierung kombiniert mit Paging Durch Kombination von Segmentierung und Paging wird das o.g. Problem gelöst: • Der virtuelle Adressraum besteht aus Segmenten und besitzt eine Segmenttabelle. • Jedes Segment wird in Seiten fester Größe unterteilt und hat eine eigene Seitentabelle. • Der physische Adressraum besteht aus Kacheln fester Länge (analog Paging). Eine virtuelle Adresse v besteht aus: • Segmentnummer s. • Seitennummer p und • dem Offset o innerhalb des Segments. 78 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Segmentierung kombiniert mit Paging Ermittlung physischer Adresse Die physikalische Adresse wird in der MMU dann aus der virtuellen Adresse v gebildet: 1 ermittle aus v die Segmentnummer s, die Seitennummer p und den Offset o, 2 nehme aus Segmenttabelle die Adresse der Seitentabelle, die zu s gehört, 3 entnehme der Seitentabelle an der Stelle p die Kachelnummer k 4 addiere zur Kachelnummer k den Offset o. Daraus ergibt sich die endgültige physikalische Adresse. 79 / 80 Betriebssysteme - Speicherverwaltung → [email protected] Version: (8c45d65) ARSnova 19226584 Virtuelle Speicher Segmentierung kombiniert mit Paging 1 2 3 4 ermittle aus v die Segmentnummer s, die Seitennummer p und den Offset o, nehme aus Segmenttabelle die Adresse der Seitentabelle, die zu s gehört, entnehme der Seitentabelle an der Stelle p die Kachelnummer k addiere zur Kachelnummer k den Offset o. Daraus ergibt sich die endgültige physikalische Adresse. • Ein Präsenzbit in einem Segmenttabelleneintrag kann verwendet werden, um anzuzeigen, ob die Seitentabelle selbst im Hauptspeicher liegt. • Present/Absent-Bits sind in jedem Seitentabelleneintrag vorhanden, um Paging zu steuern. 80 / 80