메모리 비연속 할당 기법 중 하나인 Paging System 기법에 이어 남은 기법들을 알아보자!
Paging System 기법과 달리 프로그램을 논리적 block으로 분할한다. 논리적으로 분할된 단위를 segment라 하며 block의 크기가 서로 다를 수 있다. 해서 address mapping 및 메모리 관리에는 overhead가 크지만 segment sharing/protection에는 용이하다는 장점이 있다. 논리적 단위로 나누기에 내부 단편화는 발생하지 않으며 외부 단편화는 발생 가능하다.
Address mapping(direct mapping)
이전 포스팅했던 Paging System에서의 direct mapping과 방법이 같다. Paging System에서의 page fault가 여기선 segment fault이다. 해당 segment가 메모리에 적재되지 않아 0으로 표시되어 있는 상태로, swap device로부터 해당 segment를 메모리로 적재 후 SMT를 갱신해 준다.
1) 변위(d)가 segment 길이보다 큰 경우에는 segment overflow exception 처리 모듈을 호출한다.
2) 허가되지 않은 연산일 경우에는 segment protection exception 처리 모듈을 호출한다.
Memory management(메모리 관리)
Segment 적재 시, 크기에 맞춰 메모리를 분할한 후에 적재한다. 이를 정리한 Partition table/State table을 가지고 있다.
논리적으로 분할되어 있어서 segment를 공유하거나 보호하기에 용이하다.
Paging System | Segmentation System | |
---|---|---|
overhead | 같은 크기로 잘라 관리 간편하므로 overhead 적음 | 각각 크기가 달라 관리 어렵고 overhead 큼 |
공유 및 보호 | 복잡함 | 쉬움 |
Paging System 과 Segmentation System의 각 장단점이 있으니 역시나 각각의 장점은 살리고 단점은 보완할 수 있는 방법을 찾았을 것이다. 그것이 Hybrid paging/segmentation system 기법이다!