Address Translation
Address Translation (주소 변환)
📝 메모리 가상화란?
OS가 프로세스에게 개인 메모리 공간이 있는 것처럼 착각하게 만드는 것
효율성, 제어성, 유연성 제공
🔄 Address Translation (주소 변환)
가상 주소를 물리 주소로 변환하는 하드웨어 지원
주소 재배치와 같은 말
CPU의 가상 주소 → DRAM의 실제 메모리 주소
📌 Base and Bounds Register
Base Register
주소 공간의 시작 부분을 가리킴
가상 주소 공간이 실제 메모리에 재배치된 위치
Bound Register
가상 주소 공간의 크기를 나타냄
Limit Register라고도 함
특징
CPU에 존재하는 하드웨어
실제 메모리의 원하는 위치에 가상 주소 공간 배치 가능
💡 Dynamic Relocation (동적 재배치)
Base, Bound 레지스터를 이용한 하드웨어 기반 주소 변환
주소 변환 공식
physical address = virtual address + base
범위 검증
0 <= virtual address < bound
범위 벗어나면 예외 처리
필수 전제조건
오로지 OS만 Base, Bound 레지스터 값 변경 가능
🔧 MMU (Memory Management Unit)
메모리 관리 장치
CPU가 메모리 접근하는 것을 관리하는 하드웨어
가상 주소 → 실제 주소 변환 도움
동작 방식
Bound 레지스터 범위 안:
- 가상 주소 → 실제 주소 변환
Bound 레지스터 범위 밖:
- 예외 처리
- 다른 physical address 접근 차단
🖥️ OS의 역할
1. 프로세스 생성 시
주소 공간을 위해 실제 메모리에서 여유 공간 찾기
Free list 사용
- 사용되지 않는 physical memory 범위 목록
- 사용 가능한 여유 공간
2. 프로세스 종료 시
종료된 프로세스를 Free list에 추가
다른 프로세스가 사용할 수 있도록 확보
3. Context Switch 발생 시
Base, Bound 레지스터 정보 저장 및 복원
Process Structure 또는 PCB에 관리
4. 예외 처리
Exception handlers 제공
예외 발생 시 호출할 함수 제공
❓ 면접 질문 예시
Q1. 주소 변환 기법이란 무엇인가요?
답변: 주소 변환 기법은 CPU에 있는 가상 주소를 DRAM에 있는 실제 메모리의 주소로 변환하는 하드웨어의 지원을 의미합니다. 주소 재배치라고도 하며, OS가 프로세스를 가상 주소에서 실제 메모리 주소로 착각하게 만드는 가상화를 수행하게 합니다.
Q2. Base와 Bound 레지스터의 역할은?
답변: Base 레지스터는 가상 주소 공간이 실제 메모리에 재배치되었을 때 주소 공간의 시작 부분을 가리킵니다. Bound 레지스터는 가상 주소 공간의 크기를 나타냅니다. 두 레지스터 모두 CPU에 존재하는 하드웨어이며, 실제 메모리의 원하는 위치에 가상 주소 공간을 배치할 수 있게 해줍니다.
Q3. 동적 재배치 기술에 대해 설명해주세요.
답변: 동적 재배치 기술은 Base와 Bound 레지스터를 이용하여 하드웨어 기반으로 주소를 변환하는 방법입니다. 실제 주소는 가상 주소와 Base의 합으로 계산되며, 가상 주소는 0보다 크거나 같고 Bound보다 작아야 합니다. 이를 통해 주소 변환 처리와 프로세스 보호를 할 수 있습니다.
Q4. MMU에 대해 설명해주세요.
답변: MMU(Memory Management Unit)는 메모리 관리 장치로, CPU가 메모리에 접근하는 것을 관리해주는 하드웨어 장치입니다. 가상 주소가 Bound 레지스터의 범위 안에 들어가면 실제 주소로 변환해주고, 범위에 벗어나면 예외 처리를 해줍니다. 다른 physical address로 가는 것을 막아주면서 메모리를 보호합니다.
Q5. OS가 개입해야 하는 상황들에 대해 설명해주세요.
답변: 첫째, 프로세스가 생성될 때 주소 공간을 위해 실제 메모리에서 여유 공간을 찾아야 합니다. 둘째, 프로세스가 종료될 때 종료된 프로세스가 사용하던 메모리 공간을 Free list에 추가하여 다른 프로세스가 사용할 수 있도록 확보해야 합니다. 셋째, Context Switch가 발생할 때 Base와 Bound 레지스터의 정보를 PCB에 저장하고 복원하는 작업을 해줘야 합니다.
📚 원본 참고 자료
출처: 2023-CS-Study
- 파일: os_address_traslation.md
- 내용: Address Translation, Base and Bounds Register, MMU