메모리 단편화는 운영 체제에서 메모리 할당 및 해제 과정에서 발생하는 문제로 시스템의 메모리 사용 효율을 저하시킬 수 있습니다. 메모리 단편화의 원인, 개념, 문제점, 그리고 단편화 관리 방법에 대해 살펴보겠습니다.
1. 단편화의 원인
- 단편화는 주로 메모리 할당 및 해제 과정에서 발생
- 프로세스가 메모리를 요청하고 해제할 때 할당된 메모리 블록의 크기와 사용 패턴에 따라 빈 공간이 남거나 사용되지 않는 메모리 블록이 발생
2. 단편화의 개념
내부 단편화
- 내부 단편화는 할당된 메모리 블록 내에 사용되지 않는 공간이 생기는 현상
- 프로세스가 100바이트의 메모리를 요청했지만 시스템이 128바이트의 블록을 할당할 경우 28바이트의 공간이 낭비
외부 단편화
- 외부 단편화는 할당된 블록 사이의 빈 공간으로 인해 발생
- 여러 프로세스가 메모리를 할당하고 해제하면서 메모리 블록 사이에 작은 빈 공간이 생성
- 이러한 빈 공간은 새로운 프로세스가 요청하는 메모리 크기보다 작을 경우 메모리를 할당할 수 없게 됨
단편화의 문제점
- 단편화는 시스템의 메모리 사용 효율을 떨어뜨리고 필요한 메모리를 할당하지 못하는 문제를 발생
- 시스템의 성능 저하로 이어질 수 있으며 특히 메모리 자원이 제한된 환경에서는 더욱 심각한 문제 야기
3. 슬랩 할당기와 슬랩 크기 강제 설정
슬랩 할당기
- 캐시된 객체의 메모리를 관리하는 기법
- 객체의 크기에 따라 메모리 블록을 미리 할당하여 메모리 할당과 해제 시 단편화를 최소화
슬랩 크기 강제 설정
- 슬랩 크기를 강제로 설정함으로써 내부 단편화를 감소
- 특정 크기의 객체를 관리하므로 객체의 크기를 미리 정의하고 이를 기반으로 메모리를 할당하면 내부 단편화 감소
4. 단편화 관리
버디 시스템
- 메모리를 2의 제곱 크기로 나누어 관리하는 기법
- 메모리 할당과 해제를 효율적으로 처리하여 외부 단편화를 줄이는 데 도움
페이지 블록 관리
- 메모리를 일정 크기로 나누어 관리하며, 이를 통해 메모리 할당과 해제를 효율적으로 수행
압축(Compaction)
- 메모리의 단편화를 해소하기 위해 사용되는 기술
- 메모리 블록을 이동시켜 빈 공간을 모으고 연속된 메모리 블록을 생성하여 외부 단편화를 줄이는 데 기여
5. Movable Page vs Unmovable Page
Movable Page
- 이동 가능성
- 페이지 프레임의 내용을 다른 메모리 위치로 이동(단편화 해소에 도움)
- 메모리 압축 과정에서 이동하여 빈 공간을 모으는 데 사용
- 유형
- VM Page
- 사용자 프로세스의 가상 메모리 페이지로 스택과 힙
- Page Cache
- 파일 시스템의 캐시로 사용되며 데이터를 효율적으로 저장하고 접근
Unmovable Page
- 고정성
- 특정 메모리 위치에 고정되어 있으며 이동이 불가능(커널 메모리와 같은 중요한 데이터가 포함된 페이지)
- 유형
- Page Table
- 메모리 관리에 필수적인 데이터 구조로 프로세스의 가상 주소를 물리적 주소로 변환
- Kernel Data
- 커널에서 사용하는 데이터(슬랩 할당자 등이 포함)

6. 단편화 모니터링 및 관리
/proc/meminfo
slabtop
- 슬랩 할당기의 상태를 실시간으로 보여줌
- 슬랩 캐시의 사용 현황과 단편화 상태를 확인
vmstat
- 시스템의 메모리, 프로세스, I/O, 시스템 활동 등을 모니터링할 수 있는 유용한 도구
- 메모리 단편화의 영향을 간접적으로 확인
7.커널에서의 메모리 관리 개선 사항
- 메모리 압축 알고리즘이 개선되어, 메모리 사용 효율성을 높이고 단편화를 줄이는 데 기여
- NUMA(Non-Uniform Memory Access) 아키텍처에 대한 지원이 강화되어 멀티 프로세서 시스템에서의 메모리 관리 성능이 향상
8. 메모리 압축 알고리즘
- 메모리 사용을 최적화하기 위해 데이터를 압축하여 저장하는 기술
- 메모리의 사용량을 줄이고 단편화를 해소
- zswap와 zram은 메모리 압축 기술로 메모리의 효율성을 높이는 데 기여
9. 결론
메모리 단편화 관리는 내부 단편화와 외부 단편화의 이해는 메모리 관리 기법을 개선하는 데 필수적입니다. 단편화 문제를 최소화 하기 위해 슬랩 할당기, 버디 시스템, 페이지 블록 관리 및 압축 기술을 통해 메모리 효율성을 높이고 있습니다.