2010-07-15 5 views
0

다음과 같이 가정합니다. 하나의 레버 페이징으로 가상 메모리가있는 시스템이 있고 MMU가 있고 TLB는 소프트웨어로 제어됩니다.MMU 및 TLB 미스

좋아 .. 그래서 나는 프로세스라고 상상하고 가상 주소 vaddr의 RAM에있는 단어를 읽고 싶다.

그래서 CPU가 MMU vaddr을 제공하면 MMU는 vaddr의 상위 5 비트를 가진 항목이있는 경우 TLB를 검사합니다. 그것이 있으면 ... 모두 괜찮아요, 그것은 실제 주소를 계산하고 모두 잘 간다.

이제 TLB에 없다고 가정합니다. 이 경우 MMU는 인터럽트 (페이지 폴트)를 발생시킵니다. 좋아 .. 이제 페이지 오류 처리기를 사용 중입니다.

PBR (페이지 기준 레지스터)에는 페이지 테이블의 시작 주소가 있습니다. 내 질문은 여기에 있습니다. 이 주소는 물리적 주소입니까? 나는 그것이 사실이라면 두 가지를 의미 할 것이다 : 1) 프로세스의 가상 주소 공간에 여하튼 예약해야한다. (그런 식으로 들어 본 적이 없다) 2)이 주소가 TLB에 없다면, 다시 한 페이지 오류를 일으킬 것이고 나는 무한 루프를 가질 것이다.

테이블의 주소에 대한 동일한 질문입니다. 내가 두 단계의 페이징을했다면. 첫 번째 수준 테이블 (두 번째 수준 테이블을 가리키는)의 항목에있는 주소는 어떻게 든 가상 또는 실제입니까?

감사합니다.

답변

3

숙제?

어쨌든 이러한 것들은 CPU 아키텍처 설명서에 자세히 설명되어 있습니다. 그리고 당신은 어떤 CPU를 쓰는지도 모릅니다. x86은 TLB 미스에서 페이지 오류를 생성하지 않습니다.

+0

TLB 미스가 반드시 #PF에 나오지 않는다는 것을 지적하는 것이 좋습니다! – Benoit

+0

정성스럽게 신경 쓰시겠습니까? 왜 TLB 미스가 결점에서 자유 롭습니까? 이것은 직각입니다. TLB 히트/미스는 번역 캐싱의 문제 일뿐 아니라 HW에 의해 처리되는 반면, 페이지 누락과 같은 구조적으로 볼 수 있고 OS에 의해 처리되어야하는 많은 다른 경우에서 오류가 발생할 수 있습니다. 페이지가 액세스되지 않은 페이지 등 ... 원래의 질문에 답하기 위해 페이지 맵은 물리적 주소 공간으로 구성되고 액세스됩니다. 즉, 페이지 워크 중에 페이지 맵에 액세스를 변환 할 필요가 없습니다. – Leeor

관련 문제