Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩
Computer Science/컴퓨터 구조

12. 메모리의 주소 공간

by Toughie 2023. 8. 20.

📱메모리의 주소 공간📱

메모리의 주소는 논리 주소, 물리 주소로 나눌 수 있다.

 

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

why?

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

- 새로 실행되는 프로그램은 새롭게 메모리에 적재됨.

- 실행이 끝난 프로그램은 메모리에서 삭제됨.

- 같은 프로그램이더라도 실행할 때마다 적재되는 주소는 달라짐.

 

-> 이런 점을 극복하기 위해 주소를 물리 주소와 논리 주소로 나눔

 

물리 주소

메모리 입장에서 바라보는 주소.

정보가 실제로 저장된 하드웨어상의 주소.

 

논리 주소

CPU와 실행 중인 프로그램 입장에서 바라보는 주소.

실행 중인 프로그램 각각에게 부여되는 0번지부터 시작하는 주소.

위 예시를 보면 프로그램마다 0번지부터 시작하는 논리 주소가 각각 부여된 것을 알 수 있다.

그러면 물리 주소와 논리 주소 간의 변환은 어떻게 이루어지는가?

논리 주소에는 겹치는 번지수가 있을 수 있지만, 물리 주소는 겹치는 번지수가 없음.

그래서 논리 주소를 물리 주소로 변환해 줘야 하는 것.

 

MMU(Memory Management Unit)

메모리 관리 장치라는 하드웨어에 의해 변환 작업이 일어난다.

주소 버스를 통해 주소가 왔다 갔다 할 때 항상 중간에 MMU를 거침.

 

MMU는 논리 주소와 베이스 레지스터 값(프로그램의 기준 주소_프로그램의 시작주소(물리 주소 상) )을 더해서

논리 주소 -> 물리 주소로 변환함.

기준 주소로부터 논리 주소만큼 떨어진 곳의 데이터를 삭제해 달라라는 말과 동일함.

 

베이스 레지스터

- 프로그램의 가장 작은 물리 주소(프로그램의 첫 물리 주소)를 저장함.

논리 주소

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

 

메모리 보호

위와 같은 명령어는 실행되면 안전하지 못하다.

다른 프로그램의 주소 영역을 침범하기 때문이다! 잘못된 데이터를 삭제하는 불상사가 생길 것..

위와 같은 현상을 방지하기 위해

한계 레지스터(Limit Register)

- 프로그램의 영역을 침범할 수 있는 명령어의 실행을 방지

- 베이스 레지스터가 시작점을 저장하면, 한계 레지스터는 논리 주소의 최대 크기를 저장함.

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

한계 레지스터의 값을 넘어가는 명령어는 실행을 막아버리는 것!

한계 레지스터 값을 넘는 명령어니까 실행 못함.

 

학습 출처: https://www.youtube.com/watch?v=bls_GjX-4U8&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl