32비트 x86 PAE Linux 커널을 사용할 때 시스템에 사용 가능한 메모리가 GiB 이상 있어도 단일 애플리케이션은 2GiB 이상을 할당할 수 없습니다. 이것이 사실입니까? 64비트 x86 Linux 커널은 이 제한을 완화합니까?
답변1
32비트 프로세스에는 32비트 주소 공간이 있으며, 정의에 따르면 "32비트"는 프로세스의 메모리 주소가 32비트 너비임을 의미하며, 서로 다른 주소가 2 32 개인 경우 최대 2 32개 입니다. 바이트(4GB)를 처리할 수 있습니다. 32비트 Linux 커널은 32비트 프로세스만 실행할 수 있습니다. 커널 컴파일 옵션에 따라 각 프로세스에는 1GB, 2GB 또는 3GB의 메모리만 할당될 수 있습니다(나머지는 시스템 호출을 처리할 때 커널용으로 예약됨). 이는 RAM, 스왑 및 매핑된 파일 간의 분류와 무관한 가상 메모리의 양입니다.
64비트 커널은 64비트 프로세스는 물론 32비트 프로세스도 실행할 수 있습니다. 원칙적으로 64비트 프로세스는 최대 2개의 64 바이트(16EB)를 주소 지정할 수 있습니다. 우수한x86_64 아키텍처, 부분적으로 x86_64의 디자인으로 인해메모리 관리 유닛현재 프로세스당 주소 공간은 128TB로 제한됩니다.
답변2
32비트 프로세스는 32비트 커널을 구축할 때 선택한 메모리 분할에 따라 최대 1, 2, 3 또는 약 4GB만 할당할 수 있습니다. 64비트 커널의 32비트 프로세스는 약 4GB를 할당할 수 있습니다. 64비트 x86-64 커널의 64비트 프로세스는 할당할 수 있습니다.최대 128TiB.