Speicherpaging

Im Computer Betriebssysteme, Speicherpaging ist ein Speicherverwaltung Schema, mit dem ein Computer Daten speichert und abholt Zweitlager[a] zur Verwendung in Haupterinnerung. In diesem Schema ruft das Betriebssystem Daten aus dem Sekundärspeicher in gleicher Größe ab Blöcke genannt Seiten. Paging ist ein wichtiger Teil von virtueller Speicher Implementierungen in modernen Betriebssystemen unter Verwendung eines Sekundärspeichers, um die Programme die Größe des verfügbaren physischen Speichers zu überschreiten.

Der Einfachheit halber heißt das Hauptgedächtnis "RAM" (ein Akronym von Arbeitsspeicher) und sekundärer Speicher werden als "Festplatte" bezeichnet (eine Abkürzung für Festplatte, Drum -Speicher oder Festkörperantriebusw.), aber wie bei vielen Aspekten des Computers sind die Konzepte unabhängig von der verwendeten Technologie.

Geschichte

Ferranti stellte das Paging auf dem vor AtlasAber die ersten Massenmarket-Speicherseiten waren Konzepte in der Computerarchitektur, unabhängig davon, ob eine Seite zwischen RAM und Disk bewegt wurde.[1][2] Zum Beispiel auf der PDP-87 der Befehlsbits umfassten eine Speicheradresse, die eine von 128 ausgewählt hat (27) Wörter. Diese Speicherzone wurde a genannt Seite. Diese Verwendung des Begriffs ist jetzt selten. In den 1960er Jahren war Tausch eine frühe virtuelle Erinnerungstechnik. Ein ganzes Programm würde "ausgetauscht" (oder "ausgerollt") von RAM zu Scheibe, und ein anderes wäre ausgetauscht (oder hineingerollt).[3][4] Ein ausgetauschtes Programm wäre aktuell, aber seine Ausführung würde ausgesetzt, während sein RAM von einem anderen Programm verwendet wurde.

Ein Programm könnte mehrere enthalten Overlays Das besetzt das gleiche Gedächtnis zu unterschiedlichen Zeiten. Überlagerungen sind keine Methode, um RAM auf Festplatte zu pageln, sondern lediglich die minimierende Verwendung der RAM -Verwendung des Programms. Nachfolgende Architekturen verwendet Speichersegmentierungund individuelle Programmsegmente wurden zu den Einheiten, die zwischen Scheibe und RAM ausgetauscht wurden. Ein Segment war das gesamte Codesegment oder Datensegment des Programms oder manchmal auch andere große Datenstrukturen. Diese Segmente mussten sein zusammenhängend Wenn Sie in RAM ansässig sind und zusätzliche Berechnung und Bewegung zum Abhilfe benötigen Zersplitterung.[5]

Die Erfindung der Seitentabelle Lassen Sie den Prozessor auf beliebigen Seiten im RAM als scheinbar zusammenhängender arbeiten logische Adresse Platz. Diese Seiten wurden zu den Einheiten, die zwischen Scheibe und RAM ausgetauscht wurden.

Seitenfehler

Wenn ein Prozess versucht, auf eine derzeit in RAM nicht vorhandene Seite zu verweisen, behandelt der Prozessor diese ungültige Speicherreferenz als a Seitenfehler und überträgt die Kontrolle vom Programm an das Betriebssystem. Das Betriebssystem muss:

  1. Bestimmen Sie den Ort der Daten auf der Festplatte.
  2. Ein leer erhalten Seitenrahmen in RAM als Container für die Daten verwendet.
  3. Laden Sie die angeforderten Daten in den verfügbaren Seitenrahmen.
  4. Aktualisieren Sie die Seitentabelle Um den neuen Seitenrahmen zu beziehen.
  5. Rückgabe die Kontrolle an das Programm, transparent die Wiederholung des Programms Anweisung Das verursachte den Seitenfehler.

Wenn alle Seitenrahmen verwendet werden, muss das Betriebssystem einen Seitenrahmen auswählen, um für die Seite wiederzuverwenden. Das Programm benötigt jetzt. Wenn der vergebene Seitenrahmen war dynamisch zugewiesen Durch ein Programm, um Daten zu halten, oder wenn ein Programm es geändert hat, da es in RAM gelesen wurde (mit anderen Worten, wenn es "schmutzig" geworden ist), muss es vor dem Freigegebenen an die Festplatte geschrieben werden. Wenn auf ein Programm später auf die Seite der ausgegebenen Seite verweist, erfolgt ein weiterer Seitenfehler und die Seite muss wieder in den RAM gelesen werden.

Die Methode, die das Betriebssystem verwendet Seitenersatzalgorithmus, ist wichtig für die Effizienz. Das Betriebssystem prognostiziert den Seitenrahmen, der am wenigsten benötigt wird, oft durch die zuletzt benutzt (LRU) Algorithmus oder Algorithmus basierend auf dem Programm des Programms Workingset. Um die Reaktionsfähigkeit weiter zu erhöhen, können Paging -Systeme vorhersagen, welche Seiten in Kürze benötigt werden und sie präventiv in RAM beladen, bevor ein Programm sie verweist.

