연속 메모리 할당 기법

I. 고정 할당 방식, 메모리 고정분할 할당(MFT)

가. 메모리 고정분할 할당의 개념

  • 메모리를 여러 개의 연속된 고정 크기로 분할 할당하는 메모리 할당 기법

나. 메모리 고정분할 할당 개념도 및 설명

  • 고정 크기 영역에 각 프로세스 할당, 분할 영역보다 프로세스의 크기가 작아 할당하고 남은 공간인 내부 단편화(Fragmentation) 발생
  • 물리 주소는 분할 기준 레지스터(PBR) + 논리 주소로 생성
      

II. 가변 할당 방식, 메모리 가변분할 할당(MVT)

가. 메모리 가변분할 할당의 개념

  • 고정된 경계를 없애고 각 작업이 필요한 만큼 메모리를 할당하는 연속 메모리 할당 기법

나. 메모리 가변분할 할당 개념도 및 설명

  • 분할 영역 위해 기준 레지스터와 한계 레지스터 사용
  • 한계 레지스터: 프로세스 크기만큼 영역에 저장
    예) P3는 한계 레지스터(250), 기준 레지스터(5034)와 맵핑
  • 프로세스들이 메모리에 적재되고 제거되는 과정에서 외부 단편화 문제 발생
  • 사용가능 공간 할당 메모리 배치기법으로 First, Best, Next, Worst Fit 방식 존재
     

III. Buddy Memory Allocator, Slab Allocator

가. Buddy Memory Allocator

개념도
설명① 초기 64k 버디 블록 시스템에 8k 메모리 요청
② 64k 메모리 블록을 이등분하여 32k 두 개로 쪼갬
③ 32k 블록 중 하나를 이등분하여 16k 두 개로 쪼갬
④ 16k 블록 중 하나를 8k 두 개로 쪼개 메모리 할당
  • 버퍼를 2단위 분할, 메모리 해제 시 통합, 내부단편화 존재

나. Slab Allocator

개념도– slabs_full: 모든 slab 사용중
– slabs_partial: 일부 slab만 사용중
– slabs_empty: 미사용
설명① cache는 slab으로, slab은 page/object로 구성
② 요청크기 4kbyte 이상 시 Buddy Memory Allocator
③ 최소 관리단위(4K)보다 작으면 내부단편화 유발되므로 가장 적합 크기 캐시 찾아 Partial Slab부터 할당
  • 페이지를 작게 분할, 자주 할당되는 크기의 캐시로 구성, 내부 단편화를 최소화, 성능향상
     

콘텐츠 사용 시 출처 표기 부탁 드리고, 궁금한 점이나 의견은 댓글 남겨주세요^^