최근에 질문으로 올린 문제(logical to physical mapping)와 비슷하게 page table을 읽어
logical to physical mapping 관계를 출력하려고 합니다.
검색을 해보니 mm/memory.c에 follow_page() function이 존재하는데
module에서 이녀석을 호출하려고 하니 여러가지 문제들이 발생합니다.
(undefined 문제가 발생하여 export_symbol을 추가하면서 해결해보려고
시도중인데 아직 잘 풀리지 않네요.)
혹시 follow_page로 page table을 출력해보셨거나, page table을
출력할 수 있는 좋은 방법이 있을런지요.
댓글 6
-
리누즈박
2013.07.31 01:38
-
리누즈박
2013.07.31 01:41
직접 눈으로 확인하지 않아도 관계없다면 아래 링크를 보세요.
http://recipes.egloos.com/5232056
-
하이디제이
2013.07.31 14:54
감사합니다. 그런데 실제로 특정 system의 page table을 읽어 virtual address에 대한 physical address 값을 프로파일링 하고 싶은데 쉽지가 않네요. 어떤 순간의 0~4GB virtual address에 대한 실제 physical address mapping을 snapshot으로 쭉 출력해보고 싶은데 간단한 방법이 있을 것 같으면서도 아직 풀지 못하고 있어서요.ㅠ
-
리누즈박
2013.07.31 16:01
커널 빌드 옵션에 페이지 테이블을 보여주는 옵션이 있네요.
원하시는게 이런 건가요?
CONFIG_X86_PTDUMP: Export kernel pagetable layout to userspace via debugfs
http://unix.stackexchange.com/questions/9622/dump-page-table-layout-kernel-config
https://www.kernel.org/doc/gorman/html/understand/understand006.html
http://linux-hacks.blogspot.kr/2009/08/dumping-kernel-page-tables.html
-
리누즈박
2013.07.31 23:06
정대진님 좋은 성과 있으시길 바랍니다. -
하이디제이
2013.07.31 17:10
리누즈박님 감사합니다. 말씀해주신 링크를 살펴보니 kernel page table을 dump하는 용도로 주로 특정 area의 address range와 type 정보들을 확인할 수 있는 것 같습니다. 저는 users-space에서 logic to physical mapping 관계를 보고싶은데 가령, "logical address 0x00000a0000의 physical address는 0x0000ffff와 대응된다"라는 정보를 page table을 traversing하면서 살펴보는 것입니다. 여러모로 자료를 찾아주셔서 감사합니다.
.
JTAG Debugger로 해당 물리 메모리를 직접 열어보는 방법이 제일 편할 것 같긴 한데...
비쌉니다. ^^;