Seitenersatztechniken

Paging fordern
Wenn das Paging von reinem Nachfrage verwendet wird, werden Seiten nur dann geladen, wenn sie verwiesen werden. Ein Programm aus einer von Speicher zugeordneten Datei beginnt die Ausführung mit keinem seiner Seiten im RAM. Da das Programm Seitenfehler begeht, kopiert das Betriebssystem die benötigten Seiten einer Datei, z. B.. Speicher-abgebildete Datei, Paging -Datei oder eine Swap -Partition, die die Seitendaten in RAM enthält.

Vorweggenommene Paging
Diese Technik, manchmal auch genannt Prefetchtaugen, Vorhersagen, auf welche Seiten bald verwiesen werden, um zukünftige Seitenfehler zu minimieren. Nach dem Lesen einer Seite, um einen Seitenfehler zu bedienen Referenzort). Wenn ein Programm endet, kann das Betriebssystem seine Seiten frei verzögern, falls der Benutzer dasselbe Programm erneut ausführt.
Kostenlose Seitenwarteschlange, Diebstahl und Rückgewinnung
Die kostenlose Seitenwarteschlange ist eine Liste der Seitenrahmen, die zur Verfügung stehen. Das Verhindern, dass diese Warteschlange leer ist, minimiert das Computer, das für die Bereitstellung eines Seitenfehlers erforderlich ist. Einige Betriebssysteme suchen regelmäßig nach Seiten, auf die in letzter Zeit nicht verwiesen wurde, und fügt den Seitenrahmen anschließend frei und fügen Sie die kostenlose Seitenwarteschlange hinzu, einen Prozess, der als "Seitenstehlen" bezeichnet wird. Einige Betriebssysteme[b] Unterstützung Seitengewinnung; Wenn ein Programm einen Seitenfehler begeht, indem auf eine gestohlene Seite verwiesen wird, erkennt das Betriebssystem dies und stellt den Seitenrahmen wieder her, ohne den Inhalt wieder in den RAM lesen zu müssen.
Vorreinigung
Das Betriebssystem kann regelmäßig schmutzige Seiten vor der Verringerung vor der Scheibe zurückschreiben, obwohl sie möglicherweise weiter geändert werden. Dies minimiert die Reinigung, die erforderlich ist, um neue Seitenrahmen zu erhalten, in dem ein neues Programm beginnt oder eine neue Datendatei geöffnet wird, und verbessert die Reaktionsfähigkeit. (UNIX -Betriebssysteme verwenden regelmäßig Synchronisation Alle schmutzigen Seiten vorzubereiten; Windows -Betriebssysteme verwenden "Modified Page Writer" -Threads.)

Prügel

Nach Abschluss der Initialisierung arbeiten die meisten Programme im Vergleich zum Gesamtspeicher, das das Programm benötigt, auf einer geringen Anzahl von Code- und Datenseiten. Die am häufigsten zugegriffenen Seiten werden als die genannt Workingset.

Wenn der Arbeitssatz ein kleiner Prozentsatz der Gesamtzahl der Seiten des Systems ist, funktionieren virtuelle Speichersysteme am effizientesten und es wird eine unbedeutende Menge an Computing aufgelöst, Seitenfehler. Wenn der Arbeitssatz wächst, bleibt die Auflösungsfehler überschaubar, bis das Wachstum einen kritischen Punkt erreicht. Dann steigen die Fehler dramatisch und die Zeit, die sie aufgelöst hat, überwältigt die Zeit, die das Programm für das Programm aufgewendet hat, wurde geschrieben. Diese Bedingung wird als bezeichnet als Prügel. Thrashing tritt in einem Programm auf, das mit riesigen Datenstrukturen funktioniert, da der große Arbeitssatz kontinuierliche Seitenfehler verursacht, die das System drastisch verlangsamen. Befriedigende Seitenfehler erfordern möglicherweise Seiten, die bald von der Festplatte gelesen werden müssen. "Thrashing" wird auch in anderen Kontexten als virtuelle Speichersysteme verwendet. Zum Beispiel beschreiben Zwischenspeicher Probleme beim Computer oder Dummes Fenster -Syndrom in Networking.

