Memory Virtualization (메모리 가상화)
OS는 각각의 프로세스가 메모리 전체를 사용한다는 가상의 메모리 공간을 제공해야 한다.
가상 주소 공간을 통해 개발자들은 메모리 주소가 연속되어있다는 가정 하에 프로그래밍을 할 수 있다.
더불어 실제 물리적 주소를 숨김으로서 프로세스와 OS를 보호할 수 있다.
Virtual Address Space
가상 주소 공간은 크게 세 가지 영역으로 구성되어있다. 프로그램의 명령어를 저장하는 Code 영역, 동적 메모리 할당을 위한 Heap 영역, 지역변수와 매개변수 등의 저장을 위한 Stack 영역이다. 이 때 Heap과 Stack 사이에 사용하지 않는 빈 공간은 Heap이나 Stack이 모자랄 경우 확장하여 사용한다.
Address Translation이란?
앞서 말했듯 OS는 가상의 메모리 주소를 제공한다. 하지만 이를 통해 실제 메모리에 접근하려면 가상 메모리를 물리적 메모리로 변환하는 Translation 과정이 필요하다. 이를 Address Translation이라 한다.
Base와 Bound Register
▶ Physical Address = Virtual Address + Base
물리적 주소는 가상 주소에 Base값을 더하여 변환한다.
▶ 0 <= Virtual Address <= Bounds
할당받은 주소공간은 Bound값까지만 사용할 수 있다.
Free List
OS는 메모리를 할당해주기 위해 빈 공간을 알고 있어야 한다.
이를 위해 OS는 사용하지 않는 물리적메모리의 범위를 리스트로 저장하는데 이를 Free List라 한다.
위 그림처럼 프로세스가 메모리를 할당받아 사용하고 나면 메모리 해제 후 Free List에 삽입한다.
'Computer Science > Operating System' 카테고리의 다른 글
Free-Space Management (0) | 2019.04.23 |
---|---|
Segmentation이란? (0) | 2019.04.23 |
Memory API란? (0) | 2019.04.22 |
CPU Scheduling 기법 (0) | 2019.04.22 |
System Call이란? (0) | 2019.04.22 |