Frage

Hinweis: Ich versuche, einen High-Level Überblick über virtuelle Speicherbelegung zu studieren

ist ein virtueller Adressraum Split gesamten Prozess in Seiten, einer bestimmten Größe:

  .text
  .bss
  .data

Ist dies auch Heap-Speicher enthalten und stapeln - oder ist dies immer nicht-seitenwechselbar

War es hilfreich?

Lösung

Zunächst ist zu beachten, dass „Seiten“ sind einfach Bereiche eines Adressraum. Eine Region, die „nicht-seitenwechselbar“ ist (von dem ich nehme an, Sie meinen es nicht auf der Festplatte ausgelagert werden kann) ist noch logisch in Seiten aufgeteilt, aber das Betriebssystem möglicherweise eine andere Politik auf diesen Seiten implementieren.

Die gebräuchlichste Seitengröße ist 4096 Bytes. Viel Architekturen Unterstützung Verwendung mehrerer Seitengrößen zur gleichen Zeit (zum Beispiel 4K Seiten sowie 1MB Seiten). Allerdings Betriebssysteme bleiben oft mit nur einer Seitengröße, da in den meisten Fällen sind die Kosten mehrere Seitengrößen für die Verwaltung viel höher als die Vorteile, die diese zur Verfügung stellt. Ausnahmen bestehen aber ich glaube nicht, dass du über sie brauchen Sorgen.

Jede virtuelle Seite hat bestimmte Berechtigungen, um es angebracht, wie ob es lesbar, beschreibbar, ausführbare Datei (variiert je nach Hardware-Unterstützung abhängig). Das Betriebssystem kann diese Sicherheit erzwingen helfen verwenden, Cache-Kohärenz (für Shared-Memory), und tauschen Seiten aus dem physischen Speicher.

Die .text, .bss und .data Regionen der OS müssen nicht bekannt (obwohl die meisten OSes davon wissen, für die Sicherheit und Performance-Gründen).

Das Betriebssystem nicht wirklich zuordnen kann der Speicher für einen Stapel / Haufen Seite bis zum ersten Mal die Seite zugegriffen wird. Das Betriebssystem kann das System bieten ruft mehrere Seiten von Heap / Stapelspeicher anzufordern. Einige Betriebssysteme bieten gemeinsam genutzten Speicher oder Shared Library-Funktionalität, die zu mehr Regionen führt im Adressraum erscheinen. Abhängig von den OS.

Andere Tipps

Normalerweise auf einem ausgelagerten Betriebssystem ein Verfahren gesamte Adressraum ist in Seiten aufgeteilt. Jede lineare Adresse enthält zwei Komponenten -. Eine Seitenzahl in den höchstwertigen Bits und ein Versatz innerhalb der Seite in dem am wenigsten signifikanten Bits

beispielsweise mit 32-Bit-Adressen und linearen 4kB Seiten sind die oberen 20 Bits eine Seitenzahl und die unteren 12 Bits sind eine Seiten-Offset.

.data ist, wo das initialisierten globalen Variablen des Programms legen. .bss enthält die globalen Variablen ohne explizite Initialisierer (mit einem Standardwert von 0). Der Haufen und Stapel getrennte Speicherzonen von diesen und voneinander. Alle Speicher von einem Prozess zu sehen sind alle virtuellen Speicher in Seiten aufgeteilt. Verfahren nichts anderes, als die virtuelle Speicher sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top