Ein schlimmster Fall kann auf eintreten Vax Prozessoren. Eine einzelne MOVL -Überquerung einer Seitengrenze könnte einen Quelloperanden haben, der einen verschobenen Adressmodus mit Verschiebung unter Verwendung des Langwords mit einer Seitengrenze überschreitet, und ein Zielbetrieb unter Verwendung eines verdrängten aufgeschobenen Adressierungsmodus, in dem das Langwort mit dem Operand -Adressübergang enthält, überkreuzt Eine Seitengrenze sowie Quelle und Ziel könnten beide Seitengrenzen überschreiten. Diese einzige Anweisung verweist zehn Seiten; Wenn nicht alle im RAM sind, verursacht jeder einen Seitenfehler. Da jeder Fehler auftritt, muss das Betriebssystem die umfangreichen Speicherverwaltungsroutinen durchlaufen, was möglicherweise mehrere I/O -OS verursacht, die möglicherweise andere Prozessseiten auf Festplatten und Lesen von Seiten des aktiven Prozesses von der Festplatte einbeziehen. Wenn das Betriebssystem diesem Programm nicht zehn Seiten zuordnen könnte, würde die Behebung des Seitenfehlers eine andere Seite der Anweisungsbedürfnisse verwerfen, und jeder Neustart der Anweisung würde erneut beschuldigt.

Um übermäßige Paging- und Lösung von Thrashing -Problemen zu verringern, kann ein Benutzer die Anzahl der verfügbaren Seiten pro Programm erhöhen, indem entweder weniger Programme gleichzeitig ausgeführt oder die Menge an RAM im Computer erhöht werden.

Teilen

Im Mehrprogrammierung oder in a Multi-User Umgebung, viele Benutzer können das gleiche Programm ausführen, das so geschrieben wird, dass der Code und die Daten auf separaten Seiten enthalten sind. Um die RAM -Verwendung zu minimieren, teilen alle Benutzer eine einzige Kopie des Programms. Jedes Prozess Seitentabelle ist so eingerichtet, dass die Seiten, die Code Adressierung auf die einzelne gemeinsame Kopie verweisen, während die Seiten, die Daten angehen, auf verschiedene physische Seiten für jeden Prozess hinweisen.

Verschiedene Programme verwenden möglicherweise auch dieselben Bibliotheken. Um Platz zu sparen, wird nur eine Kopie der freigegebenen Bibliothek in den physischen Speicher geladen. Programme, die dieselbe Bibliothek verwenden, haben virtuelle Adressen, die auf dieselben Seiten zugeordnet sind (die den Code und die Daten der Bibliothek enthalten). Wenn Programme den Code der Bibliothek ändern möchten, verwenden sie Kopieren auf dem SchreibenDas Gedächtnis wird also nur bei Bedarf zugewiesen.

Der gemeinsame Gedächtnis ist eine effiziente Kommunikation zwischen den Programmen. Programme können Seiten im Speicher teilen und dann schreiben und lesen, um Daten auszutauschen.

Implementierungen

Ferranti Atlas

Der erste Computer, der Paging unterstützte, war der Supercomputer Atlas,[6][7][8] gemeinsam entwickelt von Ferranti, das Universität von Manchester und Plessey 1963. Die Maschine hatte eine assoziative (inhaltsadressibel) Speicher mit einem Eintrag für jede Seite 512 Word. Der Vorgesetzte[9] behandelte Nichtäquivalenzunterbrechungen[c] und verwaltete die Übertragung von Seiten zwischen Kern und Trommel, um einen einstufigen Laden bereitzustellen[10] zu Programmen.

Microsoft Windows

Windows 3.x und Windows 9x

Paging war ein Merkmal von Microsoft Windows seit Windows 3.0 1990. Windows 3.x erstellt a Versteckte Datei genannt 386spart.Par oder Win386.swp Zur Verwendung als Swap -Datei. Es wird im Allgemeinen in der gefunden Wurzelverzeichnis, aber es kann an anderer Stelle erscheinen (normalerweise im Windows -Verzeichnis). Seine Größe hängt davon ab, wie viel Swap -Speicherplatz das System hat (eine vom Benutzer unter ausgewählte Einstellung Schalttafel → Verbessert unter "virtuellem Speicher"). Wenn der Benutzer diese Datei bewegt oder löscht, a blauer Bildschirm Wird beim nächsten Start von Windows mit dem erscheinen Fehlermeldung "Die permanente Tauschdatei ist korrupt". Der Benutzer wird aufgefordert, zu wählen, ob die Datei gelöscht werden soll (ob sie vorhanden ist oder nicht).

Windows 95, Windows 98 und Fenster mich Verwenden Sie eine ähnliche Datei, und die Einstellungen dafür befinden sich im Bedienfeld → System → Leistungsregisterkarte → virtueller Speicher. Windows legt automatisch die Größe der Datei auf 1,5 × der Größe des physischen Speichers fest und erweitert bei Bedarf bis zu 3 × physischer Speicher. Wenn ein Benutzer speicherintensive Anwendungen in einem System mit geringem physischem Speicher ausführt, ist es vorzuziehen, diese Größen manuell auf einen höheren Wert zu setzen als Standard.

Windows NT

Die Datei, die zum Paging in der verwendet wurde Windows NT Familie ist pagefile.sys. Der Standardort der Datei der Datei befindet sich im Stammverzeichnis der Partition, in dem Windows installiert ist. Windows kann so konfiguriert werden, dass der kostenlose Speicherplatz für alle verfügbaren Laufwerke für Seitendateien verwendet wird. Es ist jedoch erforderlich Bluescreen des Todes. Windows verwendet die Paging -Datei als temporärer Speicher für den Speichermüllkippe. Wenn das System neu gestartet wird, kopiert Windows den Speicherdump aus der Datei Datei in eine separate Datei und den Speicherplatz frei, der in der Datei Datei verwendet wurde.[11]

