반응형
Ⅰ. 메모리 할당 기법에 의해 발생하는 메모리 단편화 개념 및 종류
가. 메모리 단편화 개념
- 메모리상에서 프로그램에 의해 사용되지 못하고 낭비되는 부분적인 공간이 발생하는 현상
나. 메모리 단편화 종류
외부 단편화 | - 분할된 크기가 프로그램 크기보다 작아서 사용하지 못하는 공간 - 가변분할 또는 페이징기법 사용시 발생하는 메모리 단편화 |
내부 단편화 | - 분할된 공간에 프로그램 적재 후 남는 공간 - 고정분할 또는 세그먼트기법 사용시 발생하는 메모리 단편화 |
- 메모리 할당 기법에 따라 외부/내부 단편화로 구분
Ⅱ. 메모리 단편화의 원인
가. 외부 단편화 발생 원인
개념도 | |
원인 | - 메모리 할당기법으로써 가변분할 또는 세그먼트 기법 사용 |
설명 | - 메모리에 프로그램이 지속적으로 할당/교체되어 사용하기 어려운 작은 공간이 발생 |
나. 내부 단편화 발생 원인
개념도 | |
원인 | - 메모리 할당 기법으로 고정분할 또는 페이징 기법 사용 |
설명 | - 사전에 메모리 할당 크기를 정의 후 프로그램 적재 - 고정분할 크기보다 작은 프로그램에 대해 미사용 영역 발생 |
Ⅲ. 메모리 단편화 해결 방안
가. 외부 단편화 해결 방안, Buddy memory Allocation
구분 | 설명 |
개념 | - 요청한 프로그램 크기에 가장 알맞은 크기를 할당하기 위해 메모리를 2의 n승 크기로 분할 할당 |
동작 | (1) 초기 64KB 버디 블록에 8KB 할당 요청 들어옴 (2) 버디 블록 절반 분할 (3) 요청한 8KB보다 크기가 크기 때문에 다시 절반 분할 (4) 블록크기가 8KB가 되어 요청한 메모리 할당 |
특징 | - 외부 단편화는 해소되었으나, 내부 단편화 문제는 여전히 남아있음 |
나. 내부 단편화 해결 방안, Slab Allocation
구분 | 설명 |
개념 | - 페이지 프레임을 할당 받아 공간을 작은 크기로 분할하고(캐시 집합) 메모리 요청시 작은 크기로 메모리를 할당/해제하는 동적 메모리 관리 기법 |
동작 | (1) 메모리 할당 요청 (2) 요청크기가 최소 단위(4KB)보다 크면 Buddy Allocator, 작으면 Slab Allocator 할당 (3) 가장 적합한 크기의 캐시 찾아 Partial slab으로부터 객체 할당 |
특징 | - 내부 단편화 최소화 뿐만 아니라 캐시 사용하여 성능향상 |
다. 공통 해결 방안, 통합/압축
구분 | 통합 | 압축 |
개념도 | ||
개념 | - 인접한 단편화 영역을 찾아 하나로 통합 | - 메모리의 모든 단편화 영역을 하나로 압축 |
반응형