Ja, starten wir mal zunächst mit der Ladestrategie. Einen kurzen Überblick und dann werde ich ein
bisschen umfassender einen Aspekt der Seitenumlagerung erläutern. Es geht um die Einlagerung der
sogenannten Gebrauchsstücke, die wir ja in der letzten Vorlesung bei der Betrachtung der
Platzierungsstrategie schon kennengelernt haben. Diese Gebrauchsstücke sind jetzt hier bei der
Speichervirtualisierung praktisch ein umlagerungsfähiger Bestandteil eines Prozess-Adressraums,
wo praktisch Format und Größe eines solchen Stückes eben durch die MMU, durch die Adressumsetzungseinheit
bestimmt ist. Also hier sehen wir schon eine gewisse Hardware-Abhängigkeit. Format kann Seite
oder Segment sein und die Größe ist dann damit je nach Format fest oder eben veränderlich.
Für beide Formatarten gilt eigentlich das, was ich jetzt hier von einer rein konzeptionellen
Seite erläutere, aber praktisch durchgesetzt hat sich diese Speichervirtualisierung bezüglich Seiten,
deshalb reden wir auch von Seitenumlagerung und von Paging und da werden wir uns deshalb eben auch
im weiteren Verlauf der Vorlesungen dann darauf konzentrieren auf die Seitenumlagerung,
Seiteneinlagerung, Erseitenersetzung. Nun, wir sprechen einmal von der sogenannten Einzelanforderung,
On-Demand Paging zum Beispiel. Diese Einzelanforderung wird gesteuert durch ein Präsenzbild in dem
entsprechenden Diskriptor für dieses Gebrauchsstück. Der Diskriptor, der von der Adressumsetzungseinheit in
Abhängigkeit von der jeweiligen virtuellen Adresse, denn aus der Tabelle, aus der Seitensegmenttabelle,
Seitentabelle ausgelesen wird und da schaut man nach, also die RMU überprüft letztendlich,
ob denn der Zugriff auf dieses, auf diesen Stück Speicherbereich jetzt wirklich möglich ist. Das
wäre nämlich genau dann der Fall, wenn dieses Gebrauchsstück, wenn die Seite das Segment anwesend
ist oder ob der Zugriff eben jetzt direkt nicht möglich ist. Das heißt, die Seite oder das Segment
eben ausgelagert ist und das würde dann zu dem sogenannten Page Fault oder Segment Fault
letztendlich führen. Seitenfehler, Segmentfehler, der dann halt vom Betriebssystem behandelt werden
muss. Und genau dann in dem Fall, in dem Fall der Abwesenheit wird eben die partielle Interpretation
des Zugriffs als Ausnahmabehandlung verstanden und eben durch das Betriebssystem durchgeführt.
Veranlassen tut diese partielle Interpretation die RMU, das ist der Trepp, der Page Fault zum
Beispiel, der eben ausgelöst wird und damit der laufende Prozess letztendlich unterbrochen wird,
auf Basis der Tatsache, dass in dem betreffenden Seiten des Skripto oder Segmentes Skripto, das
Präsenzbit eben auf Null ist, also Anzeige, dass das Gebrauchsstück nicht anwesend im Hauptspeicher
ist. Die andere Variante ist das Vorausladen, antizipatorisch vorangehen. Das heißt, man möchte
ja eigentlich diesen Einzelanforderungen zuvorkommen, dem Trepp, die Treppehandlung,
die damit verbunden ist. Das ist das, was man als Pre-Fetching, so Vorabruf von Seiten von
Segmenten denn bezeichnen würde. Dazu müsste man natürlich wissen, wann man welche Seite praktisch
referenzieren würde. Oder man lässt einen Trepp zu und sieht dann zu, dass man mögliche Folgefehler
bei der weiteren Ausführung dieses jetzt gerade unterbrochenen Maschinenbefehls denn in
Octaform vermieden werden können. Da gehe ich dann gleich später nochmal drauf ein. Nun, wichtig ist
hier für das Vorausladen eigentlich die zukünftigen Zugriffe zu identifizieren und dazu kann man
eigentlich heute nur auf Heuristiken zurückgreifen, die dann die entsprechenden Hinweise darüber
geben, ob denn ein Prozess einen bestimmten Speicherbereich in seinem Adressraum denn
referenzieren wird oder nicht. Und das hat dann wiederum mit der sogenannten Prozesslokalität
zu tun. Ein anderer Begriff, den wir denn später in der Vorlesung noch behandeln werden, ist der
Begriff der sogenannten Arbeitswänge, der Working Set eines solchen Prozesses. Wenn man diese
Informationen halt hat, dann kann man eigentlich gut vorhersagen, wann bestimmte Speicherbereiche
für den Prozess im Hauptspeicher verfügbar sein müssen, damit der Prozess ohne Unterbrechung
sozusagen ausgeführt und fortgesetzt werden kann. Nun, dieses Vorausladen wird immer durchs
Betriebssystem veranlasst. Initial kann für den ersten Trepp, den man hat, natürlich der
NMU verantwortlich sein, aber wenn man denn voraus von Vorausladen und vom Nachladen diesbezüglich
dann halt spricht, dann ist das Betriebssystem aufgrund der Treppehandlung ja schon aktiv und
wird dann halt weitere Maßnahmen praktisch ergreifen können. Nun, möglicherweise kann in beiden Fällen
hier jetzt die Verdrängung von anwesenden Stücken von sich im hauptspeicherbefindlichen Speicherbereichen
von demselben oder von anderen Prozessen geschehen. Das ist genau das, was die Ersetzung denn ausmacht
Presenters
Zugänglich über
Offener Zugang
Dauer
00:18:08 Min
Aufnahmedatum
2021-01-18
Hochgeladen am
2021-01-18 11:29:50
Sprache
de-DE