논리 주소 VS 물리적 주소
메모리에는 논리적 주소와 물리적 주소가 존재합니다.
- 논리적 주소 (Virtual Address)
- 프로세스마다 독립적으로 가지는 주소 공간
- 각 프로세스마다 0번지부터 시작
- CPU가 보는 주소
- 물리적 주소 (Physical Address)
- 메모리에 실제 올라가는 위치
해당 주소들은 주소 변환을 통해 하드웨어는 명령어 반입, 저장 등의 가상 주소를 정보가 실제 존재하는 물리 주소로 변환합니다.
운영체제는 정확한 변환이 이루어질 수 있도록 메모리의 빈 공간과 사용 중인 공간을 항상 알고 있어야 하고, 메모리 사용을 제어하고 관리합니다.
주소 바인딩
주소 바인딩에는 대표적으로 3개가 있습니다.
- Complile Time Binding
- 프로그램의 변수나 명령어가 어디 메모리에 위치할지를 컴파일 타임에 결정합니다.
- 시작 위치 변경시 재 컴파일
- 컴파일러는 절대 코드(실행될 메모리 위치가 고정된 코드, 컴파일러가 특정 물리 주소를 절대값으로 박아놓음)
- 요즘은 사용 X -> 모든 프로그램이 주소 0부터 시작 X, 재사용 불가
- Load time Binding
- Loader의 책임하에 물리적 메모리 주소 부여
- 컴파일러가 재배치가능한 코드를 생성한 경우 가능
- 프로그램이 시작되서 메모리에 올라갈떄 부여 받는다.
- Execution Time Binding
- 프로그램이 실행되는 순간마다 CPU가 주소를 가상주소-> 물리주소로 변환
- 하드웨어적인 자원이 필요하다. MMU(Memory Management Unit)
MMU : 논리적 주소를 물리적 주소로 변환해 매핑해주는 하드웨어 장치
프로세스 주소 공간이 실제로 다른 물리 주소에 배치되어 있을 떄, 주소 0번지부터 시작하는 가상 주소 공간의 환상을 제공하는 방법이 관건입니다.

동적 재배치 (베이스 바운드)
1950년대 첫 번쨰 시분할 컴퓨터에서 베이스와 바운드라는 간단한 아이디어가 나와 채택되었습니다.
이 기술은 동적 재배치(Dynamic Relocation)이라고도 불립니다.
각 CPU만 2개의 하드웨어 레지스터가 필요합니다. 하나는 Base 레지스터, 하나는 바운드 Bound 레지스터( Limit 레지스터)가 필요합니다. 이 베이스와 바운드의 쌍은 우리가 원하는 위치에 주소 공간을 배치할 수 있게 합니다.
물리 주소 = 가상 주소 + 베이스


또한, 보호 기능을 가지고 있습니다.
만약 프로그램이 자기 범위를 넘어가는 주소를 접근하려 하면? CPU가 예외(Exception)를 발생시킴 → OS가 프로세스 강제 종료됩니다.
단점
아래의 그림을 다시 봐보겠습니다.
동적 재배치의 단점은 내부 단편화가 일어납니다. 메모리에 사용하지 않는 부분까지 통째로 올리기에 효율적으로 메모리를 사용할 수가 없게 됩니다.

'CS > OS' 카테고리의 다른 글
| [OS] 여유 공간 관리 (0) | 2025.05.19 |
|---|---|
| [OS] 세그멘테이션 (0) | 2025.05.19 |
| [OS] Proportional Share(비례 배분) 스케줄러 (0) | 2025.04.15 |
| [OS] 멀티 레벨 피드백 큐 (0) | 2025.03.07 |
| [OS] CPU 스케줄링 (0) | 2025.03.06 |