메모리 단편화는 컴퓨터의 메모리 공간이 비효율적으로 나뉘거나 남아 사용할 수 없는 경우를 의미합니다. 이는 메모리를 관리할 때 중요한 문제로, 주로 내부 단편화(Internal Fragmentation)와 외부 단편화(External Fragmentation)로 나뉩니다.
정의
내부 단편화는 메모리 블록이 할당된 상태에서 남은 공간이 사용되지 않고 남는 경우를 말합니다. 프로세스가 필요한 메모리보다 더 큰 블록이 할당되면, 사용하지 못하는 공간이 생기면서 낭비가 발생합니다.
원인
일반적으로 메모리를 일정 크기의 블록 단위로 할당하기 때문에 발생합니다. 예를 들어, 운영체제가 64KB 블록 단위로 메모리를 관리할 때, 40KB가 필요한 프로세스에 64KB 블록이 할당되면 남은 24KB가 사용되지 않고 낭비됩니다.
특징
• 할당된 블록 내부에서만 사용되지 않는 메모리가 생깁니다.
• 메모리 낭비를 줄이기 위해 프로세스가 요청한 크기에 맞춰 블록 크기를 조정해야 합니다.
해결 방법
• 가변 크기 블록 할당: 프로세스의 요구에 따라 할당 블록의 크기를 조절하여 내부 단편화를 줄일 수 있습니다.
정의
외부 단편화는 메모리 전체 공간에 비어있는 조각들이 분산되어 있어, 새로운 프로세스에 연속된 공간을 할당할 수 없는 상황을 말합니다. 메모리의 남은 공간은 충분하지만 연속적이지 않아 새로운 작업이 들어오기 어려워집니다.
원인
프로세스가 메모리에 동적으로 할당되었다가 해제되는 과정을 반복할 때, 빈 공간들이 메모리 전역에 불규칙적으로 퍼지면서 발생합니다.
특징
• 메모리 전체 공간에 연속적이지 않은 빈 공간이 생깁니다.
• 연속된 메모리 블록이 필요한 프로그램에는 할당이 어려워질 수 있습니다.
해결 방법
• 메모리 압축(Compaction): 여러 작은 빈 공간을 한 곳으로 모아 연속된 큰 공간을 만드는 방법입니다. 그러나 시스템 성능에 부담을 줄 수 있습니다.
• 페이지 및 세그먼트 방식: 메모리를 고정된 크기 단위로 나누지 않고 유연하게 관리하여 외부 단편화를 줄일 수 있습니다.
요약
• 내부 단편화는 프로세스가 필요 이상으로 할당받은 블록 내부에서 발생하는 메모리 낭비입니다.
• 외부 단편화는 연속된 메모리 공간이 부족해, 새로운 할당이 어려워지는 문제입니다.
이 두 가지 문제는 메모리 사용의 효율성을 떨어뜨리며, 이를 해결하기 위해 다양한 메모리 관리 기법이 운영체제에서 사용되고 있습니다.