단편화(Fragmentation)란 말 그대로 ‘조각 모음’이라는 뜻을 가지고 있다. 운영체제에서의 단편화는 메모리 상의 비어 있는 공간을 의미하는데, 이 공간은 겉보기에 여유가 있어 보일 수 있지만 실제로는 프로그램을 실행하기에 충분한 크기를 가지지 못해 사용되지 못하는 경우가 많다.
예를 들어, 메모리 전체의 빈 공간은 충분하지만, 그 공간이 여러 개의 작은 조각들로 나뉘어 있어 실행할 프로세스가 필요한 연속적인 공간을 확보하지 못한다면 프로그램은 적재되지 못하고 메모리 할당에도 실패하게 된다.
이러한 단편화는 크게 두 가지로 나눌 수 있다.
1. 외부 단편화(External Fragmentation)
2. 내부 단편화(Internal Fragmentation)
이 두 가지를 이해하기 위해서는
1. 메모리의 고정 분할 방식(Fixed Partitioning)과
2. 가변 분할 방식(Variable Partitioning)에 대해 먼저 알아야 한다.
🧩 1. 메모리 분할 방식
1-1. 고정 분할 방식 (Fixed Partitioning)
- 메모리를 고정된 크기로 여러 개의 블록(Partition)으로 나누는 방식이다.
- 각 파티션에는 하나의 프로세스만 들어갈 수 있다.
- 단순하고 구현이 쉽지만, 다음과 같은 문제가 생긴다.
- 내부 단편화(Internal Fragmentation) 발생 가능, 프로세스가 파티션보다 작으면, 남는 공간이 낭비됨.
- 유연성이 떨어짐: 프로세스가 파티션보다 크면, 적재 불가
[예시]
10KB 파티션에 7KB 프로세스를 넣으면 3KB가 비어 있지만 사용하지 못함 → 내부 단편화
1-2. 가변 분할 방식 (Variable Partitioning)
- 메모리를 프로세스 크기에 따라 유동적으로 분할하는 방식이다.
- 사용 가능한 공간을 필요에 따라 나누기 때문에 공간 낭비가 적다.
- 하지만 시간이 지나면서 빈 공간이 여기저기 흩어지게 되어 다음과 같은 문제가 생긴다.
- 외부 단편화(External Fragmentation) 발생 가능
- 메모리에 빈 공간은 많지만, 연속된 충분한 공간이 없어서 프로세스를 넣지 못함
[예시]
총 15KB의 빈 공간이 있지만, 모두 3KB씩 나뉘어 있어 10KB 프로세스를 넣지 못함 → 외부 단편화.
2. 단편화의 종류
2-1. 내부 단편화 (Internal Fragmentation)
- 고정 분할 방식에서 주로 발생
- 프로세스가 파티션보다 작을 때, 남는 공간이 낭비되는 현상.
- 블록 내부의 낭비가 특징이다.
2-2. 외부 단편화 (External Fragmentation)
- 가변 분할 방식에서 주로 발생
- 프로세스들이 메모리에 적재되고 제거되는 과정에서 빈 공간이 불연속적으로 흩어져 생기는 문제
- 블록 외부의 낭비, 즉 사용할 수 있는 공간이 있지만 연속되지 않아 사용하지 못함
3. 외부단편화

