메모리의 주소 공간

물리 주소와 논리 주소

CPU와 메모리에 실행 중인 프로그램은 메모리 몇 번지에 무엇이 있는지 다 알지 못한다. 메모리에는 새롭게 실행되는 프로그램이 시시때때로 적재되고, 실행이 끝나면 삭제된다. 게다가 같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소가 달라질 수 있기 때문이다.

주소는 메모리가 사용하는 물리 주소와 CPU와 실행 줒ㅇ인 프로그램이 사용하는 논리 주소가 있다.

  • 물리 주소physical address: 메모리가 사용하는 물리주소는 말 그대로 정보가 실제로 저장된 하드웨어상의 주소
  • 논리 주소logical address: 실행 중인 프로그램 각각에게 부여되는 0번지부터 시작되는 주소

메모리 관리 장치MMU: Memory Management Unit

CPU가 메모리와 상호작용하려면 논리 주소와 물리 주소 간의 변환이 필요한데, CPU와 주소 버스 사이에 위치한 메모리 관리 장치, MMU라는 하드웨어에 의해 수행된다.

MMU는 CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환한다.

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

메모리 보호 기법

다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하기 때문에 논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호해야 한다. 이는 한계 레지스터limit register라는 레지스터가 담당한다.

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

CPU는 메모리에 접근하기 전에 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지를 항상 검사한다. 만약 CPU가 한꼐 레지스터보다 높은 논리 주소에 접근하려고 하면 인터럽트(트랩)을 방생시켜 실행을 중단한다.

0개의 댓글