동적메모리할당(dynamic memory allocation)이 반복적으로 발생하여 메모리영역이 작은 여러 조각으로 나뉘어져서, 메모리 공간이 부족해지는 현상
1. 외부단편화(external fragmentation)
- 메모리 블록들 사이의 빈 공간(남은공간)이 존재하나, 할당에 활용할 수 없는 문제
2. 내부단편화(internal fragmentation)
- 할당된 메모리 블록 내에서 사용하지 않는 메모리 공간이 존재하는 현상
- 할당된 메모리 공간이 실제로 필요한 메모리보다 큰 경우 발생
▶ 메모리 관리에 대한 효율성을 저하시킨다.
1. 압축(Compaction)
- 메모리 공간들을 재배치 하여, 단편화로 인해 분산되어 있는 메모리공간들을 하나로 합치는 기법이다.
2. 통합(Coalescing)
- 단편화로 인해 분산된 메모리공간들을 인접해 있는 것끼리 통합시켜 큰 메모리 공간으로 합치는 기법이다.
3. 페이징(Paging) - 가상 메모리 사용, 외부 단편화 해결
- 사용하지 않는 프레임을 페이지에 옮기고(swap-out), 필요한 메모리를 페이지 단위로 프레임에 옮기는(swap-in) 기법
*페이지 : 보조기억장치를 이용한 가상 메모리(Virtual Memory)를 같은 크기의 블록으로 나눈 것 *프레임 : 주 기억장치를 페이지와 같은 크기로 나눈 것
4. 세그멘테이션(Segmentation) - 가상 메모리 사용, 내부 단편화 해결
- 서로 다른 크기로 나누고 단위는 세그먼트(Segment)로 분할 및 할당
- 메모리에 적재될 때 빈 공간을 찾아 할당하는 사용자 관점의 기법
5. 메모리 풀(Memory pool) - 내부 단편화, 외부 단편화 해결
- 미리 할당받아서 메모리 풀을 만들어 놓고 필요할 때마다 사용하고 반납하는 것
- 메모리 낭비량 < 쓰이지 않는 메모리 양 -> 사용하지 않아야한다.