주소 변환
: CPU에 있는 가상 주소를 DRAM에 있는 실제 메모리의 주소로 변화하는 하드웨어의 지원을 의미 (= 주소 재배치)
- 이를 통해 OS가 프로세스를 가상 주소에서 실제 메모리 주소로 착각하게 만드는 가상화를 수행
Base and Bounds Register
- 주소 변환 기법을 사용하기 위해서는 CPU에 2개의 하드웨어 레지스터가 필요
- Base 레지스터 : 가상 주소 공간이 실제 메모리에 재배치되었을 때 주소 공간의 시작 부분을 가리킴
- Bound 레지스터 : 가상 주소 공간의 크기를 나타냄
- base, bound 레지스터 모두 CPU에 존재하는 하드웨어(DRAM)

- IN PICTURE)
- bound 레지스터는 16KB로 가상 주소 공간의 크기를 알려줌
- base 레지스터는 32KB로 실제 메모리 주소 공간의 시작 부분을 가리킴
- 2개의 레지스터를 사용하면 실제 메모리의 원하는 위치에 가상 주소 공간을 배치할 수 있음
- 프로세스가 자신의 주소 공간을 접근할 수 있게 함
동적 재배치 기술 (Dynamic(Hardware-based) Relocation)
: base, bound 레지스터를 이용하여 하드웨어를 기반으로 주소를 변환하는 방법
- 프로그램 실행이 시작했을 때 OS는 프로세스를 로드해야 하는 물리적 메모리 위치를 결정함
- 먼저 register에 값을 결정 -> physical address = virtual address + base : 0 <= virtual address < bound
- 이를 통해 주소 변환 처리와 프로세스를 보호할 수 있고, 만약 base, bound 레지스터에 문제가 발생하게 되면 OS가 개입해서 문제를 처리할 수 있음
- 필수 조건
-> 오로지 OS에 의해서만 base, bound 레지스터에 접근해서 값을 바꿀 수 있음
Memory Management Unit(MMU)
: MMU는 메모리 관리 장치이며, CPU가 메모리에 접근하는 것을 관리해 주는 하드웨어 장치
- 가상 주소가 실제 주소 변환 기법을 사용할 때 도와주는 역할

- MMU는 bound 레지스터의 범위 안에 들어가면 가상 주소를 실제 주소로 변환해줌
- 다른 physical address로 가는 것을 막아주면서 메모리를 보호해줌
-> MMU를 통해 가상 주소와 base 레지스터의 합이 bound 레지스터의 범위 안에 들었으면 실제 주소로 변환해주고, 범위에 벗어나면 예외 처리를 해줌
OS Issues for Memory Virtualizing
- base 레지스터와 bound 레지스터를 구현하기 위해 OS가 개입해야 하는 상황들)
- 프로세스가 생성될 때, 주소 공간을 위해 실제 메모리에서 여유 공간이 있는지 찾을 때
- 프로세스가 종료될 때, 종료된 프로세스가 사용하던 메모리 공간을 다른 프로세스가 사용할 수 있도록 확보할 때
- Context Switching이 발생했을 때, base 레지스터와 bound 레지스터의 정보를 저장하고 복원하는 작업을 할 때
- 위의 3가지를 제외한 다른 예외가 발생했을 때 호출할 핸들러나 함수를 제공해야 할 때
1) 프로세스가 생성될 때
- 프로세스가 생성될 때, OS는 새로운 주소 공간을 위해 반드시 사용할 수 있는 여유 공간을 찾아야 함
- Free list : 사용되지 않는 physical memory의 범위 목록

- Free list가 가리키고 있는 16KB, 48KB는 사용되지 않는 여유 공간을 의미
- 실제로 OS는 physical memory(DRAM)에서 어디에 빈 공간이 있는지 계속 추적해야 함
2) 프로세스가 종료될 때
- 프로세스가 종료될 때, OS는 종료된 프로세스를 반드시 Free list(사용 가능한 목록)에 다시 올려야 함

- process A가 exit되면, 이후에 사용할 수 있도록 Free list에 추가
3) Context Switching이 발생했을 때
- Context Switching이 발생했을 때, OS는 base와 bound 레지스터를 동시에 저장하고 복구해야 함
- 개별 Process의 base, bound 레지스터의 값은 OS에 의해서 Process별로 process structure 또는 PCB에 관리가 됨

- EX)
- Process A가 실행하는 도중에 Context Switching이 되면, Process A의 base 레지스터와 bound 레지스터를 본인의 PCB에 저장
- 그리고 Process B가 실행되고 종료될 때, 다시 PCB에 저장된 Process A의 base 레지스터와 bound 레지스터를 가져와서 다시 실행
'운영체제' 카테고리의 다른 글
11. 페이징(Paging) (0) | 2025.02.10 |
---|---|
10. 세그멘테이션(Segmentation) (0) | 2025.01.23 |
8. 주소 공간과 가상 메모리(Address Space, Virtual Memory) (0) | 2025.01.23 |
7. Context Switching(문맥 교환) (0) | 2025.01.23 |
6. 시스템 콜(System Call) (0) | 2025.01.23 |