64 비트 프로세스 가상 주소 공간은 Linux에서 어떻게 분할됩니까?


12

다음 이미지는 32 비트 프로세스 가상 주소 공간이 분할되는 방법을 보여줍니다.

여기에 이미지 설명을 입력하십시오

그러나 64 비트 프로세스 가상 주소 공간은 어떻게 분할됩니까?

답변:


10

64 비트 x86 가상 메모리 맵은 주소 공간을 2 개로 분할합니다. 하위 섹션 (상위 비트가 0으로 설정 됨)은 사용자 공간이고, 상위 섹션 (상위 비트가 1로 설정 됨)은 커널 공간입니다. (x86-64는 "표준", "하반"및 "상반"주소를 정의하며 여러 비트는 사실상 48 또는 56으로 제한됩니다 . 자세한 내용 은 Wikipedia 를 참조하십시오.

완전한 맵은 커널 에 자세히 설명 되어 있습니다 . 현재는 다음과 같습니다

========================================================================================
    Start addr    | Offset  |     End addr     |  Size   | VM area description
========================================================================================
                  |         |                  |         |
 0000000000000000 |    0    | 00007fffffffffff |  128 TB | user-space virtual memory
__________________|_________|__________________|_________|______________________________
                  |         |                  |         |
 0000800000000000 | +128 TB | ffff7fffffffffff | ~16M TB | non-canonical
__________________|_________|__________________|_________|______________________________
                  |         |                  |         |
 ffff800000000000 | -128 TB | ffffffffffffffff |  128 TB | kernel-space virtual memory
__________________|_________|__________________|_________|______________________________

48 비트 가상 주소 56 비트 변형은 16K PB 홀의 양쪽에 64PB의 사용 가능한 주소 공간이있는 동일한 구조를 갖습니다.

32 비트의 경우와 달리 "64 비트"메모리 맵은 하드웨어 제약 조건을 직접 반영합니다.


명확히하기 위해 :이 제한은 하드웨어에 의해 부과됩니다. 현재 가상 주소 공간 중간에 사용할 수없는 주소가 많이 남아 있지 않은 64 비트 프로세서 구현은 없습니다. CPU가 처리 할 수있는 물리적 메모리의 양도 2에서 64의 제곱보다 낮습니다.
Johan Myréen

감사합니다 @Johan, 나는 이것을 강조하려고 노력했습니다.
Stephen Kitt 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.