메모리 단편화(memory fragmentation)는 컴퓨터의 RAM이 작고 사용할 수 없는 조각으로 나뉘어 사용 효율성이 떨어지는 현상을 말합니다. 메모리 단편화는 크게 두 가지 유형으로 나뉩니다: 외부 단편화(external fragmentation)와 내부 단편화(internal fragmentation).
외부 단편화는 할당된 메모리 블록 사이에 발생하는 미사용 공간의 축적으로 인해 발생합니다. 이러한 공간은 충분히 커서 여러 개를 합치면 유용하게 사용할 수 있지만, 개별적으로는 너무 작아서 사용할 수 없는 경우가 많습니다. 예를 들어, 프로세스가 10MB의 메모리를 요청하는데, 10MB 이상의 총 공간이 있지만 4MB, 3MB, 3MB로 나뉘어져 있어서 연속된 10MB 공간을 할당할 수 없는 경우가 이에 해당합니다.
외부 단편화 문제는 일반적으로 다음과 같은 방법으로 관리됩니다:
내부 단편화는 할당된 메모리 블록 내부에 사용되지 않는 공간이 생기는 현상을 말합니다. 이는 메모리가 고정된 크기의 블록(예: 페이지)으로 나뉠 때 일어납니다. 프로세스가 메모리 블록을 요청하고, 할당된 블록이 요청한 크기보다 클 경우, 남는 공간이 생기는데, 이 공간은 해당 블록 내부에서는 다른 용도로 사용할 수 없으므로 낭비됩니다.
예를 들어, 시스템이 4KB 크기의 페이지를 사용하고 어떤 프로세스가 10KB의 메모리를 요청하면, 3개의 페이지(12KB)가 할당됩니다. 이 경우 2KB의 내부 단편화가 발생합니다.
내부 단편화를 줄이는 방법은 다음과 같습니다:
메모리 단편화는 시스템의 전반적인 성능에 영향을 미칠 수 있으며, 효율적인 메모리 관리 알고리즘과 가비지 컬렉션과 같은 메모리 회수 기술을 통해 이를 최소화할 수 있습니다.