연속 메모리 할당이란?
프로세스의 구성요소가 메모리에 연속된 주소로 저장되는 방식을 연속 메모리 할당이라 부른다. 연속 메모리 할당에는 두 가지 메모리 분할 방식이 존재한다. 1. 고정 분할 2. 동적 분할
고정 분할
고정분할은 시스템 생성시 주기억장치가 이미 특정 크기로 고정된 파티션들로 분할되는 방식이다.
▷ 균등분할 : 모든 파티션의 크기가 일정
1. 프로세스 크기 > 파티션 고정 크기
프로세스가 파티션보다 크면 프로세스를 모듈 단위로 나누어 디스크와 주기억장치 사이에서 할당을 제어하는 오버레이(Overlay) 기법이 사용되어야 한다. 그만큼 오버헤드가 증가한다.
2. 프로세스 크기 < 파티션 고정 크기
파티션을 프로세스가 효율적으로 사용못하고 공간이 남는 내부단편화 문제가 생긴다.
▷ 비균등분할 : 모든 파티션의 크기가 일정하지 않음
프로세스 크기에 맞는 파티션에 할당하면 균등분할의 문제를 해결할 수 있다.
고정분할 장점
원리가 단순하다.
시스템 생성 시 주기억장치가 미리 분할되므로 운영체제 오버헤드가 줄어든다.
고정분할 단점
파티션 수에 따라 프로세스 수가 제한받는다.
크기가 작은 프로세스는 효율적인 공간활용이 안 된다.
현재 고정분할을 사용하는 운영체제는 거의 없다.
동적분할
프로세스가 주기억장치로 적재될 때 정확히 필요한 크기만큼 메모리를 할당한다. 파티션의 크기와 개수가 가변적이다.
동적분할은 외부단편화 문제가 존재한다.
필요한 크기의 메모리를 할당하기에 내부단편화는 발생하지 않지만 프로세스가 재배치(Relocation)되는 과정에서 메모리가 사용되지 못하고 남는 부분이 생긴다.
메모리 집약(compaction)
외부 단편화를 해결하기 위한 방법으로 프로세스가 사용중인 파티션을 동적으로 재배치(Relocation)시켜 남는 빈공간을 하나로 묶는 방법이다.
그러나 이는 시간이 오래 걸려 처리기 시간을 낭비한다. 이외에도 인접한 외부 단편화 두 공간을 합치는 통합(coalescing) 방법도 있다.
배치 알고리즘
그러므로 동적 분할은 메모리 집약이 최소로 일어나는 자유 블록을 선택하여 프로세스를 배치해야한다.
1. 최적적합(best-fit) : 요청된 크기와 가장 근접한 크기의 메모리를 선택한다.
2. 최초적합(first-fit) : 가장 최근에 배치되었던 메모리의 위치부터 크기가 충분한 메모리를 선택한다.
3. 최악적합(worst-fit) : 사용가능한 메모리 중 가장 큰 것을 선택한다.
최적적합이 가장 좋은 결과를 낼거 같지만 그렇지 않다. 작은 블록이 메모리 여기저기 생겨 외부단편화가 곳곳에 생긴다. 그 결과, 메모리 집약이 많이 일어나므로 좋지 못하다. 의외로 최악적합은 메모리 공간이 널널해서 다른 프로세스를 할당할 공간을 제공할 수 있다.
참고자료
'CS > OS' 카테고리의 다른 글
[운영체제] 가상메모리 기법 (0) | 2021.11.15 |
---|---|
[운영체제] 메모리 분할 ( Memory Partioning ) [ 비연속 메모리 할당 ] (0) | 2021.10.29 |
[운영체제] 메모리 관리 요구조건 (0) | 2021.10.24 |
[운영체제] 상호 배제 ( Mutual Exclusive ) 및 세마포어 (0) | 2021.10.12 |
[운영체제] 프로세스 간 관계 (0) | 2021.10.12 |