Computer Science
운영체제의 메모리 관리 1 - Fixed Partitioning
3/10/2025
Memory Partitioning
운영체제의 메모리 관리에서 가장 중요한 기능 중 하나는 프로그램이 프로세서에 의해 처리될 수 있도록 메인 메모리에 옮기는 것입니다. 멀티프로그래밍 환경에서, 이는 가상 메모리Virtual Memory라는 기술과 연관이 되어 있습니다. 가상 메모리는 페이징Paging과 세그멘테이션Segmentation이라는 기술을 근간으로 합니다. 그 전에, 이들의 이해를 돕기 위해 더욱 더 간단한 모델인 파티셔닝Partitioning에 대해 알아보겠습니다.
Fixed Partitioning
메모리 영역은 운영체제의 커널이 고정된 부분을 차지하고, 나머지 부분을 사용자 프로세스가 사용합니다. 운영체제가 사용자 프로세스에 메모리를 할당하는 방법 중 가장 간단한 방법은 영역을 여러개의 고정된 크기로 나누고 필요로 하는 프로세스에 할당하는 것입니다. 이 때 나눠진 각각의 조각을 파티션이라고 부릅니다.
Partition Sizes

파티션을 나누는 방법 중 하나는 모든 파티션을 동일한 크기로 나누는 것입니다. 이 경우, 프로세스가 차지하는 크기가 파티션의 크기보다 작거나 같을 때에만 메모리에 적재될 수 있습니다. 만약 모든 파티션이 다 차있다면, 새로운 프로세스가 적재되기 위해서는 하나의 파티션을 골라 디스크로 옮기고, 해당 공간에 프로세스를 적재해야할 것입니다. 이러한 작업을 스와핑Swapping이라고 합니다.
이러한 구조에서는 두 가지 문제점이 존재합니다.
1. 프로그램이 너무 크다면, 파티션에 들어갈 수 없다.
이 경우 동일한 메모리 주소 공간을 재사용하는overlaying 방식의 프로그래밍을 통해 파티션 사이즈에 맞도록 프로그램을 설계해야 합니다.
2. 메인 메모리의 효율이 극도로 떨어진다.
굉장히 작은 프로그램도 파티션 하나를 통째로 차지하게 됩니다. 하나의 파티션 내에 유휴 공간이 남는 현상이 발생하며, 이를 내부 파편화internal fragmentation라고 부릅니다.
위 두 문제는 파티션의 크기를 동일하게 하지 않게 만드는 방식으로 약간의 해소를 할 수 있습니다. 작은 사이즈와 큰 사이즈의 파티션이 공존한다면, 큰 파티션이 존재하기에 비교적 큰 프로그램이 적재될 수도 있을 것이고, 작은 프로그램이 작은 사이즈의 파티션에 들어가 파티션 내 유휴 공간을 줄일 수도 있을 것입니다.
Placement Algorithm
동일한 사이즈를 갖는 파티셔닝 방식에서 프로세스를 어떤 파티션에 배치하는지는 중요하지 않습니다. 어디에 들어가든 똑같기 때문입니다.
하지만 다양한 사이즈를 갖는 파티셔닝 방식에서는 프로세스의 배치가 중요해집니다. 프로세스가 잘 배치된다면 위에서 언급된 문제들을 줄이기 때문입니다.

파티션에 프로세스를 배치하는 방법 중 하나는 프로세스가 들어갈 수 있는 가장 작은 파티션에 할당하는 방법입니다. 이를 지원하기 위해서는 각각의 파티션마다 큐가 존재해야 합니다. 프로세스들은 실행을 기다릴지언정 항상 내부단편화를 최소화하는 공간에 할당됩니다.
이는 각각의 파티션 기준으로는 효율적인 방식인 것처럼 보여도, 전체 시스템적으로는 그렇지 않습니다. 더 작은 파티션의 큐에서 기다리는 프로세스들이 있음에도 더 큰 파티션들이 빈 상태로 기다리고 있을 수 있기 때문입니다.

이러한 문제를 해결하는 방법으로는 하나의 큐에서 모든 프로세스를 다루는 방법이 있습니다. 프로세스가 할당될 차례가 온다면, 남아있는 파티션 중 프로세스가 할당될 수 있는 가장 작은 파티션에 할당됩니다.
Limitation
위 내용만 읽어본다면 다양한 사이즈의 파티셔닝 방식은 동일 사이즈 파티셔닝 방식보다 유연하고 여러 문제들을 해결하는 것으로 보입니다. 구현도 비교적 간단하며 작업의 오버헤드도 적습니다. 하지만 다음과 같은 단점 역시 존재합니다.
1. 시스템 생성 시 지정된 파티션 수에 따라 활성 프로세스의 수가 제한된다.
만약 파티션 수가 100개로 지정되었다면, 메모리 공간 전체가 아주 작은 프로세스 300개가 들어가기에 충분함에도 불구하고 메인 메모리에는 최대 100개의 프로세스만이 존재하게 됩니다.
2. 소규모 작업만을 수행하는 시스템의 경우 파티션의 효용이 떨어진다.
10개의 프로세스만을 사용하는 시스템이 생성 시 1000개의 파티션을 만들 필요는 없을 것입니다.
이러한 이유로 고정 파티셔닝은 오늘날 거의 사용되지 않습니다. 과거 IBM의 메인프레임 운영체제인 OS/MFT에서는 사용되었다고 합니다.
다음 글에서는 고정 파티셔닝의 단점을 극복하는 동적 파티셔닝에 대해 알아보겠습니다.
