<aside> 💡 다음 내용에서 이어지는 내용…


PC값은 결국 Virtual Memory의 주소가 된다

</aside>

Translation?

이제는 PC가 VM ADDRESS 기준으로 돌아가는데

VM은 결국 가상이니까, 실제 메모리인 물리메모리 DRAM에도 그 주소를 매핑해줘야겠지?

이것이 바로 Address Translation이다
VM 은 물리 메모리보다 훨씬 크다

왜? VM은 무한하다고 가정하니까

이걸 실제 물리 메모리로 Translation해야하는데

이걸 소프트웨어적으로 구현하면 너무 느리겠지? 

(한번 할때마다 Instruction Fetch로 메모리 불러와야하니까)

그래서 하드웨어적으로 구현할거다

<aside> 💡 페이징에서 가상 주소를 물리 주소로 변환하는 방법


Translation은 은 중앙 처리 장치(CPU)에서 수행됩니다.

CPU는 실행 중인 프로세스의 VM주소를 물리주소로 Translation합니다

물리 주소는 메모리 컨트롤러에 전송되어 실제 메모리 위치를 지정합니다.

</aside>

Translation 예시

페이징을 사용하면 가상 주소 공간을 페이지 단위로 나누어 관리합니다.

>> 즉, 가상 주소는 페이지 번호(p)와 오프셋(o)의 두개로 구성됩니다.

<aside> 💡 Translation 은 다음과 같은 단계로 이루어집니다.


  1. 페이지 번호를 사용하여 페이지 테이블을 찾습니다.
  2. 페이지 테이블에서 페이지 프레임 번호를 가져옵니다.
  3. 페이지 프레임 번호와 오프셋을 사용하여 물리 주소를 생성합니다.

예를 들어, 가상 주소 0x00000000은 페이지 번호 0, 오프셋 0에 해당합니다.

페이지 크기가 4KB이고 페이지 테이블이 다음과 같이 구성되어 있다고 가정합니다.

페이지 번호 페이지 프레임 번호
0 10

이 경우, Translation은 다음과 같이 이루어짐

  1. 페이지 번호 0을 사용하여 페이지 테이블을 찾습니다.
  2. 페이지 테이블에서 페이지 프레임 번호 10을 가져옵니다.
  3. 페이지 프레임 번호 10과 오프셋 0을 사용하여 물리 주소 0x00001000을 생성합니다.

따라서, 가상 주소 0x00000000은 물리 주소 0x00001000에 매핑됩니다.

</aside>