안녕하세요
x86 리눅스 아키텍쳐에서.
커널 페이지디렉토리의 물리주소가 CR3 레지스터에 들어있다고하길래
int cr3_value = 0;
asm
(
"movl %%cr3, %%eax\n\t"
"movl %%eax, %0" : "=m" (cr3_value) : : "eax"
);
printk("cr3_value == %X\n", cr3_value);
어떤분이 올려놓으신 소스를 가지고
커널모듈상에서 CR3 레지스터값을 출력해봤습니다
그러니까 0x1FBFD000 뭐 이런값이 나와서
이게 페이지디렉토리의 물리주소 위치인가보다... 했는데
혹시나싶어 모듈을 내렸다가 다시올려보니 위치가 다르게 찍히고, 할때마다 다르게찍히더군요??
어떻게된걸까요? ㅠㅠ
페이징을 해야하니까
CR3 레지스터값은 항상 일정해야하는거아닌가요??