DOI QR코드

DOI QR Code

Algorithm for Block Packing of Main Memory Allocation Problem

주기억장치 할당 문제의 블록 채우기 알고리즘

  • Lee, Sang-Un (Dept. of Multimedia Eng., Gangneung-Wonju National University)
  • 이상운 (강릉원주대학교 과학기술대학 멀티미디어공학과)
  • Received : 2022.03.09
  • Accepted : 2022.12.09
  • Published : 2022.12.31

Abstract

This paper deals with the problem of appropriately allocating multiple processors arriving at the ready queue to the block in the user space of the main memory is divided into blocks of variable size at compilation time. The existing allocation methods, first fit(FF), best fit(BF), worst fit(WF), and next fit(NF) methods, had the disadvantage of waiting for a specific processor because they failed to allocate all processors arriving at the ready queue. The proposed algorithm in this paper is a simple block packing algorithm that allocates as many processors as possible to the largest block by sorting the size of the partitioned blocks(holes) and the size of the processor in the ready queue in descending order. The application of the proposed algorithm to nine benchmarking experimental data showed the performance of allocating all processors while having minimal internal fragment(IF) for all eight data except one data in which the weiting processor occurs due to partition errors.

본 논문은 주기억장치의 사용자 공간이 컴파일 시간에 가변적 크기의 블록들로 분할된 상태에서, 준비상태 큐에 도착한 다중 프로세서들을 적절히 블록에 할당하는 문제를 다루었다. 기존의 할당법인 최초적합, 최적합, 최악적합과 다음 적합 방법들은 준비상태 큐에 도착한 모든 프로세서들을 할당하지 못해 특정 프로세서는 대기상태가 되는 단점을 갖고 있었다. 본 논문에서 제안된 알고리즘은 분할된 블록(홀)의 크기와 준비상태 큐에 있는 프로세서 크기를 내림차순으로 정렬하여 가장 큰 크기의 블록에 가능한 많은 프로세서들을 할당하는 단순한 블록 채우기 알고리즘이다. 제안된 알고리즘을 9개의 벤치마킹 실험 데이터에 적용한 결과 분할 오류로 인해 대기상태 프로세서가 발생하는 1개 데이터를 제외한 8개 데이터 모두에 대해 최소의 내부 단편(IF)을 가지면서도 모든 프로세서들을 할당하는 성능을 보였다.

Keywords

Ⅰ. 서론

주기억장치(main memory, MM)의 운영체제(operating system, OS)는 준비상태 큐(ready queue, RQ)에 도착한 다중 프로세서(multiple processors)들을 동시에 실행시키기 위해 MM의 사용자 공간(user space)을 분할(partition)하고 할당(allocation)하여 실행시킨다.[1] 본 논문에서는 사용자 공간이 프로세서 실행시간 이전에 가변적 크기의 고정된 분할이 된 상태에서 효율적으로 프로세서들을 할당하는 문제(memory allocation problem, MAP)[2-5]에 한정한다.

메모리 할당 방법에는 최초적합(first-fit, FF), 최적합(best-fit, BF), 최악적합(worst-fit, WF)과 다음적합(next-fit, NF)법이 있다.[2-18]

FF는 준비상태 큐의 프로세서 크기를 저장할 수 있는 블록인 홀(hole)들 중에서 첫 번째로 탐색된 홀에 해당 프로세서를 할당하는 방법이며, BF는 준비상태 큐의 프로세서를 저장 가능한 홀들 중에서 낭비(wastage, W)가 최소인 홀에 프로세서를 할당하는 방법이다. WF는 준비상태 큐의 프로세서 크기를 저장 가능한 홀들 중 W가 최대인 홀에 프로세서를 할당하는 방법이며, NF는 현재 할당된 블록(홀)의 포인터부터 시작하여 FF를 수행하는 방법이다. 결국 FF, BF와 WF는 사용자 공간의 처음부터 탐색을 수행한다. 이들 방법은 모두 n개의 메모리 블록에 대해 m개의 준비상태 큐에 도착한 프로세서들을 할당해야 하므로 수행 복잡도는 O(mn)이 소요되며, 특정 할당 법은 준비상태 큐에 도착한 m개 프로세서 모두를 할당하여 실행시키지 못하고 특정 프로세서는 대기상태(waiting)로 남겨놓아야 하는 비효율적인 할당 성능을 보인다.

