본문 바로가기

Academy I/Windows

[Windows10]32bit, 64bit 프로세스당 사용 가능 최대 메모리

윈도우 시스템에서 32bit, 64bit 프로세스당 사용 가능 최대 메모리


갑자기 프로세스당 최대 할당 메모리가 궁금해서 조사를 해봤다.


일단,

32bit 윈도우 시스템은 인식가능 메모리가 4GB 이며,

64bit 윈도우 시스템은 인식가능 메모리가 8GB~2TB(윈도우 버전에 따라 다름) 이다.


현제 윈도우10은

최고 Enterprise가 2TB이며, 최소 Home이 128GB이다.

윈도우8은 최고 512GB, 최소 128GB

윈도우7은 최고 192GB, 최소 8GB



왜냐하면?

32bit 주소는 4 Bytes로 최대 메모리 주소 번지가 0xFFFFFFFF이며 2^32로 4GB 이다.

넘어가는 곳의 메모리 주소는 표현 불가능하다.


64bit 주소는 8 Bytes 이므로 최대 메모리 주소번지가 0xFFFFFFFF FFFFFFFF이며 2^64로 16EB(엑사바이트, 페타 다음 단위임)이다.

그러나 16EB까지 인식하는 OS는 없다.


여기까지가 윈도우 시스템(OS)에서 인식하는 메모리 양이면,

이제 주제인 프로세스당 최대 할당 메모리에 대해서 이야기 하겠다.


- 32bit 윈도우 시스템에서 사용하는 주소 할당 내역

0x00000000 ~ 0x0000FFFF : Null 포인터 할당 파티션으로 사용하지 않는다.

0x00010000 ~ 0x7FFEFFFF : 유저 모드 파티션

0x7FFF0000 ~ 0x7FFFFFFF : 64KB 접근 금지 파티션

0x80000000 ~ 0xFFFFFFFF : 커널 모드 파티션


여기서 사용자가 사용하는 프로세스에서 할당해서 사용하는 메모리 영역은 유저 모드 파티션이며 값은 아래와 같다.

2GB - 64KB(Null) - 64KB(접근 금지 파티션) = ?2,147,352,576?(0x7FFE0000)

약 2GB정도이다.


주소 공간 분할은 윈도우 커널버전에 따라 다르다고 하며, 2GB이상 사용을 위해서 비쥬얼 스튜디오에서 'Enable Large Address' 설정으로 3GB까지 사용이 가능 하다고는 하니, 참고 하면 될 듯하다.



64bit 윈도우 시스템에서 사용하는 주소 할당 내역 자료는 못찾았지만, 아래 페이지에 보면 인식가능 물리 메모리보다는 크게 잡혀 있는 것 같다. 그러므로 신경 쓰지 않아도 되는것으로 보인다.

- https://msdn.microsoft.com/ko-kr/library/windows/desktop/aa366778(v=vs.85).aspx



[출처 : http://arhemian.tistory.com/183]