5-3. 연속 메모리 할당 (Contiguous Memory Allocation)

1. 연속 메모리 할당의 이해

운영체제에서 메모리 관리는 시스템의 성능과 안정성에 매우 중요한 역할을 합니다. 메모리 관리는 여러 가지 방식으로 이루어지는데, 그중 하나가 바로 연속 메모리 할당 (Contiguous Memory Allocation) 방식입니다. 이 방식은 프로세스에게 메모리를 할당할 때, 연속된 (contiguous) 메모리 공간을 할당하는 방식입니다. 마치 책의 각 장을 연속적으로 배치하는 것과 비슷합니다.

1) 배경

과거의 운영체제는 메모리 자원이 제한적이었고, 단순한 구조를 가지고 있었습니다. 이러한 환경에서는 각 프로세스에 메모리를 할당하는 과정이 비교적 간단해야 했습니다. 연속 메모리 할당 방식은 이러한 요구사항에 부합하여, 메모리 할당 및 해제가 상대적으로 쉽고, 주소 변환(address translation)이 간단하다는 장점이 있었습니다.

2) 특징

연속 메모리 할당 방식의 주요 특징은 다음과 같습니다.

  • 단순함: 메모리 할당 및 해제 알고리즘이 비교적 단순하여 구현이 용이합니다.
  • 빠른 접근: 프로세스 내의 모든 메모리 위치에 접근하는 데 걸리는 시간이 동일합니다. (균일한 접근 시간)
  • 단편화 문제: 외부 단편화(external fragmentation)가 발생할 수 있습니다.

2. 단일 분할 (Single Partition)

단일 분할 방식은 연속 메모리 할당의 가장 단순한 형태입니다.

1) 작동 방식

단일 분할 방식에서는 운영체제와 하나의 사용자 프로세스만 메모리에 적재될 수 있습니다. 운영체제는 메모리의 일부분을 차지하고, 나머지 부분은 사용자 프로세스가 사용합니다.

단일 분할 방식 설명 뒤

  1. 초기 상태: 메모리는 운영체제와 비어있는 사용자 영역으로 나뉩니다.
  2. 프로세스 로드: 사용자가 프로그램을 실행하면, 해당 프로그램이 메모리의 사용자 영역에 적재됩니다.
  3. 프로세스 실행: 프로세스가 실행되는 동안, 메모리의 사용자 영역 전체를 사용합니다.
  4. 프로세스 종료: 프로세스가 종료되면, 해당 메모리 영역이 해제되어 비어있는 상태가 됩니다.

2) 장점과 단점

  • 장점: 구현이 매우 간단하고, 메모리 접근 속도가 빠릅니다.
  • 단점: 한 번에 하나의 프로세스만 실행할 수 있어, CPU의 활용도가 낮고, 메모리 낭비가 심각합니다.

3. 다중 분할 (Multiple Partition)

다중 분할 방식은 여러 개의 프로세스를 메모리에 동시에 적재하여 실행할 수 있도록 하는 방식입니다. 단일 분할 방식의 단점을 보완하기 위해 고안되었습니다.

1) 고정 분할 (Fixed Partition)

고정 분할 방식은 메모리를 미리 정해진 크기로 분할하여 각 분할 영역에 프로세스를 할당하는 방식입니다.

고정 분할 설명 뒤

  • 작동 방식:
    1. 메모리는 운영체제와 여러 개의 고정된 크기의 분할 영역으로 나뉩니다.
    2. 프로세스가 실행되면, 사용 가능한 분할 영역 중 하나를 선택하여 할당합니다. 이때, 프로세스 크기에 따라 분할 영역을 선택합니다.
    3. 프로세스가 종료되면, 해당 분할 영역이 해제됩니다.
  • 장점: 구현이 비교적 간단합니다.
  • 단점: 내부 단편화 (internal fragmentation)가 발생할 수 있고, 분할 영역의 크기를 미리 정해야 하므로, 유연성이 부족합니다.

    • 내부 단편화: 프로세스 크기가 분할 영역보다 작을 경우, 분할 영역 내에 사용하지 않는 공간이 생기는 현상

2) 가변 분할 (Variable Partition)

가변 분할 방식은 프로세스의 크기에 따라 메모리를 분할하여 할당하는 방식입니다.

