버디메모리 할당

개념
큰 버퍼들을 반복적으로 2등분 하여 작은 버퍼들을 만들며, 가능할 때마다 인접한 자유로운 버퍼들(Free Buffer)을 합치는 과정을 반복하는 기법

I. 2의 멱승 메모리 할당 기법, 버디메모리 할당 시스템의 개요
    가. 버디 메모리 할당(Buddy memory allocation) 기법의 개념

  • 큰 버퍼들을 반복적으로 2등분 하여 작은 버퍼들을 만들며, 가능할 때마다 인접한 자유로운 버퍼들(Free Buffer)을 합치는 과정을 반복하는 기법

 

    나. 버디 메모리 할당(Buddy memory allocation) 기법의 특징

2의 멱승

메모리의 할당과 회수를 2의 멱승 단위로 수행

합병

서로 인접한 버디들이 손쉽게 하나의 큰 세그먼트로 병합

 

II. 버디시스템 알고리즘의 원리
 

  • 메모리를 1/2로 계속 나누어 요청한 메모리보다 큰 메모리를 할당한다.
  • 31KB를 요청했다면 256KB를 3번 나누어 32KB를 할당
  • 31KB의 메모리를 회수할 경우 인접한 32KB와 합치고 다시 64KB, 128KB를 합쳐서 원래의 256KB로 만든다.

 

III. 버디메모리 할당 사례(47회 kpc 모의고사 4교시 문제)

1024K의 메모리에서 아래와 같은 요청 시 해당 동작절차를 설명하시오.

1) 프로그램 A가 64K 크기의 메모리를 요청

2) 프로그램 B가 128K 크기의 메모리를 요청

3) 프로그램 C가 64K 크기의 메모리를 요청

4) 프로그램 D가 128K 크기의 메모리를 요청

5) 프로그램 C가 메모리를 해제

6) 프로그램 A가 메모리를 해제

7) 프로그램 B가 메모리를 해제

8) 프로그램 D가 메모리를 해제

 

ß---------------------------------------------------1024KB-----------------------------------------------à

512KB

512KB

↓분할

256KB

256KB

512KB

↓분할

128KB

128KB

256KB

512KB

↓분할

64

64

128KB

256KB

512KB

64

64

128KB

128KB

128KB

512KB

A

C

B

D

 

 

  • t=1) A할당
  • t=2) B할당
  • t=3) C할당
  • t=4) D할당
  • t=5) C해제
  • t=6) A 해제 후 64+64 합쳐서 128K만듬
  • t=7) B 해제 후 128+128 합쳐서 256K만듬
  • t=8) D 해제 후 모두 합쳐서 1024K만듬

 

댓글