메모리 할당은 연속 할당, 불연속 할당으로 나뉨.
contiguous allocation - 연속 할당
- 프로세스가 메모리 내에 연속적인 공간을 할당받아 배치됨
- fixed partition allocation, variable partition allocation으로 나뉜다.
fixed partition allocation - 고정 분할
- 메모리를 미리 파티션으로 분할해 놓고, 한 파티션에 한 프로세스를 할당하는 방식
- 파티션을 모두 동일하게 분할, 동일하지 않게 분할 2가지 방식으로 나뉜다.
- 간단하고 구현에 오버헤드가 적다.
- 단점
- 실행할 수 있는 프로세스의 개수가 정해져 있다.
발생하는 문제 - 내부 단편화
- 파티션의 크기가 프로세스 크기보다 커 메모리 낭비가 발생하는 현상
발생하는 문제 - 외부 단편화
- 프로세스는 항상 적재되고, 실행을 끝내면 메모리에서 해제된다 → 많은 빈 공간이 작은 조각으로 쪼개지게 된다.
- 프로세스가 적재되기에 빈 공간의 총합은 충분하지만, 이 공간들이 연속적으로 존재하지 않는 현상을 외부 단편화라고 한다.
- 최악의 경우에는 매 두 프로세스 사이에 빈 공간이 존재할 수도 있다.
- 엄청난 메모리 낭비!
variable partition allocation - 가변 분할
- 필요한만큼 partition을 variable하게 분할
- first-fit 최초 적합
- best-fit 최적 적합
- worst-fit 최악 적합
first-fit
- 운영체제가 메모리 내의 빈 공간을 순서대로 탐색하다가, 적재할 수 있는 공간을 발견하면 프로세스 배치
- 최초로 발견한 적재 가능한 빈 공간에 프로세스 배치
best-fit
- 운영체제가 빈 공간을 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스 배치
worst-fit
- 운영체제가 빈 공간을 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스 배치
현재 메모리가 위와 같은 상태임을 가정하고, 20MB의 프로세스를 적재해 보자.
- first-fit: 처음 발견한 프로세스가 적재 가능한 공간 freeA에 적재
- best-fit: 프로세스가 적재될 수 있는 공간 중 가장 작은 공간 freeC에 적재
- worst-fit: 프로세스가 적재될 수 있는 공간 중 가장 큰 공간 freeB에 적재
발생하는 문제 - 외부 단편화
마찬가지로 외부 단편화가 발생할 수 있다.
외부 단편화 해결하기
- Compaction - 압축
- 쪼개져 있는 빈 공간들을 하나로 모으는 방식을 압축이라고 한다.
- 단점
- 매모리에 있는 내용을 옮겨야 하고, 어떤 프로세스를 어떻게 움직여야 오버헤드를 최소화할 수 있는지 결정하기 어렵다.
- 구현이 복잡
- 페이징
- 오늘 날까지도 사용되는 기법
→ 불연속 할당, 다음 포스팅에서!
Reference
혼자 공부하는 운영체제