CS(Computer science)
[운영체제] 메모리 관리 (1) : 컴퓨터가 메모리를 관리하는 방법
오늘도 타는중
2023. 1. 17. 17:46
메모리 관리 (1)
# Logical VS Physical Address
# 주소 바인딩
# MMU
# Dynamic Relocation
# Hardware Support for Address Translation
✍️ 본 포스팅은 이화여자대학교 반효경 교수님의 "운영체제" 강의를 들으며 정리한 내용입니다.
*Logical VS Physical Address
메모리라는 것은 주소를 통해 접근하는 정보 저장 기억장치이다. 주소는 두 가지가 존재한다.
- Logical address (= virtual address)
- 프로세스마다 독립적으로 가지는 주소 공간
- 각 프로세스마다 0번지부터 시작
- CPU가 보는 주소는 logical address임
- Physical address
- 메모리에 실제 올라가는 위치
- 주소 바인딩
- 주소를 결정하는 것
- Symbolic Address : 프로그래머는 메모리 저장 시 변수 이름에 저장하도록 하는데, 이 변수 이름을 의미
- Symbolic Address -> Logical Address -> Physical address
Logical Address -> Physical address 로 넘어가는 시점이 언제일까?
*주소 바인딩 (Address Binding)

- Compile time binding
- 물리적 메모리 주소(physical address)가 컴파일 시 알려짐
- 시작 위치 변경시 재컴파일
- 컴파일러는 절대 코드(absolute code) 생성
- Load time binding
- Loader의 책임 하에 물리적 메모리 주소 부여
- 컴파일러가 재배치가능코드(relocatable code)를 생성한 경우 가능
- Execution time binding (= Run time binding)
- 수행이 시작된 이후에도 프로세스의 메모리 상 위치를 옮길 수 있음
- CPU가 주소를 참조할 때마다 binding을 점검 (address mapping table)
- 하드웨어적인 지원이 필요 (e.g., base and limit registers, MMU)
*Memory-Management Unit (MMU)
- MMU (Memory-Management Unit)
- logical address를 physical address로 매핑해주는 하드웨어 장치
- MMU scheme
- 사용자 프로세스가 CPU에서 수행되며, 생성하는 모든 주소값에 base register (=relocation register)의 값을 더함
- user program
- logical address만을 다룬다.
- 실제 physical address를 볼 수 없으며, 알 필요가 없다.
*Dynamic Relocation : 물리적 메모리로 매핑 과정

- CPU가 logical address 346번지를 요청한다.
- MMU는 relocation register (프로그램의 physical address 시작점)에 논리적 주소를 더한
physical address 위치에 매핑시킨다. - limit register는 physical address의 최대치를 고려하여, 요청 logical address의 최대치를 제한둔다.
(이로써 고의로 최대 physical memory 위치 넘는 요청 등 악의적인 시도도 막을 수 있음)
*Hardware Support for Address Translation : 예외처리

- CPU가 logical 주소 요청
- MMU의 limit register를 넘는지 확인한다.
- limit register를 넘는다면 trap이 걸린다.
- trap이 걸리면 하던 일을 멈추고 CPU 제어권이 운영체제로 넘어간다.
- 운영체제는 trap이 왜 걸렸는지 파악 후, 그에 대한 응징을 한다.
- trap이 걸리지 않는다면 정상적으로 physical memory에 매핑시켜 CPU에 전달한다.