프로세스 A~E가 가변 분할 방식으로 메모리가 할당되어 있을때, 왼쪽과 같은 상태가 된다. 가변 분할 방식은 프로세스를 한 덩어리로 처리하여, 하나의 프로세스를 연속된 메모리 공간에 배치하는 방식이다. 이 방식은 프로세스의 크기에 따라 메모리 공간을 유연하게 분할할 수 있다는 장점이 있지만, 시간이 지나며 외부 단편화라는 문제가 발생할 수 있다.
프로세스 A부터 E까지가 메모리에 순서대로 적재된 상태에서 이 때 각 프로세스는 필요한 만큼의 메모리 공간을 차지하고 있으며, 그 크기는 서로 다르다. 이후 프로세스 B와 D의 실행이 종료되면, 해당 프로세스들이 차지하고 있던 16KB와 18KB의 메모리 공간이 각각 비게 된다.
결과적으로 메모리에는 총 34KB의 빈 공간이 생기지만, 이 공간이 연속되지 않고 조각나 있기 때문에, 예를 들어 18KB보다 큰 프로세스는 메모리에 적재될 수 없다. 이처럼 메모리에 충분한 여유 공간이 있음에도 불구하고 연속적인 공간이 부족해 프로세스를 적재할 수 없는 현상을 외부 단편화라고 한다.
외부 단편화를 해결하기 위해서는 메모리 압축(compaction)이라는 방법을 사용해야 한다. 이는 현재 메모리에 존재하는 프로세스들(예: C와 E)의 위치를 옮겨서, 흩어져 있는 빈 공간을 한쪽으로 모아 연속된 큰 공간을 확보하는 방식이다. 그러나 이러한 압축 과정은 시스템 자원을 많이 소모하고, 운영체제의 입장에서도 복잡한 작업이 되기 때문에 메모리 관리가 비교적 어렵고 비효율적이라는 단점이 있다.
4. 내부단편화

같은 프로세스가 20KB 고정 분할 방식으로 메모리가 할당되어있을때 위 그림과 같다.
고정 분할 방식은 메모리를 일정한 크기로 나누어 관리하기 때문에 프로세스 크기에 상관없이 메모리가 같은 크기로 나뉜다.그러므로 프로세스 C 같은 큰 프로세스가 메모리에 올라오면 여러조각으로 나누어 배치할 수 있다.가변 분할 방식과 달리 비연속적 메모리 할당도 가능하다.
프로세스 B, C3, D가 할당된 메모리 공간을 보면 작은 메모리 조각이 할당되지 않고 남아 있다.
이것을 내부단편화라고 한다.
항상 일정한 크기만큼 메모리 공간이 비어있기 때문에 비교적 메모리 관리가 수월하다. 또한 비연속적 메모리 할당이 가능하기 때문에 큰 메모리가 적재된다고 하더라도 어렵지 않게 실행될 수 있다. 반면, 비워두는 공간으로 인해 내부에서 메모리 낭비가 발생할 수 있는데 이것을 내부단편화라고 한다.
5. 단편화 문제

