페이지 테이블

리눅스의 4단계 레벨 페이지 테이블 관리

리눅스는 32비트 및 64비트 등 모든 아키텍처를 지원하기 위해 최대 4레벨 변환을 사용

  • 64비트 리눅스 커널을 대비하기 위하여 4단계의 테이블로 관리할 수 있게 확장하였다.
    (pgd → pud → pmd → pte 순서)

pgd-2 pgd-3

32bit ARM 리눅스의 3단계 레벨 페이지 테이블 관리

ARM 32비트에서 구동하는 리눅스는 3단계 레벨의 페이지 테이블을 사용한다.

  • 속성 비트가 리눅스와 ARM h/w가 서로 일부 지원되지 않는 비트가 있어서 pte 테이블의 경우 linux pt와 hw pt로 나누어서 동시에 유지 관리를 하며 사용한다.
  • 대용량의 메모리를 지원하는 LPAE 옵션에 따라 다른 관리 방법을 사용한다.
    • LPAE를 지원하는 경우 리눅스나 ARM h/w 모두 3단계의 페이지 테이블 관리를 그대로 사용한다.
    • LPAE를 지원하지 않는 일반적인 경우에는 리눅스는 3단계 페이지 테이블 관리를 사용하고 ARM h/w는 2단계 페이지 테이블 관리를 사용해야 하므로 별도의 관리 방법을 사용하여 구현되었다.

pgd-4 pgd-5

 

리눅스 3단계 테이블 vs ARM h/w 2단계 테이블

테이블 단계별 특징

  • pgd (16k)
    • 리눅스의 1단계 관리 테이블
    • 2048개의 8 바이트 엔트리로  구성된다.
    • 각 pgd 엔트리는 pair를 이룬 4바이트 엔트리로 구성된다.
  • pmd (16k)
    • 리눅스의 2단계 관리 테이블 / ARM h/w 1단계 관리 테이블
    • 4096개의 4바이트 엔트리로 구성된다.
      • pmd 테이블은 페이지의 실제 할당 없이 pgd의 테이블을 pmd 테이블로 실제 존재하는 것처럼 에뮬레이션 하여 사용한다.
      • pgd 테이블의 실제 내용 변경없이 호출 사이즈 구성만 바꿔 사용한다.
        • pgd 엔트리에 있는 pair를 이룬 4바이트 엔트리가 pmd 엔트리로 활용된다.
        • pair를 이룬 pmd 엔트리는 pair를 이룬 hw pte 엔트리를 대칭되게 가리킨다.
  • pte (4K)
    • pte 테이블은 2개의 h/w pt와 1개의 linux pt로 구성된다.
    • h/w pt는 256개의 4바이트 hw pte 엔트리로 구성된다.
    • 리눅스 pt는 512개의 4바이트 linux pte 엔트리로 구성된다.
    • 2 개의 hw/pt가 연달아 구성되고 그 밑에 linux pt가 구성된다.

pt-6

 

리눅스 페이지 변환 (32bit address)

pt-8

 

ARM H/W 페이지 변환 (32bit address)

pt-7

 

엔트리 속성

pmd_t for small page

attr-1

  • page table base address
    • small page의 위치를 지정한다.

 

pmd_t for section page

attr-2

  • section base address
    • 곧장 1M page 프레임을 가리킨다.

 

pte_t for linux

attr-3

  • small page base address
    • 4K 페이지 프레임을 가리킨다.
  • L_PTE_PRESENT 또는 L_PTE_VALID (bit0)
    • 페이지가 메모리에 상주해 있고 스왑 아웃되지 않은 상태
  • L_PTE_YOUNG (bit1)
    • 페이지에 접근이 된 경우
  • L_PTE_DIRTY (bit6)
    • 페이지가 변경된 경우 설정되며 나중에 매핑된 파일에 기록되어야 함을 나타낸다.
  • L_PTE_RDONLY (bit7)
    • 읽기 전용 (1=read, 0=read/write)
  • L_PTE_USER (bit8)
    • user process도 접근 가능한 경우 1, 커널만 접근 가능하게 할 경우 0
  • L_PTE_XN (bit9)
    • Excute Never로 실행 금지
  • L_PTE_SHARED (bit10)
    • 공유된 페이지
  • L_PTE_NONE (bit11)
    • 페이지가 있으나 access 할 수 없는 페이지
    • NUMA 시스템에서 해당 페이지를 읽을 때 accesss 권한 실패로 인해 abort exception이 발생되어 fault된 후 해당 페이지를 사용하는 태스크의 migration을 고려하는 Automatic NUMA balancing을 위해 사용된다.

 

pte_t for ARM h/w

attr-4

  • small page base address
    • 4K  페이지 프레임을 가리킨다.

 

ARM 레퍼런스 매뉴얼 참고

Short-descriptor translation table format

pt1

 

TTBCR(페이지 테이블 크기 결정 레지스터)

pt2

1차 페이지 테이블 엔트리 구성

pt3

2차 페이지 테이블 엔트리 구성

pt4

가상 주소 vs 물리 주소 변환

pt5

참고

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.