혼자공부하는 컴퓨터구조 + 운영체제제책으로 공부한 내용을 정리한 글입니다.
메모리에 저장된 정보의 위치는 '주소'로 표현됩니다
컴퓨터의 주기억장치(RAM)는 모든 정보를 바이트 단위로 저장합니다.
이 바이트 하나하나는 고유한 위치를 가지며, 이 고유한 위치를 주소(address) 라고 합니다.
예를 들어, RAM 안에 1000번지, 1001번지, 1002번지…처럼 번호가 붙어있는 셈입니다.
주소에는 두 종류가 있습니다
물리 주소(Physical Address) | 실제 메모리(RAM) 하드웨어에서 사용되는 주소입니다 |
논리 주소(Logical Address) | CPU나 실행 중인 프로그램이 이해하고 사용하는 주소입니다 |
즉, 메모리(RAM)는 물리 주소로 접근하지만, 프로그램은 논리 주소만 보고 작업합니다.
왜 논리 주소와 물리 주소를 나눠서 사용하는가?
실행 중인 프로그램은 현재 메모리 어디에 적재되어 있는지 알지 못합니다.
그 이유는 다음과 같습니다:
- 메모리는 계속 변한다
- 프로그램이 실행되면 메모리에 올라오고, 실행이 끝나면 메모리에서 내려갑니다
- 같은 프로그램이라도 실행할 때마다 메모리 상에서 올라가는 위치(주소)는 다를 수 있습니다
- 프로그램마다 독립된 공간이 필요하다
- 프로그램끼리 서로 간섭하면 안 됩니다
- 그래서 각각의 프로그램은 자기만의 주소 체계를 가지고 있어야 합니다
그래서 실제 주소는 숨기고, 프로그램에게는 자기만의 논리 주소(0번지부터 시작하는) 만 보이게 합니다.
논리 주소 → 물리 주소 변환은 MMU가 담당합니다
CPU는 논리 주소를 사용하여 명령을 실행합니다.
하지만 메모리는 물리 주소로만 접근할 수 있으므로, 이 둘 사이 변환이 필요합니다.
이 변환은 MMU (Memory Management Unit, 메모리 관리 장치) 라는 하드웨어가 담당합니다.
변환 방법:
물리 주소 = 논리 주소 + 베이스 레지스터 값
- 베이스 레지스터(Base Register):
현재 실행 중인 프로그램이 메모리에 올라간 시작 주소(물리 주소)를 저장합니다. - 예:
- 베이스 레지스터 값: 15000
- 논리 주소: 100
- 물리 주소 = 15000 + 100 = 15100
이런 방식으로 CPU는 논리 주소만 사용하고, MMU가 이를 물리 주소로 변환하여 실제 메모리에 접근합니다.
논리 주소가 무제한으로 접근하면 안 되는 이유
프로그램에게는 0번지부터 시작하는 논리 주소가 부여됩니다.
그렇다면 1000번지, 2000번지, 심지어 1억 번지까지도 접근할 수 있을까요?
→ 안 됩니다. 위험합니다.
그 이유는:
- 어떤 프로그램이 너무 큰 논리 주소를 사용할 경우,
- 다른 프로그램의 영역까지 침범할 수 있기 때문입니다.
예시:
메모장 | 1000~1999 |
인터넷 브라우저 | 2000~2999 |
만약 메모장 프로그램이 논리주소 1500번지를 접근하려고 하면:
- 물리 주소 = 1000(베이스) + 1500 = 2500
- 이 주소는 브라우저 영역입니다 → 위험! ❌
이 문제를 막기 위한 장치: 한계 레지스터
한계 레지스터(Limit Register) 는 프로그램이 사용할 수 있는 최대 논리 주소 범위를 지정합니다.
베이스 레지스터 | 프로그램의 시작 물리 주소 (예: 1000) |
한계 레지스터 | 프로그램이 사용할 수 있는 논리 주소 크기 (예: 800) |
- CPU는 어떤 논리 주소를 접근하려 할 때,
→ 반드시 논리 주소 < 한계 레지스터인지 검사합니다.
만약 초과하면?
- 인터럽트 발생 → 프로그램 강제 중단
- 이를 통해 다른 프로그램 침범을 방지합니다
전체 흐름 요약
- CPU는 프로그램의 논리 주소 100을 사용하여 메모리에 접근하려고 함
- MMU가 베이스 레지스터(예: 1000)와 더해서 물리 주소 1100으로 변환
- CPU는 1100번지에 접근함
- 그 전에, MMU는 100이 한계 레지스터(예: 800)을 넘는지 검사
- 넘으면 → 인터럽트
- 넘지 않으면 → 접근 허용
결론
이러한 구조 덕분에 다음이 가능합니다:
✅ 각 프로그램은 자기만의 주소 공간을 갖고
✅ 서로 간섭하지 않고 독립적으로 실행되며
✅ 논리 주소 → 물리 주소 변환은 MMU가 자동으로 처리하며
✅ 잘못된 접근은 한계 레지스터가 막아주기 때문에
✅ 시스템의 안정성과 보안이 보장됩니다
'컴퓨터 구조' 카테고리의 다른 글
다양한 보조기억장치 (0) | 2025.06.21 |
---|---|
캐시 메모리 (0) | 2025.06.20 |
RAM의 특징과 종류 (0) | 2025.06.20 |
CISC와 RISC (0) | 2025.06.19 |
명령어 병렬 처리 기법 (0) | 2025.06.18 |