Zersplitterung

In der Standardkonfiguration von Windows darf die Datei Datei bei Bedarf über die anfängliche Zuordnung hinaus erweitern. Wenn dies allmählich passiert, kann es stark werden fragmentiert Dies kann möglicherweise Leistungsprobleme verursachen.[12] Die übliche Ratschläge, um dies zu vermeiden, besteht darin, eine einzelne "gesperrte" Seitendateigröße festzulegen, damit Windows sie nicht erweitert. Die Seite Datei wird jedoch nur erweitert, wenn sie gefüllt wurde, was in ihrer Standardkonfiguration 150% der Gesamtmenge des physischen Speichers ausmacht. Daher muss die Gesamtnachfrage nach Dateidatei-Backed Virtual Memory 250% des physischen Speicherspeichers des Computers überschreiten, bevor die Datendatei erweitert wird.

Die Fragmentierung der Datendatei, die beim Erweitern auftritt, ist vorübergehend. Sobald die erweiterten Regionen nicht mehr verwendet werden (beim nächsten Neustart, wenn auch nicht früher), werden die zusätzlichen Speicherplatzzuweisungen befreit und die Datei ist wieder in ihren ursprünglichen Zustand.

Das Sperren einer Seitendateigröße kann problematisch sein, wenn eine Windows -Anwendung mehr Speicher als die Gesamtgröße des physischen Speichers und die Datei anfordert, was zu fehlgeschlagenen Anforderungen zur Zuordnung von Speicher und Systemprozessen führt. Außerdem wird die Datei Datei selten in sequentieller Reihenfolge gelesen oder geschrieben, sodass der Leistungsvorteil einer vollständig sequentiellen Datei minimal ist. Eine große Dateidatei ermöglicht jedoch im Allgemeinen die Verwendung von maßstabsorientierten Anwendungen, ohne dass mehr Festplattenspeicher verwendet werden. Während eine fragmentierte Datei möglicherweise kein Problem für sich selbst ist, erzeugt die Fragmentierung einer variablen Seitdatei im Laufe der Zeit mehrere fragmentierte Blöcke auf dem Laufwerk, wodurch andere Dateien fragmentiert werden. Aus diesem Grund ist eine zusammenhängende Datei mit fester Größe besser, vorausgesetzt, die zugewiesene Größe ist groß genug, um den Anforderungen aller Anwendungen gerecht zu werden.

Der erforderliche Festplattenraum kann auf Systemen mit neueren Spezifikationen leicht zugeordnet werden (d. H. Ein System mit 3 GB Speicher mit einer 6-GB-Datei fester Größe auf einem 750-GB-Datenträger oder einem System mit 6 GB Speicher und 16 GB-Datendatei mit fester Größe und 2 TB Speicherplatz). In beiden Beispielen verwendet das System etwa 0,8% des Festplattenraums, wobei die Datei-Datei bis zum Maximum erweitert wird.

Defragmentierung Die Seite Datei wird auch gelegentlich empfohlen, um die Leistung zu verbessern, wenn ein Windows -System chronisch viel mehr Speicher als der gesamte physische Speicher verwendet. Diese Ansicht ignoriert die Tatsache, dass abgesehen von den vorübergehenden Ergebnissen der Expansion die Datei nicht im Laufe der Zeit fragmentiert wird. Im Allgemeinen werden Leistungsbedenken im Zusammenhang mit dem Zugriff auf die Dateidatei viel effektiver durch das Hinzufügen von mehr physischen Speicher behandelt.

UNIX- und UNIX-ähnliche Systeme

Unix Systeme und andere Unix-artig In Betriebssystemen, verwenden Sie den Begriff "Swap", um den Akt des Ersetzens des Speicherplatzes für RAM zu beschreiben, wenn der physische RAM voll ist.[13] In einigen dieser Systeme ist es üblich, eine ganze Aufteilung einer Festplatte für den Austausch zu widmen. Diese Partitionen werden genannt Tausch -Partitionen. Viele Systeme verfügen über eine gesamte Festplatte, die sich dem Austausch widmet, getrennt von den Datenantrieb, die nur eine Tauschpartition enthalten. Eine Festplatte, die dem Austausch gewidmet ist, wird als "Swap -Laufwerk" oder "Scratch Drive" oder ein "bezeichnet.Kratzerdiskette"Einige dieser Systeme unterstützen nur den Austausch gegen eine Tauschpartition; andere unterstützen auch den Austausch gegen Dateien.

Linux

