<aside> 💡 다음 내용에서 이어지는 내용…
그럼 실제 물리 주소 맵핑은 어케함?
CPU에서 직접 수행해줌 - Translation
![[VM] - Translation](https://prod-files-secure.s3.us-west-2.amazonaws.com/09ccd4d5-876c-4bba-bbdf-cc77a0a11257/2ba788d1-1a5f-40fb-80f8-84c9ff22f230/Untitled.png)
</aside>
이제는 PC가 VM ADDRESS 기준으로 돌아가는데
VM은 결국 가상이니까, 실제 메모리인 물리메모리 DRAM에도 그 주소를 매핑해줘야겠지?
이것이 바로 Address Translation이다
VM 은 물리 메모리보다 훨씬 크다
왜? VM은 무한하다고 가정하니까
이걸 실제 물리 메모리로 Translation해야하는데
이걸 소프트웨어적으로 구현하면 너무 느리겠지?
(한번 할때마다 Instruction Fetch로 메모리 불러와야하니까)
그래서 하드웨어적으로 구현할거다
<aside> 💡 페이징에서 가상 주소를 물리 주소로 변환하는 방법
Translation은 은 중앙 처리 장치(CPU)에서 수행됩니다.
CPU는 실행 중인 프로세스의 VM주소를 물리주소로 Translation합니다
물리 주소는 메모리 컨트롤러에 전송되어 실제 메모리 위치를 지정합니다.
</aside>
페이징을 사용하면 가상 주소 공간을 페이지 단위로 나누어 관리합니다.
>> 즉, 가상 주소는 페이지 번호(p)와 오프셋(o)의 두개로 구성됩니다.
<aside> 💡 Translation 은 다음과 같은 단계로 이루어집니다.
예를 들어, 가상 주소 0x00000000은 페이지 번호 0, 오프셋 0에 해당합니다.
페이지 크기가 4KB이고 페이지 테이블이 다음과 같이 구성되어 있다고 가정합니다.
| 페이지 번호 | 페이지 프레임 번호 |
|---|---|
| 0 | 10 |
따라서, 가상 주소 0x00000000은 물리 주소 0x00001000에 매핑됩니다.
</aside>