본문 바로가기
cs

[혼공운영체제] 메모리의 주소 공간

by 이쟝 2023. 4. 21.
인프런의 개발자를 위한 컴퓨터 공학1 : 혼자 공부하는 컴퓨터 구조 + 운영체제 강의를 듣고, 학습 및 요약
주소에는 논리주소와 물리주소가 있다.

논리주소와 물리주소

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

  • 메모리에 저장된 값들은 시시각각 변하기 때문
    • 새롭게 실행되는 프로그램은 새롭게 메모리에 적재
    • 실행이 끝난 프로그램은 메모리에서 삭제
    • 같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소는 달라짐
물리 주소 논리 주소
메모리 입장에서 바라본 주소 CPU와 실행 중인 프로그램 입장에서 바라본 주소
정보가 실제로 저장된 하드웨어상의 주소 실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소
겹치는 주소 번지가 없음 겹치는 주소 번지가 있음

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

CPU가 이해하고 실행하는 주소 => 물리주소. 즉, CPU가 메모리와 상호작용을 하려면 논리 주소를 물리 주소로 변환하는 과정이 있어야 한다.

 

MMU(메모리 관리 장치) : 논리주소와 물리주소 사이의 변환을 이루어주는 장치

  • MMU라는 하드웨어에 의해 변환됨

Memory Management Unit

  • MMU는 논리 주소베이스 레지스터(프로그램의 기준 주소) 값을 더해 논리주소를 물리주소로 변환한다.
  • 베이스 레지스터 안에는 프로그램의 시작 주소가 담긴다.
  • 즉 프로그램의 가장 작은 물리 주소(프로그램의 첫 물리 주소)를 저장한다.
  • 논리주소는 시작(기준) 주소에서 얼마나 떨어져 있는 지를 나타냄, 즉, 프로그램의 시작점으로부터 떨어진 거리인 셈

메모리 보호

어떤 명령어가 다른 프로그램의 영역을 침범하지 않도록 메모리를 보호해야 한다. 

  • 위처럼 되면 게임 프로그램의 3100번지 데이터가 삭제되기 때문에 이렇게 되면 안된다!

한계 레지스터(limit register)

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

 

  • 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면, 한계 레지스터는 논리 주소의 최대 크기를 저장함
  • 베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터 + 한계 레지스터
  • CPU가 접근하려는 논리 주소는 한계 레지스터가 저장한 값보다 크면 안됨

한계 레지스터

  • 베이스 레지스터에 100, 한계 레지스터에 150이 저장되어 있다고 가정
    • 물리 주소 시작점이 이 100번지, 프로그램의 크기(논리 주소의 최대 크기)는 150

  • 프로그램 크기가 150 이기에 150보다 큰 주소 번지에 대한 명령이 들어오면 막는다! 즉, 위 그림의 명령어는 실행되지 않을 것임

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

실행 중인 프로그램의 독립적인 실행 공간을 확보하고, 하나의 프로그램이 다른 프로그램을 침범하지 못하게 보호