Sharing und invertierte Seitentabellen
Sharing und invertierte Seitentabellen Sharing und invertierte Seitentabellen
Sharing und invertierte Seitentabellen Adressräume Seite Kachel / Rahmen MMU Hardware schwierig, da nur eine virtuelle Adresse pro Kachel Hauptspeicher z. B. 512 MB Betriebssysteme WS 2012, Speicher 68 Hermann Härtig, TU Dresden
- Seite 2 und 3: MMU-Ansteuerung: einige wichtige De
- Seite 4 und 5: Propagation von Attributen ● Kach
- Seite 6 und 7: Umkehrabbildung: Kacheln zu Adressr
- Seite 8 und 9: Teilaufgaben Virtueller Speicher im
- Seite 10 und 11: Hauptspeicher: Betriebsmittelverwal
- Seite 12 und 13: Seitenersetzung allgemein BS-seitig
- Seite 14 und 15: Tanenbaum FIFO: First in first out
- Seite 16 und 17: LRU Annäherung: Clock-Algorithmus
- Seite 18 und 19: LRU Annäherung: Aging void init(Ka
- Seite 20 und 21: LRU Annäherung: Aging Tanenbaum MO
- Seite 22 und 23: LRU Annäherung: Aging Tanenbaum MO
- Seite 24 und 25: LRU Annäherung: Aging Tanenbaum MO
- Seite 26 und 27: LRU Annäherung: Aging Tanenbaum MO
- Seite 28 und 29: Wegweiser: Virtueller Speicher Anli
- Seite 30 und 31: Das Arbeitsmengenmodell (Working Se
- Seite 32 und 33: Seitenfehlerrate Tanenbaum MOS ●
- Seite 34 und 35: Weiterer Gesichtspunkt: Wahl der Se
- Seite 36 und 37: Wegweiser Arbeitsmengenmodell Speic
- Seite 38 und 39: Speicherobjekte und Regionen Datei,
- Seite 40 und 41: Speicherobjekte und Regionen Datei,
- Seite 42 und 43: Speicherobjekte und Regionen Region
- Seite 44 und 45: Aufbau der Adressraumstruktur ● z
- Seite 46 und 47: Das Zusammenspiel Adressräume z. B
- Seite 48 und 49: Das Zusammenspiel Adressräume z. B
- Seite 50 und 51: Das Zusammenspiel Adressräume z. B
<strong>Sharing</strong> <strong>und</strong> <strong>invertierte</strong> <strong>Seitentabellen</strong><br />
Adressräume<br />
Seite<br />
Kachel / Rahmen<br />
MMU<br />
Hardware<br />
schwierig, da nur eine<br />
virtuelle Adresse pro Kachel<br />
Hauptspeicher<br />
z. B. 512 MB<br />
Betriebssysteme WS 2012, Speicher 68<br />
Hermann Härtig, TU Dresden
MMU-Ansteuerung: einige wichtige Details<br />
Aufgaben<br />
●<br />
Manipulation <strong>und</strong> Interpretation der MMU-Daten<br />
●<br />
Atomare Operationen:<br />
<br />
<br />
Eintrag einer Seite in einen Adressraum<br />
Verdrängung einer Seite aus einem oder mehreren<br />
Adressräumen<br />
●<br />
Propagation von Attributen<br />
Betriebssysteme WS 2012, Speicher 69<br />
Hermann Härtig, TU Dresden
Kontext: Verwendung der Attribute<br />
➔<br />
BS-seitig<br />
void init(Kachel) {<br />
Kachel.modified = 0;<br />
Kachel.referenced = 0;<br />
}<br />
Hardwareseitig<br />
... Prozesse arbeiten ...<br />
HW setzt referenced- <strong>und</strong><br />
modified-Flag<br />
in Seitentabllen !!!<br />
BS-seitig (später mehr Kontext)<br />
void pagefault(Seiten_NR) {<br />
NewK = getFreieKachel();<br />
if (!NewK) {<br />
//keine Kachel mehr frei<br />
NewK = ErsetzungsStrategie();<br />
}<br />
//NewK ist jedoch noch in<br />
//Benutzung<br />
if (NewK.modified)<br />
writeToDisk(NewK, ...);<br />
removeFromPT(NewK);<br />
//aus alten AddrRäumen entfernen<br />
basieren auf „referenced“<br />
<strong>und</strong> „modified“ Attributen<br />
von Kacheln !!!<br />
}<br />
Betriebssysteme WS 2012, Speicher 70<br />
Hermann Härtig, TU Dresden
Propagation von Attributen<br />
●<br />
Kacheln können mehreren<br />
Seiten mehrerer Adressräume<br />
zugeordnet sein<br />
●<br />
Attribute used, modified<br />
werden durch Hardware für<br />
Seiten (nicht Kacheln) gesetzt<br />
➔<br />
notwendig:<br />
●<br />
Propagation der Attribute<br />
von Seiten zu Kacheln<br />
●<br />
Rückkehrabbildung:<br />
welchen Seiten ist eine<br />
gegebene Kachel<br />
zugeordnet<br />
●<br />
Seite in Adressraum A:<br />
used, not modified<br />
●<br />
Seite in Adressraum B:<br />
not used, modified<br />
➔<br />
Kachel: used, modified<br />
Betriebssysteme WS 2012, Speicher 71<br />
Hermann Härtig, TU Dresden
Propagation der Seitenattribute<br />
R M<br />
R M<br />
R M<br />
OR<br />
Betriebssysteme WS 2012, Speicher 72<br />
Hermann Härtig, TU Dresden
Umkehrabbildung: Kacheln zu Adressraum<br />
Für:<br />
●<br />
Attributpropagation<br />
●<br />
bei Verdrängung einer Kachel:<br />
<br />
Auffinden der <strong>Seitentabellen</strong>, aus denen<br />
Kachel ausgetragen werden muss<br />
<br />
Später:<br />
Identifierung des Speicherobjektes, damit Inhalt<br />
weggeschafft werden kann<br />
Betriebssysteme WS 2012, Speicher 73<br />
Hermann Härtig, TU Dresden
Wegweiser: Virtueller Speicher<br />
Anliegen – Begriffe – Vorgehen<br />
Adressumsetzung<br />
Seitenersetzung<br />
Arbeitsmengenmodell<br />
Betriebssysteme WS 2012, Speicher 74<br />
Hermann Härtig, TU Dresden
Teilaufgaben<br />
Virtueller Speicher im Betriebssystem<br />
• Seitenfehler-Behandlung<br />
• Verwaltung des Betriebsmittels Hauptspeicher<br />
• Aufbau der Adressraumstruktur<br />
(Speicherobjekte <strong>und</strong> Regionen)<br />
• Bereitstellung spezifischer Speicherobjekte<br />
• Interaktion Prozess- <strong>und</strong> Speicher-Verwaltung<br />
Betriebssysteme WS 2012, Speicher 75<br />
Hermann Härtig, TU Dresden
Seitenfehlerbehandlung (Überblick)<br />
trap (HW) {<br />
● rette Register<br />
● Ermittlung der Seitenfehleradresse<br />
<br />
<br />
<br />
<br />
<br />
Regionmanager: Speicherobjekt bestimmen<br />
freie Kachel ermitteln oder verschaffen<br />
falls nötig, alten Kachelinhalt<br />
zurückschreiben (Prozess wartet)<br />
Seiteninhalt in Kachel laden<br />
(Prozess wartet)<br />
Seitentabelle aktualisieren<br />
}<br />
●<br />
return from trap (Instruktion wird<br />
wieder aufgesetzt)<br />
Betriebssysteme WS 2012, Speicher 76<br />
Hermann Härtig, TU Dresden
Hauptspeicher: Betriebsmittelverwaltung<br />
Aufgaben<br />
• gewährt <strong>und</strong> entzieht bei Knappheit Kacheln<br />
• Buchführung → wo sind welche Kacheln?<br />
➔<br />
welche Kacheln werden verdrängt?<br />
Seitenaustauschverfahren<br />
●<br />
●<br />
Seitenverdrängung<br />
Seitenersetzung<br />
Betriebssysteme WS 2012, Speicher 77<br />
Hermann Härtig, TU Dresden
Seitenersetzungsverfahren<br />
Problem<br />
Eine Kachel wird benötigt, eine Seite ist zu verdrängen.<br />
➔<br />
wie <strong>und</strong> welche ??<br />
Wie wird verdrängt?<br />
Kachel aus Seitentabelle austragen (TLB-Eintrag löschen)<br />
falls modifiziert → zurückschreiben auf persistenten Speicher<br />
Welche Seite wird verdrängt?<br />
●<br />
optimal: die Seite wird verdrängt, die am spätesten<br />
in der Zukunft benutzt werden wird<br />
●<br />
stattdessen:<br />
– Betrachtung der Vergangenheit (verschiedene Algorithmen)<br />
– Ausnutzung des Lokalitätsverhaltens („Arbeitsmengen-Modell“)<br />
Betriebssysteme WS 2012, Speicher 78<br />
Hermann Härtig, TU Dresden
Seitenersetzung allgemein<br />
BS-seitig<br />
void init(Kachel) {<br />
Kachel.modified = 0;<br />
Kachel.referenced = 0;<br />
}<br />
BS-seitig<br />
void pagefault(Seiten_NR) {<br />
NewK = getFreieKachel();<br />
if (!NewK) {<br />
//keine Kachel mehr frei<br />
NewK = ErsetzungsStrategie();<br />
➔<br />
Hardwareseitig<br />
... Prozesse arbeiten ...<br />
HW setzt referenced- <strong>und</strong><br />
modified-Flag<br />
}<br />
//NewK ist jedoch noch in<br />
//Benutzung<br />
if (NewK.modified)<br />
writeToDisk(NewK, ...);<br />
removeFromPT(NewK);<br />
//aus alten AddrRäumen entfernen<br />
NewContent(NewK);<br />
//z.B. fillWithZero<br />
//oder readFromDisk(Seiten_Nr,NewK)<br />
insertIntoPT(Seiten_NR, NewK);<br />
//Kachel im richtigen AR, bei der<br />
//richtigen SeitenNR einfügen<br />
}<br />
Betriebssysteme WS 2012, Speicher 79<br />
Hermann Härtig, TU Dresden
Generelle Überlegung<br />
Tanenbaum<br />
MOS<br />
●<br />
Annahme:<br />
Ersetzungsstrategie<br />
basierend auf festen<br />
Inspektionsintervallen<br />
wähle beliebigen Rahmen im<br />
System nach folgender<br />
Priorität:<br />
1) nicht benutzt,<br />
nicht modifiziert<br />
2) benutzt,<br />
nicht modifiziert<br />
3) nicht benutzt,<br />
modifiziert<br />
4) benutzt, modifiziert<br />
Betriebssysteme WS 2012, Speicher 80<br />
Hermann Härtig, TU Dresden
Tanenbaum<br />
FIFO: First in first out<br />
MOS<br />
Verdränge älteste Seite<br />
➔<br />
d.h. Inhalt der Kachel, die schon am längsten ihren jetzigen<br />
Inhalt hat<br />
Vorteil<br />
• keine Information über tatsächliches<br />
Referenzverhalten nötig<br />
• einfach implementierbar<br />
Nachteil<br />
• ignoriert Lokalitätsverhalten<br />
• BELADY's Anomalie<br />
Betriebssysteme WS 2012, Speicher 81<br />
Hermann Härtig, TU Dresden
Tanenbaum<br />
LRU: Least Recently Used<br />
MOS<br />
Verdränge am längsten nicht genutzte Seite<br />
Vorteil<br />
●<br />
gilt als gute Näherung für optimalen Algorithmus<br />
Nachteil<br />
●<br />
aufwendige Realisierung<br />
jeder Speicherzugriff müsste berücksichtigt werden<br />
➔<br />
HW-Unterstützung wird benötigt<br />
➔<br />
Annäherungen per Software<br />
Betriebssysteme WS 2012, Speicher 82<br />
Hermann Härtig, TU Dresden
LRU Annäherung: Clock-Algorithmus<br />
L<br />
A<br />
B<br />
K<br />
C<br />
while (Kachel[i].referenced) {<br />
Kachel[i].referenced = 0;<br />
//Flag löschen<br />
i = (i + 1) % FRAME_COUNT;<br />
//Zeiger weiterdrehen<br />
}<br />
//Seite in Kachel Nummer i<br />
//verdrängen<br />
J<br />
I<br />
H<br />
G<br />
F<br />
E<br />
D<br />
Betriebssysteme WS 2012, Speicher 83<br />
Hermann Härtig, TU Dresden
LRU Annäherung: Aging<br />
●<br />
●<br />
●<br />
Kachel mit ältestem Inhalt wird verdrängt<br />
bessere Näherung: statt „0“ „1“ → feineres Altersraster<br />
Analogie: Geburtsjahr<br />
– 1982<br />
– 1985<br />
– 1986<br />
niedrige Zahl → hohes Alter<br />
Betriebssysteme WS 2012, Speicher 84<br />
Hermann Härtig, TU Dresden
LRU Annäherung: Aging<br />
void init(Kachel) {<br />
Kachel.modified = 0;<br />
Kachel.referenced = 0;<br />
}<br />
Hardware<br />
... Prozesse arbeiten ...<br />
➔ HW setzt referenced- <strong>und</strong><br />
modified-Flag<br />
BS-Thread:<br />
// at every „Tick“ call:<br />
void Aging(){<br />
for(i = 0; i < maxK; i++) {<br />
SetAge(Kachel[i].referenced);<br />
// nächste Folien<br />
Kachel[i].referenced = 0;<br />
}<br />
}<br />
Betriebssysteme WS 2012, Speicher 85<br />
Hermann Härtig, TU Dresden
LRU Annäherung: Aging<br />
Tanenbaum<br />
MOS<br />
0<br />
0 0 0 0 0<br />
0 0 0 0 0<br />
0 0 0 0 0<br />
0 0 0 0 0<br />
Betriebssysteme WS 2012, Speicher 86<br />
Hermann Härtig, TU Dresden
LRU Annäherung: Aging<br />
Tanenbaum<br />
MOS<br />
1<br />
A<br />
0 0 0 0 0<br />
0 0 0 0 0<br />
0 0 0 0 0<br />
D<br />
0 0 0 0 0<br />
Betriebssysteme WS 2012, Speicher 87<br />
Hermann Härtig, TU Dresden
LRU Annäherung: Aging<br />
Tanenbaum<br />
MOS<br />
2<br />
Tick 1<br />
A<br />
1 0 0 0 0<br />
0 0 0 0 0<br />
0 0 0 0 0<br />
D<br />
1 0 0 0 0<br />
Betriebssysteme WS 2012, Speicher 88<br />
Hermann Härtig, TU Dresden
LRU Annäherung: Aging<br />
Tanenbaum<br />
MOS<br />
3<br />
A<br />
B<br />
C<br />
D<br />
1 0 0 0 0<br />
0 0 0 0 0<br />
0 0 0 0 0<br />
1 0 0 0 0<br />
Betriebssysteme WS 2012, Speicher 89<br />
Hermann Härtig, TU Dresden
LRU Annäherung: Aging<br />
Tanenbaum<br />
MOS<br />
5<br />
A<br />
B<br />
C<br />
D<br />
0 1 0 0 0<br />
1 0 0 0 0<br />
1 0 0 0 0<br />
1 1 0 0 0<br />
Betriebssysteme WS 2012, Speicher 90<br />
Hermann Härtig, TU Dresden
LRU Annäherung: Aging<br />
Tanenbaum<br />
MOS<br />
4<br />
Tick 2<br />
A<br />
B<br />
C<br />
D<br />
0 1 0 0 0<br />
1 0 0 0 0<br />
1 0 0 0 0<br />
1 1 0 0 0<br />
Betriebssysteme WS 2012, Speicher 91<br />
Hermann Härtig, TU Dresden
LRU Annäherung: Aging<br />
Tanenbaum<br />
MOS<br />
2<br />
Tick 3<br />
A<br />
B<br />
C<br />
D<br />
1 0 1 0 0<br />
0 1 0 0 0<br />
1 1 0 0 0<br />
0 1 1 0 0<br />
Betriebssysteme WS 2012, Speicher 92<br />
Hermann Härtig, TU Dresden
LRU Annäherung: Aging<br />
Tanenbaum<br />
MOS<br />
1<br />
A<br />
B<br />
C<br />
D<br />
Seitenersetzung<br />
1 0 1 0 0<br />
0 1 0 0 0<br />
1 1 0 0 0<br />
0 1 1 0 0<br />
Age<br />
20<br />
8<br />
24<br />
12<br />
Betriebssysteme WS 2012, Speicher 93<br />
Hermann Härtig, TU Dresden
LRU Annäherung: Aging<br />
Tanenbaum<br />
MOS<br />
1<br />
A<br />
X<br />
C<br />
D<br />
Seitenersetzung<br />
1 0 1 0 0<br />
0 1 0 0 0<br />
1 1 0 0 0<br />
0 1 1 0 0<br />
Age<br />
20<br />
8<br />
24<br />
12<br />
Betriebssysteme WS 2012, Speicher 94<br />
Hermann Härtig, TU Dresden
Wegweiser: Virtueller Speicher<br />
Anliegen – Begriffe – Vorgehen<br />
Adressumsetzung<br />
Seitenersetzung<br />
Arbeitsmengenmodell<br />
Betriebssysteme WS 2012, Speicher 95<br />
Hermann Härtig, TU Dresden
Das Arbeitsmengenmodell (Working Set)<br />
Problem<br />
➔<br />
Seitenfehlerhäufung bei Prozessaktivierungen<br />
Gr<strong>und</strong>gedanken<br />
●<br />
Lokalitätsprinzip<br />
●<br />
Betrachtung der Seitenreferenzfolge eines Prozesses durch<br />
ein „Fenster“ der Länge T (sog. Arbeitsmengen-Parameter)<br />
Betriebssysteme WS 2012, Speicher 96<br />
Hermann Härtig, TU Dresden
Das Arbeitsmengenmodell (Working Set)<br />
●<br />
Arbeitsmenge w(t, T) zum Zeitpunkt t bzgl. T:<br />
Menge der im Intervall [t – T, t] referenzierten Seiten<br />
Erfahrung<br />
●<br />
max (Z(T)): theoretisch mögliche Maximalzahl von<br />
Speicherzugriffen in T Zeiteinheiten<br />
●<br />
|w(t, T)|
Das Arbeitsmengenmodell (Working Set)<br />
Vorgehen<br />
●<br />
●<br />
●<br />
Bestimmung der Arbeitsmenge bei jeder Seitenreferenz<br />
für aktive <strong>und</strong> bereite Prozesse muss sich genau die<br />
Arbeitsmenge im Speicher befinden<br />
Swapping, falls Rahmen fehlen<br />
→ Prepaging bei Wiedereinlagerung<br />
Probleme<br />
• Fenstergröße<br />
• Implementierung (prozesseigene Uhr!)<br />
• „Seitenflattern“ (Thrashing)<br />
• globale/lokale Ersetzung<br />
Betriebssysteme WS 2012, Speicher 98<br />
Hermann Härtig, TU Dresden
Seitenfehlerrate<br />
Tanenbaum<br />
MOS<br />
●<br />
Begrenzung der Anzahl von Prozessen <strong>und</strong> globaler<br />
Seitenaustausch<br />
●<br />
Ermittlung der Kachelanzahl:<br />
abhängig von Seitenfehlerrate<br />
Seitenfehlerrate r<br />
A<br />
B<br />
Kachelanzahl<br />
Betriebssysteme WS 2012, Speicher 99<br />
Hermann Härtig, TU Dresden
Tanenbaum<br />
Prozesslokaler vs. prozessglobaler Seitenaustausch<br />
MOS<br />
●<br />
●<br />
➔<br />
Seitenaustausch global für alle Prozesse<br />
Problem:<br />
„thrashing“ falls zu viele Prozesse<br />
Seitenaustausch prozesslokal<br />
(Zuteilung von Hauptspeicher an Prozesse)<br />
Problem:<br />
Ermittlung der Anzahl benötigter Kacheln<br />
Age<br />
A0 8<br />
A1 3<br />
A2 4<br />
A3 15<br />
A4 2<br />
A5 6<br />
B0 3<br />
B1 9<br />
B2 5<br />
C0 12<br />
C1 5<br />
C2 13<br />
C3 6<br />
C4 3<br />
C5 7<br />
C6 4<br />
Betriebssysteme WS 2012, Speicher 100<br />
Hermann Härtig, TU Dresden
Weiterer Gesichtspunkt: Wahl der Seitengröße<br />
➔<br />
Betriebssystem kann Seitengröße größer wählen als durch<br />
Hardware vorgegeben<br />
●<br />
HW mit mehreren Seitengrößen (Itanium, ARM)<br />
Entscheidungsgesichtspunkte<br />
• Zeit für Seiteneinlagerung<br />
• Verschnitt durch nicht voll genutzte Seiten<br />
• Lokalität von Zugriffen<br />
• TLB-Ausnutzung besser bei größeren Seiten<br />
• Größe von Verwaltungsdatenstrukturen<br />
Betriebssysteme WS 2012, Speicher 101<br />
Hermann Härtig, TU Dresden
Residente Seiten<br />
V<br />
virtuelle Adresse<br />
CPU<br />
E/A-<br />
Geräte<br />
MMU<br />
MEM<br />
P<br />
physische Adresse<br />
E/A – Einbindung<br />
●<br />
➔<br />
●<br />
häufige, aber schlechte Lösung:<br />
Kopieren in/aus residentem Zwischenpuffer<br />
besser: Residentsetzen beliebiger Adressbereiche,<br />
„Pinning“ - Umrechnen virtuell → real durch Treiber<br />
weitere Anwendung: zeitkritische Applikationen<br />
Betriebssysteme WS 2012, Speicher 102<br />
Hermann Härtig, TU Dresden
Wegweiser<br />
Arbeitsmengenmodell<br />
Speicherobjekte <strong>und</strong> Regionen<br />
(Adressraumstruktur)<br />
Segmentierung<br />
Caches<br />
Betriebssysteme WS 2012, Speicher 103<br />
Hermann Härtig, TU Dresden
Speicherobjekte<br />
●<br />
Text- (Code-), Daten-, ... -Segment eines Prozesses<br />
●<br />
Dateien (nächstes Kapitel)<br />
●<br />
Bildwiederholspeicher<br />
●<br />
BS-Datenstrukturen<br />
<br />
Thread Control Blocks<br />
<br />
<strong>Seitentabellen</strong><br />
<br />
...<br />
●<br />
Netzwerkobjekte<br />
Betriebssysteme WS 2012, Speicher 104<br />
Hermann Härtig, TU Dresden
Speicherobjekte <strong>und</strong> Regionen<br />
Datei, D08<br />
Datei, D47<br />
Betriebssysteme WS 2012, Speicher 105<br />
Hermann Härtig, TU Dresden
Speicherobjekte <strong>und</strong> Regionen<br />
Datei, D08<br />
Datei, D47<br />
Betriebssysteme WS 2012, Speicher 106<br />
Hermann Härtig, TU Dresden
Speicherobjekte <strong>und</strong> Regionen<br />
Datei, D08<br />
Datei, D47<br />
Betriebssysteme WS 2012, Speicher 107<br />
Hermann Härtig, TU Dresden
Speicherobjekte <strong>und</strong> Regionen<br />
Datei, D08<br />
Datei, D47<br />
Betriebssysteme WS 2012, Speicher 108<br />
Hermann Härtig, TU Dresden
Speicherobjekte <strong>und</strong> Regionen<br />
Regionmanager<br />
Datei, D08<br />
Datei, D47<br />
Betriebssysteme WS 2012, Speicher 109<br />
Hermann Härtig, TU Dresden
Aufbau der Adressraumstruktur<br />
●<br />
Regionen im Adressraum:<br />
explizites oder implizites Einbinden („Mappen“) von<br />
Speicherobjekten in den virtuellen Adressraum eines<br />
Prozesses<br />
●<br />
Operationen:<br />
map(Adresse, Länge, Speicherobjekt,<br />
Zugriffsrechte);<br />
lookup(Adresse, Zugriffart) -><br />
Speicherobjekt, Seitennummer innerhalb Obkekt<br />
oder nicht definiert<br />
oder Rechteverletzung<br />
Betriebssysteme WS 2012, Speicher 110<br />
Hermann Härtig, TU Dresden
Aufbau der Adressraumstruktur<br />
●<br />
z. B.<br />
map( ... , ... , Datei, R );<br />
map( ... , ... ,<br />
Bildwiederholspeicher, RW);<br />
●<br />
implizit: bei Prozesserzeugung werden Programm-, Keller-,<br />
Daten-Regionen gebildet (in Unix: „Segmente“)<br />
Betriebssysteme WS 2012, Speicher 111<br />
Hermann Härtig, TU Dresden
Regionmanager<br />
●<br />
Verwaltung der Adressraum-Struktur<br />
➔<br />
repräsentiert z. B. als verkettete Liste<br />
●<br />
Aufgabe bei Seitenfehler: Bestimmen von<br />
<br />
Fehlerart<br />
<br />
Speicherobjekt<br />
<br />
Speicherseite<br />
●<br />
Fehlerarten<br />
<br />
Zugriff auf ungültigen Bereich (z.B. Pointerfehler)<br />
<br />
Rechteverletzung (z.B. Schreiben in Code-Bereich)<br />
<br />
Copy On Write Fault<br />
<br />
sonst: Seite nicht in MMU eingetragen<br />
Betriebssysteme WS 2012, Speicher 112<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Netz<br />
Dateisysteme<br />
Platte<br />
Hauptspeicher<br />
Regionmanager<br />
Seitenersetzung<br />
Anonyme<br />
Speicher<br />
Betriebssysteme WS 2012, Speicher 113<br />
Hermann Härtig, TU Dresden
Speicherobjekte <strong>und</strong> Regionen<br />
Datei, D08<br />
Datei, D47<br />
Betriebssysteme WS 2012, Speicher 114<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Netz<br />
Dateisysteme<br />
Platte<br />
Hauptspeicher<br />
Regionmanager<br />
Seitenersetzung<br />
Anonyme<br />
Speicher<br />
Betriebssysteme WS 2012, Speicher 115<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Netz<br />
Datei, D47, 11<br />
Dateisysteme<br />
Platte<br />
Hauptspeicher<br />
Regionmanager<br />
Seitenersetzung<br />
Anonyme<br />
Speicher<br />
Betriebssysteme WS 2012, Speicher 116<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Netz<br />
Datei, D47, 11<br />
D47, 11 ??<br />
Dateisysteme<br />
Platte<br />
Hauptspeicher<br />
Regionmanager<br />
Seitenersetzung<br />
Anonyme<br />
Speicher<br />
Betriebssysteme WS 2012, Speicher 117<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Hauptspeicher<br />
Datei, D47, 11<br />
D47, 11 ??<br />
JA<br />
Regionmanager<br />
Seitenersetzung<br />
Dateisysteme<br />
Anonyme<br />
Speicher<br />
Netz<br />
Platte<br />
Betriebssysteme WS 2012, Speicher 118<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Netz<br />
Datei, D47, 11<br />
eintragen ST<br />
Dateisysteme<br />
Platte<br />
Hauptspeicher<br />
Regionmanager<br />
Seitenersetzung<br />
Anonyme<br />
Speicher<br />
Betriebssysteme WS 2012, Speicher 119<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Hauptspeicher<br />
Datei, D47, 11<br />
D47, 11 ??<br />
NEIN<br />
Regionmanager<br />
Seitenersetzung<br />
Dateisysteme<br />
Anonyme<br />
Speicher<br />
Netz<br />
Platte<br />
Betriebssysteme WS 2012, Speicher 120<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Hauptspeicher<br />
Datei, D47, 11<br />
Kachel frei ??<br />
JA<br />
Regionmanager<br />
Seitenersetzung<br />
Dateisysteme<br />
Anonyme<br />
Speicher<br />
Netz<br />
Platte<br />
Betriebssysteme WS 2012, Speicher 121<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Netz<br />
Datei, D47, 11<br />
Datei.read<br />
Dateisysteme<br />
Platte<br />
Hauptspeicher<br />
Regionmanager<br />
Seitenersetzung<br />
Anonyme<br />
Speicher<br />
Betriebssysteme WS 2012, Speicher 122<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Netz<br />
Datei, D47, 11<br />
eintragen ST<br />
Dateisysteme<br />
Platte<br />
Hauptspeicher<br />
Regionmanager<br />
Seitenersetzung<br />
Anonyme<br />
Speicher<br />
Betriebssysteme WS 2012, Speicher 123<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Hauptspeicher<br />
Datei, D47, 11<br />
Kachel frei ??<br />
NEIN<br />
Regionmanager<br />
Seitenersetzung<br />
Dateisysteme<br />
Anonyme<br />
Speicher<br />
Netz<br />
Platte<br />
Betriebssysteme WS 2012, Speicher 124<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Netz<br />
Datei, D47, 11<br />
auswählen<br />
Dateisysteme<br />
Platte<br />
Hauptspeicher<br />
Regionmanager<br />
Seitenersetzung<br />
Anonyme<br />
Speicher<br />
Betriebssysteme WS 2012, Speicher 125<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Netz<br />
Datei, D47, 11<br />
austragen ST<br />
Dateisysteme<br />
Platte<br />
Hauptspeicher<br />
Regionmanager<br />
Seitenersetzung<br />
Anonyme<br />
Speicher<br />
Betriebssysteme WS 2012, Speicher 126<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Netz<br />
Datei, D47, 11<br />
zu Objekt ??<br />
Dateisysteme<br />
Platte<br />
Hauptspeicher<br />
Regionmanager<br />
Seitenersetzung<br />
Anonyme<br />
Speicher<br />
Betriebssysteme WS 2012, Speicher 127<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Netz<br />
Hauptspeicher<br />
Datei, D47, 11<br />
Datei, D08, 15<br />
Datei.write<br />
Regionmanager<br />
Seitenersetzung<br />
Dateisysteme<br />
Anonyme<br />
Speicher<br />
Platte<br />
Betriebssysteme WS 2012, Speicher 128<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Netz<br />
Datei, D47, 11<br />
Datei.read<br />
Dateisysteme<br />
Platte<br />
Hauptspeicher<br />
Regionmanager<br />
Seitenersetzung<br />
Anonyme<br />
Speicher<br />
Betriebssysteme WS 2012, Speicher 129<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
Adressräume z. B. 4 GB<br />
Seite<br />
Kachel/Rahmen<br />
Block<br />
MMU<br />
Hardware<br />
Netz<br />
Datei, D47, 11<br />
eintragen ST<br />
Dateisysteme<br />
Platte<br />
Hauptspeicher<br />
Regionmanager<br />
Seitenersetzung<br />
Anonyme<br />
Speicher<br />
Betriebssysteme WS 2012, Speicher 130<br />
Hermann Härtig, TU Dresden
Das Zusammenspiel<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
Fehler<br />
Finde Objekt + Seite<br />
Suche ob Kachel schon vorhanden<br />
Falls ja eintragen fertig<br />
Falls nein, frei Kachel ???<br />
Falls frei Kachel vorhanden, Datei.read → eintragen in<br />
MMU #<br />
Falls keine freie Kchel → verdrängen (die geshared)<br />
Aus allen Seitentabelene austragen (Pfeile weg)<br />
Zu welche, Objekt gehört verdrängte Kachel?<br />
Datei.write<br />
●<br />
Siehe oben<br />
Betriebssysteme WS 2012, Speicher 131<br />
Hermann Härtig, TU Dresden
Speicherobjekte im Netz<br />
Rechner in einem<br />
verteilten System<br />
Botschaften<br />
über Internet<br />
Betriebssysteme WS 2012, Speicher 132<br />
Hermann Härtig, TU Dresden
Seitenfehlerbehandlung<br />
●<br />
●<br />
●<br />
MMU: welche Adresse, versuchte Operation<br />
welche Region <strong>und</strong> welche Seite innerhalb dieser Region<br />
welches Speicherobjekt <strong>und</strong> welche Seite darin<br />
●<br />
Anfrage bei Speicherobjekt:<br />
<br />
Ist diese Speicherobjektseite schon in einer Kachel?<br />
<br />
falls ja, weitergeben an MMU des auslösenden Prozesses,<br />
fertig<br />
<br />
falls nein, wo ist sie sonst? (z. B. Platte)<br />
●<br />
●<br />
●<br />
●<br />
Beschaffen einer freien Kachel<br />
ggf. muss eine belegte Kachel freigemacht werden<br />
Füllen der Kachel mit Inhalt (z.B. E/A von Platte)<br />
Weitergeben an MMU des auslösenden Prozesses, fertig<br />
Betriebssysteme WS 2012, Speicher 133<br />
Hermann Härtig, TU Dresden
Systemstrukturen für Speicherobjekte<br />
Unix/Windows/...: „monolithisch“<br />
●<br />
teilweise durch Prozesse (mit eigenem Adressraum) im<br />
User-Mode<br />
●<br />
großenteils aber fest in Betriebssystem integriert<br />
Mikrokernbasiert<br />
●<br />
alle Speicherobjekte bereitgestellt durch „Server“-Prozesse<br />
mit eigenem Adressraum <strong>und</strong> im User-Mode<br />
Betriebssysteme WS 2012, Speicher 134<br />
Hermann Härtig, TU Dresden
Prozess-Zustand<br />
Prozesse <strong>und</strong> Speicher<br />
●<br />
●<br />
<strong>Seitentabellen</strong><br />
mehrere parallele Aktivitäten je Adressraum: Threads<br />
Prozess-Umschaltung<br />
●<br />
●<br />
TLB behandeln (falls kein Prozess-Identifier in TLB → löschen)<br />
Caches<br />
●<br />
Botschaftenimplementierung ...<br />
Betriebssysteme WS 2012, Speicher 135<br />
Hermann Härtig, TU Dresden