본문으로 건너뛰기

물리 주소와 논리 주소

물리 주소

메모리가 사용하는 물리 주소(physical address)는 말 그대로 정보가 실제로 저장된 하드웨어상의 주소를 의미한다.

논리 주소

CPU와 실행 중인 프로그램이 사용하는 논리 주소(logical address)는 실행 중인 프로그램 각각에게 부여된 0번지부터 시작되는 주소를 의미한다.

MMU(Memory Management Unit)

논리 주소와 물리 주소 간의 변환은 CPU와 주소 버스 사이에 위치한 메모리 관리 장치(이하 MMU)라는 하드웨어에 의해 수행된다.


MMU는 CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더해 논리 주소를 물리 주소로 변환한다. 예를 들어 현재 베이스 레지스터에 15000이 저장되어 있고 CPU가 발생시킨 논리 주소가 100번지라면 이 논리 주소는 아래 그림처럼 물리 주소 15100번지(100 + 15000)로 변환된다.

베이스 레지스터는 프로그램의 가장 작은 물리 주소, 즉 프로그램의 첫 물리 주소를 저장하고, 논리주소는 프로그램의 시작점으로부터 떨어진 거리이다.


프로그램의 논리 주소 영역을 벗어나는 명령은 다른 프로그램의 정보를 삭제할 수 있기 때문에 이러한 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호할 방법이 필요하다. 이는 **한계 레지스터(limit register)**라는 레지스터가 담당한다.

베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면, 한계 레지스터는 논리 주소의 최대 크기를 저장한다. 즉, 프로그램의 물리 주소 범위는 베이스 레지스터 값 이상, 베이스 레지스터 값 + 한계 레지스터 값 미만이 된다.

CPU가 접근하려는 논리 주소는 한계 레지스터가 저장한 값보다 커서는 안된다. 한계 레지스터보다 높은 주소 값에 접근하는 것은 곧 프로그램의 범위에 벗어난 메모리 공간에 접근하는 것과 같기 때문이다.

Reference

  • 혼자 공부하는 컴퓨터 구조 + 운영체제