Kim Seon Deok
[OS] Contiguous Memory Allocation 본문
연속메모리 할당
부팅된 직후 메인 메모리는 os와 큰 hole로 이루어진 상태이다.
하드디스크에서 프로세스가 생성 및 종료를 반복하다 보면 hole들이 scattered 된다.
메모리 단편화 (Memory fragmentation)
하드디스크에서 프로그램의 생성 종료과정의 반복으로 인해 hole들이 불연속하게 흩어져 또다른 프로세스를 메인메모리로 적재할 수 없는 상황을 외부단편화라 한다.
130kb의 프로그램을 하드디스크에서 꺼내 메인메모리에 적재하려 하는데, 흩어져 있는 hole을 모두 합치면 충분히 들어갈 공간이 마련되지만 외부단편화로 인해 적재할 수 없다.
연속 메모리 할당
1. First fit (최초 적합) → 메인 메모리의 hole을 순차적으로 뒤져 가장 처음 만나는 hole에 적재
212 > 417 > 112 > 426 순으로 메인메모리의 0번지서부터 hole을 채움
2. Best fit (최적 적합) → 메인 메모리의 hole 중 실행파일과 가장 비슷한 크기의 hole에 적재
212 > 417 > 112 > 426 순으로 자신과 가장 비슷한 크기의 hole을 찾아 적재
3. Worst fit (최악 적합) → 메인메모리의 hole 중 실행파일과 가장 비슷하지 않은 크기의 hole에 적재
212 > 417 > 112 > 426 순으로 자시과 가장 크기차이가 많이 나는 hole을 찾아 적재
3가지 방법 중 속도는 first fit 방식이 가장 빠르고, 프로세서가 못 들어갈 확률이 낮은 방식은 first-fit과 best-fit이다.
외부 단편화 현상으로 인한 메모리 낭비율은 전체 메인메모리의 1/3정도 이다.
메모리 낭비를 방지하기 위해서 compaction기법을 사용한다.
hole들이 흩어져 있어 들어갈 수 없는 경우 메모리의 사용률은 떨어진다. 따라서 흩어져 있는 hole들을 한 곳으로 모아주는 기법이다.
장점 : 메모리를 움직여야 하므로 overhead 발생
단점 : 프로세서 크기, hole의 크기에 따라 무엇을 이동시켜 주어야 할 지 결정해야 하므로 복잡하다. 또한 이를 계산하기 위한 최적 알고리즘이 아직 나와있지 않은상태이다.
compaction을 사용했음에도 불구하고 메모리 낭비의 문제가 해결되지 않자, 이를 위해 고안된 방식이 프로세서를 일정한 크기로 쪼개서 메모리에 적재하는 페이징 기법이다.
'운영체제' 카테고리의 다른 글
[OS] Segmentation (0) | 2022.12.04 |
---|---|
[OS] Paging (2) | 2022.11.30 |
[OS] Main Memory Management, 메모리 낭비 방지 (0) | 2022.11.29 |
[OS] Deadlocks, Monitors (0) | 2022.11.29 |
[OS] Classical Synchronization Problems (2) | 2022.11.29 |