호환 모드에서 실행되는 64 비트 시스템의 가상 주소 공간
-
20-08-2019 - |
문제
64 비트 Windows OS에서 사용 가능한 사용자 가상 주소 공간은 8 Terra 바이트임을 알았습니다. 그러나 우리 가이 실행중인 프로그램이 32 비트 호환성 모드에서 실행중인 경우 이러한 많은 사용자 공간이 여전히 사용할 수 있습니까? 아니면 일반적인 32 비트 OS처럼 행동하고 2GB 사용자 주소 공간 만 제공합니까?
해결책
Microsoft에는 다양한 한계를 보여주는 차트가 있습니다. Windows 릴리스의 메모리 제한
사용자 모드 가상 주소 공간 만 요약합니다.
- 32 비트 창 :
- 32 비트 프로세스 : 기본적으로 2GB; 3GB
/LARGEADDRESSAWARE:YES
및 4GT
- 32 비트 프로세스 : 기본적으로 2GB; 3GB
- 64 비트 Windows (x64 아키텍처) :
- 32 비트 프로세스 : 기본적으로 2GB; 4GB
/LARGEADDRESSAWARE:YES
- 64 비트 프로세스 : 기본적으로 8 TB; 2GB
/LARGEADDRESSAWARE:NO
- 32 비트 프로세스 : 기본적으로 2GB; 4GB
4GT는 4 기가 바이트 튜닝입니다.
- XP :
/3GB
boot.ini 스위치 - 추억:
bcdedit /set increaseuserva 3072
Mark Russinovich는 다음과 같은 많은 한계를 설명하는 블로그 게시물을 만들었습니다. Windows의 한계를 밀기 : 가상 메모리
다른 팁
프로세스는 32 비트 프로세스로 실행될 때 4GB 가상 주소 공간 만 볼 수 있습니다. 더 높은 것을 다룰 수 없습니다.
나의 원래 대답은 꽤 나빴다. Jaredpar가 꽤 잘한 내용을 설명하는 링크가 있습니다.
하드웨어와 관련하여 호환성 모드에서 실행할 때 (예 : IA32_EFER.LMA가 설정되고 CS의 세그먼트 디스크립터에서는 L 비트가 명확합니다) 세그먼트는 32 비트 세그먼트처럼 행동합니다. 그건:
- 세그먼트베이스는 32 비트로 제한됩니다.
- 세그먼트 한계는 32 비트로 제한됩니다 (G 비트 사용).
이렇게하면 효과적으로 4GB의 가상 주소로 제한됩니다. OS가 다양한 모드에서 가상 메모리를 파티션하는 방법에 익숙하지는 않지만 이것 하드웨어 제한입니다. (죄송합니다 ... 저는 OS 전문가가 아니라 하드웨어 사람입니다)
64 비트 기계/OS를 사용하여 IIS 6.0+에서 32 비트 프로세스를 실행하면 프로세스가 최대 4GB의 메모리를 해결할 수 있습니다.