본 논문에서는 준비상태 큐에 도착한 m개의 프로세서 모두를 n개 블록(홀)에 할당하여 동시에 실행시키면서도 비효율적인 분할로 인해 발생하는 메모리 낭비(W)를 최소화시키는 알고리즘을 제안한다. 제안된 알고리즘은 O(n log n)의 수행 복잡도를 갖는다. 2장에서는 주기억장치 분할과 할당의 개념과 할당 법의 문제점을 예제를 통해 고찰한다. 3장에서는 메모리 낭비를 최소화 시킬 수 있는 블록 채우기 알고리즘을 제안한다. 4장에서는 다양한 벤치마킹 실험 데이터에 대해 제안된 알고리즘을 적용하여 알고리즘의 단순성과 더불어 메모리 낭비 최소화의 효율성을 검증한다.

Ⅱ. 주기억장치 분할과 할당

주기억장치는 고속, 고가이면서 저용량의 휘발성인 RAM으로, 그림 1과 같이 운영체제(OS)가 일부분을 차지하고, OS는 나머지 부분인 사용자 공간을 m개 다중프로세서가 동시에 실행될 수 있도록 n개 블록(block)으로 분할하고 준비상태 큐(RQ)에 도달한 프로세서들에게 블록을 할당하여 실행시킨다.[7]

OTNBBE_2022_v22n6_99_f0001.png 이미지

그림 1. 주기억장치 분할과 할당

Fig. 1. Main memory partition & allocation

사용자 공간 메모리를 효율적으로 활용하기 위한 분할방법에는 단일 분할(single partition)과 다중 분할(multiple partition)법이 있으면 단일분할은 단 하나의 프로세서만을 할당하는 방법으로 MS-DOS에서 사용되었다. 다중 분할방법에는 사전에 동일한 크기로 분할하는 고정된 동일크기 분할(fixed equal-size partition, FEP), 고정된 가변 크기 분할(fixed variable-size partition, FVP)과 동적 분할(dynamic partition, DP)법이 있으며, FVP와 DP가 일반적으로 적용되고 있다.[13]

DP는 프로세서 실행시간에 프로세서들을 사용자 공간에 할당하는 방법으로 W가 전혀 발생하지 않는 장점이 있는 반면에, 추후 메모리를 재배치하는 폐 영역 회수(garbage collection)의 압축(compression)을 해야 하는 OS의 과부하에 시간이 많이 소요되는 단점을 갖고 있다. 반면에 FVP는 컴파일 단계에서 사용자 공간을 분할함으로서 W가 발생하는 단점이 있는 반면에 인접 블록을 하나의 블록으로 병합(merge)하는 합침(coalescing)으로 OS의 부하를 경감시킬 수 있는 장점을 갖고 있다.

따라서 다중 프로세서에 대한 주기억장치를 효율적으로 활용하기 위해서는 메모리 분할 문제(memory partitioning problem, MPP)와 메모리 할당 문제(MAP)를 다루어야만 한다. 본 논문은 사전에 FVP로 사용자 공간이 분할되었다고 가정한 상태에서 준비상태 큐의 프로세서들을 할당하는 문제(MAP)에 한정하여 할당방법을 다룬다.

FVP 또는 DP로 분할된 사용자 공간에 준비상태 큐의 다중 프로세서들을 효율적으로 할당하는 방법에는 최초적합(FF), 최적합(BF), 최악적합(WF)과 다음적합(NF)법이 알려져 있다.[13]

