Wie viel Speicher kann ein 32-Bit-Prozess Zugriff auf einem 64-Bit-Betriebssystem?

StackOverflow https://stackoverflow.com/questions/639540

  •  11-07-2019
  •  | 
  •  

Frage

Unter Windows unter normalen Umständen ein 32-Bit-Prozess kann nur 2 GB RAM zugreifen (oder 3GB mit einem speziellen Schalter in der boot.ini-Datei). Wenn ein 32-Bit-Prozess auf einem 64-Bit-Betriebssystem ausgeführt wird, wie viel Speicher verfügbar ist? Gibt es spezielle Schalter oder Einstellungen, die das ändern kann?

War es hilfreich?

Lösung

2 GB standardmäßig. Wenn die Anwendung großer Adressraum bewusst (in Verbindung mit / LARGEADDRESSAWARE) ist, wird es 4 GB (nicht mehr als 3 GB finden Sie unter http://msdn.microsoft.com/en-us/library/aa366778.aspx )

Sie sind immer noch auf 2 GB beschränkt, da viele Anwendung auf dem oberen Bit von Zeigern hängt Null sein.

Andere Tipps

4 GB minus was ist in Verwendung durch das System, wenn Sie mit / LARGEADDRESSAWARE verbinden.

Natürlich sollten Sie noch vorsichtiger sein mit Pointer-Arithmetik wenn Sie diesen Flag gesetzt.

Niemand auf der Tatsache zu berühren scheint, dass, wenn Sie viele verschiedene 32-Bit-Anwendungen haben, die wow64 Subsystem sie überall im Speicher über 4G abbilden kann, so auf einem 64-Bit-Windows mit ausreichend Speicher, können Sie viele mehr 32 laufen -Bit-Anwendungen als auf einem nativen 32-Bit-System.

Ein 32-Bit-Prozess wird noch in einem 64-Bit-Betriebssystem auf die gleichen Einschränkungen begrenzt. Das Problem ist, dass Speicherzeiger sind nur 32-Bit breit, so dass das Programm kann keine Speicheradresse größer als 32 Bits zuweisen / lösen.

Ein einzelner 32-Bit-Prozess unter einem 64-Bit-Betriebssystem wird auf 2 GB beschränkt. Aber wenn es zu einer EXE-Datei mit IMAGE_FILE_LARGE_ADDRESS_AWARE Bit gesetzt kompiliert wird, es dann eine Grenze von 4 GB hat, nicht 2Gb - siehe https://msdn.microsoft.com/en-us/library/aa366778 (VS.85) aspx

In jedem Fall der virtuellen Adressraum des Kernels ist in allen Prozessen gemeinsam genutzt. Deshalb, auch wenn Sie eine sehr große Anzahl von 32-Bit-Prozesse haben, können sie aus der Erinnerung, trotz der Tatsache führen, dass Sie viel Speicher für 64-Bit-Betriebssystem zur Verfügung haben, sagen wir, 16 GB - die 32-Bit Prozesse können insgesamt aus dem der Kernel der virtuellen Adressraum zur Verfügung, um sie (maximal 2 GB).

schnell laufen

Die Dinge, die Sie hören über spezielle Boot-Flags, 3 GB, / 3GB-Schalter oder / userva sind alle über 32-Bit-Betriebssysteme und gelten nicht auf 64-Bit-Windows.

Siehe https://msdn.microsoft .com / de-de / library / aa366778 (v = VS.85) aspx für weitere Details.

Wie etwa die 32-Bit-Betriebssysteme, im Gegensatz zu dem Glauben, gibt es keine physikalische Grenze von 4 GB für 32-Bit-Betriebssysteme. Zum Beispiel, 32-Bit-Server-Betriebssysteme wie Microsoft Windows Server 2008 32-Bit zuzugreifen kann 64 GB (Windows Server 2008 Enterprise und Datacenter-Editionen) - mittels Physical Address Extension (PAE), die zuerst von Intel in den Pentium Pro eingeführt und später von AMD im Athlon Prozessor - es definiert eine Seitentabelle Hierarchie von drei Ebenen, mit Tabelleneinträgen von 64 Bits jeweils anstelle von 32, wobei diese CPUs ermöglicht direkt eine physikalische Adresse zuzugreifen, Raum größer als 4 Gigabyte - so theoretisch ein 32-Bit-Betriebssystem kann 2 ^ 64 Bytes zugreifen theoretisch oder 17179869184 Gigabyte, aber das Segment wird durch 4GB begrenzt. Jedoch aufgrund von Marketing-Gründen hat Microsoft maximal zugängliche Speicher auf nicht-Server-Betriebssystemen auf nur 4 GB beschränkt, oder auch, 3GB effektiv. Somit kann ein einzelner Prozess mehr zugreifen als 4 GB auf einem 32-Bit-Betriebssystem -. Und Microsoft SQL-Server ist ein Beispiel

Sie haben die gleiche grundlegende Einschränkung bekommen, als einen 32-Bit-Prozess unter Win64 laufen. Ihre Anwendung läuft in einem 32 aber Subsystem, das tut sein Bestes, wie Win32 zu suchen, und dies wird die Speicherbeschränkungen für Ihren Prozess (untere 2 GB für Sie, oberes 2 GB für das Betriebssystem)

schließen

Die Grenze nicht 2g oder 3GB seine 4gb für 32bit.

Der Grund, warum die Leute denken seine 3gb ist, dass das OS 3gb kostenlos zeigt, wenn sie wirklich 4 GB System-RAM haben.

Seine Gesamt RAM von 4 GB. Wenn Sie also eine 1 GB Grafikkarte, die von den 32-Bit-OS betrachtet als Teil des gesamten ram zählt.

4Gig nicht 3 nicht 2 verstanden?

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