[gesichtete Version] | [gesichtete Version] |
Keine Bearbeitungszusammenfassung |
|||
Zeile 73: | Zeile 73: | ||
<br /> | <br /> | ||
==== Auslagern von modifizierten Seiten ==== | |||
<p> | |||
Es liegt auf der Hand, dass modifizierte Seiten nicht einfach ersetzt werden dürfen, bevor sie nicht im Hintergrundspeicher gesichert wurden. Ihre Inhalte wären andernfalls verloren, was negative Auswirkungen auf den betreffenden Prozess nach sich ziehen dürfte. Insbesondere könnten sie zu einem späteren Zeitpunkt nicht wieder eingelagert werden. | |||
</p> | |||
<br /> | |||
<p> | |||
<loop_area type="question"> | |||
<p> | |||
Wie kann das Betriebssystem aber feststellen, ob die Inhalte einer derzeit noch eingelagerten Seite modifiziert wurden, und so eine Auslagerung vor dem Ersetzen erforderlich wird? | |||
</p> | |||
</loop_area> | |||
</p> | |||
<br /> | |||
<p> | |||
Es gibt dafür eine ganz einfache Lösung: In den Seitentabellen wird eine zusätzliche Spalte ''Modifiziert'' eingeführt. Für jede einzelne Seite (d.h. in jedem Seitentabelleneintrag) wird mit Hilfe eines einzelnen Bits festgehalten, ob die betreffende Seite verändert wurde (das Bit ist gesetzt, also 1) oder nicht (das Bit ist nicht gesetzt, also 0). | |||
</p> | |||
<p> | |||
{{#index:Modifiziert-Bit|Seitentabelleneintrag, Modifiziert-Bit|M-Bit|Seitentabelleneintrag, M-Bit}} | |||
Man spricht hier vom sogenannten '''Modifiziert-Bit''', oder kurz vom '''M-Bit'''. | |||
</p> | |||
<p> | |||
Die MMU nimmt bei der (erfolgreichen) Umrechnung einer virtuellen in eine physikalischen Adresse ein Setzen des Bits im betreffenden Eintrag der Seitentabelle vor, sofern ein schreibender Zugriff auf die betreffende Speicherzelle erfolgen soll. | |||
</p> | |||
<br /> | |||
==== to do ==== | ==== to do ==== | ||
<p> | <p> |
Tritt bei der Adressumrechnung in der MMU ein Page fault auf, so muss das Betriebssystem dafür sorgen, dass die benötigte virtuelle Seite aus dem Hintergrundspeicher in einen freien Seitenrahmen des physikalischen Speichers eingelagert wird.
Steht derzeit aber kein freier Seitenrahmen zur Verfügung, so ist es die Aufgabe des implementierten Seitenersetzungsverfahrens zu entscheiden, welche momentan eingelagerte virtuelle Seite in den Hintergrundspeicher verschoben wird. Dadurch wird dann (mindestens) ein freier Seitenrahmen geschaffen, die benötigte virtuelle Seite kann eingelagert werden, und die MMU kann die zuvor gescheiterte Adressumrechnung erneut durchführen.
Eine einfache Beschreibung des Ablaufs einer Seitenersetzung ist wie folgt:
Das Schreiben der zu ersetzenden Seite E in den Hintergrundspeicher kostet viel Zeit! Das ist schlecht für die Performanz des Gesamtsystems.
Es ist deshalb sinnvoll, eine zu ersetzende Seite nur dann in den Hintergrundspeicher zu kopieren, wenn dies auch tatsächlich notwendig ist.
Eine Seite kann beispielsweise den Programmtext oder die Daten eines Prozesses enthalten.
Eine zu ersetzende Seite enthält lediglich Programmtext (also den ausführbaren Maschinencode mit den Befehlen) eines Prozesses. Diese Inhalte dürfen während der Ausführung des zugehörigen Prozesses nicht verändert werden.
Ist es erforderlich, diese Seite in den Hintergrundspeicher auszulagern, oder kann die dafür benötite Zeit eingespart werden? Erläutere deine Antwort!
Eine zu ersetzende Seite enthält Daten. Diese Inhalte können verändert worden sein, müssen aber es nicht.
Ist es erforderlich, diese Seite in den Hintergrundspeicher auszulagern, oder kann die dafür benötite Zeit eingespart werden? Erläutere deine Antwort!
Betrachte folgende Situationen:
Es liegt auf der Hand, dass modifizierte Seiten nicht einfach ersetzt werden dürfen, bevor sie nicht im Hintergrundspeicher gesichert wurden. Ihre Inhalte wären andernfalls verloren, was negative Auswirkungen auf den betreffenden Prozess nach sich ziehen dürfte. Insbesondere könnten sie zu einem späteren Zeitpunkt nicht wieder eingelagert werden.
Wie kann das Betriebssystem aber feststellen, ob die Inhalte einer derzeit noch eingelagerten Seite modifiziert wurden, und so eine Auslagerung vor dem Ersetzen erforderlich wird?
Es gibt dafür eine ganz einfache Lösung: In den Seitentabellen wird eine zusätzliche Spalte Modifiziert eingeführt. Für jede einzelne Seite (d.h. in jedem Seitentabelleneintrag) wird mit Hilfe eines einzelnen Bits festgehalten, ob die betreffende Seite verändert wurde (das Bit ist gesetzt, also 1) oder nicht (das Bit ist nicht gesetzt, also 0).
{{#index:Modifiziert-Bit|Seitentabelleneintrag, Modifiziert-Bit|M-Bit|Seitentabelleneintrag, M-Bit}} Man spricht hier vom sogenannten Modifiziert-Bit, oder kurz vom M-Bit.
Die MMU nimmt bei der (erfolgreichen) Umrechnung einer virtuellen in eine physikalischen Adresse ein Setzen des Bits im betreffenden Eintrag der Seitentabelle vor, sofern ein schreibender Zugriff auf die betreffende Speicherzelle erfolgen soll.
Im Laufe der Entwicklungsgeschichte von Betriebssystemen wurden eine ganze Reihe von Seitenersetzungsverfahren vorgeschlagen:
Siehe Mandl 2013 Kap. 7.2.3, 7.2.4
Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png