CS

[CS] 메모리 주소 체계와 MMU

chandlerxx 2024. 4. 17. 23:15

 

실제 메모리 주소 체계는 2가지로 구분할 수 있습니다.

1. 물리주소

2. 논리주소

 

주소 체계를 구분하는 이유?

  • 프로그램이 실행되고 삭제되면서 주소가 달라지기 마련입니다.
  • 심지어 같은 프로그램을 실행할때, 오늘 실행한 주소값과 내일 실행한 주소값이 다를 수 있습니다. 

 

주소 체계

  • `물리 주소` : 메모리 입장에서 하드웨어상 주소.
  • `논리 주소` : CPU와 실행 중인 프로그램 입장에서 바라본 주소. 모든 실행 중인 프로그램의 0번지부터 시작

 

논리주소 측면에서 프로그램1, 프로그램2는 0부터 시작하는 자신만의 논리주소를 가질 수 있습니다.

그리고 CPU는 해당 논리주소를 받아들이고, 해석하고, 연산합니다.

왼쪽(논리주소) VS 오른쪽(물리주소)

 

다만, 실제 메모리에 접근하기 위해서 물리주소로 변환해야 하는데 이때 MMU 개념이 필요합니다.

 

MMU

CPU 내 레지스터를 토대로 논리주소를 물리주소로 변환시킨다.

  • Memory Management Unit의 약자로, CPU가 메모리에 접근하는 것을 관리하는 하드웨어 부품(출처)
  • 적용방식 : 베이스 레지스터 + 논리주소 = 물리주소
    • 베이스 레지스터 :  프로그램의 시작위치 (물리주소의 시작위치) → 프로그램1(시작:200~끝:400)기준, 200) 
    • 논리주소 : 프로그램 시작위치로부터 떨어진 거리 

 

메모리 보호  기법

변환 과정에서 다른 프로그램 영역(주소)에 접근할 수도 있습니다. 이를 방지하기 위해 메모리 보호 기법이 반드시 필요합니다. 아래 그림은 메모리 보호 기법이 적용 안되어 문제가 발생한 상황입니다.

 

  • 문제 발생 : MMU를 통해 변환된 물리주소값이 프로그램1의 메모리 영역을 벗어남
  • 해결방법
    1) 각 프로그램의 크기를 한계 레지스터로 정의
    2) 논리주소 + 베이스 레지스터 = 물리주소 이므로, 논리주소는 한계 레지스터 값을 넘어서게 설계되면 안된다.
    3) 따라서, 논리주소 < 한계 레지스터

 

 

출처

교보문고 혼공컴운