커널 page 구조체 관련 질문 드립니다.

happyKYS의 이미지

안녕하세요. 커널 memory 쪽 분석 도중 궁금한 사항이 생겨 질문드립니다.

보통 32bit linux kernel에서 물리메모리는 page frame 4KB 단위로 쪼개서 관리하는 것으로 알고 있습니다.

궁금한 것은 이 page frame과 매칭되는 가상 주소 영역의 page 디스크립터가 있을 것인데요, 이 page 디스크립터들은 영구적으로 low memory에 위치하는 것으로 알고 있습니다.

이 page 디스크립터들이 위치하고 있는 영역이 어딘지 찾고 싶은데 조언좀 부탁드립니다.

감사합니다.

kese111의 이미지


entry를 가르키는 ptr 주소를 레지스터에 저장하므로 이를 찾아가면 될 것 같습니다.

happyKYS의 이미지

^^;; 제가 질문드리는 것은 ttb0 page table의 entry가 아니라(VA->PA 변환을 위해 사용, MMU), 각 물리 페이지 프레임에 대한 page 구조체의 저장 위치입니다.

답변 감사드립니다.

익명 사용자의 이미지

관련 코드는 mm/page_alloc.c 를 참고하세요.

zone마다 zone_mem_map으로 위치를 갖고 있습니다.

태훈의 이미지

pfn_to_page(페이지 프레임 번호) 쓰세요.

Just do it!