본문 바로가기

프로그래밍/운영체제

[운영체제] 주소공간( Address Space, Memory Management )

우리는 한정된 메모리 공간을 효율적으로 관리할 수 있어야 한다.

(메모리 단가가 있다보니...)

 

 

 

어떻게 효율적으로 관리할 수 있을지 알아보고 고민해보자!

 

주소 공간 (Address Space)

CPU는 주소값을 통해 메모리에 접근한다. 많이 들었던 주소값이 이에 해당하고 메모리의 단위는 바이트(byte)이다.

그래서 주소 한 칸은 1 byte의 데이터를 저장할 수 있다.

 

Physical Address(PA)

메모리를 큰 저장장치라고 생각하자. 단순히 큰 배열일 뿐이다. 배열이기 때문에 인덱스값을 가지는데, 이 값을 물리적 주소라고 한다.

논리적 주소도 마저 알아보고 간단한 예시를 통해 개념을 구체화 시켜보자.

 

Logical Address(LA)

논리적 주소는 쉽게 말해 CPU 입장에서의 메모리 주소, 프로그램 실행중에 CPU가 생성하는 주소다.

가상 주소라고 생각하고, 간단한 그림과 함께 PA와 LA를 구체화 시키자.

 

 

 

그림에서 보다시피 Logical Address에 Base register를 더해주어 physical Address가 되어 해당 주소값의 메모리로 CPU가 접근한다.

 

 

 

 

 

요런 형태가 될 것이다.

 

모든 프로세스는 시작주소와 크기를 나타내는 레지스터가 정의되어 있는데, 각각 Base register 와 Limit register로 부른다.

 

프로세스가 PA에 접근하려면 LA를 PA로 Mapping 시키는 과정이 필요하다. 이를 Memory management Unit이 담당한다.

매핑과정이 굉장히 빈번히 일어나므로 MMU는 하드웨어적으로 구현되어 있다.

 

 

 

MMU(Memory management Unit)

 

역할은 굉장히 간단하다. 앞에서 본바와 같이 LA에 base register 값만 더해주면 된다.

 

주소 매핑은 '주소  할당'과 같다. 논리적 주소를 물리적 주소로 매핑하는것은 LA에게 PA를 '할당' 한다는 뜻이다.

 

 

 

다음은 외부 단편화와 파티션에 대해 알아보자