Betriebssystem - Virtueller Speicher
Ein Computer kann mehr Speicher adressieren als physisch auf dem System installiert ist. Dieser zusätzliche Speicher wird tatsächlich aufgerufenvirtual memory und es ist ein Abschnitt einer Festplatte, der so eingerichtet ist, dass er den RAM des Computers emuliert.
Der sichtbare Hauptvorteil dieses Schemas besteht darin, dass Programme größer als der physische Speicher sein können. Der virtuelle Speicher dient zwei Zwecken. Erstens können wir die Verwendung des physischen Speichers mithilfe der Festplatte erweitern. Zweitens können wir Speicherschutz haben, da jede virtuelle Adresse in eine physische Adresse übersetzt wird.
Es folgen die Situationen, in denen nicht das gesamte Programm vollständig in den Hauptspeicher geladen werden muss.
Vom Benutzer geschriebene Fehlerbehandlungsroutinen werden nur verwendet, wenn ein Fehler in den Daten oder in der Berechnung aufgetreten ist.
Bestimmte Optionen und Funktionen eines Programms werden möglicherweise nur selten verwendet.
Vielen Tabellen wird ein fester Adressraum zugewiesen, obwohl nur ein kleiner Teil der Tabelle tatsächlich verwendet wird.
Die Fähigkeit, ein Programm auszuführen, das sich nur teilweise im Speicher befindet, würde vielen Vorteilen entgegenwirken.
Zum Laden oder Austauschen jedes Benutzerprogramms in den Speicher wäre weniger E / A erforderlich.
Ein Programm würde nicht länger durch die Menge des verfügbaren physischen Speichers eingeschränkt.
Jedes Benutzerprogramm könnte weniger physischen Speicher beanspruchen, mehr Programme könnten gleichzeitig ausgeführt werden, mit einer entsprechenden Erhöhung der CPU-Auslastung und des Durchsatzes.
Moderne Mikroprozessoren für den allgemeinen Gebrauch, eine Speicherverwaltungseinheit oder MMU, sind in die Hardware integriert. Die Aufgabe der MMU besteht darin, virtuelle Adressen in physische Adressen zu übersetzen. Ein grundlegendes Beispiel ist unten angegeben -
Virtueller Speicher wird üblicherweise durch Demand Paging implementiert. Es kann auch in einem Segmentierungssystem implementiert werden. Die Anforderungssegmentierung kann auch zur Bereitstellung von virtuellem Speicher verwendet werden.
Paging anfordern
Ein Demand-Paging-System ähnelt einem Paging-System mit Swapping, bei dem sich Prozesse im Sekundärspeicher befinden und Seiten nur bei Bedarf und nicht im Voraus geladen werden. Wenn ein Kontextwechsel auftritt, kopiert das Betriebssystem keine der Seiten des alten Programms auf die Festplatte oder eine der Seiten des neuen Programms in den Hauptspeicher. Stattdessen beginnt es erst nach dem Laden der ersten Seite mit der Ausführung des neuen Programms und ruft diese ab Programm-Seiten, wie sie referenziert werden.
Wenn das Programm beim Ausführen eines Programms auf eine Seite verweist, die nicht im Hauptspeicher verfügbar ist, weil sie vor einiger Zeit ausgetauscht wurde, behandelt der Prozessor diese ungültige Speicherreferenz als page fault und überträgt die Steuerung vom Programm auf das Betriebssystem, um die Seite zurück in den Speicher zu fordern.
Vorteile
Im Folgenden sind die Vorteile von Demand Paging aufgeführt:
- Großer virtueller Speicher.
- Effizientere Speichernutzung.
- Der Grad der Mehrfachprogrammierung ist unbegrenzt.
Nachteile
Die Anzahl der Tabellen und der Prozessoraufwand für die Behandlung von Seiteninterrupts sind größer als bei den einfachen Seitenverwaltungstechniken.
Algorithmus zum Ersetzen von Seiten
Seitenersetzungsalgorithmen sind die Techniken, mit denen ein Betriebssystem entscheidet, welche Speicherseiten ausgetauscht werden sollen, und auf die Festplatte geschrieben werden soll, wenn eine Speicherseite zugewiesen werden muss. Paging tritt immer dann auf, wenn ein Seitenfehler auftritt und eine freie Seite nicht für Zuordnungszwecke verwendet werden kann, da Seiten nicht verfügbar sind oder die Anzahl der freien Seiten geringer als die erforderlichen Seiten ist.
Wenn die Seite, die zum Ersetzen ausgewählt und ausgelagert wurde, erneut referenziert wird, muss sie von der Festplatte eingelesen werden. Dies erfordert den Abschluss der E / A. Dieser Prozess bestimmt die Qualität des Seitenersetzungsalgorithmus: Je weniger Zeit auf Seiteneinträge gewartet wird, desto besser ist der Algorithmus.
Ein Seitenersetzungsalgorithmus untersucht die begrenzten Informationen zum Zugriff auf die von der Hardware bereitgestellten Seiten und versucht auszuwählen, welche Seiten ersetzt werden sollen, um die Gesamtzahl der Seitenfehler zu minimieren, während er mit den Kosten für Primärspeicher und Prozessorzeit des Algorithmus in Einklang gebracht wird selbst. Es gibt viele verschiedene Algorithmen zum Ersetzen von Seiten. Wir bewerten einen Algorithmus, indem wir ihn auf einer bestimmten Zeichenfolge von Speicherreferenzen ausführen und die Anzahl der Seitenfehler berechnen.
Referenzzeichenfolge
Die Zeichenfolge der Speicherreferenzen wird als Referenzzeichenfolge bezeichnet. Referenzzeichenfolgen werden künstlich oder durch Verfolgen eines bestimmten Systems und Aufzeichnen der Adresse jeder Speicherreferenz erzeugt. Die letztere Wahl erzeugt eine große Anzahl von Daten, wobei wir zwei Dinge beachten.
Für eine bestimmte Seitengröße müssen wir nur die Seitenzahl berücksichtigen, nicht die gesamte Adresse.
Wenn wir einen Verweis auf eine Seite haben p, dann alle unmittelbar folgenden Verweise auf Seite pwird niemals einen Seitenfehler verursachen. Seite p wird nach der ersten Referenz gespeichert; Die unmittelbar folgenden Referenzen sind nicht fehlerhaft.
Betrachten Sie beispielsweise die folgende Folge von Adressen: 123,215,600,1234,76,96
Wenn die Seitengröße 100 beträgt, lautet die Referenzzeichenfolge 1,2,6,12,0,0
FIFO-Algorithmus (First In First Out)
Die älteste Seite im Hauptspeicher ist diejenige, die zum Ersetzen ausgewählt wird.
Einfach zu implementieren, eine Liste zu führen, Seiten vom Ende zu ersetzen und neue Seiten am Kopf hinzuzufügen.
Optimaler Seitenalgorithmus
Ein optimaler Algorithmus zum Ersetzen von Seiten weist die niedrigste Seitenfehlerrate aller Algorithmen auf. Es gibt einen optimalen Algorithmus zum Ersetzen von Seiten, der als OPT oder MIN bezeichnet wurde.
Ersetzen Sie die Seite, die am längsten nicht verwendet wird. Verwenden Sie die Zeit, zu der eine Seite verwendet werden soll.
LRU-Algorithmus (Least Recent Used)
Die Seite, die am längsten nicht im Hauptspeicher verwendet wurde, wird zum Ersetzen ausgewählt.
Einfach zu implementieren, eine Liste zu führen, Seiten zu ersetzen, indem Sie in die Zeit zurückblicken.
Seitenpufferungsalgorithmus
- Halten Sie einen Pool freier Frames bereit, damit ein Prozess schnell startet.
- Wählen Sie bei einem Seitenfehler eine Seite aus, die ersetzt werden soll.
- Schreiben Sie die neue Seite in den Rahmen des freien Pools, markieren Sie die Seitentabelle und starten Sie den Prozess neu.
- Schreiben Sie nun die schmutzige Seite von der Festplatte und legen Sie den Rahmen mit der ersetzten Seite in den freien Pool.
Am wenigsten häufig verwendeter (LFU) Algorithmus
Die Seite mit der geringsten Anzahl wird zum Ersetzen ausgewählt.
Dieser Algorithmus leidet unter der Situation, dass eine Seite in der Anfangsphase eines Prozesses häufig verwendet wird, dann aber nie wieder verwendet wird.
Am häufigsten verwendeter (MFU) Algorithmus
Dieser Algorithmus basiert auf dem Argument, dass die Seite mit der geringsten Anzahl wahrscheinlich gerade erst eingefügt wurde und noch verwendet werden muss.