가변 분할 설명 뒤

  • 작동 방식:
    1. 프로세스가 실행되면, 프로세스 크기에 맞는 메모리 공간을 할당합니다.
    2. 프로세스가 종료되면, 해당 메모리 공간이 해제되어 사용 가능한 공간(hole)이 됩니다.
    3. 이러한 홀(hole)들을 관리하기 위해, 가변 분할 방식은 다양한 알고리즘을 사용합니다. (아래에서 자세히 설명)
  • 장점: 내부 단편화 문제를 해결하고, 메모리 활용 효율을 높일 수 있습니다.
  • 단점: 외부 단편화 (external fragmentation)가 발생할 수 있으며, 메모리 할당 및 해제 알고리즘이 고정 분할 방식보다 복잡합니다.

    • 외부 단편화: 메모리 공간이 여러 개의 작은 조각으로 나뉘어, 사용 가능한 총 메모리 공간은 충분하지만, 연속된 공간이 없어 프로세스를 할당할 수 없는 현상

3) 가변 분할 방식의 메모리 할당 알고리즘

가변 분할 방식에서는 외부 단편화 문제를 해결하기 위해, 다음과 같은 메모리 할당 알고리즘을 사용합니다.

  • 최초 적합 (First-Fit): 메모리 공간을 처음부터 검색하여, 프로세스를 수용할 수 있는 첫 번째 홀에 할당합니다. 할당 속도가 빠르지만, 메모리 앞부분에 작은 홀들이 많이 생길 수 있습니다.
  • 최적 적합 (Best-Fit): 프로세스 크기에 가장 적합한 크기의 홀에 할당합니다. 메모리 낭비를 최소화하지만, 모든 홀을 검색해야 하므로 할당 속도가 느립니다.
  • 최악 적합 (Worst-Fit): 가장 큰 홀에 할당합니다. 작은 홀들이 많이 생기는 것을 방지하지만, 큰 프로세스를 할당할 공간이 부족해질 수 있습니다.

4) 가변 분할 방식의 메모리 회수 (Compaction)

가변 분할 방식에서 외부 단편화 문제를 해결하기 위해, 메모리 회수(compaction) 과정을 수행할 수 있습니다. 메모리 회수는 사용 중인 메모리 블록을 한쪽으로 이동시켜, 가용 공간을 하나의 큰 블록으로 만드는 작업입니다.

  • 작동 방식:
    1. 운영체제는 메모리 조각들을 한 곳으로 모읍니다.
    2. 이동해야 할 블록들을 재배치합니다. (주소 변환 필요)
    3. 재배치 후, 하나의 큰 가용 공간을 확보합니다.
  • 단점: 메모리 회수는 오버헤드가 크므로, 시스템 성능에 영향을 줄 수 있습니다. (메모리 재배치 과정은 CPU와 I/O 자원을 사용합니다.)

4. 단편화 문제

연속 메모리 할당 방식에서 발생하는 주요 문제 중 하나가 단편화 (Fragmentation)입니다. 단편화는 메모리가 작은 조각들로 나뉘어져, 사용 가능한 총 메모리 공간은 충분하지만, 연속된 공간이 없어 프로세스를 할당할 수 없는 현상을 의미합니다.

1) 내부 단편화 (Internal Fragmentation)

내부 단편화는 할당된 메모리 블록 내에서 사용되지 않는 공간이 발생하는 현상입니다. 이는 고정 분할 방식에서 주로 발생하며, 프로세스가 할당된 분할 영역보다 작을 경우 발생합니다.

2) 외부 단편화 (External Fragmentation)

외부 단편화는 메모리가 여러 개의 작은 조각으로 나뉘어, 사용 가능한 총 메모리 공간은 충분하지만, 연속된 공간이 없어 프로세스를 할당할 수 없는 현상입니다. 이는 가변 분할 방식에서 주로 발생합니다.

3) 단편화 해결 방법

  • 압축 (Compaction): 메모리에 있는 데이터들을 한쪽으로 몰아, 큰 빈 공간을 만드는 방법입니다. (가변 분할 방식에서 사용)
  • 페이징 (Paging) 또는 세그멘테이션 (Segmentation): 연속 메모리 할당 방식의 단점을 보완하기 위한 다른 메모리 관리 기법입니다. (후속 포스트에서 자세히 다룰 예정)

5. 결론

연속 메모리 할당 방식은 메모리 관리에 있어서 기본적인 개념을 이해하는 데 중요한 역할을 합니다. 하지만, 단편화 문제를 해결하기 위한 추가적인 기법들이 필요하며, 현대 운영체제에서는 페이징, 세그멘테이션 등의 다른 메모리 관리 기법을 활용하여 단편화 문제를 해결하고, 메모리 활용 효율을 높이고 있습니다. 연속 메모리 할당 방식은 단순하고 빠른 장점이 있지만, 단편화 문제로 인해 유연성이 떨어진다는 것을 기억해야 합니다.

비슷한 글 추천

Comments (0)

No comments yet. Be the first to comment!