[컴퓨터 구조] 메모리의 주소 공간

2023. 3. 21. 12:28기술 창고/CS 지식

728x90
SMALL

CPU와 실행 중인 프로그램은 메모리 몇 번지에 무엇이 저장되어 있는지 전부 알지 못한다.

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

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

 

 

 

 

물리주소

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

 

논리주소

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

 

논리주소는 각 프로그램마다 공통적인 0번지부터 N번지까지 주소를 할당하는 것이다.

그러므로 0번지에 여러 프로그램이 주소를 할당받아 겹칠 수 있다.

 

물리주소는 각 프로그램이 0번지부터 일정 번지까지 실행 중인 프로그램의 주소가 겹치지않게 할당받는 주소이다.

 

 

 

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

CPU에서 바라본 주소는 논리 주소이다. 따라서 CPU에서 논리 주소에 속한 프로그램들에 대한 작업을 수행하면 메모리 입장에서는 프로그램들이 물리 주소에 할당되어있는 상태이기 때문에 작업을 수행할 수 없다.

이 때문에 변환이 필요하다.

 

 

  • MMU(메모리 관리 장치)라는 하드웨어에 의해 변환

MMU는 논리 주소와 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환한다.

 

'

  • 베이스 레지스터
    • 프로그램의 가장 작은 물리 주소(프로그램의 첫 물리 주소)를 저장

 

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

 

 

 

 

!! 주의

할당된 논리 주소를 초과한 논리 주소를 베이스 레지스터에 적용하여 작업을 실행하면 다른 프로그램이 존재하는 물리 주소에 침범하게 되어 안전하지 않다.

 

위의 이미지 처럼 인터넷 브라우저의 베이스 레지스터(물리주소) 는 2000번지이고 요청한 작업 논리주소는 1100번지라고 했을 때 총 3100번지의 인터넷 브라우저 데이터를 삭제해야 하나 3100번지는 게임 프로그램이 할당된 물리주소 범위에 해당되어있다.

따라서 안전하지 않고 올바르지 않다.

 

 

 

메모리 보호

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

# 메모리 보호 예시

 

 

 

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

 

728x90
반응형
LIST