CPU 32 bit 의 경우 사용 가능한 가상 주소 범위는 이론 상 4 GB

=> 2^32 = 4 * 1024 * 1024 * 1024 = 4GB
기본적으로 User 가 3 GB, Kernel 이 1 GB 할당을 받는다. 옵션에 따라 변경은 가능하다. (64 bit 의 경우, 128 테라, 128 테라)

커널은 1G 를 어떻게 사용하는가?
- 선매핑용 주소 (896G) : 커널 내부에서 사용하는 지역 변수나 동적 할당 변수가 저장됨. DMA 주소 포함
- 후매핑용 주소 (128M) : 나중에 물리 메모리를 연결해서 사용할 용도로 남겨둠. vmalloc, pkmap area 주소, fixmap area 주소

 

CPU 64 bit 의 경우 사용 가능한 가상 주소 범위는 이론 상 16 * 1024 * 1024 TB

=> 2^64 = 16 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 = 16 * 1024 * 1024 TB

 

 

4 Level Page Table

가상 주소 9 bit (PGD-Global) + 9 bit (PUD-Upper) + 9 bit (PMD-Middle) + 12 bit (Page Table) = 가상 주소 48 bit 사용

  • PGD: Page Global Directory
  • PUD: Page Upper Directory
  • PMD: Page Middle Directory

 

 

 

 

Page Table Entry 가 커버하는 메모리 사이즈

arch/x86/include/asm/page_table.h 파일에서 다음을 확인할 수 있다.

/* PAGE_SHIFT determines the page size */
#define PAGE_SHIFT              12

위의 의미는 Page Table Entry 하나가 커버하는 크기는 2^12 = 4 * 1024 = 4KB 인 것을 확인할 수 있다.

 

arch/x86/include/asm/pgtable_64_types.h 에서 다음을 확인 할 수 있다.

/*
 * PMD_SHIFT determines the size of the area a middle-level
 * page table can map
 */
#define PMD_SHIFT       21
#define PTRS_PER_PMD    512

PMD 가 하나 할당 될 경우 PMD_SHIFT 는 9 + 12 bit = 21 bit
따라서 Page Middle Directory 의 하나의 entry 가 커버하는 크기는 2^21 = 2 * 1024 * 1024 = 2 MB 커버 가능

 

부팅 직후 Board 에서 확인할 수 있는 방법

/sys/kernel/debug/page_tables/current_kernel 내용에서 pmd 개수를 알아 낼 수 있다.

 

'Linux' 카테고리의 다른 글

MMAP  (0) 2022.12.18
Page Fault 관련 정리  (0) 2022.12.15
리눅스 프로그램과 커널 프로그램  (0) 2022.12.09
리눅스 운영체제의 구성  (0) 2022.12.09
커널 분석 및 디버깅 툴; uftrace  (0) 2022.12.09

 

uftrace

- User 함수 뿐만 아니라 라이브러리, 커널까지 디버깅할 수 있는 Tracing Tool

명령어 예시

  • uftrace record -K 2 [프로그램 명]
    • record: 함수 추적하는 옵션
    • -K: 커널까지 추적하는 옵션
    • 2: 함수 depth. 최대 2개까지 호출 되는 것을 볼 수 있음
  • uftrace replay
    • 프로그램이 재시작이 되진 않음
    • record 한 결과를 토대로 함수에 대한 호출 흐름을 보여줌

 

 

 

'Linux' 카테고리의 다른 글

4-Level Page Table  (0) 2022.12.18
MMAP  (0) 2022.12.18
Page Fault 관련 정리  (0) 2022.12.15
리눅스 프로그램과 커널 프로그램  (0) 2022.12.09
리눅스 운영체제의 구성  (0) 2022.12.09

+ Recent posts