1. 리눅스 커널에서
cat /proc/kallsyms
를 통해서 심볼테이블을 확인해보면
c0851000 B swapper_pg_dir
이런식으로 심볼이 정의되있는걸 볼수있는데요
커널모듈 소스코드상에서
unsigned int* p = swapper_pg_dir;
이런 코드로 주소를 가져오려고하면
undefined symbol 이라고 에러가 나네요;
kallsyms 에서 확인이 가능한데 왜 사용을 못하는걸까요?
2. 커널페이지테이블의 시작주소가(swapper_pg_dir) 라고 해서
일단 가상주소가 심볼테이블에 있으니, 그곳을 따라가서 메모리 덤프를 떳습니다.
그러니까 페이지 디렉토리의 내용이 나오는것 같았습니다.
하지만 페이지 디렉토리에 있는 내용은
20비트의 페이지 테이블의 PFN(page frame number) 과, 12비트의 dirty 등 각종 비트들이었습니다.