5-4. 분할 방식 (Partitioning)

1. 분할 방식 (Partitioning) 개요

메모리 관리는 운영체제의 핵심 기능 중 하나로, 여러 프로세스들이 시스템의 메모리를 효율적으로 사용할 수 있도록 하는 역할을 합니다. 이전 포스트에서 살펴본 연속 메모리 할당 방식은 프로세스에게 메모리 공간을 할당하는 기본적인 방법 중 하나였습니다. 분할 방식은 연속 메모리 할당의 한 종류로, 메모리를 고정된 크기 또는 가변적인 크기의 파티션으로 나누어 관리하는 방식입니다. 마치 아파트 단지를 여러 동으로 나누는 것과 비슷하게, 각 파티션은 하나의 프로세스에게 할당될 수 있는 독립적인 공간이 됩니다.

분할 방식은 단순하고 구현하기 쉽다는 장점이 있지만, 메모리 단편화 문제와 같은 단점도 존재합니다. 이 포스트에서는 분할 방식의 개념과 종류, 그리고 메모리 할당 알고리즘에 대해 자세히 살펴보겠습니다.

2. 고정 분할 방식 (Fixed Partitioning)

고정 분할 방식은 메모리를 미리 정해진 크기의 파티션으로 나누는 방식입니다. 파티션의 크기는 운영체제 부팅 시 결정되며, 시스템이 실행되는 동안 변경되지 않습니다. 각 파티션은 하나의 프로세스에게 할당되며, 프로세스가 종료되면 해당 파티션은 비워지고 다른 프로세스에게 할당될 수 있습니다.

1) 장점

  • 단순성: 구현이 간단하고, 메모리 할당 및 해제 과정이 빠릅니다.
  • 고정된 오버헤드: 파티션의 크기가 고정되어 있으므로, 메모리 관리 오버헤드가 예측 가능합니다.

2) 단점

  • 내부 단편화 (Internal Fragmentation): 프로세스가 파티션 크기보다 작을 경우, 파티션 내부에 사용되지 않는 공간이 발생합니다.

    • 예를 들어, 10MB 크기의 파티션에 3MB 프로세스가 할당되면 7MB의 메모리가 낭비됩니다.
    • 외부 단편화 (External Fragmentation) 문제: 프로세스가 파티션 크기보다 클 경우, 해당 파티션에 할당할 수 없습니다. 따라서 파티션 크기를 적절하게 설정해야 하지만, 미리 정해져 있어 유연성이 부족합니다.
    • 파티션 크기 설정의 어려움: 각 파티션의 크기를 적절하게 설정하는 것이 어렵습니다. 작은 프로세스를 위해 큰 파티션을 할당하면 내부 단편화가 발생하고, 큰 프로세스를 위해 작은 파티션을 할당하면 프로세스를 실행할 수 없습니다.

고정 분할 방식 설명 뒤

위 그림은 고정 분할 방식에서의 내부 단편화와 외부 단편화를 시각적으로 보여줍니다.

3. 가변 분할 방식 (Variable Partitioning)

가변 분할 방식은 메모리를 프로세스의 크기에 따라 동적으로 파티션을 생성하여 할당하는 방식입니다. 프로세스가 실행될 때 필요한 메모리 크기에 맞춰 파티션이 할당되므로, 고정 분할 방식에 비해 메모리 낭비를 줄일 수 있습니다.

1) 장점

  • 메모리 효율성 향상: 프로세스 크기에 맞춰 파티션이 할당되므로, 내부 단편화가 발생하지 않습니다.
  • 유연성: 프로세스의 크기에 따라 파티션을 생성하므로, 다양한 크기의 프로세스를 수용할 수 있습니다.

2) 단점

  • 외부 단편화: 가변 분할 방식에서는 프로세스가 메모리를 해제할 때, 메모리 틈새(hole)가 발생합니다. 이러한 틈새들이 작은 조각으로 흩어져 있으면, 큰 프로세스를 할당할 수 없는 상황이 발생할 수 있습니다.
  • 메모리 할당 및 해제의 복잡성: 가변 분할 방식은 메모리 할당 및 해제 과정이 고정 분할 방식보다 복잡합니다.
  • 메모리 압축 (Compaction) 필요성: 외부 단편화 문제를 해결하기 위해, 주기적으로 메모리 압축을 수행하여 빈 공간을 통합해야 합니다.