이러한 할당을 하는 과정에서 하나의 블록(홀)에 특정 프로세서가 할당되고 남은 단편(fragmentation)의 크기로는 준비상태 큐의 어떠한 프로세서들도 할당할 수 없어 메모리 낭비(W)가 발생할 경우 \(\begin{aligned}\sum_{i=1}^{n} W_{i}\\\end{aligned}\)를 내부 단편(internal fragmentation, IF)이라 한다. 반면에 비록 사용자 공간의 남아있는 총 사용 가능 공간이 준비상태 큐에 존재하는 프로세서 크기를 초과하더라도 단편들이 분산되어 있어 프로세서를 할당하지 못하는 경우 이를 외부 단편(external fragmentation, EF)이라 한다.[8] 따라서 EF는 분할방법의 부 적절성에 기인하며, IF는 할당방법의 부 적절성으로 발생하는 경향이 있다.

지금까지 알려진 4가지 할당 방법인 FF, BF, WF, NF는 준비상태 큐의 m개 프로세서들에 대해 분할된 n개블록(홀)을 탐색해야 하므로 O(mn) 수행 복잡도가 요구된다. 또한, 특정 방법은 EF로 인해 준비상태 큐에 있는 m개 프로세서 모두를 할당하지 못하고 특정 프로세서는 대기상태로 해당 프로세서를 할당할 수 있는 충분한 크기를 가진 홀의 프로세서가 종료(release)되면 해당 홀에 할당된다. 즉, Wi = Bi -Pj ≥ 0인 Pj 프로세서가 Bi 블록(홀)에 할당된다. 또한 Bi← Wi로 갱신된다.

표 1의 MAP-1 예제[10]를 대상으로 FF, BF, WF, NF로 사용자 공간에 대기 큐의 프로세서들이 할당되는 방법을 고찰해 본다. 표 1의 MAP-1 데이터는 사용자 공간을 5개의 가변적 크기로 분할한 상태에서 준비상태 큐에 도착한 5개 프로세서를 할당한 결과 FF와 WF는 프로세서 P5를 할당하지 못한 결과를 나타내었다. 반면에 BF와 NF는 5개 프로세서 모두를 할당하였으나 IF를 살펴보면 BF=15+177+55+15+7=267KB, NF=27+100+60+80+0=267KB의 단편들이 발생하였다. BF의 경우 만약 177KB 보다 큰 프로세서가 준비상태 큐에 존재한다면 이를 할당할 수 없고 대기상태에 머물러야만 한다. 마찬가지로 NF의 경우는 100KB 보다 큰 프로세서가 준비상태 큐에 도달하면 할당을 할 수 없다.

표 1. MAP-1 예제 데이터의 메모리 할당

OTNBBE_2022_v22n6_99_t0001.png 이미지

Table 1. Memory allocation for MAP-1 example data

이와 같이 주어진 데이터에 적용되는 할당규칙으로 인해 발생되는 EF로 인해 특정 방법이 프로세서 할당에 실패하여 대기상태로 되는 결과를 유발하기 때문에 FF, BF, WF, NF 중에서 어느 방법이 최적인지에 대해서는 명백히 밝혀진 사실이 없다. 본 논문에서는 최적의 할당 알고리즘을 선정함에 있어 EF가 발생하지 않으면서 IF 최소화를 달성하는 방법으로 판단한다. 만약 모든 할당 알고리즘이 EF를 발생시키면 그들 중 대기(waiting) 프로세서의 크기가 최소인 방법을 최적의 알고리즘으로 판단한다.

3장에서는 준비상태 큐의 모든 프로서서들을 할당하면서도 IF 최소화를 달성할 수 있는 O(m logm) 수행 복잡도의 블록 채우기 알고리즘(block packing algorithm, BPA)을 제안한다.

Ⅲ. 블록 채우기 알고리즘

