Swap Space Management während des reinen Demand Paging

  • Das Folgende ist ein Zweifel, auf den ich bei einem OS-Home-Auftrag gestoßen bin - es scheint jedoch eher konzeptbasiert als eine einfache Codierungsfrage zu sein, daher denke ich nicht, dass der Hausaufgabe-Tag das ist Hierfür ist es angebracht.

    In einem reinen Paging-Bedarfsschema für mehrere Prozesse, die gleichzeitig ausgeführt werden, bei einer festen Menge an RAM und Swap-Speicher, was in den folgenden 2 Fällen der Fall ist der Auslagerungsbereich, wenn

    1. ein Prozess auf einen Seitenfehler stößt und keine freien Frames im Arbeitsspeicher verfügbar sind, weshalb einer davon benötigt wird Die Seiten aus dem Prozess-Teil der Kernel-Frames, die zum Auslagern ausgeschrieben werden sollen (der Einfachheit halber denke ich nicht an den Fall des Copy-on-Write). Wo genau wird dieser Frame in den Swap-Bereich geschrieben und welche Datenstrukturen müssen dafür aktualisiert werden?

    2. Wenn ein Prozess ein Page-in-ein-System benötigt auf welcher Seite wird sie im Swap-Speicher angezeigt und woher soll sie wissen, ob diese Seite überhaupt in Swap vorhanden ist?

    < Wie Sie sich gut vorstellen können, habe ich Schwierigkeiten zu verstehen, auf welche Weise der Swap-Bereich während eines reinen Demand-Management-Schemas verwaltet werden muss und welche Datenstrukturen wesentlich sind. Es wäre großartig, wenn Sie in Ihrer Antwort auf Links verweisen könnten (ich habe in "Betriebssystemkonzepte - 8. Auflage von Silberschatz gesucht, ich konnte keine explizite Antwort auf meine Frage finden)."

    29 May 2012
    Raphael
1 answer
  • Um diese Frage zu beantworten, besuche ich einige Voraussetzungen. Ein reines Demand Paging ist ohne Hardwareunterstützung nicht möglich. Alle modernen Computerarchitekturen unterstützen Paging, jedoch weisen viele unterschiedliche Implementierungsdetails auf.

    x86-Prozessoren verwenden eine so genannte Seitentabelle, um virtuelle Adressräume und Seitenzuordnungen sowie Bits zu Zugriffsberechtigungen und, relevanter, ob diese Seite, zu verfolgen ist sogar im physischen Speicher vorhanden. Verstöße lösen Seitenfehler aus, die vom Betriebssystem aufgefangen werden.

    Weitere Informationen hierzu finden Sie unter dieser Artikel .

    Um die Frage des Seitenwechsels zu beantworten, müssen wir zunächst die Frage beantworten, wie das Betriebssystem welche Seiten verfolgt werden von welchem ​​Prozess und wie sie zugeteilt werden. Es gibt viele verschiedene Datenstrukturen, die dafür verwendet werden können. Ein Flat-Bit-Array, das angibt, ob ein Frame zugewiesen ist oder nicht, ist eine Möglichkeit. Verknüpfte Listen oder Stapel sind eine andere. Beim reinen Demand-Paging werden zugewiesene Seiten bei ihrer Zuweisung tatsächlich nicht als vorhanden markiert. Dies hat den Effekt, dass kein physischer RAM für einen Prozess reserviert wird, bis er tatsächlich in ihn schreibt. Sobald dies der Fall ist, wirft die Hardware einen Fehler ab, den das Betriebssystem abfängt, und dann verwendet das Betriebssystem einen Auslagerungsalgorithmus, wenn keine physischen Seiten verfügbar sind, die der bereits zugewiesenen virtuellen Seite zugewiesen werden.

    Weitere Informationen zur Zuweisung von Seitenrahmen finden Sie hier . Dort erhalten Sie einen allgemeinen Überblick über einige geeignete Datenstrukturen.

    Wenn ein geeigneter Algorithmus für die Seitenzuweisung implementiert ist, muss ein anderer für die Zuweisung von Festplattenspeicher für das Auslagern ausgewählt werden. Windows hat zum Beispiel früher eine flache Datei im Dateisystem für das Auslagern von Seiten verwendet. Ich könnte mir vorstellen, dass es für jeden Knoten in der Datenstruktur, der die zugewiesenen Seiten verfolgt, eine Zuordnung gibt

    30 May 2012
    Raphael