Ile pamięci może uzyskać proces 32-bitowy w 64-bitowym systemie operacyjnym?

W systemie Windows, w normalnych okolicznościach 32-bitowy proces może uzyskać dostęp tylko do 2GB PAMIĘCI RAM (lub 3GB ze specjalnym przełącznikiem w rozruchu.plik ini). Ile pamięci jest dostępne podczas uruchamiania 32-bitowego procesu w 64-bitowym systemie operacyjnym? Czy są jakieś specjalne przełączniki lub ustawienia, które mogą to zmienić?

Author: jjxtra, 2009-03-12

7 answers

2 GB domyślnie. Jeśli aplikacja ma dużą przestrzeń adresową (połączoną z /LARGEADDRESSAWARE), otrzymuje 4 GB (nie 3 GB, Patrz http://msdn.microsoft.com/en-us/library/aa366778.aspx )

Są nadal ograniczone do 2 GB, ponieważ wiele aplikacji zależy od górnego bitu wskaźników do zera.

 76
Author: Michael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-12 17:04:38

4 GB minus to, co jest używane przez system, jeśli łączysz się z / LARGEADDRESSAWARE.

Oczywiście, powinieneś być jeszcze bardziej ostrożny z arytmetyką wskaźnika, jeśli ustawisz tę flagę.

 17
Author: MSN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-12 17:03:37

Nikt nie zdaje się dotykać faktu, że jeśli masz wiele różnych aplikacji 32-bitowych, podsystem WOW64 może odwzorować je w dowolnym miejscu w pamięci powyżej 4G, więc na 64-bitowym systemie windows z wystarczającą pamięcią można uruchomić o wiele więcej aplikacji 32-bitowych niż na natywnym systemie 32-bitowym.

 14
Author: Harm ten Napel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-22 22:09:43

Proces 32-bitowy jest nadal ograniczony do tych samych ograniczeń w 64-bitowym systemie operacyjnym. Problem polega na tym, że wskaźniki pamięci mają tylko 32 bity szerokości, więc program nie może przypisać/rozwiązać żadnego adresu pamięci większego niż 32 bity.

 7
Author: Ben S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-12 17:04:11

[1]}pojedynczy proces 32-bitowy Pod 64-bitowym systemem operacyjnym jest ograniczony do 2 GB. Ale jeśli jest skompilowany do pliku EXE z ustawionym bitem IMAGE_FILE_LARGE_ADDRESS_AWARE, to ma limit 4 GB, a nie 2 GB - zobacz https://msdn.microsoft.com/en-us/library/aa366778 (VS. 85). aspx

W obu przypadkach wirtualna przestrzeń adresowa jądra jest współdzielona przez wszystkie procesy. Dlatego nawet jeśli masz bardzo dużą liczbę 32-bitowych procesów, może zabraknąć im pamięci, pomimo faktu, że masz wiele Pamięć dostępna dla 64-bitowego systemu operacyjnego, powiedzmy, 16 GB - procesy 32-bitowe w sumie mogą szybko wyczerpać wirtualną przestrzeń adresową jądra dostępną dla nich (maksymalnie 2 GB).

Rzeczy, które słyszysz o specjalnych flagach ROZRUCHOWYCH, przełącznikach 3 GB, /3 GB lub /userva, dotyczą 32-bitowych systemów operacyjnych i nie mają zastosowania w 64-bitowych systemach Windows.

Zobacz https://msdn.microsoft.com/en-us/library/aa366778 (v=vs.85). aspx Po Więcej Szczegółów.

Jak o 32-bitowym systemy operacyjne, wbrew przekonaniu, nie ma fizycznego limitu 4GB dla 32-bitowych systemów operacyjnych. Na przykład 32-bitowe Serwerowe systemy operacyjne, takie jak Microsoft Windows Server 2008 32-bit, mogą uzyskać dostęp do 64 GB (Windows Server 2008 Enterprise i Datacenter Edition) – za pomocą rozszerzenia adresu fizycznego (Pae), które zostało wprowadzone po raz pierwszy przez Intela w Pentium Pro, a później przez AMD w procesorze Athlon-definiuje hierarchię tabel stron z trzema poziomami zapis po 64 bity zamiast 32, pozwalając tym procesorom na bezpośredni dostęp do fizycznej przestrzeni adresowej większej niż 4 gigabajty-więc teoretycznie, 32-bitowy System Operacyjny może uzyskać dostęp do 2^64 bajtów teoretycznie, lub 17,179,869,184 gigabajtów, ale segment jest ograniczony przez 4GB. Jednak ze względów marketingowych Microsoft ograniczył maksymalną dostępną pamięć w systemach operacyjnych innych niż serwerowe do zaledwie 4 GB, a nawet 3 GB. W ten sposób pojedynczy proces może uzyskać dostęp do ponad 4 GB na 32-bitowym systemie operacyjnym-i Microsoft Przykładem jest SQL server.

 2
Author: Maxim Masiutin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-15 19:01:36

Masz to samo podstawowe ograniczenie podczas uruchamiania 32-bitowego procesu pod Win64. Aplikacja działa w podsystemie 32, który stara się jak najlepiej wyglądać jak Win32, a to obejmie ograniczenia pamięci dla Twojego procesu (niższe 2GB dla Ciebie, górne 2GB dla systemu operacyjnego)

 -1
Author: Sean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-12 17:03:45

Limit nie jest 2g lub 3GB jego 4Gb dla 32bit.

Powodem, dla którego ludzie myślą, że jego 3gb jest to, że system operacyjny pokazuje 3GB za darmo, gdy naprawdę mają 4GB PAMIĘCI RAM.

Jego całkowita pamięć RAM 4gb. Więc jeśli masz kartę graficzną 1 gb, która liczy się jako część całkowitej pamięci RAM oglądanej przez 32-bitowy system operacyjny.

4Gig nie 3 NIE 2 masz?

 -9
Author: BobJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-14 12:27:41