본 장에서 제안하는 방법은 분할된 블록과 준비상태 큐의 프로세서 크기에 대해 내림차순으로 정렬하여 할당 가능한 블록(홀)에 가능한 많은 프로세서를 할당하는 단순한 방법을 제안한다. 만약 낭비(W)를 보다 줄일 수 있는 홀로 프로세서를 이동시키는 할당 최적화(allocation optimization)을 수행한다. 이 방법을 블록 채우기 알고리즘(BPA)이라 하며, 그림 2와 같이 수행된다.

OTNBBE_2022_v22n6_99_f0004.png 이미지

그림 2. 블록 채우기 알고리즘

Fig. 2. Block packing algorithm(BPA)

표 1의 MAP-1 예제 데이터에 대해 BPA를 적용하여 얻은 결과는 그림 3과 같다. BF와 NF는 Free 블록 없이 IF=267KB를 보인 반면에, 제안된 BPA는 B1, B3, B4와 B5를 Free로 유지하면서도 단지 B2(200KB)에 P1, P3, P5, P4, P2 순서로 모두 할당하여 IF=17KB의 메모리 할당 능력을 보였다.

OTNBBE_2022_v22n6_99_f0002.png 이미지

그림 3. MAP-1 예제 데이터의 BPA

Fig. 3. BPA for MAP-1

Ⅳ. 적용 및 결과 분석

본 장에서 실험에 사용된 데이터는 그림 4에 제시하였으며, 기존 연구 결과와 더불어 BPA는 그림 5에 제시하였다.

OTNBBE_2022_v22n6_99_f0005.png 이미지

그림 4. 실험 데이터

Fig. 4. Experimental Data

OTNBBE_2022_v22n6_99_f0003.png 이미지

그림 5. 실험 데이터에 대한 할당 결과

Fig. 5. Result of allocation for experimental Data

본 논문에서 제시된 벤치마킹 실험 데이터에 대해 제안된 BPA를 수행한 결과 비교는 표 2에 제시하였다. 기존에 알려진 방법은 9개 중 8개 데이터에서 최적의 결과를 나타낸 BF가 가장 우수한 것으로 판단할 수 있다. 그러나 본 논문에서 제안된 BPA는 9개 데이터 모두에서 최적의 결과를 보여 가장 성능이 좋은 할당 알고리즘이라 할 수 있다.

표 2. 알고리즘 성능 비교

OTNBBE_2022_v22n6_99_t0002.png 이미지

Table 2. Comparison of algorithm performance

Ⅴ. 결론

본 논문은 OS가 준비상태 큐에 도착한 다중 프로세서들을 사용자 공간에 적절히 할당하여 동시에 실행시키는 문제를 다루었다. 기존에 알려진 메모리 할당 방법인 FF, BF, WF와 NF는 준비상태 큐에 도착한 모든 프로세서들을 할당하지 못하는 경우도 발생하는 문제점을 갖고 있었다.

본 논문에서 제안한 알고리즘은 분할된 블록과 준비상태 큐에 도착한 프로세서들의 크기 내림차순으로 정렬하고, 가장 큰 크기의 블록(홀)에 W가 최소가 되도록 가능한 많은 프로세서들을 할당하는 단순한 전략을 적용하였다. 일단 할당이 완료되면 추가적으로 IF를 최소화 시킬 수 있도록 특정 블록에 할당된 프로세서를 다른 블록으로 이동시키는 할당 최적화를 수행하였다.

본 논문에서 제안한 알고리즘을 9개의 벤치마킹 실험 데이터에 적용한 결과, 가변적 크기의 메모리 분할 오류로 인한 MAP-5를 제외한 모든 실험 데이터에 대해 준비상태 큐의 모든 프로세서들을 할당하면서도 IF를 최소화시키는 결과를 보였다.

