🧠 물리주소와 논리주소(가상주소) 이해하기
![업로드중..]()
1. 왜 주소를 두 가지로 나눌까?
지금까지는 메모리에 하나의 주소만 존재한다고 생각했지만,
실제로 운영체제는 메모리를 물리주소(Physical Address) 와
논리주소(Logical Address, 가상주소 Virtual Address) 로 구분하여 관리한다.
그 이유는 다음과 같다:
- 실행 중인 프로그램(CPU 포함)은 메모리 안에
무슨 데이터가 어디에 저장되어 있는지 알 수 없음
- 메모리의 저장 내용은 계속 변하고, 프로그램마다 필요한 메모리 크기도 다름
- 여러 프로그램을 동시에 실행할 때 서로의 메모리 영역 보호가 필요함
- 프로그램마다 독립된 주소 공간(0번지부터 시작)이 필요함
그래서 운영체제는 논리주소(프로그램 관점) 와
물리주소(메모리 칩 관점) 을 나누어 관리하며,
이 둘의 변환은 CPU와 메모리 사이의 MMU(Memory Management Unit) 가 담당한다.
2. 물리주소(Physical Address)
✔ 정의
- 메모리 하드웨어 입장에서 본 실제 주소
- 실제 RAM 안에 데이터가 저장된 정확한 위치
- 절대로 겹칠 수 없음
✔ 특징
- 메모리 칩에 존재하는 진짜 주소
- “물리적으로 몇 번지에 저장되어 있는가?”가 중요
- 운영체제와 MMU가 관리
3. 논리주소(Logical Address, 가상주소)
✔ 정의
- CPU와 프로그램이 사용하는 주소
- 프로그램이 생각하는 주소이며 “가상의 주소”
- 실제 물리주소와 다를 수 있음
✔ 특징
- 프로그램마다 0번지부터 시작하는 독립 공간
- 서로 다른 프로그램끼리 주소가 겹쳐도 무방함
(어차피 MMU가 물리주소로 변환하므로 충돌 없음)
- CPU는 항상 논리주소만 사용함
4. 논리주소 → 물리주소 변환 과정
CPU → (논리주소) → MMU → (물리주소) → RAM
MMU는 두 가지 값을 이용해 변환한다:
-
베이스 레지스터(Base Register)
- 프로그램이 실제 메모리에서 차지하고 있는 시작 물리주소
-
논리주소(Logical Address)
- 프로그램 시작 지점(0번지)로부터 떨어진 거리(오프셋)
✔ 변환 공식
✔ 예시
- 베이스 레지스터 = 4000
- CPU가 접근하려는 논리주소 = 120
→ 물리주소 = 4120
5. 메모리 보호: 한계 레지스터(Limit Register)
MMU의 또 다른 중요한 역할은 메모리 보호이다.
✔ 한계 레지스터란?
- 프로그램이 사용할 수 있는 논리주소의 최대 범위
- 즉, 프로그램 크기를 의미
✔ 보호 규칙
CPU가 메모리에 접근할 때 다음 조건을 검사한다: 0 ≤ 논리주소 < 한계 레지스터
또는 물리 주소 기준:베이스 레지스터 ≤ 물리주소 < 베이스 레지스터 + 한계 레지스터
✔ 이 검사의 목적
- 다른 프로그램 메모리 침범 방지
- 운영체제 영역 침범 방지
- 프로그램 간 독립적인 실행 공간 확보
6. 요약
| 구분 | 물리주소 | 논리주소(가상주소) |
|---|
| 관점 | 메모리 하드웨어 관점 | CPU·프로그램 관점 |
| 주소 범위 | 겹칠 수 없음 | 프로그램마다 동일한 주소 사용 가능 |
| 생성 주체 | MMU/운영체제 | CPU |
| 특징 | 실제 저장된 위치 | 프로그램마다 0번지부터 시작 |
| 변환 | X | MMU가 물리주소로 변환 |
| 장점 | 정확한 위치 정보 | 메모리 보호, 독립성, 효율적 메모리 관리 |
📌 결론
- 프로그램은 논리주소(가상주소) 만 알고 있다.
- 실제 메모리의 주소는 물리주소 이다.
- 둘을 변환하고 보호하는 장치는 MMU 이다.
- 베이스 레지스터와 한계 레지스터 덕분에
여러 프로그램이 안전하게 독립적으로 실행될 수 있다.