컴퓨터구조와 운영체제

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

waterclean101 2023. 11. 15. 08:37

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

메모리 내에 주소 체계는 크게 두 가지가 있다. 물리 주소와 논리 주소. 주소 체계를 왜 논리 주소와 물리 주소로 나누어서 관리하게 되었는지, 그리고 논리 주소를 어떻게 물리 주소로 변환할 수 있는지에 대해서 알아볼 것.

 

물리 주소와 논리 주소

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

  • 새롭게 실행되는 프로그램은 매번 새롭게 보조 기억 장치로부터 메모리로 적재된다.
  • 실행이 끝난 프로그램은 메모리에서 삭제가 된다.
  • 같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소는 달라진다.

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

물리 주소 (Physical Address):

  • 물리 주소는 메모리의 실제 위치. 즉, 메모리 입장에서 바라본 주소.
  • 이 주소는 메모리 컨트롤러가 사용하여 메모리 칩에서 실제 데이터를 읽고 쓰는 데 사용된다. 예를 들어, 8GB RAM이 있는 컴퓨터에서, 각 바이트는 0부터 8GB까지의 물리 주소를 가진다.

논리 주소 (Logical Address):

  • 프로그램이 사용하는 주소. 즉, CPU와 실행 중인 프로그램 입장에서 바라본 주소. 실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소.
  • 프로그램이 메모리에 접근할 때, 이 논리 주소를 사용하여 데이터를 참조한다.
  • 논리 주소는 프로그램에 의해 생성되며, 운영 체제가 물리 주소로 변환한다.

 

주소 변환의 필요성

  1. 보안과 격리: 각 프로그램이 독립된 주소 공간을 가짐으로써, 한 프로그램이 다른 프로그램의 메모리 영역을 침범하는 것을 방지한다.
  2. 메모리 관리의 유연성: 운영 체제는 프로그램에게 연속된 메모리 공간을 제공할 수 있으며, 실제 물리 메모리는 불연속적일 수 있다.
  3. 가상 메모리 사용: 물리 메모리보다 큰 메모리 영역을 프로그램에게 제공할 수 있다. 이는 디스크의 일부를 가상 메모리로 사용하여, 실제 물리 메모리보다 큰 프로그램을 실행할 수 있게 한다.

 

주소 변환 과정

MMU(메모리 관리 유닛)라는 하드웨어에 의해 변환.

  • CPU가 이해하고 실행하는 주소는 모두 논리 주소다. 이 논리 주소를 주소 버스 통해서 실제로 메모리에게 보내거나 받아들이는 주소 번지는 항상 MMU를 거치게 된다.
  • MMU는 논리 주소와 베이스 레지스터(프로그램의 기준주소) 값을 더하여 논리 주소를 물리 주소로 변환한다.
  • 베이스 레지스터 안에는 물리 주소 상의 프로그램의 시작 주소가 담긴다.
  • 변환 과정 예시: 프로그램이 논리 주소 3000번지에 접근하려 한다면 MMU는 페이지 테이블을 확인하여, 이 논리 주소가 물리 주소 62000번지에 매핑되어 있음을 확인한다. CPU는 물리 주소 62000번지에서 데이터를 읽거나 쓰게 된다.

 

MMU (Memory Management Unit)

  • 주소 변환: MMU는 CPU에서 생성된 논리 주소를 물리 주소로 변환한다. 이를 통해 프로그램이 실제 메모리에 접근할 수 있게 한다.
  • 메모리 보호: MMU는 프로그램이 할당받지 않은 메모리 영역에 접근하는 것을 방지하여 시스템의 안정성과 보안을 유지한다.
  • 가상 메모리 관리: MMU는 디스크의 일부를 가상 메모리로 사용하여 실제 물리 메모리보다 큰 메모리 공간을 제공한다.

작동 과정

  • CPU가 논리 주소를 생성하고, MMU는 이 주소를 물리 주소로 변환한다.
  • 이 과정은 페이지 테이블이나 세그먼트 테이블을 사용하여 수행된다.

 

리미트 레지스터 (Limit Register)

  • 메모리 보호: 리미트 레지스터는 프로그램이 사용할 수 있는 메모리 영역의 상한을 정의한다. 이를 통해 프로그램이 할당된 메모리 범위를 벗어나는 접근을 시도하는 것을 방지한다.

작동 과정

  • 운영 체제는 각 프로그램에 대해 기준 주소(Base Address)와 리미트 값을 설정한다.
  • CPU에서 생성된 논리 주소는 이 기준 주소에 더해져 실제 메모리 주소가 된다.
  • 만약 계산된 주소가 리미트 값보다 크면, 시스템은 메모리 접근 오류를 발생신다.
  • 예를 들어, 프로그램의 기준 주소가 1000번지이고 리미트 값이 3000이라면, 프로그램은 1000부터 3999번지까지만 접근할 수 있다. 프로그램이 4000번지에 접근하려고 하면 오류가 발생한다.