① 480K
② 430K
③ 260K
④ 170K
주어진 그림은 기억장치를 고정 분할 했다.
- A는 20K 공간에 10K의 작업이 들어와서 내부단편화 (20K-10K)는 발생하지만 외부 단편화는 발생하지 않는다.
- B는 50K 공간에 60K의 작업이 왔기 때문에, 작업을 하지 못한다. 그래서 50K의 공간을 사용하지 못하고 외부 단편화가 된다.
- C도 마찬가지로 120K의 공간에 160K의 작업이 할당되어 작업을 하지 못하고 120K의 외부 단편화가 발생한다.
- D는 200K에 100K의 작업이 들어가서 내부단편화(200K-100K)가 생긴다.
- E는 300K의 공간에 150K의 작업이 들어가므로 내부단편화(300K-150K)가 발생한다.
외부 단편화의 총 크기는 B와 C에서 발생한 공간 (50K + 120K) = 170K이다.
내부 단편화의 총 크기는 A, D, E에서 발생한 (10K + 100K + 150K) = 260K이다.
'ETC > ETC_Software' 카테고리의 다른 글
[네트워크] 공유기 설정 페이지 192.168.0.1 안들어가질때 해결법 (3) | 2025.04.22 |
---|---|
Daemon.json 호스트 설정 -H 트러블 슈팅 (0) | 2025.04.16 |
[VSCode] vs code live server 실행 시 작성중인 파일 경로로 실행되지 않는 문제 ~/ (5) | 2025.03.18 |
[Windows10/11] 우측 화면 하단 AhnLab AD 광고 제거하는 법 (5) | 2025.03.17 |
[한글] 한컴오피스 한글 쪽마다 여백 다르게 설정하기 (6) | 2025.03.13 |
단편화(Fragmentation)란 말 그대로 ‘조각 모음’이라는 뜻을 가지고 있다. 운영체제에서의 단편화는 메모리 상의 비어 있는 공간을 의미하는데, 이 공간은 겉보기에 여유가 있어 보일 수 있지만 실제로는 프로그램을 실행하기에 충분한 크기를 가지지 못해 사용되지 못하는 경우가 많다.
예를 들어, 메모리 전체의 빈 공간은 충분하지만, 그 공간이 여러 개의 작은 조각들로 나뉘어 있어 실행할 프로세스가 필요한 연속적인 공간을 확보하지 못한다면 프로그램은 적재되지 못하고 메모리 할당에도 실패하게 된다.
이러한 단편화는 크게 두 가지로 나눌 수 있다.
1. 외부 단편화(External Fragmentation)
2. 내부 단편화(Internal Fragmentation)
이 두 가지를 이해하기 위해서는
1. 메모리의 고정 분할 방식(Fixed Partitioning)과
2. 가변 분할 방식(Variable Partitioning)에 대해 먼저 알아야 한다.
🧩 1. 메모리 분할 방식
1-1. 고정 분할 방식 (Fixed Partitioning)
- 메모리를 고정된 크기로 여러 개의 블록(Partition)으로 나누는 방식이다.
- 각 파티션에는 하나의 프로세스만 들어갈 수 있다.
- 단순하고 구현이 쉽지만, 다음과 같은 문제가 생긴다.
- 내부 단편화(Internal Fragmentation) 발생 가능, 프로세스가 파티션보다 작으면, 남는 공간이 낭비됨.
- 유연성이 떨어짐: 프로세스가 파티션보다 크면, 적재 불가
[예시]
10KB 파티션에 7KB 프로세스를 넣으면 3KB가 비어 있지만 사용하지 못함 → 내부 단편화
1-2. 가변 분할 방식 (Variable Partitioning)
- 메모리를 프로세스 크기에 따라 유동적으로 분할하는 방식이다.
- 사용 가능한 공간을 필요에 따라 나누기 때문에 공간 낭비가 적다.
- 하지만 시간이 지나면서 빈 공간이 여기저기 흩어지게 되어 다음과 같은 문제가 생긴다.
- 외부 단편화(External Fragmentation) 발생 가능
- 메모리에 빈 공간은 많지만, 연속된 충분한 공간이 없어서 프로세스를 넣지 못함
[예시]
총 15KB의 빈 공간이 있지만, 모두 3KB씩 나뉘어 있어 10KB 프로세스를 넣지 못함 → 외부 단편화.
2. 단편화의 종류
2-1. 내부 단편화 (Internal Fragmentation)
- 고정 분할 방식에서 주로 발생
- 프로세스가 파티션보다 작을 때, 남는 공간이 낭비되는 현상.
- 블록 내부의 낭비가 특징이다.
2-2. 외부 단편화 (External Fragmentation)
- 가변 분할 방식에서 주로 발생
- 프로세스들이 메모리에 적재되고 제거되는 과정에서 빈 공간이 불연속적으로 흩어져 생기는 문제
- 블록 외부의 낭비, 즉 사용할 수 있는 공간이 있지만 연속되지 않아 사용하지 못함
3. 외부단편화

