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

.·2023년 12월 29일

computer-architecture

목록 보기
9/10

가상의 주소인 논리주소와 실제 하드웨어의 메모리 주소인 물리주소가 있다.

  • 논리 주소와 물리 주소로 주소 공간을 나눈 이유는 ?
  • 논리 주소를 물리 주소로 변환화는 방법은 ?

물리 주소와 논리 주소

CPU 와 실행 중인 프로그램은 현재 메모리 몇 번지에 무엇이 저장되어 있는지 다 알고 있을까 ?
그렇지 않다.

메모리에 저장된 값들을 시시각각 변하기 때문이다.

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

이러한 점을 극복하기 위해 물리 주소와 논리 주소로 나누었다.

물리 주소

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

논리 주소

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


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

그렇다면 물리 주소와 논리 주소 간의 변환은 어떻게 이루어질까 ?
MMU(Memory management Unit, 메모리 관리 장치)라는 하드웨어에 의해 변환

MMU는 논리 주소베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환.
(베이스 레지스터는 프로그램의 기준 주소를 역할한다, 즉 베이스 레지스터에는 프로그램의 시작 주소가 담긴다)

정리하자면

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

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


메모리 보호

아래 그림과 같은 예시와 같은 명령어는 실행되어도 안전할까 ?
위 그림을 해석하자면 2500번지인 인터넷 브라우저에 숫자 100을 저장하게 된다.

또 다른 예시이다.
과연 아래의 명령어가 안전할까 ? 그렇지 않다.
이러한 오류는 한계 레지스터가 방지해 준다.

한계 레지스터

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

베이스 레지스터 값 <= 프로그램의 물리주소 범위 < 베이스 레지스터 + 한계 레지스터 값

이처럼 CPU는 메모리에 접근하기 전 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지를 항상 검사


Reference

profile
.

0개의 댓글