봉황대 in CS

[Chapter 8. 메모리 관리 전략] 분할 방법 본문

Computer Science & Engineering/Operating System

[Chapter 8. 메모리 관리 전략] 분할 방법

등 긁는 봉황대 2022. 7. 31. 22:13

* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다.

 

 

결속 방식에 따른 메모리 경영 기법의 분류

 

분류 공간 크기 사상 단위 적재 단위
분할 방법 논리 = 물리 전체 프로그램 전체 프로그램
페이징 / 세그멘테이션 논리 = 물리 페이지
(세그먼트 기법은 가변 크기)
전체 프로그램
가상 메모리 논리 > 물리 페이지 프로그램 일부 적재

 

분할(Partition) 방법


분할 방법이란, 여러 개의 프로그램을 동시에 적재하기 위해서 메모리 공간을 여러 개로 분할하는 기법이다.

각 분할마다 한 프로세스를 가지기 때문에, 분할의 개수는 다중 프로그래밍의 정도가 된다.

 

분할 방법에는 고정 분할 방법과 가변 분할 방법이 있다.

 

고정 분할(Fixed Partition) 방법

고정 분할 방법에서는 분할의 수와 각각의 크기가 고정되어 있다.

 

각 영역마다 별도의 큐를 두어, 프로그램이 들어오면 해당 큐에 고정적으로 배정하는 방식으로 메모리를 운영할 수 있다.

 

 

하지만 분할을 통합적으로 운영하여

비어 있는 분할의 크기에 가장 잘 맞는 프로그램을 먼저 할당하는 방법(가변 분할 방법)이 더 좋을 것이다.

 

가변 분할(Variable Partiton) 방법

가변 분할 방법은 메모리를 고정 분할하지 않고, 다중 프로그래밍의 정도만 결정되어 있다.

즉, 몇 개의 프로그램을 동시에 수행시킬 것인지만 결정해놓는다.

 

메모리 전체를 하나의 연속된 공간으로 보며, '적절한 빈 장소'에 프로그램을 적재한다.

이때 '적절한 빈 장소"는 어떻게 결정할 것인가?

 


동적 메모리 할당 문제 (Dynamic Storage Allocation Problem)

 

일련의 자유 공간들로부터 크기 n바이트 블록 요구를 어떻게 만족시켜 줄 것인지를 결정하는 문제를 말한다.

해결책으로는 아래의 3가지가 존재한다.

 

1. 최초 적합 (First fit)

첫번째 사용 가능한 가용 공간을 할당한다

 

2. 최적 적합 (Best fit)

사용 가능한 공간들 중에서 크기가 가장 작은 것을 택한다.

가용 공간의 집합이 크기 순으로 되어있지 않다면 집합 전체를 탐색해야 한다.

 

3. 최악 적합 (Worst fit)

사용 가능한 공간들 중에서 크기가 가장 큰 것을 택한다.

가용 공간의 집합이 크기 순으로 되어있지 않다면 집합 전체를 탐색해야 한다.

 

시뮬레이션을 통해서 시간과 메모리 이용 효율 측면에서 최초 적합과 최적 적합이 최악 접합보다 좋다는 것이 입증되었다.

 

최초 적합과 최적 적합 중에서는 어느 것이 메모리 이용 효율이 더 좋은지는 판명할 수 없지만,

최초 적합이 일반적으로 속도가 더 빠르다고 한다.

 

 

(예시) - 최초 적합 (First fit)

 

256M의 메인 메모리를 가진 컴퓨터가 있다고 하자.

이 중 40M는 메모리에 상주하는 운영체제를 위한 부분이며, 나머지 216M는 사용자 프로세스를 위한 부분이다.

 

 

Task Queue(작업 큐)에 도착한 프로세스 P1 ~ P5가 있다.

 

Process (도착 순서 순) Memory Time (머무는 시간)
P1 60M 10
P2 100M 5
P3 30M 20
P4 70M 8
P5 50M 15

 

이들에 대하여 가변 분할 방식을 최초 적합으로 적용했을 때 메모리 운영은 아래와 같이 나타난다.

 

 

이처럼 작은 단편들이 계속해서 생성되는 것을 볼 수 있다.

* 단편(fragment) : 공간 중 사용 못하게 되는 일부분

 

특히 3번째 그림에서 단편들의 크기 합이 30+26 = 56M이지만

이보다 작은 크기, 50M를 요구하는 P5를 수용하지 못하는 것에 집중하자. (외부 단편화)

 

외부 단편화 (External Fragmentation)

분할 방법에서 유휴 공간들을 모두 합치면 충분한 공간이 되지만, 그것들이 너무 작은 조각들로 여러 곳에 분산되어 있어

프로세스를 수행시키지 못하는 문제점을 말한다.

 

이것은 프로세스를 연속된 공간에 탑재해야 하기 때문에 발생하는 것이다.

 

 

외부 단편화의 해결 방법으로는 압축(compaction)이 있다.

 

메모리 모든 내용들을 한 군데로 몰고 모든 자유 공간들을 다른 한 군데로 몰아서 큰 블록을 만드는 것이다.

프로그램 이동 후 재배치 레지스터의 값을 변경하면 주소 결속에 문제는 없어진다.

 

 

하지만 이 방법은 프로세스들의 재배치가 실행 시간에 동적으로 이루어지는 경우에만 가능하며,

비용이 굉장히 많이 든다.

 

또한 분할 방법을 사용한다면 이론적으로 메모리의 1/3에 해당하는 불용 공간이 발생한다.

50% 규칙 : N개의 블록이 할당되었을 때 다른 0.5N개의 블록이 단편화 때문에 사용할 수 없는 현상이 발생

 

 

따라서 프로세스를 연속된 공간에 탑재하는 것이 아닌,

한 프로세스의 논리 주소 공간을 여러 개의 비연속적인 공간으로 나눠

필요한 크기의 공간이 가용해지는 경우 물리 메모리를 프로세스에게 할당하는 방법을 고안하게 되었다.

(페이징과 세그먼테이션)

 

 

반응형
Comments