2012-04-15 7 views
0

Haftungsausschluss: Diese Frage bezieht sich auf meine Betriebssystemklasse. Es ist jedoch keine spezielle Hausaufgabenfrage. Ich versuche nur zu verstehen.Bedarfspaging-Austauschrahmen

Hier ist, was ich denke, dass ich über Nachfrage Paging bis jetzt weiß. Jeder Prozess hat seine eigene Paging-Tabelle. Diese Tabelle enthält einen Index der logischen Adresse, ihre entsprechende physikalische Adresse und ein gültiges/ungültiges Bit, das anzeigt, ob die Seite gerade in den Hauptspeicher geladen ist.

Wenn auf eine Seite zugegriffen wird, wenn das Gültig/Ungültig-Bit auf Gültig gesetzt ist, wird einfach über den logischen Adresseintrag in der Tabelle auf die Seite im Hauptspeicher zugegriffen. Wenn die Seite nicht im physischen Speicher enthalten ist, wird ein Seitenfehler generiert. Dies bewirkt, dass das Programm versucht, die Seite in den Speicher zu laden.

Das System prüft zuerst, ob die angeforderte Adresse gültig ist. Wenn nicht, wird der Prozess beendet. Wenn die Adresse gültig ist, prüft das System auf freie Frames. Wenn ein freier Rahmen gefunden wird, lädt das System die angeforderten Daten von der Platte und platziert sie in dem freien Rahmen. Das Gültig/Ungültig-Bit wird in der Paging-Tabelle auf gültig gesetzt, die logische Adresse wird auf den zuvor freien Rahmen gesetzt, und das Programm kann weiter ausgeführt werden.

Wenn keine freien Frames vorhanden sind, muss das System einen aktuell verwendeten Frame austauschen und die angeforderten Daten in den Frame einfügen. Das System ermittelt einen Algorithmus wie LRU, MRU usw. um festzustellen, welche Seite ausgelagert werden soll. Das System tauscht die alte Seite aus, lädt die neue Seite und gibt dann die Kontrolle an den Prozess zurück.

Hier ist meine Frage: Wenn das Vollbild ausgelagert wird, wie wird das gültige/ungültige Bit einer Paging-Tabelle, die auf diesen Rahmen zugreift, gesetzt? Das heißt, wie weiß das System, dass die Paging-Tabelle eines Prozesses auf den Rahmen zugreift, der ausgelagert wird?

Hier ist ein Beispiel. Angenommen, es gibt zwei Verfahren jeweils mit Paging-Tabellen der Größe 2 und einem physikalischen Speicher der Größe 2. die Paging-Tabellen der Prozesse lassen sich wie folgt:

Prozess ein virtuelles Speicher:

Address Contents 
0  'A' 
1  'B' 

Verfahren B virtueller Speicher:

Address Contents 
0  'C' 
1  'D' 

Verfahren A Paging-Tabelle:

Logical Physical Valid/Invalid 
0  0   Valid 
1  0   Invalid 

Verfahren B Paging-Tabelle:

Logical Physical Valid/Invalid 
0  1   Valid 
1  0   Invalid 

Hauptspeicher:

Address Contents 
0  'A' 
1  'C' 

nun ein suppose Prozess versucht, seine logische Adresse von B. den Zugriff auf das System-Swaps aus dem Inhalt der Hauptspeicheradresse 1 und Swaps "D". Wie kann das System das gültige/ungültige Bit für die logische Adresse 0 in der B-Paging-Tabelle von Process auf ungültig setzen?

Antwort

1

Es gibt mehr Steuerfelder entweder in den Seitentabellen selbst oder an anderer Stelle im Betriebssystemkernel, um zwischen einem Speicherbereich zu unterscheiden, der überhaupt nicht zugeordnet ist (wurde nie zugeordnet/zugeordnet oder freigegeben/nicht zugeordnet) und einem Speicher Bereich, der auf einen Speicherort zeigt, der ausgelagert wurde. In beiden Fällen kann auf den Bereich nicht zugegriffen werden, und ein Zugriff führt zu einem Seitenfehler, aber das Betriebssystem behandelt diesen Seitenfehler in diesen Fällen anders. In ersterer beendet es den Prozess.Im letzteren Fall versucht es, die Daten in den Speicher zurückzubringen und die Zuordnung in einen Zustand wiederherzustellen, in dem auf die Daten zugegriffen werden kann.

Das Betriebssystem weiß, wo Seiten des physischen Speichers verwendet werden. Es durchsucht entweder Seitentabellen, um das herauszufinden, oder konsultiert seine eigenen Datenstrukturen, die es unterhält. Wenn das Betriebssystem eine Seite von einem Prozess stehlen muss, wird es gespeichert (wenn es modifiziert wurde), es ändert das Mapping, so dass der Prozess nicht mehr direkt auf diese Seite zugreifen kann, ohne das Betriebssystem zu intervenieren, dann diese Seite woanders wieder verwendet, z. in einem anderen Prozess, indem Sie sie mit den richtigen Daten füllen und sie entsprechend abbilden, so dass der Prozess auf die Daten zugreifen kann.

+0

Ehrfürchtig. Das musste ich wissen. Danke für die Hilfe. – LandonSchropp