64비트 x86 Linux 시스템에서 애플리케이션은 얼마나 많은 RAM을 할당할 수 있습니까?

64비트 x86 Linux 시스템에서 애플리케이션은 얼마나 많은 RAM을 할당할 수 있습니까?

32비트 x86 PAE Linux 커널을 사용할 때 시스템에 GiBs 이상의 여유 메모리가 있더라도 단일 애플리케이션이 2GiB 이상을 할당할 수 없다는 것이 사실입니까? 64비트 x86 Linux 커널에서는 이 제한이 느슨해졌습니까?

답변1

32비트 프로세스에는 정의에 따라 32비트 주소 공간이 있습니다. "32비트"는 프로세스의 메모리 주소가 32비트 너비임을 의미하며, 2 32 개의 개별 주소가 있는 경우 최대 2 32 바이트( 4GB). 32비트 Linux 커널은 32비트 프로세스만 실행할 수 있습니다. 커널 컴파일 옵션에 따라 각 프로세스는 1GB, 2GB 또는 3GB의 메모리만 할당할 수 있습니다(나머지는 시스템 호출을 처리할 때 커널용으로 예약됨). 이는 RAM, 스왑 및 mmapped 파일 간의 고장과 관련이 없는 가상 메모리의 양입니다.

64비트 커널은 64비트 프로세스는 물론 32비트 프로세스도 실행할 수 있습니다. 64비트 프로세스는 원칙적으로 최대 2개의 64 바이트(16EB)를 주소 지정할 수 있습니다. 에x86_64 아키텍처, 부분적으로 x86_64의 디자인으로 인해MMU현재 프로세스당 주소 공간은 128TB로 제한되어 있습니다.

답변2

32비트 프로세스는 32비트 커널이 구축될 때 선택한 메모리 분할에 따라 최대 1, 2, 3 또는 약 4GB만 할당할 수 있습니다. 64비트 커널의 32비트 프로세스는 약 4GB를 할당할 수 있습니다. 64비트 x86-64 커널의 64비트 프로세스는 할당할 수 있습니다.최대 128TiB.

관련 정보