Der Linux -Kernel unterstützt eine praktisch unbegrenzte Anzahl von Swap -Backends (Geräte oder Dateien) und unterstützt auch die Zuordnung von Backend -Prioritäten. Wenn der Kernel die Seiten aus dem physischen Speicher ausstößt, verwendet er das Backend mit höchster Priorität mit dem verfügbaren freien Speicherplatz. Wenn mehrere Tausch -Backends die gleiche Priorität zugewiesen werden, werden sie in a verwendet Round-Robin Mode (was etwas ähnlich ist RAID 0 Speicherlayouts), die eine verbesserte Leistung bereitstellen, solange die zugrunde liegenden Geräte parallel effizient zugegriffen werden können.[14]

Tauschen Sie Dateien und Partitionen aus

Aus Sicht der Endbenutzer sind die Swap-Dateien in den Versionen 2.6.x und später aus dem Linux-Kernel praktisch so schnell wie Swap-Partitionen. Die Einschränkung besteht darin, dass Swap -Dateien auf ihren zugrunde liegenden Dateisystemen zusammenhängend zugewiesen werden sollten. Um die Leistung von Swap -Dateien zu erhöhen, behält der Kernel eine Karte, wo sie auf zugrunde liegenden Geräten platziert werden, und greift direkt auf sie zu, wodurch der Cache umgeht und das Overhead des Dateisystems vermieden wird.[15][16] Trotzdem, roter Hut Empfiehlt Swap -Partitionen, die verwendet werden sollen.[17] Wenn Sie auf HDDs wohnen, die rotationalen Magnetmediengeräte sind, ist ein Vorteil der Verwendung von Swap -Partitionen die Fähigkeit, sie auf zusammenhängenden Festplattenbereichen zu platzieren, die einen höheren Datendurchsatz oder eine schnellere Suchzeit bieten. Die administrative Flexibilität von Swap -Dateien kann jedoch bestimmte Vorteile von Swap -Partitionen überwiegen. Beispielsweise kann eine Swap -Datei auf jedem montierten Dateisystem platziert werden, kann auf jede gewünschte Größe eingestellt und nach Bedarf hinzugefügt oder geändert werden. Swap -Partitionen sind nicht so flexibel; Sie können nicht vergrößert werden, ohne die Partitionierung zu verwenden oder Volumenmanagement Werkzeuge, die verschiedene Komplexitäten und potenzielle Abflüsse einführen.

Swappiness

Swappiness ist ein Linux Kernel Parameter, der das relative Gewicht steuert austauschen von Laufzeitspeicherim Gegensatz zu fallen Seiten aus dem System Seitencache, wenn eine Speicherzuweisungsanforderung nicht aus dem freien Speicher erfüllt werden kann. Der Swappheit kann auf Werte zwischen 0 und 200 festgelegt werden (inklusive).[18] Ein niedriger Wert veranlasst den Kernel, Seiten aus dem Seitencache zu vertreiben, während ein höherer Wert dazu führt, dass der Kernel die "kalte" Speicherseiten bevorzugt. Das Standardwert ist 60; Die höhere Einstellung kann eine hohe Latenz verursachen, wenn Kaltseiten wieder eingetauscht werden müssen (wenn sie mit einem Programm, das zum Beispiel im Leerlauf war) Der Cache muss erneut gelesen werden, wird jedoch interaktive Programme reaktionsfähiger, da es weniger wahrscheinlich ist, dass sie Kaltseiten zurückgeben. Tausch kann ebenfalls langsamer werden HDDs weiter, weil es viele zufällige Schreibvorgänge beinhaltet SSDs Habe dieses Problem nicht. Sicherlich funktionieren die Standardwerte in den meisten Workloads gut, aber Desktops und interaktive Systeme für jede erwartete Aufgabe möchten möglicherweise die Einstellung senken, während die Stapelverarbeitung und weniger interaktive Systeme sie erhöhen möchten.[19]

Tauschen Sie den Tod aus

Wenn der Systemspeicher für die aktuellen Aufgaben nicht ausreicht und ein großer Teil der Speicheraktivität einen langsamen Tausch durchläuft, kann das System praktisch keine Aufgabe ausführen, selbst wenn die CPU im Leerlauf ist. Wenn jeder Prozess auf den Swap wartet, wird das System als in Ansicht angesehen Tauschen Sie den Tod aus.[20][21]

Der Tod des Swaps kann durch falsch konfiguriertes passieren. Gedächtnisüberbekommung.[22][23][24]

Die ursprüngliche Beschreibung des Problems "gegen den Tod" bezieht sich auf das X Server. Wenn der vom X -Server verwendete Code oder Daten zur Reaktion auf einen Tastenanschlag nicht im Hauptspeicher enthalten ist, wird der Server, wenn der Benutzer einen Tastenanschlag eingibt verarbeitet und verlangsamt die Reaktion darauf. Wenn diese Seiten nicht im Speicher bleiben, müssen sie erneut fehlerhaft sein, um den nächsten Tastenanschlag zu bewältigen, sodass das System praktisch nicht mehr reagiert, auch wenn es tatsächlich andere Aufgaben ausgeführt wird.[25]

Mac OS

