[질문] 리눅스 가상-물리 메모리 매핑 관련(Normal Zone)

안녕하세요…! 현재 저는 x86기반 리눅스를 공부하고 있습니다.

가상 메모리와 물리메모리 매핑관련해서 공부중인데요, 궁금한 것이

잇는데 정보를 찾아볼 수 없어 이렇게 질문을 올립니다!

x86기반 리눅스에서는 가상메모리 영역의 0xC0000000부터 +896MB까지가

물리메모리 0x00000000~896MB로 1:1 Direct Mapping된다고

많은 서적과 인터넷 자료에 나와잇습니다. 그리고 이부분이 Normal zone이라는 것도 알겟고,
그래서 커널에서는 C0000000~+896MB사이의 가상메모리 주소는 (메모리주소 - 0xC0000000)으로
물리메모리주소를 쉽게 구한다고 알고 있습니다.

하지만, cpu는 사실 이러한 사실을 모르고 mmu를 통해 변환하게
될텐데요, 그럼 결국 page table에서도 1:1 매핑을 일일히 다 해주어야 하지 않나요??

2 level page table 기법을 쓰게된다면 가상메모리주소의
상위 10bit이 pgd 인덱스고 다음 10bit이 pte 인덱스일텐데요,

0xC0000000~ 0xF8000000 을 물리메모리와 1:1매핑하려면
pgd인덱스를 보면
1100000000 ~ 1111100000 (2진)
차이는 11100000(2진) = 0xE0 = 224 이고

결국 224개의 pte가 사용되어야 한다는 소리가 됩니다.

그럼 커널이 부팅때 초기화될 때, 이만큼의 pte를 잡고 초기화해줘야
한다는 말이 되는데, 이 부분을 코드에서 찾을 수가 없습니다…ㅠ

제가 못찾는건지, 이 개념이 틀린건지 맞긴한건지 궁금하여 질문을 올립니다…

고수님들의 답변을 기다리겠습니다…ㅠ 좋은 하루되시길 바랍니다!!