Nein, es gibt keine Täuschung, Sie haben maximal 4 GB RAM für das gesamte Betriebssystem.
Sie können PAE aktivieren. Wenn dies funktioniert, können Fenster manchmal mehr als 4 GB erkennen. Noch nicht annähernd so viel wie ein 64-Bit-Betriebssystem.
In einem 32-Bit-System ist der virtuelle Adressraum von 4 GB für das gesamte Betriebssystem oder für den individuellen Prozess?
Wenn es für das gesamte Betriebssystem ist, führt das Betriebssystem jeden Prozess vor, dass es über einen eigenen Adressraum von 4 GB verfügt.
Wenn ein Prozess gestartet wird, verwendet er den gesamten virtuellen Adressraum. Ist es das, was wir als virtuelle Adresse bezeichnen oder reservieren?
Wie können wir herausfinden, wie viel virtueller Adressraum ein Prozess benötigt? Was ist, wenn ein Prozess mehr virtuelle Adresse als 3 GB benötigt (System mit erweitertem Benutzermodus)?
Nein, es gibt keine Täuschung, Sie haben maximal 4 GB RAM für das gesamte Betriebssystem.
Sie können PAE aktivieren. Wenn dies funktioniert, können Fenster manchmal mehr als 4 GB erkennen. Noch nicht annähernd so viel wie ein 64-Bit-Betriebssystem.
Pro Prozess wird ein virtueller Adressraum von 4 Gigabyte erstellt, der vom Betriebssystem und vom Prozess gemeinsam genutzt wird. Das OS entscheidet über die Grenze (die für alle Prozesse festgelegt ist).
Das Betriebssystem ist in jedem virtuellen Adressraum vorhanden.
IOW der "Prozess [hat] seinen eigenen 4 GB Adressraum", muss ihn jedoch mit dem Betriebssystem gemeinsam nutzen und kann den Teil des virtuellen Speichers, der dem Kernel gehört, nicht lesen, schreiben oder ausführen.
Wenn ich 3-Prozess auf 32-Bit-Fenstern, die mit den Anforderungen 1 GB RAM ausgelegt sind, ausführen. Wird ein Speicherzuordnungsproblem auf einem 2 GB RAM-System auftreten? Wenn nicht, wie können Fenster dies erreichen?
Ein Benutzerprozess hat nicht das Recht, physischen Speicher zu erfordern, der resident bleibt (dh nicht ausgelagert werden kann).
Da bei virtuellen Speichersystemen Auslagerungen (mit einer Auslagerungsdatei oder einem Auslagerungsbereich auf einem Massenspeichergerät) verwendet werden, gibt es normalerweise keine Probleme, wenn mehrere Prozesse mit einem virtuellen Adressraum von 4 GB ausgeführt werden, bei denen der physische Arbeitsspeicher kleiner als die virtuelle Größe ist.
Es ist möglich, eine Out-of-Memory-Bedingung (auch bekannt als OOM) zu erstellen, wenn Prozesse einen großen Speicherbedarf erzeugen und nicht genügend physischer Speicher und Auslagerungsspeicher vorhanden sind.
Wird dem gesamten virtuellen Adressraum eines Prozesses eine physische Adresse im physischen Speicher zugewiesen, oder handelt es sich um eine träge Zuordnung, bei der die Zuordnung nur dann erfolgt, wenn auf diese virtuelle Adresse zugegriffen wird?
Es ist niemals erforderlich, dass ein gesamtes Programm physischen Speicher zugewiesen und in den Speicher geladen wird.
Die Abbildung des physischen Speichers für einen Prozess richtet sich nach den Bedürfnissen.
Ein Prozess muss nur dann speicherresident sein, wenn er tatsächlich ausgeführt wird, und unabhängig von seiner Größe muss nur die eine Seite des Codes, auf die aktuell vom Programmzählerregister verwiesen wird, und alle Seiten von Datenreferenzen müssen tatsächlich resident sein .
Ja, es gibt also eine "faule Zuordnung", bei der das Mapping nur durchgeführt wird, wenn auf diese virtuelle Adresse zugegriffen wird.
In einem 32-Bit-System ist der virtuelle Adressraum von 4 GB für das gesamte Betriebssystem oder für den individuellen Prozess?
Jeder Prozess verfügt über einen eigenen virtuellen 4-GB-Adressraum, von dem 2 GB für den Kernel-Bereich bestimmt sind. In 32-Bit-Windows können Sie LARGEADDRESSAWARE
zusammen mit der /3GB
Boot-Option den Kernel-Speicherplatz auf 1 GB reduzieren
Das Betriebssystem erhält einen breiteren Adressbus mit PAE, so dass es tatsächlich mehr als 4 GB RAM adressieren kann.
Wenn es für das gesamte Betriebssystem ist, führt das Betriebssystem jeden Prozess vor, dass es über einen eigenen Adressraum von 4 GB verfügt.
Hier gibt es nichts zu täuschen. Virtuelle Adresse! = Physikalische Adresse . Jeder Prozess hat unabhängig von der Größe des physischen Arbeitsspeichers immer einen eigenen Adressraum von 4 GB, so dass er die Daten anderer Prozesse nicht stören kann. Selbst wenn Sie nur 128 MB RAM haben, haben Sie immer noch einen Adressraum von 4 GB. Das liegt daran, dass Zeiger in 32-Bit-Programmen immer 32 Bit breit sind. Der Adressraum wird nicht nur für RAM, sondern auch für MMIO-Geräte verwendet, und der Prozess kann eine Datei auch direkt in seinen Adressraum abbilden
Wenn das System über mehr als 4 GB RAM verfügt, kann der Prozess AWE verwenden, um höhere Adressen einem 4 GB-Fenster zuzuordnen, damit auf den gesamten verfügbaren Speicher zugegriffen werden kann. Oder es können auch mehrere Prozesse wie Adobe Premiere CS4 erstellt werden, um mehr als nur einen Arbeitsspeicher zu verwenden
Wenn ein Prozess gestartet wird, verwendet er den gesamten virtuellen Adressraum. Ist es das, was wir als virtuelle Adresse bezeichnen oder reservieren?
Der Prozess hat 2-4 GB Adressraum, aber natürlich hängt es von dem Prozess ab, zu entscheiden, wie viel Speicher er benötigt. Wenn ein Prozess mehr Speicher als verfügbar anfordert, aber nicht tatsächlich in diesen Bereich geschrieben hat, verbraucht er tatsächlich keinen Speicher. Das nennt man über zu begehen und wird in Linux erlaubt aber Windows erlaubt es Ihnen nicht mehr als insgesamt RAM + Auslagerungsdatei zuzuordnen verfügbar
Wie können wir herausfinden, wie viel virtueller Adressraum ein Prozess benötigt? Was ist, wenn ein Prozess mehr virtuelle Adresse als 3 GB benötigt (System mit erweitertem Benutzermodus)?
Der virtuelle Adressraum ist immer 2/3/4 GB. Sie können nicht mehr als diesen haben, wenn Sie nicht zu einer Architektur mit einer virtuellen Adresse mit mehr als 32 Bit wechseln. Die Anforderung von mehr als 3 GB RAM ist ein anderes Problem. In diesem Fall gibt es mehrere Lösungen
LARGEADDRESSAWARE
. In diesem Fall kann auf 4 GB Speicher zugegriffen werdenWenn ich 3-Prozess auf 32-Bit-Fenstern, die mit den Anforderungen 1 GB RAM ausgelegt sind, ausführen. Wird ein Speicherzuordnungsproblem auf einem 2 GB RAM-System auftreten?
Normalerweise gibt es kein Problem, da einige davon in die Auslagerungsdatei verschoben werden können. Aber es wird natürlich viel langsamer
Wenn nicht, wie kann Windows dies erreichen? Wird dem gesamten virtuellen Adressraum eines Prozesses eine physische Adresse im physischen Speicher zugewiesen, oder handelt es sich um eine träge Zuordnung, bei der die Zuordnung nur dann erfolgt, wenn auf diese virtuelle Adresse zugegriffen wird?
Die gesamte virtuelle Adresse wird nicht linear als großer Block in den physischen Adressraum abgebildet . Der Speicher wird in Seiten abgebildet, daher befinden sich im Adressraum eines Prozesses wie diesem viele undefinierte Adressen
Darüber hinaus werden einige physische Seiten in mehreren virtuellen Adressräumen angezeigt, sodass Prozesse ihre Daten gemeinsam nutzen können. Einige freigegebene Seiten, die als schreibgeschützt markiert sind, werden automatisch geklont, wenn zum Speichern in den Speicher geschrieben wird. Das nennt man Copy-on-Write
Sie müssen zuerst den virtuellen Speicher lesen