CS./OPERATING SYSTEM

What is memory address?

KSN 2023. 3. 1. 23:00

컴퓨터에서는 메모리에 저장된 정보의 위치를 주소로 나타낼 수 있는데 그 주소에는 두 가지 종류가 있다.

물리 주소와 논리 주소가 있는데 물리 주소는 메모리 하드웨어가 사용하는 주소이고, 논리 주소는 CPU와 실행 중인 프로그램이 사용하는 주소이다.

 

메모리는 저장된 정보가 계속 변하기 때문에 CPU와 메모리에 저장되어 실행 중인 프로그램은 메모리 몇 번지에 정확히 무엇이 저장되어 있는지 알 수 없다. 

 

물리 주소 (physical address) 는 말 그대로 정보가 실제로 저장된 하드웨어상의 주소를 의미한다. 즉, 메모리 입장에서 바라본 주소라고 할 수 있다.

 

논리 주소(logical address)는 실행 중인 프로그램 각각에게 부여된 0부터 시작되는 주소를 의미한다. 즉, CPU와 실행 중인 프로그램 입장에서 바라본 주소라고 할 수 있다.

 

여기서 CPU가 메모리와 상호작용을 하려면 논리 주소와 물리 주소 간의 변환이 이루어져야 한다. 논리 주소가 물리 주소로 변환될 때 CPU와 주소 버스 사이에 위치한 메모리 관리 장치(MNU: Memory Management Unit)라는 하드웨어에 의해 수행된다.

MNU는 CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리주소를 물리 주소로 변환시킨다.

베이스 레지스터는 프로그램의 가장 작은 물리 주소 즉, 프로그램의 첫 물리 주소를 저장하는 것이다.

논리 주소는 프로그램의 시작점으로부터 떨어진 거리이다.


메모리 보호 기법

 

 

다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하기 때문에 논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 하기 위해서 한계 레지스터를 이용한다.

1. 프로그램의 영역을 침범할 수 있는 명령어 실행을 막는다.
2. 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면, 한계 레지스터는 논리 주소의 최대 크기를 저장한다.
3. 베이스 레지스터 <= 프로그램의 물리 주소 < 베이스 레지스터 + 한계 레지스터 값

 

CPU는 메모리에 접근하기 전에 접근하고자 하는 논리 주소가 한계 레지스터보다 작은 지를 항상  검사하고 만약 한계 레지스터보다 높은 논리 주소에 접근하려고 하면 인터럽트(트랩)를 발생시켜 실행을 중단시킨다.

 

이러한 방식으로 실행 중인 프로그램의 독립적인 실행 공간을 확보하고 하나의 프로그램이 다른 프로그램을 침범하지 못하게 보호할 수 있다.