[해키피디아] Fragmentation

단편화(Fragmentation)는 일반적으로 더 작은 조각으로 나누는 행위를 말합니다.

메모리 단편화(Memory Fragmentation)는 내부 단편화(Internal Fragmentation), 외부 단편화(External Fragmentation)로 나눌 수 있습니다. 컴퓨터 시스템의 메모리에서 프로세스와 리소스는 계속해서 로드되고 해제되면서 여유 메모리 블록이 매우 작은 조각으로 나뉘게 됩니다. 따라서 다른 일반 프로세스를 할당할 수 없는 문제가 발생하기 때문에 비효율적이며 시스템 용량 또는 성능 저하가 발생합니다.

  • 내부 단편화

    프로세스가 메모리 블록에 할당되는 시점에서 해당 프로세스에 할당된 메모리가 프로세스가 요청된 메모리 공간보다 작으면 할당된 메모리 블록에 빈 공간을 만듭니다. 할당된 메모리 공간과 요청된 메모리 공간의 차이를 내부 단편화라고 합니다.

    예를 들어, 1번 프로세스가 40KB를 요청했지만 고정 크기의 50KB 블록이 프로세스에 할당되었을 때, 사용되지 않는 10KB를 내부 단편화라고 합니다.

  • 외부 단편화

    외부 단편화는 일반적으로 동적 또는 가변 크기 분할의 경우 발생합니다. 여러 메모리가 여러 조각으로 나뉘어 사용 가능한 전체 공간은 프로세스를 실행하기에 충분하지만, 연속적이지 않아 프로세스 실행이 제한되는 경우입니다.

    예를 들어, 총 20KB 이상의 여유 공간이 있지만 연속적이지 않거나 단편화되어 있는 경우입니다. 20KB 크기의 프로세스가 로드하려는 경우에 로드할 수 없습니다.

파일 단편화(File Fragmentation)은 데이터 파일이 저장 매체상에서 하나의 연속된 위치에 저장되는 것이 아니라 여러 개의 조각에 나뉘어 저장되는 것을 가리킵니다. 이것은 사용되지 않은 채 작은 조각으로 여기저기 흩어져 남아있는 저장 공간을 활용할 수 있습니다.