[운영체제] 내부 단편화, 외부 단편화란? | 외부단편화 해결 방법
- Computer Science/[운영체제]
- 2021. 12. 10.
내부 단편화 (Internal Fragmentation)
내부 단편화란 주기억장치 내 사용자 영역이 실행 프로그램보다 커서 프로그램의 사용 공간을 할당 후 사용되지 않고 남게 되는 현상을 말한다.
예를 들어 아래와 같은 그림을 살펴보자.
위와 같이 100MB의 메모리에 80MB 크기의 프로세스를 올리게 되면,
20MB의 내부 단편화가 발생하게 된다. 즉, 적은 크기의 잔여 메모리가 발생해 해당 메모리를 사용할 수 없게 된다.
외부 단편화 (External Fragmentation)
외부 단편화란 남아있는 총 메모리 공간이 요청한 메모리 공간보다 크지만, 남아있는 공간이 연속적(contiguous)이지 않아 발생하는 현상이다.
예를 들어 아래와 같은 그림을 살펴보자.
위와 같이 남아있는 메모리 공간은 50MB+50MB =100MB로 요청한 메모리 공간 80MB보다 크지만, 남아있는 공간이 연속적이지 않아 Process C를 할당할 수가 없게 된다. 따라서 남아있는 메모리 공간이 낭비되게 되는 문제가 발생한다.
외부 단편화 해결방법 - 압축 ( Compaction )
외부 단편화 문제를 해결하기 위해서 압축 기법을 사용할 수 있다. 압축 기법은 주기억장치 내 분산되어 있는 단편화된 공간들을 통합하여 하나의 커다란 빈 공간을 만드는 작업을 의미한다.
예를 들어 아래와 같이 외부단편화가 발생한 상황을 살펴보자.
이때 빈 공간을 하나의 연속된 공간으로 만들면(압축) 아래와 같이 된다.
위와 같이 흩어져 있던 공간을 연속된 공간, 즉 하나의 공간으로 만들면 기존에 할당 할 수 없던 프로세스를 할당할 수 있게 된다.
따라서 위와 같이 할당 할 수 있다.
반응형
'Computer Science > [운영체제]' 카테고리의 다른 글
[운영체제] 페이지 테이블 구조 (Hierarchical Page Table, 2-level Page Table, Hashed Page Table, Inverted Page Table) (0) | 2021.12.11 |
---|---|
[운영체제] 페이징(Paging)이란? 페이지 테이블이란? (0) | 2021.12.10 |
[운영체제] 동기화 문제(Synchronization problem), 경쟁 상태(Race Condition), 임계 영역(Critical Section) (0) | 2021.11.16 |
[운영체제] CPU 스케줄링 알고리즘 정리 및 요약 | FCFS, SJF, Round Robin (0) | 2021.11.02 |
[운영체제] 다중쓰레드모델(Multithreading model)이란? (0) | 2021.10.29 |