메모리 단편화

ORCASUIT·2023년 11월 10일

메모리 단편화(memory fragmentation)는 컴퓨터의 RAM이 작고 사용할 수 없는 조각으로 나뉘어 사용 효율성이 떨어지는 현상을 말합니다. 메모리 단편화는 크게 두 가지 유형으로 나뉩니다: 외부 단편화(external fragmentation)와 내부 단편화(internal fragmentation).

외부 단편화 (External Fragmentation)

외부 단편화는 할당된 메모리 블록 사이에 발생하는 미사용 공간의 축적으로 인해 발생합니다. 이러한 공간은 충분히 커서 여러 개를 합치면 유용하게 사용할 수 있지만, 개별적으로는 너무 작아서 사용할 수 없는 경우가 많습니다. 예를 들어, 프로세스가 10MB의 메모리를 요청하는데, 10MB 이상의 총 공간이 있지만 4MB, 3MB, 3MB로 나뉘어져 있어서 연속된 10MB 공간을 할당할 수 없는 경우가 이에 해당합니다.

외부 단편화 문제는 일반적으로 다음과 같은 방법으로 관리됩니다:

  • 메모리 압축: 사용 중인 메모리 블록을 이동시켜 연속된 공간을 만드는 방법입니다. 이는 비용이 많이 들고 시간이 오래 걸릴 수 있습니다.
  • 페이징 및 세그먼테이션: 물리적 메모리를 페이지나 세그먼트로 나누고, 가상 메모리를 사용하여 연속성의 요구를 완화합니다.
  • 베스트 핏, 퍼스트 핏, 넥스트 핏 할당 알고리즘: 각각 가장 적합한 크기, 첫 번째 적합한 크기, 마지막 할당 이후 다음 적합한 크기의 블록을 찾아 할당하는 방법입니다.

내부 단편화 (Internal Fragmentation)

내부 단편화는 할당된 메모리 블록 내부에 사용되지 않는 공간이 생기는 현상을 말합니다. 이는 메모리가 고정된 크기의 블록(예: 페이지)으로 나뉠 때 일어납니다. 프로세스가 메모리 블록을 요청하고, 할당된 블록이 요청한 크기보다 클 경우, 남는 공간이 생기는데, 이 공간은 해당 블록 내부에서는 다른 용도로 사용할 수 없으므로 낭비됩니다.

예를 들어, 시스템이 4KB 크기의 페이지를 사용하고 어떤 프로세스가 10KB의 메모리를 요청하면, 3개의 페이지(12KB)가 할당됩니다. 이 경우 2KB의 내부 단편화가 발생합니다.

내부 단편화를 줄이는 방법은 다음과 같습니다:

  • 슬랙 공간 사용: 필요한 것보다 조금 더 큰 메모리 블록을 할당하여, 프로그램이 요청한 크기와 블록 크기 사이의 차이를 최소화합니다.
  • 변수 크기 할당: 가능한 경우, 메모리 블록을 요청받은 크기에 더 가깝게 할당합니다.

메모리 단편화는 시스템의 전반적인 성능에 영향을 미칠 수 있으며, 효율적인 메모리 관리 알고리즘과 가비지 컬렉션과 같은 메모리 회수 기술을 통해 이를 최소화할 수 있습니다.

0개의 댓글