Linux 커널은 몇 수준의 페이지 테이블을 사용합니까? 4 또는 5?

Linux 커널은 몇 수준의 페이지 테이블을 사용합니까? 4 또는 5?

이것기사에 따르면 Linux는 3단계 페이지 테이블을 사용합니다.

그러나 책에서는전문 Linux 커널 아키텍처, 3.3.1장에서는 리눅스가 5레벨 페이지 테이블을 사용한다고 나와 있다.

반품,이것기사에는 "반면, 4.11-rc2의 5단계 페이지 테이블 병합(병합 창 외부)은 거의 관심을 끌지 못했습니다."라고 나와 있습니다.

내 질문은 커널이 실제로 몇 개의 페이지 테이블 수준을 사용하는가입니다. 기록이 변경된 경우 어떤 버전인가요?

답변1

문제는 이것이 커널 버전과 프로세서 아키텍처에 따라 다르다는 것입니다(하드웨어에서 지정된 수의 페이지 테이블을 지원해야 하기 때문입니다). PAE가 없는 32비트 x86에서는 2레벨입니다. PAE가 포함된 32비트 x86에서는 3가지 수준이 있습니다. 64비트 x86에서는 일반적으로 4레벨이지만 5레벨에 대한 지원이 최근에 병합되었습니다(그러나 실제로는 최고급 Intel 서버 프로세서만이 이 기능을 지원하고 그 다음에는 아주 최근의 프로세서만 지원합니다). 64비트 SPARC에서는 처음부터 5레벨이었던 것 같은데, 64비트 s390과 PPC도 5레벨을 사용하는 것 같은데 잘 모르겠습니다.

답변2

Linux 커널 코드를 확인하고 Austin의 답변과 다른 것을 얻었습니다.

아치/x86/Kconfig

  config PGTABLE_LEVELS
        int
        default 5 if X86_5LEVEL
        default 4 if X86_64
        default 3 if X86_PAE
        default 2

관련 정보