1. 개념 한줄 요약
내부 단편화와 외부 단편화는 메모리 할당 과정에서 사용되지 않는 공간이 발생하는 현상을 설명하는 대표적인 메모리 관리 문제다.
2. 쉽게 풀어쓴 설명
컴퓨터에서 프로그램을 실행하려면 메모리를 할당받아야 한다. 하지만 메모리는 항상 필요한 만큼 정확하게 나누어 사용되지는 않는다. 운영체제가 메모리를 관리하는 방식에 따라 사용되지 않는 공간이 남게 되는 경우가 있다.
이때 발생하는 대표적인 문제가 바로 메모리 단편화(Fragmentation)다. 단편화는 메모리 공간이 효율적으로 사용되지 못하고 작은 빈 공간들이 생기는 현상을 의미한다. 단편화는 크게 내부 단편화와 외부 단편화 두 가지로 구분된다.
3. 구조/원리 설명
① 메모리 단편화 발생 구조
운영체제는 프로그램 실행을 위해 메모리 공간을 할당하고 해제하는 과정을 반복한다.
✔ 프로그램 실행 요청
✔ 메모리 공간 할당
✔ 작업 종료 후 메모리 반환
이 과정이 반복되면 메모리 구조가 점점 불규칙해지면서 빈 공간이 생길 수 있다.
② 내부 단편화 발생 원리
내부 단편화는 할당된 메모리 공간 내부에서 사용되지 않는 영역이 발생하는 현상이다.
✔ 고정 크기 블록 할당
✔ 실제 사용 공간보다 큰 메모리 할당
✔ 남는 공간이 내부에 존재
예를 들어 프로그램이 18KB의 메모리를 필요로 하는데 운영체제가 20KB 블록을 할당하면 남은 2KB는 사용되지 않게 된다. 이 공간이 내부 단편화다.
③ 외부 단편화 발생 원리
외부 단편화는 메모리 사이에 작은 빈 공간들이 흩어져 발생하는 문제다.
✔ 메모리 할당과 해제 반복
✔ 작은 빈 공간 생성
✔ 연속된 큰 공간 부족
이 경우 전체 메모리 용량이 충분하더라도 큰 프로그램을 실행할 연속된 공간을 확보하지 못할 수 있다.
④ 메모리 관리 방식과 단편화 관계
메모리 관리 방식에 따라 단편화 유형이 달라질 수 있다.
✔ 고정 분할 방식 → 내부 단편화 발생
✔ 가변 분할 방식 → 외부 단편화 발생
운영체제는 이러한 문제를 줄이기 위해 다양한 관리 기법을 사용한다.
⑤ 단편화 해결 기술
단편화를 완화하기 위해 여러 기술이 사용된다.
✔ 메모리 압축(Compaction)
✔ 페이징(Paging)
✔ 세그먼테이션(Segmentation)
특히 페이징 방식은 메모리를 일정한 크기의 페이지로 나누어 외부 단편화를 줄이는 데 효과적이다.
⑥ 시스템 성능과 단편화 영향
단편화가 심해지면 메모리 활용 효율이 떨어진다. 프로그램 실행에 필요한 공간을 확보하기 어려워지고 시스템 성능이 저하될 수 있다.
운영체제는 이러한 문제를 최소화하기 위해 메모리 할당 전략과 관리 알고리즘을 사용한다.
4. 예시
컴퓨터에서 여러 프로그램을 실행하고 종료하는 작업이 반복되면 메모리 공간이 조각처럼 나뉘어질 수 있다. 작은 프로그램들이 차지하던 공간이 해제되면 그 사이에 작은 빈 공간이 생기는데, 이것이 외부 단편화의 예다.
반면 고정된 메모리 블록 크기를 사용하는 시스템에서는 프로그램이 필요한 공간보다 큰 블록을 할당받게 되면서 내부 단편화가 발생할 수 있다.
대형 서버 시스템에서는 이러한 문제를 줄이기 위해 페이징 기반 메모리 관리 방식을 사용한다.
5. 주의점
❗ 단편화 문제는 시스템 성능과 메모리 활용 효율에 영향을 줄 수 있다.
특히 외부 단편화가 심해지면 충분한 메모리가 있어도 프로그램 실행이 어려워질 수 있다.
또한 내부 단편화는 사용되지 않는 공간이 계속 증가해 메모리 낭비를 초래할 수 있다.
운영체제는 메모리 관리 기법을 통해 이러한 문제를 최소화하도록 설계되어 있다.
6. 요약 정리
내부 단편화는 할당된 메모리 블록 내부에서 사용되지 않는 공간이 발생하는 현상이고, 외부 단편화는 메모리 사이에 작은 빈 공간이 흩어져 큰 연속 공간을 확보하기 어려운 문제다. 두 현상 모두 메모리 관리 과정에서 발생하는 대표적인 단편화 문제이며, 운영체제는 페이징이나 압축 같은 기술을 통해 이를 최소화한다. 이러한 개념을 이해하면 메모리 관리 구조와 시스템 성능 관계를 보다 명확하게 파악할 수 있다.