리눅스에서 선형 주소를 물리 주소로 변환하는 과정에 대해서 질문드립니다~
글쓴이: dlawjdvy / 작성시간: 월, 2007/06/04 - 9:31오후
메모리 페이징 관련해서 학교 과제를 하던 중 궁금한 점이 생겨서 이렇게 질문드립니다~
주어진 임의의 선형주소를 물리주소로 변환하기 위해서는 3단계의 페이징을 거치며, 이 과정을 간단히 살펴보면 우선
pgd_offset()을 이용하여 PGD의 엔트리를 찾아간 뒤 다시 pmd_offset()을 이용하며, 같은 방식으로 pte_offset()을 이용하여
PTE에 접근한 뒤 실제 물리 메모리를 참조하는 것으로 알고 있는데요...여기서 PTE에 offset을 더하여 실제 물리 메모
리를 참조하는 부분은 어떻게 구현되어 있는지 모르겠네요...아마 pgd_offset이 정의된 pgtable.h에 마찬가지로 정의되어 있을 듯 한데
코드를 들여다봐도 못찾겠습니다...ㅜㅜ 이 부분에 대해 잘 아시는 분, 답변 부탁드립니다~
Forums:
인용:여기서 PTE에
실제 PTE에서 offset을 더해 물리메모리주소를 만드는 건 mmu라는 하드웨어가 하게 되죠.(질문이 이것이 아닌 듯 한데...)
그리고 실제 커널에서는 pte, pgd, pmd 등 entry등을 관리해 주기만 하구요.
또한 mmu에 하드웨어적 한계로 인해 tlb의 개수가 물리적으로 제한이 있습니다. 커널은 tlb miss exception에서 pte 등을 tlb로 올려주는 역할도 하구요...
자세한 사항은 다음분이...
이미 잘 설명해주셨는데 더 자세하게 해야 하나요? ^^
나머지 내용은 MMU가 어떻게 물리적 주소를 캐쉬 내의 가상주소로 변환하는가, 1, 2차 캐쉬를 이용해 가상태그-가상주소 방식의 주소를 CPU 코어에 전달하는가 하는 얘기겠죠. ^^; 다 얘기하셔서 추가적으로 할 말이 없습니다.
====
( - -)a 이제는 학생으로 가장한 백수가 아닌 진짜 백수가 되어야겠다.
댓글 달기