나는 하드웨어 용량이 2^48비트라는 것을 알고 있으며 커널에는 일반적으로 응용 프로그램 메모리 제약 조건에 대한 기본 제한이 많지 않다는 것을 알고 있지만 응용 프로그램이 사용할 수 있는 메모리의 상한선이 있고 일반적으로 2 외에 소비하는 양이 있습니까? ^48, DIMM 슬롯에서 사용할 수 있는 채널 수입니까?
참고로 Redmond는 대부분의 서버 제품에서 제품을 최대 2TB로 제한합니다.
답변1
정의에 따르면(적어도 일반적인 정의에 따르면) 64비트 프로세스는 2 64 바이트의 메모리만 볼 수 있습니다. 실제로 대부분의 운영 체제는 커널이 커널 메모리, 프로세스 메모리 또는 장치 메모리에 대한 포인터가 될 수 있는 64개의 값을 조작할 수 있도록 각 프로세스를 사용 가능한 주소 공간보다 약간 작게 제한합니다. 4EB 또는 8EB 제한이 일반적입니다.
그때까지는 아키텍처에 따른 제한 사항이 발생할 수 있습니다. 특히, 프로세스의 메모리 맵은 머신의 메모리 맵과 맞아야 합니다.메모리 관리 유닛, 하드웨어에는 필요한 비트 수만 있는 경우가 많습니다. MMU에는 최대 4가지 수준의 페이지 테이블이 있으며 Linux(특히)는 4가지 수준을 모두 지원할 수 있습니다.착상 전 진단(페이지 전역 디렉터리) 목록 PUD(페이지 상위 디렉터리) 목록 PMD(페이지 중간 디렉터리) 목록 PTE(페이지 테이블 항목). 각 간접 수준은 대부분의 포인터를 역참조하기 위한 추가 단계이므로 시스템의 페이지 크기는 일반적으로 4kB(2,1242 주소 지정 가능 바이트이지만 대부분의 64비트 아키텍처는 더 큰 페이지 테이블로 구성될 수 있으므로 일반적인 내용을 제공하기가 어렵습니다. 페이지 테이블 크기가 얼마인지에 대해 대답하십시오.
프로세스별 주소 제한은 컴퓨터에 보유할 수 있는 실제 메모리의 양과 아무런 관련이 없습니다. 예를 들어, PC의 DIMM 슬롯에서 사용할 수 있는 채널 수는 해당 PC에 보유할 수 있는 RAM 용량에 대한 이론적 제한입니다(일반적으로 CPU의 메모리 버스 너비가 제한 요소임). 프로세스가 소비할 수 있는 메모리나 주소 공간의 양과는 아무런 관련이 없습니다(메모리는 프로세스의 여러 노드 간에 교체되거나 공유될 수 있음).누마다중 프로세서 기계).
답변2
이론적 최대값은 다음과 같이 제한됩니다.메모리 분할CPU에 사용 됩니다 .