your programing

64 비트 운영 체제에서 32 비트 프로세스가 액세스 할 수있는 메모리는 얼마나됩니까?

lovepro 2020. 10. 10. 10:44
반응형

64 비트 운영 체제에서 32 비트 프로세스가 액세스 할 수있는 메모리는 얼마나됩니까?


Windows에서 일반적인 상황에서 32 비트 프로세스는 2GB의 RAM (또는 boot.ini 파일의 특수 스위치가있는 3GB)에만 액세스 할 수 있습니다. 64 비트 운영 체제에서 32 비트 프로세스를 실행할 때 사용 가능한 메모리는 얼마나됩니까? 이를 변경할 수있는 특수 스위치 또는 설정이 있습니까?


기본적으로 2GB. 응용 프로그램이 큰 주소 공간을 인식하는 경우 (/ LARGEADDRESSAWARE와 연결됨) 4GB (3GB가 아님, http://msdn.microsoft.com/en-us/library/aa366778.aspx 참조 )

많은 응용 프로그램이 포인터의 최상위 비트가 0이되도록 의존하기 때문에 여전히 2GB로 제한됩니다.


4GB에서 / LARGEADDRESSAWARE로 링크하는 경우 시스템에서 사용중인 것을 뺀 값입니다.

물론 해당 플래그를 설정하면 포인터 산술에 더욱주의해야합니다.


32 비트 응용 프로그램이 많으면 wow64 하위 시스템이 4G 이상의 메모리 어디에서나 매핑 할 수 있으므로 충분한 메모리가있는 64 비트 창에서 더 많은 32 비트 응용 프로그램을 실행할 수 있다는 사실을 아무도 만지지 않는 것 같습니다. 기본 32 비트 시스템보다.


32 비트 프로세스는 여전히 64 비트 OS에서 동일한 제약 조건으로 제한됩니다. 문제는 메모리 포인터의 너비가 32 비트에 불과하므로 프로그램이 32 비트보다 큰 메모리 주소를 할당 / 해결할 수 없다는 것입니다.


64 비트 OS에서 단일 32 비트 프로세스는 2Gb로 제한됩니다. 그러나 IMAGE_FILE_LARGE_ADDRESS_AWARE 비트가 설정된 EXE 파일로 컴파일 된 경우 2Gb가 아닌 4GB로 제한 됩니다. https://msdn.microsoft.com/en-us/library/aa366778(VS.85) 참조 . aspx

두 경우 모두 커널의 가상 주소 공간은 모든 프로세스에서 공유됩니다. 그렇기 때문에 32 비트 프로세스가 매우 많은 경우에도 64 비트 운영 체제에 사용할 수있는 메모리가 많음에도 불구하고 메모리가 부족할 수 있습니다 (예 : 16GB-32 비트). 전체 프로세스는 사용 가능한 커널의 가상 주소 공간 (최대 2GB)을 빠르게 소모 할 수 있습니다.

특수 부팅 플래그, 3GB, / 3GB 스위치 또는 / userva에 대해들은 것은 모두 32 비트 운영 체제에 대한 것이며 64 비트 Windows에는 적용되지 않습니다.

자세한 내용은 https://msdn.microsoft.com/en-us/library/aa366778(v=vs.85).aspx 를 참조하십시오.

32 비트 운영 체제에 관해서는 생각과 달리 32 비트 운영 체제에 대한 물리적 제한은 4GB입니다. 예를 들어 Microsoft Windows Server 2008 32 비트와 같은 32 비트 서버 운영 체제 는 Intel에서 처음 도입 한 PAE (물리적 주소 확장) 를 통해 최대 64GB (Windows Server 2008 Enterprise 및 Datacenter 에디션)에 액세스 할 수 있습니다 . Pentium Pro, 그리고 나중에 Athlon 프로세서에서 AMD에 의해-32가 아닌 64 비트의 테이블 항목을 사용하여 3 단계의 페이지 테이블 계층 구조를 정의하여 이러한 CPU가 4 기가 바이트보다 큰 물리적 주소 공간에 직접 액세스 할 수 있도록합니다. 이론적으로 32 비트 OS는 이론적으로 2 ^ 64 바이트 또는 17,179,869,184GB에 액세스 할 수 있지만 세그먼트는 다음으로 제한됩니다.4GB. 그러나 마케팅상의 이유로 Microsoft는 서버가 아닌 운영 체제에서 액세스 가능한 최대 메모리를 4GB, 심지어는 3GB로 제한했습니다. 따라서 단일 프로세스는 32 비트 OS에서 4GB 이상에 액세스 할 수 있으며 Microsoft SQL 서버가 그 예입니다.


Win64에서 32 비트 프로세스를 실행할 때 동일한 기본 제한이 있습니다. 앱은 32에서 실행되지만 Win32처럼 보이도록 최선을 다하는 하위 시스템이며 여기에는 프로세스에 대한 메모리 제한이 포함됩니다 (더 낮은 2GB, OS의 경우 상위 2GB).


제한은 2g 또는 3GB가 아니며 32 비트의 경우 4GB입니다.

사람들이 3GB라고 생각하는 이유는 실제로 4GB의 시스템 램이있을 때 OS가 3GB를 무료로 표시하기 때문입니다.

총 RAM은 4GB입니다. 따라서 32 비트 OS에서 보는 총 램의 일부로 계산되는 1GB 비디오 카드가있는 경우.

4Gig 아니 3 아니 2 아니?

참고 URL : https://stackoverflow.com/questions/639540/how-much-memory-can-a-32-bit-process-access-on-a-64-bit-operating-system

반응형