CS

[혼자 공부하는 컴퓨터구조 + 운영체제] - 메모리의 주소 공간

yoozung 2023. 6. 18. 23:19

 

물리 주소와 논리 주소

CPU와 실행 중인 프로그램은 현재 메모리 몇 번지에 무엇이 저장 돼 있는지 다 알지 못하는 이유

: 메모리에 저장된 값들은 시시각각 변하기 떄문

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

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

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

 

물리주소

- 메모리 입장에서 바라본 주소

- 말 그대로 정보가 실제로 저장된 하드웨어상의 주소

 

논리주소

- CPU와 실행 중인 프로그램 입장에서 바라본 주소

- 실행 중인 프로그램 각각에서 부여된 0번지부터 시작하는 주소 

 

 

 

 

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

물리주소와 논리주소는 MMU(메모리 관리 장치)라는 하드웨어에 의해 변환됨 

- MMU는 논리주소와 베이스 레지스터(프로그램의 기준주소) 값을 더하여 논리 주소를 물리 주소로 변환시켜줌

- 베이스 레지스터에는 프로그램의 시작주소가 담김

 

베이스 레지스터

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

 

논리 주소

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

 

 

 

 

메모리 보호

잘못된 명령어 예시

위와 같은 명령어는 인터넷 브라우저가 2000~2999번지인데 인터넷 브라우저 1100번지 데이터를 삭제하라고 명령하면 다른 프로그램의 영역을 침범하는 명령어이다

이를 방지하는 한계 레지스터가 있다

 

한계 레지스터

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

- 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면 한계 레지스터는 논리 주소의 최대 크기를 저장하고 있음

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

 

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