Wie viel logischer Speicher wird tatsächlich für jeden Prozess auf der Festplatte zugewiesen?

338
veerendra

Angenommen, der Prozessor ist 32 Bit. Jeder auf diesem Prozessor ausgeführte Prozess erhält also 2 ^ 32 Bit logischen Speicher.

  1. Wenn das System n Prozesse hat, werden n * 2 ^ 32 Bits auf der Festplatte zugewiesen? wo ist es zugeteilt? ist es im Swap-Bereich?
  2. Wenn die Seitengröße 4 KB beträgt, beträgt die Gesamtzahl der Seiten 2 ^ 32/2 ^ 12 = 2 ^ 20. ist die Summe der Seiten auf der Festplatte und der Arbeitsspeicher für diesen Prozess ist 2 ^ 20? Wenn nicht, wie viele dieser 2 ^ 20 werden zugewiesen? 3.#include <stdio.h> int main(){ printf("Hello World"); }

    ist dieser einfache Vorgang auch 2 ^ 20 Seiten auf RAM + Disk?

  3. #include <stdio.h> int main(){ int x; scanf("%d",&x); while(x!=0){ malloc(sizeof(int)); x--; } }

    Wie viele Seiten werden zum Zeitpunkt des Ladens anfänglich auf Festplatte + RAM zugewiesen? ist es auch 2 ^ 20? wenn nicht, wie es wächst, wenn jeder Malloc-Aufruf aufgerufen wird?

0
Es ist virtueller Speicher. Sie verwirren die Größe des Adressraums und was ein laufender Prozess tatsächlich verwendet. Daniel B vor 8 Jahren 0
Ist das eine andere Hausaufgabenfrage? DavidPostill vor 8 Jahren 0
Willkommen bei [su]! Bitte versuchen Sie, 1 Frage gleichzeitig zu stellen (andernfalls wird Ihre Frage als zu umfangreich abgeschlossen). Bitte lesen Sie [Wie stelle ich eine gute Frage?] (Http://superuser.com/help/how-to-ask) und [On-Topic] (http://superuser.com/help/on-topic). . DavidPostill vor 8 Jahren 0

1 Antwort auf die Frage

1
Serge

Das OSreserviert so viele virtuelle Seiten wie nötig, um die in den ausführbaren Dateien definierten Abschnitte zuzuordnen.

Wenn bereits ein anderer Prozess die gleichen ausführbaren Dateien ausführt, verwendet das Betriebssystem zumindest schreibgeschützte Seiten, und wenn das Betriebssystem "Copy-on-Write" unterstützt, werden bereits zugeordnete unveränderte Lese- / Schreibseiten für einen neuen Prozess verwendet. Für Stapel, Heaps usw. wird der virtuelle Adressraum reserviert. Die Seiten werden jedoch bei Bedarf zugewiesen. Wenn also der Stack über den bereits zugeordneten Speicherplatz hinausgeht, weist das Betriebssystem weitere Seiten zu.

Der Speicherplatz in einer Auslagerungsdatei wird zugewiesen, wenn das System beschließt, einige geänderte Seiten eines Prozesses aus dem RAM auszutauschen. Dies ist eine optimale Strategie, das tatsächliche Verhalten kann jedoch von Betriebssystem zu Betriebssystem variieren.