
논리 주소(logical address)와 물리주소(physical address)가 무엇인지?
논리 주소와 물리 주소로 주소 공간을 나눈 이유는?
논리 주소를 물리 주소로 변환하는 방법?
에 대해 알아 보겠습니다.
CPU와 실행 중인 프로그램은 현재 메모리 몇 번지에 무엇이 저장되어 있는지 다 알고 있을까요?
알지 못합니다.
CPU와 실행중인 프로그램은 메모리 몇 번지에 무엇이 저장되어 있는지 다 알지 못합니다. 이유는 다음과 같습니다.
메모리에 저장된 값들은 시시각각 변한다.
따라서 이러한 점을 극복하기 위해서 주소 체계를 물리 주소와 논리 주소로 나누어 둔 것입니다.

논리 주소는 실행 중인 프로그램, 즉 메모리에 적재되어 있는 프로그램 하나하나에게 0번지부터 시작하는 주소를 부여한 주소 체계이기 때문에 얼마든지 같은 주소번지가 중복되어 있을 수 있습니다. 따라서논리 주소를 물리 주소로 변환해 주어야 합니다.

CPU와 메모리 사이에 있는 MMU(메모리 관리 장치)라는 하드웨어에 의해 변환됩니다. CPU가 실행하고 이해하는 주소는 모두 논리 주소 입니다. 그런데 메모리와 주소 버스를 통해 소통할 때에는 MMU를 거치게 됩니다.
MMU는 논리 주소와 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환합니다. 여기서 베이스 레지스터는 기준 주소의 역할을 합니다. 이때 베이스 레지스터 안에는 프로그램의 물리 주소 상의 시작 주소가 담긴다고 보면 됩니다.

베이스 레지스터
논리 주소