Mac OS Verwendet mehrere Swap -Dateien. Die standardmäßige (und von Apple empfohlene) Installation platziert sie auf der Stammpartition, obwohl es möglich ist, sie stattdessen auf einer separaten Partition oder einem separaten Gerät zu platzieren.[26]

Amigaos 4

Amigaos 4.0 führte ein neues System zur Zuweisung von RAM und zur Befremdung des physischen Gedächtnisses ein. Es verwendet immer noch einen flachen gemeinsam genutzten Adressraum, der nicht defremdiert werden kann. Es basiert auf Plattenzuweisungsmethode und Paging -Speicher, der den Austausch ermöglicht. Paging wurde in implementiert in Amigaos 4.1 kann aber das System sperren, wenn der gesamte physische Speicher aufgebraucht wird.[27] Der Swap -Speicher kann in jedem Moment aktiviert und deaktiviert werden, sodass der Benutzer nur einen physischen RAM verwenden kann.

Leistung

Der Backing -Store für ein virtuelles Speicherbetriebssystem ist normalerweise viele Größenordnungen langsamer als RAM. Darüber hinaus führt die Verwendung mechanischer Speichergeräte ein Verzögerung, mehrere Millisekunden für eine Festplatte. Daher ist es wünschenswert, den Austausch zu reduzieren oder zu beseitigen, wo praktisch. Einige Betriebssysteme bieten Einstellungen an, um die Entscheidungen des Kernels zu beeinflussen.

  • Linux bietet die /proc/sys/vm/swappiness Parameter, der das Gleichgewicht zwischen dem Austausch des Laufzeitspeichers und dem Abwerfen von Seiten aus dem System ändert Seitencache.
  • Windows 2000, XP und Vista bieten die an DeaktiviertPagingExecutive Registrierungseinstellung, die steuert, ob der Kernel-Mode-Code und die Daten zum Paging in Frage kommen können.
  • Mainframe-Computer verwendeten häufig Head-per-Track-Datenträger oder Trommeln für Seiten- und Swap-Speicher, um die Suchzeit und mehrere Technologien zu beseitigen[28] mehrere gleichzeitige Anforderungen an dasselbe Gerät haben, um zu reduzieren Rotationslatenz.
  • Der Flash-Speicher hat eine begrenzte Anzahl von ERASE-WRITE-Zyklen (siehe Einschränkungen des Flash -Speichers) und die geringste Datenmenge, die gleichzeitig gelöscht werden können [29]), selten mit pagessize zusammenfällt. Daher kann sich der Flash -Speicher schnell abnutzen, wenn sie unter engen Speicherbedingungen als Swap -Speicherplatz verwendet werden. Auf der attraktiven Seite ist das Flash -Speicher im Vergleich zu Festplatten praktisch verzögert und nicht flüchtig als Ram -Chips. Pläne mögen Readyboost und Intel Turbo -Speicher sind gemacht, um diese Eigenschaften auszunutzen.

Viele Unix-artig Betriebssysteme (zum Beispiel AIX, Linux, und Solaris) Ermöglichen Sie die Verwendung mehrerer Speichergeräte für den Swap -Speicherplatz parallel, um die Leistung zu erhöhen.

Raumgröße auszutauschen

In einigen älteren Betriebssystemen für virtuelle Speicher ist der Platz im Swap -Backing -Store reserviert, wenn Programme Speicher für Laufzeitdaten zuweisen. Anbieter von Betriebssystemen geben in der Regel Richtlinien darüber aus, wie viel Swap -Platz zugewiesen werden sollte.

Begrenzung der 32-Bit-Hardware angehen

Paging ist eine Möglichkeit, die Größe der von einem Prozess verwendeten Adressen zu ermöglichen, nämlich der "virtuelle Adressraum" oder "logischer Adressraum" des Prozesses, um sich von der Menge des auf einem bestimmten Computer installierten Hauptspeichers zu unterscheiden, das ist, nämlich der physische Adressraum.

Hauptspeicher kleiner als virtueller Speicher

In den meisten Systemen ist die Größe des virtuellen Adressraums eines Prozesses viel größer als der verfügbare Hauptspeicher.[30] Zum Beispiel:

  • Das Adressbus Das verbindet die CPU mit dem Hauptspeicher begrenzt. Das I386SX CPUDie 32-Bit-internen Adressen können 4 GB ansprechen, aber nur 24 Stifte, die mit dem Adressbus verbunden sind, und die installierte physischen Speicher auf 16 MB einschränken. Möglicherweise gibt es andere Hardwarebeschränkungen für die maximale Menge an RAM, die installiert werden können.
  • Der maximale Speicher wird möglicherweise nicht aufgrund von Kosten installiert, da die Standardkonfiguration des Modells ihn auslässt oder weil der Käufer nicht glaubte, dass dies vorteilhaft wäre.
  • Manchmal können sowieso nicht alle internen Adressen für den Speicher verwendet werden, da die Hardware -Architektur große Regionen für E/A oder andere Funktionen reserviert.

Hauptspeicher in der gleichen Größe wie virtueller Speicher

