Sharing und invertierte Seitentabellen

Sharing und invertierte Seitentabellen Sharing und invertierte Seitentabellen

os.inf.tu.dresden.de
von os.inf.tu.dresden.de Mehr von diesem Publisher
18.11.2013 Aufrufe

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

<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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!