Betriebssysteme - Speicherverwaltung

Transcription

Betriebssysteme - Speicherverwaltung
Betriebssysteme - Speicherverwaltung → alois.schuette@h-da.de Version: (8c45d65)
ARSnova 19226584
Betriebssysteme - Speicherverwaltung
→ alois.schuette@h-da.de
Version: (8c45d65)
ARSnova 19226584
Alois Schütte
18. Mai 2016
1 / 80
Betriebssysteme - Speicherverwaltung → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de Version: (8c45d65)
ARSnova 19226584
Ohne Prozessauslagerung
Ohne Prozessauslagerung
1 Überblick
2 Ohne Prozessauslagerung
Einprogrammbetrieb
Mehrprogrammbetrieb
3 Swapping
4 Virtuelle Speicher
4 / 80
Betriebssysteme - Speicherverwaltung → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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 → alois.schuette@h-da.de 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