주소에는 물리 주소와 논리 주소가 있다.
이 두 주소의 개념과 차이, 그리고 두 주소 간의 변환 방법에 대해 알아보자!
물리 주소와 논리 주소
- 컴퓨터에서 사용하는 주소는 물리 주소와 논리 주소 두가지가 존재한다.
물리 주소(physical address)
- 정보가 실제로 저장된 하드웨어 상의 주소로 메모리가 사용한다.
논리 주소(logical address)
- 실행 중인 프로그램 각각에게 부여된 주소로 CPU가 프로그램의 실행 위치를 파악할 때 사용한다.
- CPU는 모든 프로그램들의 물리 주소를 이해할 필요가 없다. 각 프로그램은 0번지부터 시작하는 프로그램 내의 주소가 존재한다.
- 즉, 프로그램마다 같은 논리주소가 존재할 수 있다.

논리 주소와 물리 주소의 변환
메모리 관리 장치(Memory Management Unit, MMU)란? 논리 주소와 물리 주소간 변환을 해주는 장치
- CPU와 주소 버스 사이에 위치한다.
- CPU가 발생 시킨 논리 주소와 베이스 레지스터 값을 더해서 물리 주소로 변환한다.
- ex. 프로그램 A를 실행할 때, 베이스 레지스터에 15000이 저장돼 있고, CPU가 논리주소 100번지 데이터 삭제를 명령하면 MMU는 15000과 100을 더한 15100번지의 데이터를 삭제하게 된다.
- 베이스 레지스터: 프로그램의 가장 작은 물리 주소를 저장한다. 즉, 프로그램이 시작하는 첫 물리 주소를 저장한다.
- 프로그램 논리 주소 0번지의 물리적 위치를 의미한다.
- 논리 주소는 프로그램의 시작점으로부터 떨어진 거리를 말한다.
메모리 보호 기법
- 프로그램 A를 실행할 때, CPU는 프로그램 A의 논리 주소 영역을 벗어나는 곳에 명령을 내려서는 안된다.
ex.
- 인터넷 브라우저 논리 주소 영역이 0 ~ 900번지인데, CPU가 인터넷 브라우저 1300번지의 데이터를 삭제하라고 명령하는 경우
- 논리 주소 영역을 벗어난 곳에 명령을 실행하면 다른 프로그램의 영역을 침범해 데이터 손상을 발생시킬 수 있다.
- 따라서, 논리 주소 범위를 벗어나는 명령어 실행을 방지하고, 실행 중인 프로그램이 다른 프로그램 영향을 받지 않도록 보호할 방법이 필요하다.
한계 레지스터
- 논리 주소의 최대 크기를 저장하는 레지스터
- CPU 명령이 프로그램 주소 범위를 벗어나는 경우를 방지하는 장치.
- CPU가 접근하는 논리 주소는 한계 레지스터가 저장한 값보다 커서는 안된다.
보호 과정
- CPU는 명령어 실행 전 항상 접근하려는 논리 주소가 한계 레지스터보다 작은지 검사한다.
- CPU가 한계 레지스터보다 높은 논리 주소에 접근하려고 할 때는 인터럽트(트랩)을 발생시켜 프로그램 실행을 중단한다.
- 즉, 실행 중인 프로그램의 독립적 실행 공간을 형성하고, 그 범위를 넘거나 침범받지 않도록 보호한다.