메모리 단편화 해결기법이 무엇일까?

박승우·2024년 6월 30일

자 예순 다섯 번째 키워드인 '메모리 단편화 해결기법'을 알아 보았다.

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

메모리 단편화의 해결기법이 뭐에요?

메모리 단편화(memory fragmentation)는 메모리를 효율적으로 사용하기 어려운 상태로, 이는 외부 단편화와 내부단편화로 나뉘게 된다.

외부 단편화 해결 기법

  1. 압축(Compaction)
  • 개념: 메모리의 사용 중인 블록들을 한쪽으로 몰아서 연속된 자유 공간을 만드는 방법이다.
  • 장점: 단편화를 줄여 큰 메모리 블록을 할당할 수 있게 된다.
  • 단점: 많은 CPU 자원이 소모되고, 실행 중인 프로세스를 일시적으로 중단해야 하므로 효율이 떨어질 수 있다.
  1. 페이징(Paging)
  • 개념: 메모리를 동일한 크기의 페이지로 나누고, 프로세스가 필요로 하는 메모리를 페이지 단위로 할당하는 방식이다.
  • 구조: 각 프로세스는 페이지 테이블을 가지고 있으며, 이 테이블은 논리 주소를 물리 주소로 변환하는 역할을 한다.
  • 장점: 외부 단편화를 완전히 제거할 수 있다.
  • 단점: 페이지 테이블을 관리해야 하는 오버헤드가 존재하며, 페이지 크기에 따른 내부 단편화가 발생할 수 있다.
  1. 세그먼테이션(Segmentation)
  • 개념: 메모리를 논리적인 단위(세그먼트)로 나누고, 각 세그먼트는 논리적인 단위로 다른 크기를 가질 수 있다.
  • 구조: 각 세그먼트는 세그먼트 테이블을 통해 관리되며, 이 테이블은 세그먼트의 시작 주소와 길이를 포함한다.
  • 장점: 프로세스의 논리적인 구조를 반영하여 메모리를 효율적으로 사용할 수 있다.
  • 단점: 외부 단편화를 완전히 제거하지는 못하며, 세그먼트 테이블을 관리하는 오버헤드가 있다.
  1. 페이징과 세그먼테이션의 혼합(Paging and Segmentation Combined)
    개념: 세그먼트를 다시 작은 페이지로 나누어 관리하는 방식으로, 두 기법의 장점을 결합한다.
    구조: 프로세스는 세그먼트 테이블과 페이지 테이블을 모두 사용하여 메모리를 관리한다.
    장점: 외부 단편화와 내부 단편화를 모두 최소화할 수 있다.
    단점: 두 개의 테이블을 관리해야 하므로 오버헤드가 증가할 수 있다.

내부 단편화 해결 기법

  1. 적응형 메모리 할당(Adaptive Memory Allocation)
  • 개념: 프로세스가 요청한 메모리 크기에 맞추어 메모리를 할당하는 방법이다.

    	- 슬랩 할당자(Slab Allocator) : 자주 사용하는 객체의 크기에 맞춘 캐시를 만들어, 필요한 객체를 효율적으로 재사용할 수 있게 하는 기법이다.
  • 커널 내에서 자주 사용되는 구조체나 객체를 효율적으로 관리할 수 있다.

  • 장점: 메모리 사용 효율성을 높이고 내부 단편화를 줄일 수 있다.

  • 단점: 특정 상황에서만 효과적일 수 있다.

  1. 버디 시스템(Buddy System)
  • 개념: 메모리를 2의 거듭제곱 크기로 나누어 관리하는 방식이다.
  • 구조: 메모리를 할당할 때 필요한 크기의 메모리를 2의 거듭제곱 크기로 할당하며, 할당된 메모리 블록을 병합하여 다시 사용할 수 있게 한다.
  • 장점: 메모리 병합을 통해 단편화를 줄일 수 있으며, 할당과 해제가 빠르다.
  • 단점: 여전히 일부 내부 단편화가 발생할 수 있다.

결론 - 느낀 점

이로써 단편화 시리즈는 끝이 나게 되었는데, 확실히 메모리 관리라는것이 매우 중요해 보인다.

시대가 발전해서 용량이 많아진다고 하지만 그만큼 필요한 자원도 많아지기에 관리측면은 매우 중요하게 느껴져서 해결이나 관리하는 방법을 알아야 할 것 같다.

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

0개의 댓글