운영체제에서 메모리 관리는 CPU와 함께 시스템 자원을 효율적으로 사용하는 핵심 요소 중 하나다. 메모리를 어떻게 관리하느냐에 따라 시스템의 응답 속도, 자원 활용률, 안정성 등이 크게 달라진다.
대표적인 메모리 관리 기법들을 간단하게 살펴보자.
연속 메모리 할당
초기 운영체제 구조에서는 단일 프로그래밍 환경이 일반적이었고, 이때는 하나의 프로세스만 메모리에 적재되어 실행되었다. 이를 연속 메모리 할당 방식이라고 한다. 구조가 매우 단순하고 구현도 쉽지만, 하나의 프로세스만 실행되기 때문에 메모리의 많은 부분이 낭비되고, CPU도 유휴 상태로 남는 시간이 많다. 이런 비효율을 극복하기 위해 다중 프로그래밍 개념이 도입되었다.
메모리 분할
다중 프로그래밍 환경에서는 여러 프로세스를 동시에 메모리에 올려놓고 번갈아가며 실행할 수 있도록 한다. 이를 위해 메모리를 여러 부분으로 나누는 메모리 분할(Memory Partitioning) 방식이 등장했다. 이 방식은 자원 활용도를 높이고, CPU와 I/O 자원을 병렬적으로 활용할 수 있다는 장점이 있다. 하지만 프로세스를 메모리에 할당하고 해제하는 과정에서 단편화(fragmentation) 문제가 발생하게 된다.
✅ 고정 분할 방식
고정 분할(Fixed Partitioning)은 메모리를 사전에 일정 크기의 블록으로 나눠두고, 각 블록에 프로세스를 할당하는 방식이다. 이 방식은 구현이 간단하고, 할당 속도가 빠르다는 장점이 있다. 하지만 각 파티션 크기가 고정되어 있기 때문에, 프로세스가 해당 파티션보다 작으면 남는 공간이 낭비되는 내부 단편화 문제가 발생한다. 이를 보완하기 위해 다양한 크기의 파티션을 미리 설정하는 등의 방식을 시도할 수 있다.
✅ 동적 분할 방식
동적 분할(Dynamic Partitioning)은 프로세스의 크기에 맞게 메모리를 실시간으로 할당하는 방식이다. 이 방식은 고정 분할에서 발생하는 내부 단편화를 제거할 수 있다. 대신 프로세스가 생성되고 종료될 때마다 빈 공간들이 메모리 여기저기에 흩어지게 되어 외부 단편화가 발생한다.
이를 해결하기 위해 몇 가지 기법이 사용된다.
1️⃣ 통합
첫째는 통합(Coalescing) 기법이다. 이는 메모리에서 인접한 빈 공간(Free Space) 들이 존재할 경우, 이들을 하나의 큰 빈 공간으로 병합하는 기법이다. 주로 동적 분할 방식에서 프로세스가 종료되면서 남긴 빈 영역들이 인접해 있을 때 자동으로 수행된다.
장점
- 단편화된 빈 공간을 하나로 만들어 더 큰 프로세스를 수용할 수 있는 가능성 증가
- 운영체제의 자동 동작으로 비용이 적고 간단함
- 부분적 재사용성이 개선됨
단점
- 인접한 공간만 병합 가능하기 때문에 분산된 빈 공간은 해결하지 못함
- 메모리 재배치는 수행하지 않기 때문에 외부 단편화가 누적될 수 있음
2️⃣ 집약
둘째는 집약(Compaction) 기법인데, 이는 메모리에 흩어진 여러 프로세스를 한쪽으로 밀어붙여서, 모든 빈 공간을 하나의 연속된 블록으로 만드는 기법이다. 즉, 프로세스들을 이동시키고 정렬하여 빈 공간을 물리적으로 재배치한다.
장점
- 모든 외부 단편화를 제거하고 큰 연속 공간 확보
- 가장 강력한 외부 단편화 해결 수단
단점
- 프로세스 이동에 따른 비용이 매우 큼 (시간, CPU 자원)
- 프로세스가 사용하는 포인터, 주소 등이 변경될 수 있어 주소 재계산이 필요
- 실시간 시스템에는 부적합
이 외에도 할당 전략으로, 최초 적합(First-fit), 최적 적합(Best-fit), 최악 적합(Worst-fit) 등의 메모리 배치기법이 있다.
지금까지 살펴본 내용들을 한 눈에 비교할 수 있도록 다음과 같이 표로 정리해 보았다.

'Journey to CS > KNOU CS' 카테고리의 다른 글
| [운영체제] 가상메모리와 주소 변환 - Part2. 페이징 기법과 데이터 참조 과정 (0) | 2025.06.10 |
|---|---|
| [DBS] 트랜잭션 - Part 2. 회복 가능한 스케줄과 비연쇄적 스케줄 (0) | 2025.06.09 |
| [운영체제] 환형대기 조건(사이클)을 차단하여 교착상태를 예방하는 방법 (0) | 2025.06.09 |
| [이산수학] 조합이론 - Part 4. 점화식 (0) | 2025.06.03 |
| [이산수학] 조합이론 - Part 3. 이항정리 (0) | 2025.06.03 |