운영체제 - Address Translation
Address Translation
Memory Virtualizing with Efficiency and Control
- 메모리 가상화
- 프로그램이 자체적이고 무한한 메모리를 가지고 있다는 환상을 만든다.
- 효율성, 제어 가능성 및 유연성을 위해 제한된 직접 실행과 유사한 전략을 취한다.
- 메모리 가상화에서는 하드웨어 지원을 통해 효율성과 제어가 이루어진다.
- EX) Registers, TLB(Translation Look-aside Buffer)s, Page-Table
Address Translation
- 하드웨어에 의해 가상 주소를 물리적 주소로 변경
- OS의 올바른 변환을 위한 메모리 관리
Assumptions
- 주소 공간은 실제 메모리에 연속적으로 저장된다.
- 주소 공간의 크기는 실제 메모리 크기보다 작다.
- 각각의 주소 공간은 정확히 같은 크기이다.
Relocation Address Space
- 프로그램의 관점에서, 주소 공간은 주소 0에서 시작
- 메모리 가상화를 위해 OS는 프로세스를 실제 메모리 공간에 위치시키려 함
- 프로세스를 투명한 방식으로 메모리에서 재배치하려면?
- 0에서 시작하는 가상 주소 공간을 생성하려면?
Base and Bounds Register

- Bounds Register = Size of Process
- Base Register = Starting Address of Process in Physical Memory
⠀⠀
- Physical Address = Virtual Address + Base Register
- 0 ≤ Virtual Address < Bounds Address
⠀⠀
- 역할
- 실제 메모리의 어느 곳에나 주소 공간 배치 가능
- 프로세스가 자신의 주소 공간에만 접근할 수 있도록 보장
- 필수 전제 조건
- Base/Bounds Register는 OS에 의해서만 접근 가능하며 PCB에 존재
Memory Management Unit

OS Issues for Memory Virtualizing
- OS는 Base-and-Bounds 접근 방식을 구현하기 위해 조치 필요
When a Process Starts Running
- OS는 새로운 주소를 위한 공간을 찾아야 한다.
- Free List: 사용되지 않는 실제 메모리의 범위 목록

When a Process is Terminated
- OS는 메모리를 Free List에 다시 넣어야 한다.

When Context Switch Occurs
- OS는 Base-and-Bounds를 PCB에 저장 및 복원해야 한다.
- Base/Bounds Register의 변경은 Kernel Mode에서 진행된다.