가변 분할 방식 설명 뒤

위 그림은 가변 분할 방식에서의 외부 단편화 문제와 메모리 압축 과정을 보여줍니다.

4. 메모리 할당 알고리즘

가변 분할 방식에서는 메모리 할당 시 어떤 빈 공간(hole)에 프로세스를 할당할지 결정해야 합니다. 이를 위해 다양한 메모리 할당 알고리즘이 사용됩니다.

1) First-fit

가장 먼저 발견되는, 프로세스를 수용할 수 있는 빈 공간에 프로세스를 할당합니다.

  • 장점: 구현이 간단하고, 빠르게 할당할 수 있습니다.
  • 단점: 메모리 초반부에 빈 공간이 집중될 수 있으며, 빈 공간이 작아져 외부 단편화가 심화될 수 있습니다.

2) Best-fit

프로세스 크기에 가장 적합한, 즉, 프로세스를 수용할 수 있는 빈 공간 중 가장 작은 공간에 프로세스를 할당합니다.

  • 장점: 메모리 낭비를 최소화합니다.
  • 단점: 작은 빈 공간이 많이 생성되어, 외부 단편화가 심화될 수 있습니다.

3) Worst-fit

프로세스 크기에 가장 큰 빈 공간에 프로세스를 할당합니다.

  • 장점: 비교적 큰 빈 공간을 유지하여, 큰 프로세스를 할당할 가능성을 높입니다.
  • 단점: 큰 빈 공간을 먼저 사용하므로, 메모리 전체가 더 빨리 단편화될 수 있습니다.

4) Next-fit

First-fit과 유사하지만, 마지막으로 할당된 위치부터 검색을 시작합니다.

  • 장점: First-fit보다 빈 공간을 균등하게 분산시킬 수 있습니다.
  • 단점: First-fit보다 성능이 좋지 않을 수 있습니다.

메모리 할당 알고리즘 설명 뒤

위 표는 각 메모리 할당 알고리즘의 특징을 요약하여 보여줍니다. 실제 시스템에서는 상황에 맞는 알고리즘을 선택하여 사용합니다.

5. 분할 방식의 응용 및 고려 사항

분할 방식은 초기 운영체제에서 널리 사용되었으며, 현재는 멀티태스킹 환경임베디드 시스템과 같은 제한적인 환경에서 여전히 활용됩니다.

  • 멀티태스킹 환경: 분할 방식은 여러 프로세스가 동시에 실행되는 환경에서 각 프로세스에 메모리를 할당하고 관리하는 데 사용됩니다.
  • 임베디드 시스템: 메모리 자원이 제한적인 임베디드 시스템에서는 메모리 관리를 단순화하기 위해 분할 방식을 사용할 수 있습니다.

분할 방식을 사용할 때 다음 사항을 고려해야 합니다.

  • 파티션 크기 설정: 고정 분할 방식에서는 적절한 파티션 크기를 설정하는 것이 중요합니다.
  • 메모리 할당 알고리즘 선택: 가변 분할 방식에서는 시스템의 특성에 맞는 메모리 할당 알고리즘을 선택해야 합니다.
  • 메모리 압축: 가변 분할 방식에서는 외부 단편화 문제를 해결하기 위해 메모리 압축을 고려해야 합니다.
  • 오버헤드: 분할 방식은 메모리 관리 오버헤드가 발생하므로, 시스템 성능에 미치는 영향을 고려해야 합니다.

6. 결론

분할 방식은 메모리 관리의 기본적인 개념을 이해하는 데 중요한 역할을 합니다. 고정 분할 방식과 가변 분할 방식의 장단점을 비교하고, 다양한 메모리 할당 알고리즘을 살펴보았습니다. 분할 방식은 단순하고 구현하기 쉽지만, 메모리 단편화 문제를 해결하기 위한 추가적인 노력이 필요합니다.

다음 포스트에서는 페이징 방식을 통해 메모리 단편화 문제를 해결하는 방법에 대해 알아보겠습니다.

비슷한 글 추천

Comments (0)

No comments yet. Be the first to comment!