프로세스 A~E가 가변 분할 방식으로 메모리가 할당되어 있을때, 왼쪽과 같은 상태가 된다. 가변 분할 방식은 프로세스를 한 덩어리로 처리하여, 하나의 프로세스를 연속된 메모리 공간에 배치하는 방식이다. 이 방식은 프로세스의 크기에 따라 메모리 공간을 유연하게 분할할 수 있다는 장점이 있지만, 시간이 지나며 외부 단편화라는 문제가 발생할 수 있다.
프로세스 A부터 E까지가 메모리에 순서대로 적재된 상태에서 이 때 각 프로세스는 필요한 만큼의 메모리 공간을 차지하고 있으며, 그 크기는 서로 다르다. 이후 프로세스 B와 D의 실행이 종료되면, 해당 프로세스들이 차지하고 있던 16KB와 18KB의 메모리 공간이 각각 비게 된다.
결과적으로 메모리에는 총 34KB의 빈 공간이 생기지만, 이 공간이 연속되지 않고 조각나 있기 때문에, 예를 들어 18KB보다 큰 프로세스는 메모리에 적재될 수 없다. 이처럼 메모리에 충분한 여유 공간이 있음에도 불구하고 연속적인 공간이 부족해 프로세스를 적재할 수 없는 현상을 외부 단편화라고 한다.
외부 단편화를 해결하기 위해서는 메모리 압축(compaction)이라는 방법을 사용해야 한다. 이는 현재 메모리에 존재하는 프로세스들(예: C와 E)의 위치를 옮겨서, 흩어져 있는 빈 공간을 한쪽으로 모아 연속된 큰 공간을 확보하는 방식이다. 그러나 이러한 압축 과정은 시스템 자원을 많이 소모하고, 운영체제의 입장에서도 복잡한 작업이 되기 때문에 메모리 관리가 비교적 어렵고 비효율적이라는 단점이 있다.
4. 내부단편화

같은 프로세스가 20KB 고정 분할 방식으로 메모리가 할당되어있을때 위 그림과 같다.
고정 분할 방식은 메모리를 일정한 크기로 나누어 관리하기 때문에 프로세스 크기에 상관없이 메모리가 같은 크기로 나뉜다.그러므로 프로세스 C 같은 큰 프로세스가 메모리에 올라오면 여러조각으로 나누어 배치할 수 있다.가변 분할 방식과 달리 비연속적 메모리 할당도 가능하다.
프로세스 B, C3, D가 할당된 메모리 공간을 보면 작은 메모리 조각이 할당되지 않고 남아 있다.
이것을 내부단편화라고 한다.
항상 일정한 크기만큼 메모리 공간이 비어있기 때문에 비교적 메모리 관리가 수월하다. 또한 비연속적 메모리 할당이 가능하기 때문에 큰 메모리가 적재된다고 하더라도 어렵지 않게 실행될 수 있다. 반면, 비워두는 공간으로 인해 내부에서 메모리 낭비가 발생할 수 있는데 이것을 내부단편화라고 한다.
5. 단편화 문제

① 480K
② 430K
③ 260K
④ 170K
주어진 그림은 기억장치를 고정 분할 했다.
- A는 20K 공간에 10K의 작업이 들어와서 내부단편화 (20K-10K)는 발생하지만 외부 단편화는 발생하지 않는다.
- B는 50K 공간에 60K의 작업이 왔기 때문에, 작업을 하지 못한다. 그래서 50K의 공간을 사용하지 못하고 외부 단편화가 된다.
- C도 마찬가지로 120K의 공간에 160K의 작업이 할당되어 작업을 하지 못하고 120K의 외부 단편화가 발생한다.
- D는 200K에 100K의 작업이 들어가서 내부단편화(200K-100K)가 생긴다.
- E는 300K의 공간에 150K의 작업이 들어가므로 내부단편화(300K-150K)가 발생한다.
외부 단편화의 총 크기는 B와 C에서 발생한 공간 (50K + 120K) = 170K이다.
내부 단편화의 총 크기는 A, D, E에서 발생한 (10K + 100K + 150K) = 260K이다.
'ETC > ETC_Software' 카테고리의 다른 글
[네트워크] 공유기 설정 페이지 192.168.0.1 안들어가질때 해결법 (3) | 2025.04.22 |
---|---|
Daemon.json 호스트 설정 -H 트러블 슈팅 (0) | 2025.04.16 |
[VSCode] vs code live server 실행 시 작성중인 파일 경로로 실행되지 않는 문제 ~/ (5) | 2025.03.18 |
[Windows10/11] 우측 화면 하단 AhnLab AD 광고 제거하는 법 (5) | 2025.03.17 |
[한글] 한컴오피스 한글 쪽마다 여백 다르게 설정하기 (6) | 2025.03.13 |