Ein Computer mit True n-Bit -Adressierung kann 2 habenn adressierbare Einheiten des RAM installiert. Ein Beispiel ist ein 32-Bit x86 Prozessor mit 4Gb und ohne Erweiterung der physischen Adresse (PAE). In diesem Fall kann der Prozessor alle installierten RAM und nicht mehr ansprechen.

Selbst in diesem Fall kann Paging verwendet werden, um einen virtuellen Speicher von über 4 GB zu erstellen. Zum Beispiel können viele Programme gleichzeitig ausgeführt werden. Zusammen benötigen sie möglicherweise mehr als 4 GB, aber nicht alles muss sofort im RAM sein. Ein Paging -System trifft effiziente Entscheidungen, in denen der Speicher auf den sekundären Speicher abgestuft werden soll, was zur besten Nutzung des installierten RAM führt.

Obwohl der Prozessor in diesem Beispiel den RAM nicht über 4 GB hinaus ansprechen kann, kann das Betriebssystem Dienste für Programme zur Verfügung stellen, die sich einen größeren Speicher vorstellen, z. B. Dateien, die über die Grenze des installierten RAM hinauswachsen können. Mit dem Betriebssystem kann ein Programm Daten in der Datei willkürlich manipulieren, wobei Paging bei Bedarf Teile der Datei in den RAM einbezieht.

Hauptspeicher größer als virtueller Adressraum

Einige Computer haben einen Hauptspeicher, der größer ist als der virtuelle Adressraum eines Prozesses, wie z. B. Magic-1,[30] etwas PDP-11 Maschinen und einige Systeme mit 32-Bit x86 Prozessoren mit Erweiterung der physischen Adresse. Dies nimmt einen wesentlichen Vorteil des Pagings aus, da ein einzelner Prozess nicht mehr Hauptspeicher als die Menge seines virtuellen Adressraums verwenden kann. Solche Systeme verwenden häufig Paging -Techniken, um sekundäre Vorteile zu erzielen:

  • Der "zusätzliche Speicher" kann in der verwendet werden Seitencache Um häufig verwendete Dateien und Metadaten, wie z. B. Verzeichnisinformationen, aus dem Sekundärspeicher zu zwischenstrahlen.
  • Wenn der Prozessor und das Betriebssystem mehrere virtuelle Adressräume unterstützen, kann der "zusätzliche Speicher" verwendet werden, um mehr Prozesse auszuführen. Paging ermöglicht es, dass die kumulative Gesamtzahl der virtuellen Adressräume das physische Hauptspeicher überschreitet.
  • Ein Prozess kann Daten in speichern Speicher-abgebildete Dateien auf Speicher-unterstützten Dateisystemen wie die tmpfs Dateisystem oder Dateisysteme auf a RAM -Laufwerkund kartieren Dateien nach Bedarf in und aus dem Adressraum.
  • Eine Reihe von Prozessen kann weiterhin von der Seiten-basierten Isolation der erweiterten Sicherheitsfunktionen in eine Multitasking-Umgebung abhängen.

Die Größe der kumulativen Gesamtsumme der virtuellen Adressräume ist nach wie vor durch den verfügbaren Sekundärspeicher begrenzt.

Siehe auch

Anmerkungen

  1. ^ Anfänglich Schlagzeug, und dann Festplattenfahrten und Solid State Drives wurden zum Paging verwendet.
  2. ^ Zum Beispiel, MVS (Mehrfach virtueller Speicher).
  3. ^ Eine Nichtäquivalenzunterbrechung tritt auf, wenn die hohen Ordnung einer Adresse nicht mit einem Eintrag in den assoziativen Speicher übereinstimmen.

