본문 바로가기

General/OS & CS

[OS] 논리 주소공간 대 물리 주소공간

논리주소 logical address : CPU가 생성하는 주소
물리주소 physical address : 메모리 취급 주소(메모리주소레지스터(MAR)에 주어지는 주소)

 

컴파일 시간 바인딩 & 적재시간 바인딩 기법의 경우 논리주소와 물리주소가 같다.

반면, 실행시간 바인딩 기법에서는 논리주소와 물리주소가 다르다.

이런 경우에 논리주소를 가상주소(virtual address)라고 한다.

 

논리주소 공간 logical address spaace : 프로그램에 의해 생성된 모든 논리 주소의 집합

물리주소 공간 physical address space : 위의 논리 주소에 해당하는 모든 물리 주소의 집합

 

프로그램 실행중에 이같은 가상주소를 물리 주소로 바꾸어 줘야한다.

이 변환(mapping 또는 사상)작업은 하드웨어 장치인 메모리 관리 유닛(MMU)에 의해 실행된다.

 


 

기준레지스터를 재배치(relocation) 레지스터 라고 부른다.

기준 레지스터 속에 들어있는 값은 주소가 메모리로 보내질 때마다 그 모든 주소에 더해진다.

재배치 레지스터 값이 14000이라면 프로세스가 346번지를 access할 때,

실제로는 메모리의 14346번지를 액세스하게 되는 것이다.

 

(사용자 프로그램은 실제 물리주소를 결코 알 수 없다는 것에 주의하라)

사용자 프로그램은 346번지에 대한 포인터를 생성해서 그것에 대한 저장, 연산, 다른 주소들과의 비교 등등 온갖 일을 할 수 있다. 그러나 그것이 주소(간접 적재 및 저장 명령에서의)로 사용될 때에는,

기준레지스터에 상대적으로 재배치 된다.

 

사용자 프로그램은 논리 주소를 사용하고, 메모리 하드웨어는 논리 주소를 물리 주소로 바꾼다.

: 실행시간 바인딩

 

참초된 메모리의 주소의 실제 위치는 이 참조가 실제 행해지는 실행시간에 결정된다.

두가지 주소,

논리 주소(0에서 max까지의 범위)와

물리주소(기준값 레지스터 R+0에서 R+max까지 범위)가 있다는 사실에 유의해야 한다.

 

사용자 프로세스는 논리 주소만을 만들어낼 뿐이므로 주소가 0에서 max까지만 있다고 생각할것이다.

이들 논리주소는 사용되기 전에 실제 물리 주소로 변환되어야만 한다.

물리 주소 공간이 논리 주소 공간에 바인드된다라는 개념은 메모리 관리의 핵심이 된다.