Um diese Frage zu beantworten, werde ich einige Voraussetzungen für ein Verständnis besuchen. Pure Demand Paging kann ohne Hardware-Unterstützung nicht durchgeführt werden. Alle modernen Computerarchitekturen unterstützen Paging, viele haben jedoch unterschiedliche Implementierungsdetails.
x86-Prozessoren verwenden eine sogenannte Seitentabelle, um virtuelle Adressräume und Seitenzuordnungen sowie Informationen zu Zugriffsberechtigungen und, was noch relevanter ist, ob diese Seite überhaupt im physischen Speicher vorhanden ist oder nicht, zu verfolgen . Verstöße lösen Seitenfehler aus, die vom Betriebssystem abgefangen werden.
Weitere Informationen hierzu finden Sie in diesem Artikel .
Um die Frage des Seitentauschs zu beantworten, müssen wir zunächst die Frage beantworten, wie das Betriebssystem verfolgt, welche Seiten von welchem Prozess verwendet werden und wie sie zugewiesen werden. Es gibt viele verschiedene Datenstrukturen, die für solche 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 andere. Bei reinem Bedarfs-Paging werden zugewiesene Seiten bei der Zuweisung nicht als vorhanden markiert. Dies hat zur Folge, dass kein physischer RAM für einen Prozess reserviert wird, bis er tatsächlich darauf schreibt. Sobald dies der Fall ist, gibt die Hardware einen Fehler aus, den das Betriebssystem abfängt, und das Betriebssystem verwendet einen Auslagerungsalgorithmus, wenn keine physischen Seiten verfügbar sind, die der bereits zugewiesenen virtuellen Seite zugewiesen werden können.
Weitere Informationen zur Zuweisung von Seitenrahmen finden Sie hier . Dort sehen Sie einen allgemeinen Überblick über einige geeignete Datenstrukturen.
Sobald ein geeigneter Algorithmus für die Seitenzuweisung implementiert ist, muss ein anderer für die Zuweisung von Speicherplatz zum Austauschen ausgewählt werden. Windows hat beispielsweise in der Vergangenheit eine flache Datei im Dateisystem zum Austauschen von Seiten verwendet. Ich würde mir vorstellen, dass für jeden Knoten in der Datenstruktur, der die zugewiesenen Seiten verfolgt, ein zugeordneter Zeiger auf einen Versatz in der Datei vorhanden ist, der die Position der Seite auf der Festplatte angibt. Unix-ähnliche Betriebssysteme haben traditionell separate Partitionen für den Seitentausch verwendet, was wohl schneller ist, da es keine Dateisystemschicht gibt.
Es ist auch möglich, die Datenstrukturen des Swap-Algorithmus von denen des Zuordnungsalgorithmus zu trennen, die beiden sind jedoch miteinander verbunden, so dass dies wahrscheinlich nicht oft durchgeführt wird.
Ich hoffe, das beantwortet Ihre Frage trotz der relativen Kürze, mit der ich sie behandelt habe. Ich fand heraus, dass der beste Weg, um mehr über Betriebssysteme zu erfahren, darin besteht, in die manchmal unangenehmen architektonischen Details einzutauchen, die auf Websites wie wiki.osdev.org und www.osdever.net zu finden sind, die sich speziell mit der Erstellung von Hobby-Betriebssystemen befassen und hervorragende Tutorials bereitstellen auf solche Details.