내부 단편화와 외부 단편화는 메모리 관리에서 발생하는 공간 낭비 문제를 설명하는 개념입니다.
외부 단편화는 연속적인 메모리 할당 방식에서 발생하는 문제입니다. 프로세스들이 메모리에 할당되고 해제되는 과정을 반복하다 보면, 사용 가능한 메모리 공간이 비연속적으로 흩어지게 되어, 충분한 총 메모리가 남아 있어도 새로운 프로세스가 사용할 수 없게 되는 현상을 말합니다.
• 예시: 4KB의 프로세스가 필요한데, 메모리에 1KB, 2KB, 1KB로 흩어진 빈 공간들이 있을 경우, 총 4KB의 빈 공간은 존재하지만 연속된 공간이 없기 때문에 프로세스를 할당할 수 없습니다.
• 주된 원인: 메모리를 연속된 공간에 할당하는 방식에서, 프로세스들이 해제된 후 남은 공간들이 잘게 나뉘어 사용할 수 없게 되는 것.
내부 단편화는 고정된 크기의 메모리 블록을 할당할 때 발생하는 문제입니다. 프로세스가 실제로 필요한 메모리보다 더 큰 고정된 크기의 메모리 블록이 할당될 경우, 남은 사용되지 않는 공간이 낭비되는 현상입니다.
• 예시: 만약 4KB의 메모리 블록을 할당받았는데, 프로세스가 실제로는 3.5KB만 필요하다면 나머지 0.5KB는 사용되지 않고 낭비됩니다.
• 주된 원인: 메모리를 고정된 크기의 단위로 할당할 때, 프로세스의 실제 요구 크기와 블록 크기 간 차이에서 발생.
비교
• 외부 단편화는 메모리의 사용되지 않는 공간들이 흩어져 있어서 새로운 프로세스에 할당할 수 없는 문제입니다.
• 내부 단편화는 할당된 메모리 블록 내에서 사용되지 않은 공간이 남아 있는 문제입니다.
이를 해결하기 위해 페이징이나 세그멘테이션과 같은 메모리 관리 기법이 사용됩니다.