Always Be Wise

메모리 할당(1) - 연속 할당 본문

컴퓨터 시스템/운영체제

메모리 할당(1) - 연속 할당

bewisesh91 2022. 1. 4. 11:48
728x90

메모리 할당

메모리는 일반적으로 OS 상주 영역(낮은 주소 영역)과 사용자 프로세스 영역(높은 주소 영역)으로 나뉜다.

그중 사용자 프로세스 영역은 연속 할당과 비연속 할당, 두 가지 방법을 이용할 수 있다.

 

1. 연속 할당(Continuous Memory Allocation) 

프로세스를 하나의 연속된 메모리 공간에 할당하는 것을 의미한다. 메모리를 구성함에 있어 동시에 올라갈 수 있는 프로세스의 수와

각 프로세스에게 할당되는 메모리 공간의 크기, 메모리를 분할하는 방법 등을 고려해야 한다.

 

Uni-Programming

메모리에 하나의 프로세스만 존재하는 상태로, 가장 간단한 메모리 관리 기법이다. 다만, 여러 가지 문제점들이 존재한다.

첫 번째로 프로그램의 크기가 메모리 크기보다 큰 경우 프로그램을 실행할 수 없다.

이를 해결하기 위해서 메모리에 실제로 필요한 프로세스의 정보만을 올리는 오버레이(Overlay) 기법을 사용할 수 있다.

그러나 이 역시도 사용자가 프로그램의 흐름 및 자료구조를 모두 알고 있어야 한다는 단점이 있다.

두 번째로 커널 보호 문제가 발생한다. 이는 경계 레지스터(Boundary Register)를 사용함으로써 해결할 수 있다.

마지막으로 사용하지 않는 메모리가 생기는 등 시스템 자원 활용도가 낮다는 것이다. 이는 멀티프로그래밍으로 해결할 수 있다.

 

Multi-Programming - 고정 분할 멀티프로그래밍(FPM, Fixed Partition Multi-Programming)

아래 그림과 같이 메모리 공간을 고정된 크기로 분할하는 기법이다(파티션의 수 = multiprogramming degree).

각 프로세스를미리 분할되어 있는 하나의 파티션에 하나의 프로세스를 적재하는 방법으로 관리가 간편하다.

다만, 동시에 메모리에 로드되는 프로그램 수가 고정되고, 최대 수행 가능 프로그램 크기가 제한된다.

더불어 단편화 문제로 시스템 자원이 낭비될 수 있다.

내부 단편화(Internal Fragmentation) : 파티션 크기 > 프로세스 크기 

외부 단편화(External Fragmentation) : 남은 메모리 크기 > 프로세스 크기 but 남은 메모리가 연속된 공간이 아닌 경우

 

 

Multi-Programming - 가변 분할(VPM, Variable Partition Multi-Programming)

프로그램의 크기를 고려해서 메모리를 할당하는 기법으로 분할의 크기와 개수가 동적으로 변한다. 내부 단편화 문제가 해소된다.

운영체제는 할당 공간, 가용 공간에 대한 정보를 유지하고 있다.

그런데 아래 왼쪽 그림처럼 가용한 메모리 공간이 여러 곳에 흩어져 있을 경우, 적절한 가용 공간을 선택해야 하는 문제가 발생한다.

우선, 최초 적합(First-Fit)은 가용한 메모리 공간 중 프로세스에 최초로 적합한 공간을 선택하는 방법이다. 단순하고 부하가 적다.

다만, 배치 후 자투리 공간을 다시 사용할 수 없는 경우가 생겨 공간 활용률이 떨어질 수 있다는 단점이 있다.

최적 적합(Best-Fit)은 가용한 메모리 공간 중 프로세스와 가장 크기가 비슷한 공간을 선택하는 방법이다.

크기가 큰 공간을 유지할 수 있다는 장점이 있으나, 활용하기에 너무 작은 공간이 많이 발생할 수 있다.

또한, 가용 공간들이 정렬되어 있지 않은 경우, 모든 공간을 탐색해야 한다는 단점이 있다. 

순차 최적 적합(Next-Fit)은 최초 적합과 유사하나 탐색 순서가 가용 공간 맨 처음이 아니라 마지막으로 탐색한 위치부터 이루어진다.

메모리 영역의 사용 빈도가 균등화된다는 장점이 있다.

최악 적합(Worst-Fit)은 가용 메모리 공간 중 가장 크기가 큰 공간을 선택하는 방법이다.

작은 크기의 잔여 메모리 공간 발생을 줄일 수 있으나,

모든 리스트를 탐색해야 한다는 단점과 상대적으로 큰 잔여 메모리 공간들이 생성된다는 단점이 있다.

또한, 위의 오른쪽 그림처럼 외부 단편화 문제가 발생할 수도 있다. 이 경우, 인접한 가용 공간을 하나의 가용 공간으로 통합하는

공간 통합(Coalescing)을 이용하거나, 모든 빈 공간을 하나로 통합하는 메모리 압축(Storage Compaction)을 통해 해결할 수 있다.

메모리 압축의 경우 모든 프로세스를 중지하고 재배치한다는 점에서 많은 시스템 자원을 낭비하게 된다.

 

공간 통합(왼쪽), 메모리 압축(오른쪽)

 

'컴퓨터 시스템 > 운영체제' 카테고리의 다른 글

메모리 할당(2) - 비연속 할당  (0) 2022.01.04
메모리와 주소 바인딩  (0) 2022.01.03
교착 상태(Deadlock)  (0) 2021.12.25
프로세스 동기화 & 상호배제  (0) 2021.12.25
프로세스 스케줄링  (0) 2021.12.24
Comments