#고정분할과 가변분할

Programming 2017. 10. 18. 16:50

단일 프로세스 일 때는 메모리에 업로드 되는 프로세스가 하나 밖에 없으니 상관없지만, 프로세스가 여러 개일 때는 메모리 자원을 각 프로세스에 어떻게 할당해야 할지 이슈거리가 된다.

고정 분할 다중 프로그래밍(FPM, Fixed Partition Multiprogramming)은 메모리의 영역을 여러 영역으로 분할하는 기법이다. 만약 150MB의 메모리라면 아래 표처럼 분할할 수도 있다. 물론 다른 크기로 분할할 수도 있다.

[그림 1]

10MB

20MB

30MB

40MB

50MB

가변 분할 다중 프로그래밍(VPM, Variable Partition Multiprogramming)은 FPM과는 달리 메모리를 분할하지 않고 하나의 영역으로 유지하되, 프로세스에 따라 할당 영역과 크기가 정해진다. 즉, 150MB의 메모리가 있을 때, 15MB, 25MB, 60MB의 프로세스가 있다면 메모리의 모양새는 [그림 2]처럼 된다.

[그림 2]

프로세스1 점유 - 15MB

프로세스2 점유 - 25MB

프로세스3 점유 - 60MB

50MB 


[그림 3]

프로세스1 점유 - 15MB

25MB

프로세스3 점유 - 60MB

50MB

이후 프로세스2가 메모리를 반환한다면 두 번째 표처럼 프로세스1과 프로세스3 사이에 빈 메모리가 생기게 된다. 이후에  프로세스4가 20MB의 메모리 자원을 요구한다면, 배치 기법에 따라 자원을 배치 받게 된다. 그 기법은 아래 표에 따라 최초 적합(first-fit)최적 적합(best-fit)최악 적합(worst-fit)순환 최초 적합(next-fix) 전략이 있다.

최초 적합

주기억장치 상태 테이블의 처음부터 차례로 검사하여 프로세스가 점유할 수 있는 수용 크기를 가진 최초의 메모리 영역을 선택

단순하고 오버헤드가 적다는 장점

일정 부분만 사용되고 나머지 부분의 이용률이 적어질 수 있음 → 순환 최초 적합

순환 최초 적합 : 최초 적합과 같으나, 테이블의 마지막에 도달 시 테이블의 처음으로 이동하여 검사

최적 적합

수용 크기를 가진 영역 중 가장 작은 영역을 선택

분할 영역 검색에 시간 오래 걸리지만, 큰 빈 공간 확보

쓸모없는 빈 분할 영역들이 많이 생겨나 단편화 현상 발생

최악 적합

수용 크기를 가진 영역 중 가장 큰 영역을 선택

검색 오버헤드 크지만, 단편화 현상 극소화

큰 공간 확보할 수 없음


[그림 3]의 메모리 사이와 하단에 빈 메모리 공간이 존재하는데, 운영체제는 프로세스를 재배치하여 [그림 4]처럼 ‘기억 장소’를 통합해 메모리 상태를 바꿀 수 있다. 여기서 하단의 두 인접한 공간을 통합 해버리면 [그림 5]의 최종적인 메모리의 모습이 된다.


[그림 4]

프로세스1 점유 - 15MB

프로세스3 점유 - 60MB

25MB

50MB


[그림 5]

프로세스1 점유 - 15MB

프로세스3 점유 - 60MB

75MB

이처럼 VPM에서는 ‘인접 공간 통합(coalescing holes)’와 ‘기억장소 통합(storage compaction)’ 작업도 필요하다. 특히 기억장소 통합 작업은 최악의 경우 프로세스를 모두 재배치하므로 시간이 매우 오래 걸린다. 더군다나 이 시간 동안에는 어떤 사용자 프로세스도 실행할 수 없기 때문에 많은 시스템 자원을 소비하는 결과를 초래한다.

참조 교재 -『컴퓨터 운영체제론』, 생능출판사

admin