주 메모리 용량이 2GB일 때 32비트 주소 버스를 지원하는 프로세서가 액세스할 수 있는 가장 큰 프로그램은 무엇입니까?
답변1
32비트 주소 공간이 있으면 2^32(4Gi) 바이트의 메모리를 주소 지정할 수 있습니다. 가상 주소 공간에서 실행되는 프로그램에 관한 한, 4GiB 상당의 주소를 지정하고 액세스할 수 없는 이유는 없습니다.
이는 가상 메모리를 사용하는 OS, 지원을 위한 일부 하드웨어(MMU) 등 몇 가지 사항을 가정합니다. 그러나 최신 32비트 CPU 및 최신 OS의 경우 이는 문제가 되지 않습니다. 현대의 모든 것은 페이징을 지원하므로 현재 물리적 메모리에서 액세스하고 있는 4GiB의 일부만 있으면 됩니다.
일반적인 답변은 여기까지입니다. 이제 Windows 및 x86에 대한 답변입니다.
Windows(win2000 시대부터?)는 가상 메모리와 페이징을 사용합니다. 또한 기본적으로 4Gi 주소 범위를 절반으로 분할합니다. 위쪽 절반은 커널용이고 아래쪽 절반은 사용자 프로그램용입니다. 이는 사용자 프로그램에 대해 인위적으로 2GiB 주소 제한을 적용하거나 특수 모드에서 커널을 부팅하고 LARGEADDRESSAWARE 프로그램을 사용할 때 3GiB를 적용합니다.
이것은 귀하의 USER 프로그램을 그것으로 제한할 것입니다.
그 다음에는 메모리 버스를 인위적으로 36비트로 확장하는 PAE가 있습니다. PAE는 추악한 덩어리이며 64비트 CPU(지난 20년 동안 일반적으로 사용됨) 이후로 필요하지 않습니다.
이것은 '가정'에 이어 'X에 답변' 게시물로 바뀌고 있습니다. 즉, 좀 더 구체적인 질문을 하는 것이 좋을 것 같습니다.
답변2
이론적으로는 2GB이지만 그 중 일부는 OS 자체에서 예약 및/또는 사용됩니다.
또한 32비트 프로세스는 의도적으로 재설계하지 않는 한 64비트 OS에서 실행하더라도 2GB로 제한됩니다. IMAGE_FILE_LARGE_ADDRESS_AWARE를 고려하여 다시 디자인하면 한도는 다음과 같습니다.MSDN에 따르면, 3GB.