So greifen Benutzer auf Seitentabellen zu

So greifen Benutzer auf Seitentabellen zu

Wie erfolgt die Adressübersetzung im Benutzermodus? Wenn der Benutzer eine separate Seitentabelle hat, wo werden diese gespeichert? Und wie greift der Benutzer auf Seitentabellen zu, die im Kerneladressraum eines Systems gespeichert sind, das über einen Hardware-Seitentabellen-Durchlaufmechanismus verfügt?

Antwort1

Der Kernel richtet die Seitentabellen für jeden Prozess ein. Die Zuordnung von virtuellen zu physischen Adressen erfolgt durch die Speicherverwaltungseinheit (MMU) in der Hardware. Dies geschieht transparent für den Benutzermoduscode. Der Benutzermodus ändert die Seitentabellen nicht und sie sind nur für den Kernel sichtbar.

Der virtuelle Adressraum des Prozesses ist in Bereiche mit unterschiedlichen Eigenschaften unterteilt: Einige Bereiche sind schreibgeschützt, andere schreibgeschützt und die meisten virtuellen Adressen haben normalerweise überhaupt keine Zuordnung. Zugriffsverletzungen werden vom Kernel behandelt. Wenn ein Prozess beispielsweise auf einen Speicherort zugreift, der keine Zuordnung zu einem physischen Speicherrahmen hat, wird eine Ausnahme ausgelöst. Diese Ausnahme (Trap) wird vom Kernelcode behandelt, der den Prozess beenden, ihm ein Signal senden oder vom Kernel transparent eine Zuordnung für die Seite erstellen kann.

Transparent (für den Benutzermoduscode) kann eine Seitenzuordnung erfolgen, weil die Seite ausgelagert wurde. In diesem Fall ordnet der sogenannte Seitenfehlerhandler die Seite einem freien physischen RAM-Frame zu und sorgt dafür, dass die Seite aus dem Auslagerungsspeicher eingelesen wird. Wenn die Seite wiederhergestellt wurde, wird die erneute Ausführung des Prozesses geplant und der Prozess kann die Ausführung fortsetzen, als wäre nichts geschehen.

verwandte Informationen