메모리의 주소 공간-물리 주소와 논리 주소

김경훈·2024년 5월 6일

Computer Science

목록 보기
8/16


논리 주소(logical address)와 물리주소(physical address)가 무엇인지?
논리 주소와 물리 주소로 주소 공간을 나눈 이유는?
논리 주소를 물리 주소로 변환하는 방법?
에 대해 알아 보겠습니다.

CPU와 실행 중인 프로그램은 현재 메모리 몇 번지에 무엇이 저장되어 있는지 다 알고 있을까요?
알지 못합니다.
CPU와 실행중인 프로그램은 메모리 몇 번지에 무엇이 저장되어 있는지 다 알지 못합니다. 이유는 다음과 같습니다.

메모리에 저장된 값들은 시시각각 변한다.

  • 새롭게 실행되는 프로그램은 새롭게 메모리에 적재
  • 실행이 끝난 프로그램은 메모리에서 삭제
  • 같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소는 달라진다.

따라서 이러한 점을 극복하기 위해서 주소 체계를 물리 주소와 논리 주소로 나누어 둔 것입니다.

물리 주소

  • 메모리 입장에서 바라본 주소
  • 말 그대로 정보가 실제로 저장된 하드웨어상의 주소

논리 주소

  • CPU와 실행중인 입장에서 바라본 주소
  • 실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소

물리 주소와 논리 주소의 변환

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

CPU와 메모리 사이에 있는 MMU(메모리 관리 장치)라는 하드웨어에 의해 변환됩니다. CPU가 실행하고 이해하는 주소는 모두 논리 주소 입니다. 그런데 메모리와 주소 버스를 통해 소통할 때에는 MMU를 거치게 됩니다.

MMU는 논리 주소와 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환합니다. 여기서 베이스 레지스터는 기준 주소의 역할을 합니다. 이때 베이스 레지스터 안에는 프로그램의 물리 주소 상의 시작 주소가 담긴다고 보면 됩니다.

베이스 레지스터

  • 프로그램의 가장 작은 물리 주소(프로그램의 첫 물리 주소)를 저장하는 셈

논리 주소

  • 프로그램의 시작점으로부터 떨어진 거리인 셈

메모리 보호

한계 레지스터

  • 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음
  • 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면,
    한계 레지스터는 논리 주소의 최대 크기를 저장
  • 베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터 + 한계 레지스터 값

    이 처럼 CPU는 메모리에 접근하기 전 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지를 항상 검사한다.
    즉, 실행 중인 프로그램의 독립적인 실행 공간을 확보 & 하나의 프로그램이 다른 프로그램을 침범하지 못하게 보호한다.
profile
Cloud & DevOps

0개의 댓글