Verweise

  1. ^ Deitel, Harvey M. (1983). Eine Einführung in Betriebssysteme. Addison-Wesley. S. 181, 187. ISBN 0-201-14473-5.
  2. ^ Belzer, Jack; Holzman, Albert G.; Kent, Allen, Hrsg. (1981). "Betriebssysteme". Enzyklopädie der Informatik und Technologie. Vol. 11. CRC Press. p. 433. ISBN 0-8247-2261-2. Archiviert vom Original am 2017-02-27.
  3. ^ Belzer, Jack; Holzman, Albert G.; Kent, Allen, Hrsg. (1981). "Betriebssysteme". Enzyklopädie der Informatik und Technologie. Vol. 11. CRC Press. p. 442. ISBN 0-8247-2261-2. Archiviert vom Original am 2017-02-27.
  4. ^ Cragon, Harvey G. (1996). Speichersysteme und Pipeline -Prozessoren. Jones und Bartlett Publishers. p. 109. ISBN 0-86720-474-5. Archiviert vom Original am 2017-02-27.
  5. ^ Belzer, Jack; Holzman, Albert G.; Kent, Allen, Hrsg. (1981). "Virtuelle Speichersysteme". Enzyklopädie der Informatik und Technologie. Vol. 14. CRC Press. p. 32. ISBN 0-8247-2214-0. Archiviert vom Original am 2017-02-27.
  6. ^ Sumner, F. H.; Haley, G.; Chenh, E. C. Y. (1962). "Die zentrale Steuereinheit des Computers" Atlas ". Informationsverarbeitung 1962. IFIP -Kongressverfahren. Vol. Verfahren des IFIP -Kongresses 62. Spartan.
  7. ^ "Der Atlas". Universität von Manchester: Abteilung für Informatik. Archiviert von das Original Am 2012-07-28.
  8. ^ "Atlas Architektur". Atlas Computer. Chilton: Atlas Computerlabor. Archiviert vom Original am 2012-12-10.
  9. ^ Kilburn, T.; Payne, R. B.; Howarth, D. J. (Dezember 1961). "Der Atlas -Supervisor". Computer - Schlüssel zur Gesamtsystemsteuerung. Konferenzen Verfahren. Vol. 20, Proceedings der Eastern Joint Computer Conference Washington, D. C. Macmillan. S. 279–294. Archiviert vom Original am 2009-12-31.
  10. ^ Kilburn, T.; Edwards, D. B. G.; Lanigan, M. J.; Sumner, F. H. (April 1962). "Ein-Level-Speichersystem". IRE -Transaktionen auf elektronischen Computern. Institut für Funkingenieure (2): 223–235. doi:10.1109/tec.1962.5219356.
  11. ^ Tsigkogiannis, Ilias (2006-12-11). "Crash -Dump -Analyse". Fahrer schreiben! = Busfahrung. Microsoft. Archiviert vom Original am 2008-10-07. Abgerufen 2008-07-22.
  12. ^ "Windows Sysinternals pagedEfrag". SYSINTERNALS. Microsoft. 2006-11-01. Archiviert vom Original am 2010-12-25. Abgerufen 2010-12-20.
  13. ^ Beide David (2020-03-27). "Eine Einführung in den Austausch auf Linux -Systemen". OpenSource.com. Abgerufen 2021-12-08.
  14. ^ "Swapon (2) - Linux Man Page". Linux.die.net. Archiviert vom Original am 2014-02-28. Abgerufen 2014-09-08.
  15. ^ ""Jesper Juhl": Re: Wie sende ich eine Pause? - Dump von Frozen 64bit Linux ". Lkml. 2006-05-29. Archiviert vom Original am 2010-11-24. Abgerufen 2010-10-28.
  16. ^ "Andrew Morton: Re: Swap Partition gegen Swap -Datei". Lkml. Archiviert vom Original am 2010-11-24. Abgerufen 2010-10-28.
  17. ^ Kapitel 7. Austausch Platz - Red Hat Customer Portal "Swap Space kann eine dedizierte Tauschpartition (empfohlen), eine Swap -Datei oder eine Kombination aus Swap -Partitionen und Swap -Dateien sein."
  18. ^ "Die Linux -Kernel -Dokumentation für/proc/sys/vm/".
  19. ^ Andrews, Jeremy (2004-04-29). "Linux: Tuning -Swappiness". kerneltrap.org. Archiviert von das Original Am 2013-05-24. Abgerufen 2018-01-03.
  20. ^ Rik Van Riel (1998-05-20). "Tauschen Sie den Tod aus (wie in 2.1.91) und Seitentabellen". Archiviert vom Original am 2017-12-29.
  21. ^ Kyle Rankin (2012). DevOps Fehlerbehebung: Best Practices für Linux -Server. Addison-Wesley. p. 159. ISBN 978-0-13-303550-6. Archiviert vom Original am 2017-12-29.
  22. ^ Andries Brouwer. "Der Linux -Kernel: Speicher". Archiviert vom Original am 2017-08-13.
  23. ^ Roter Hut. "Kapazitätsstimmung". Archiviert vom Original am 2017-07-23.
  24. ^ "Speicherüberzugeinstellungen". 2014-02-16. Archiviert vom Original am 2017-05-31.
  25. ^ Peter MacDonald (1993-02-10). "Tausch zu Tode". Archiviert vom Original am 2017-03-28.
  26. ^ John Siracusa (2001-10-15). "Mac OS X 10.1". ARS Technica. Archiviert vom Original am 2008-09-05. Abgerufen 2008-07-23.
  27. ^ Amigaos-Kernentwickler (2011-01-08). "Re: Swap -Problem auch auf Update 4?". Hyperion Entertainment. Archiviert vom Original am 2013-04-12. Abgerufen 2011-01-08.
  28. ^ Z. B. Rotationspositionserfassung eines Block -Multiplexorkanals
  29. ^ "Ausrichten von Dateisystemen auf die Löschblockgröße eines SSD | Gedanken von Ted". Thunk.org. 2009-02-20. Archiviert vom Original am 2010-11-13. Abgerufen 2010-10-28.
  30. ^ a b Bill Buzbee. "Magic-1 minix fordern Paging Design". Archiviert vom Original am 2013-06-05. Abgerufen 2013-12-09.

Externe Links