References

  1. D. Kamar, M. Singh, and H. Kaur, "Memory Management in Operating System," Journal of Emerging Technologies and Innovative Research, Vol. 6, No. 4, pp. 465-471, Apr. 2019.
  2. D. P. Bovet and G. Estrin, "A Dynamic Memory Allocation Algorithm," IEEE Transactions on Computers, Vol. C-19, No. 5, pp. 403-411, May 1970, https://doi.org/10.1109/T-C.1970.222938
  3. D. S. Hirschberg, "A Class of Dynamic Memory Allocation Algorithms," Communications of the ACM, Vol. 16, No. 10, pp. 615-618, Oct. 1973, https://doi.org/10.1145/362375.362392
  4. F. Karabiber, A. Sertbas, and A. H. Zaim, "Dynamic Memory Allocator Algorithms Simulation and Performance Analysis," Journal of the Electrical & Electronics Engineering, Vol. 5, No. 2, pp. 1435-1441, Mar 2005.
  5. M. A. Awais, "Memory Management: Challenges and Techniques for Traditional Memory Allocation Algorithms in Relation with Today's Real Time Needs," International Journal of Multidisciplinary Sciences and Engineering, Vol. 7, No. 3, pp. 13-19, Mar. 2016.
  6. Webeduclick, "Partition Allocation Methods in Memory Management," https://webeduclick.com/ partition-allocation-methods-in-memory-management/, Retrieved Mar. 2022.
  7. A. Kumar, "EEL 602 Operating Systems : Memory Management," https://docplayer.net/25560803-Memory-management-reading-silberschatz-chapter-9-reading-stallings-chapter-7-eel-602.html, Retrieved Mar. 2022.
  8. Varshachoudhary, "Memory Management in Operating System," https://www.geeksforgeeks.org/memorymanagement-in-operating-system/, Nov. 2021.
  9. Geeksforgeeks, "Partition Allocation Methods in Memory Management," https://www.geeksforgeeks.org/partition-allocation-methods-in-memory-management/, Nov. 2020.
  10. Prepinsta, "Partition Allocation Method in Operating System," https://prepinsta.com/operating-systems/partition-allocation-method/, Retrieved Mar. 2022.
  11. L. G. Kabari and T. S. Gogo, "Efficiency of Memory Allocation Algorithms Using Mathematical Model," International Journal of Emerging Engineering Research and Technology, Vol. 3, No. 9, pp. 55-67, Sep. 2015.
  12. L. W. Htun, M. M. M. Kay, and A. A. Cho, "Analysis of Allocation Algorithms in Memory Management," International Journal of Trend in Scientific Research and Development, Vol. 3, No. 5, pp. 1985-1987, Aug. 2019, https;//doi.org/10.31142/ijsrd26731
  13. G. Vidyalay, "Contiguous Memory Allocation : Static Partitioning," https://www.gatevidyalay.com/contiguousmemory-allocation-static-partitioning/, Retrieved Mar. 2022.
  14. S. Chhabra, "Program for First Fit Algorithm in Memory Management," https://www.geeksforgeeks.org/program-first-fit-algorithm-memory-management/, Dec. 2021.
  15. S. Pandey, "Variable Sized Partitioning: First Fit, Best Fit and Worst Fit(in Hindi)," https://unacademy.com/course/hindi-introduction-to-operating-system-for-gate-aspirants/L4XNB8M5, Retrieved Mar. 2022.
  16. R. Ranjan, "Memory Management," Patliputra University, http://ppup.ac.in/download/econtent/pdf/BCA_MEMORY++MANAGEMENT, Retrieved Mar. 2022.
  17. Idc, "Memory Partitioning," https://www.idc-online.com/pdfs/information_technology/Memory_Partitioning, Retrieved Mar. 2022.
  18. S. Chhabra , "Program for First Fit Algorithm in Memory Management," https://www.geeksforgeeks.org/program-first-fit-algorithm-memory-management/, Dec. 2021.