메모리 단편화 관리

sungho·2024년 12월 3일
0

가상 메모리

목록 보기
7/11

메모리 단편화는 운영 체제에서 메모리 할당 및 해제 과정에서 발생하는 문제로 시스템의 메모리 사용 효율을 저하시킬 수 있습니다. 메모리 단편화의 원인, 개념, 문제점, 그리고 단편화 관리 방법에 대해 살펴보겠습니다.

1. 단편화의 원인

  • 단편화는 주로 메모리 할당 및 해제 과정에서 발생
  • 프로세스가 메모리를 요청하고 해제할 때 할당된 메모리 블록의 크기와 사용 패턴에 따라 빈 공간이 남거나 사용되지 않는 메모리 블록이 발생
    • 이러한 현상은 메모리의 효율적인 사용을 방해

2. 단편화의 개념

내부 단편화

  • 내부 단편화는 할당된 메모리 블록 내에 사용되지 않는 공간이 생기는 현상
    • 프로세스가 100바이트의 메모리를 요청했지만 시스템이 128바이트의 블록을 할당할 경우 28바이트의 공간이 낭비

외부 단편화

  • 외부 단편화는 할당된 블록 사이의 빈 공간으로 인해 발생
  • 여러 프로세스가 메모리를 할당하고 해제하면서 메모리 블록 사이에 작은 빈 공간이 생성
  • 이러한 빈 공간은 새로운 프로세스가 요청하는 메모리 크기보다 작을 경우 메모리를 할당할 수 없게 됨

단편화의 문제점

  • 단편화는 시스템의 메모리 사용 효율을 떨어뜨리고 필요한 메모리를 할당하지 못하는 문제를 발생
  • 시스템의 성능 저하로 이어질 수 있으며 특히 메모리 자원이 제한된 환경에서는 더욱 심각한 문제 야기

3. 슬랩 할당기와 슬랩 크기 강제 설정

슬랩 할당기

  • 캐시된 객체의 메모리를 관리하는 기법
    • 메모리 단편화를 줄이는 데 도움
  • 객체의 크기에 따라 메모리 블록을 미리 할당하여 메모리 할당과 해제 시 단편화를 최소화

슬랩 크기 강제 설정

  • 슬랩 크기를 강제로 설정함으로써 내부 단편화를 감소
  • 특정 크기의 객체를 관리하므로 객체의 크기를 미리 정의하고 이를 기반으로 메모리를 할당하면 내부 단편화 감소

4. 단편화 관리

버디 시스템

  • 메모리를 2의 제곱 크기로 나누어 관리하는 기법
  • 메모리 할당과 해제를 효율적으로 처리하여 외부 단편화를 줄이는 데 도움

페이지 블록 관리

  • 메모리를 일정 크기로 나누어 관리하며, 이를 통해 메모리 할당과 해제를 효율적으로 수행

압축(Compaction)

  • 메모리의 단편화를 해소하기 위해 사용되는 기술
  • 메모리 블록을 이동시켜 빈 공간을 모으고 연속된 메모리 블록을 생성하여 외부 단편화를 줄이는 데 기여

5. Movable Page vs Unmovable Page

Movable Page

  • 이동 가능성
    • 페이지 프레임의 내용을 다른 메모리 위치로 이동(단편화 해소에 도움)
    • 메모리 압축 과정에서 이동하여 빈 공간을 모으는 데 사용
  • 유형
    • VM Page
      • 사용자 프로세스의 가상 메모리 페이지로 스택과 힙
    • Page Cache
      • 파일 시스템의 캐시로 사용되며 데이터를 효율적으로 저장하고 접근

Unmovable Page

  • 고정성
    • 특정 메모리 위치에 고정되어 있으며 이동이 불가능(커널 메모리와 같은 중요한 데이터가 포함된 페이지)
  • 유형
    • Page Table
      • 메모리 관리에 필수적인 데이터 구조로 프로세스의 가상 주소를 물리적 주소로 변환
    • Kernel Data
      • 커널에서 사용하는 데이터(슬랩 할당자 등이 포함)

6. 단편화 모니터링 및 관리

  • /proc/meminfo
    • 시스템의 메모리 사용 현황을 보여줌
  • slabtop
    • 슬랩 할당기의 상태를 실시간으로 보여줌
    • 슬랩 캐시의 사용 현황과 단편화 상태를 확인
  • vmstat
    • 시스템의 메모리, 프로세스, I/O, 시스템 활동 등을 모니터링할 수 있는 유용한 도구
    • 메모리 단편화의 영향을 간접적으로 확인

7.커널에서의 메모리 관리 개선 사항

  • 메모리 압축 알고리즘이 개선되어, 메모리 사용 효율성을 높이고 단편화를 줄이는 데 기여
  • NUMA(Non-Uniform Memory Access) 아키텍처에 대한 지원이 강화되어 멀티 프로세서 시스템에서의 메모리 관리 성능이 향상

8. 메모리 압축 알고리즘

  • 메모리 사용을 최적화하기 위해 데이터를 압축하여 저장하는 기술
  • 메모리의 사용량을 줄이고 단편화를 해소
  • zswap와 zram은 메모리 압축 기술로 메모리의 효율성을 높이는 데 기여

9. 결론

메모리 단편화 관리는 내부 단편화와 외부 단편화의 이해는 메모리 관리 기법을 개선하는 데 필수적입니다. 단편화 문제를 최소화 하기 위해 슬랩 할당기, 버디 시스템, 페이지 블록 관리 및 압축 기술을 통해 메모리 효율성을 높이고 있습니다.

0개의 댓글