메모리 관리 기법 중 하나인 Segmentation 은 불연속 고정 할당 방식인 Paging 과 다르게 데이터에 따라 공간을 할당하는 불연속 가변 할당 방식이다. 기본적인 원리는 Paging 과 비슷하게 논리 주소가 바인딩 된 Table 을 활용해 메모리 인덱싱을 통해 메모리의 물리 주소를 찾는 방식이다.

Segmentation 의 Segment 는 프로그램의 함수, 프로세스의 Code, Data, Stack 등으로 구성해 기능별로 나눠 관리가 가능하다. 따라서 모든 Page 에 Bit 를 추가해 관리하는 방식의 Paging 보다 Protection(Public/Private), Sharing(Process Shared Memory) 면에서는 훨씬 효율적이지만 가변 할당 시 문제점인 외부 단편화(기존의 메모리 할당이 해제 되어 가용 공간이 되었지만 다음 데이터가 요구하는 공간이 해당 공간보다 클 경우 가용 공간이 사용되지 않는 현상)면에서는 가용성이 Paging 보다 떨어진다.
그래서 실제로 도입되는 두 기법의 장점을 살리고 단점을 줄인 기법이 Paged Segmentation 이다. Paged Segmentation 은 Segment 를 Page 로 나누어 관리하는 방법으로 외부 단편화를 방지하고 기존 Paging 시 발생하는 소규모 내부 단편화만 고려하며 Paging 의 약점인 Protection 과 Sharing 을 Segmentation 으로 보완한다.
Paged Segmentation 의 동작 방식은 최초 CPU 가 Segment 의 논리 주소를 바라보며 Segment Table 을 접근하는 것으로 시작한다. 이후 Segment Table 의 Page Table 의 엔트리 정보에 접근해 최종적으로 Page 에 바인딩 된 메모리의 Frame 물리 주소에 접근하게 된다.
하지만 놀라운 점은 Paging 과 Segmentation 의 물리 메모리가 OS 가 아닌 HW MMU 의 영역이라는 것이다.
그래서 다음으로 OS 의 영역에 해당되는 가상 메모리 관리에 대해 알아보려고 한다.
'컴퓨터 공학 > 운영체제' 카테고리의 다른 글
| 파일 시스템 (0) | 2023.02.09 |
|---|---|
| 메모리 관리 - 가상 메모리 (0) | 2023.02.06 |
| 메모리 관리 - Paging (0) | 2023.02.05 |
| 메모리 관리 (0) | 2023.01.31 |
| Dead Lock (교착 상태) (0) | 2023.01.27 |