외부 단편화가 무엇일까?

박승우·2024년 6월 30일

자 예순 네 번째 키워드인 '외부 단편화'을 알아 보았다.

이전 키워드인 메모리 단편화에서 나온 내용이긴 하지만 세부적으로 알아보았다.

외부 단편화가 뭐에요?

외부 단편화(External Fragmentation)는 메모리 관리에서 발생하는 복잡한 문제로, 시스템이 사용 가능한 메모리를 효과적으로 활용하지 못하게 만드는 중요한 요인 중 하나이다.

외부 단편화의 발생 과정

  1. 메모리 할당과 해제: 프로그램이 실행될 때, 메모리는 다양한 크기로 할당되고 해제된다.
    예를 들어, 다음과 같은 시나리오를 고려 해보면 다음과 같다.
    - 10MB의 메모리가 할당됨.
    - 20MB의 메모리가 할당됨.
    - 10MB의 메모리가 해제됨.
    - 30MB의 메모리가 할당됨.
    - 20MB의 메모리가 해제됨.

  2. 메모리의 분산: 위의 과정을 통해 메모리에는 다양한 크기의 빈 공간이 흩어지게 된다. 예를 들어, 10MB의 빈 공간과 20MB의 빈 공간이 서로 떨어져 존재할 수 있다.

  3. 연속된 메모리 요구: 새로운 프로그램이나 데이터가 25MB의 연속된 메모리 블록을 필요로 할 때, 비록 전체 빈 공간의 합이 30MB(10MB + 20MB)로 충분하더라도, 연속된 25MB의 빈 공간이 없기 때문에 메모리 할당에 실패하게 된다.

외부 단편화의 문제점

  • 메모리 낭비: 실제로 사용 가능한 메모리가 충분함에도 불구하고, 연속된 공간이 부족하여 메모리를 제대로 활용하지 못한다.

  • 시스템 성능 저하: 메모리 부족으로 인해 새로운 프로그램이나 데이터의 실행이 지연되거나 실패할 수 있다.

외부 단편화 해결 방법

  1. 메모리 압축(Compaction)
  • 메모리 내의 모든 사용 중인 블록을 한쪽으로 모으고, 모든 빈 공간을 다른 한쪽으로 모은다.
  • 연속된 큰 메모리 블록을 만들어 새로운 할당 요청을 처리할 수 있게 한다.
  • 압축 과정은 많은 계산 자원을 소모하고 시간이 걸릴 수 있다.
  1. 페이징(Paging)
  • 메모리를 고정 크기의 페이지로 나누고, 각 페이지는 물리적 메모리의 임의 위치에 매핑된다.
  • 논리 주소와 물리 주소의 변환을 통해 연속된 메모리 공간을 필요로 하지 않게 한다.
  • 외부 단편화 문제를 해결하지만, 페이지의 일부만 사용되면 내부 단편화(Internal Fragmentation) 문제가 발생할 수 있다.
  1. 세그멘테이션(Segmentation)
  • 메모리를 논리적 단위인 세그먼트로 나누고, 각 세그먼트는 연속된 메모리 공간을 차지한다.
  • 프로그램의 논리적 구조를 반영하여 메모리를 할당한다.
  • 여전히 외부 단편화가 발생할 수 있으나, 세그먼트의 크기를 조정하여 문제를 완화할 수 있다.
  1. 베스트 핏, 퍼스트 핏, 웨스트 핏 등 다양한 메모리 할당 전략
  • 베스트 핏(Best Fit): 가장 작은 충분한 크기의 빈 공간에 메모리를 할당한다. 이는 작은 단편화를 줄이지만, 할당 과정이 오래 걸릴 수 있다.

  • 퍼스트 핏(First Fit): 첫 번째로 발견한 충분한 크기의 빈 공간에 메모리를 할당한다. 빠른 할당이 가능하지만, 외부 단편화가 증가할 수 있다.

  • 웰스트 핏(Worst Fit): 가장 큰 빈 공간에 메모리를 할당한다. 이는 큰 빈 공간을 남겨두어 나중에 큰 할당 요청을 처리할 수 있게 하지만, 단편화가 심해질 수 있다.

결론 - 느낀 점

컴퓨터 구조를 잘 알아야 나중에 개발이 쉬워진다는 이야기가 있듯 지금 공부한 메모리 시리즈에서
더욱 심화있게 공부를 해야 개발이 쉬워질 것 같은 느낌이 든다.

profile
게임을 좋아하는 사람 입니다!

0개의 댓글