메모리 할당 : 연속 할당(Continuous Allocation)

이강용·2024년 7월 27일
0

CS

목록 보기
100/109

연속 할당(Continuous Allocation)이란?

  • 메모리 할당 방식 중 하나로 프로세스가 메모리에서 연속적인 블록에 할당되는 방식

1. 고정 분할(Fixed Partitioning)

  • 고정 분할 방식은 메모리를 미리 정해진 크기로 나누어 사용하는 방법
  • 각 분할은 고정된 크기를 가지며 분할 크기는 시스템이 부팅될 때 결정

특징

  • 고정된 크기 : 메모리 블록의 크기가 고정되어 있으며 시스템이 시작될 때 설정
  • 단순한 구현 : 구현이 단순하여 운영 체제의 오버헤드가 적음
  • 내부 단편화 : 메모리 블록이 고정 크기이기 때문에 프로세스가 할당된 메모리보다 작을 경우 남는 공간이 발생
    • 이는 내부 단편화로 이어짐
  • 효율성 : 작은 프로세스가 큰 고정 분할에 할당되면 메모리 낭비가 발생할 수 있음

2. 가변 분할(Variable Partitioning)

  • 가변 분할 방식은 메모리를 프로세스가 필요로 하는 크기만큼 동적으로 할당하는 방법
  • 이 방식은 고정 분할 방식의 단점을 보완

특징

  • 동적 크기 : 메모리 블록의 크기가 동적으로 결정되며 프로세스의 크기에 맞게 할당
  • 효율적인 메모리 사용 : 필요한 만큼만 메모리를 할당하므로 메모리 사용 효율이 높음
  • 외부 단편화 : 프로세스가 종료되면 남는 메모리 블록이 발생할 수 있으며 이로 인해 외부 단편화가 발생함
    • 이를 줄이기 위해 압축(compaction)을 수행할 수 있음
  • 복잡한 구현 : 메모리 할당과 해제 과정이 복잡하여 운영 체제의 오버헤드가 증가할 수 있음

메모리 할당 전략

  • 가변 분할 방식에서는 메모리 블록을 할당할 때 다음과 같은 전략을 사용할 수 있음
  1. 최초 적합(First Fit)
  • 메모리의 처음부터 검색하여 프로세스를 수용할 수 있는 첫 번째 적당한 블록을 할당
    • 장점 : 빠른 할당 속도
    • 단점 : 초기 큰 블록이 빠르게 분할되어 외부 단편화가 발생할 가능성이 높음
  1. 최적 적합(Best Fit)
  • 메모리 전체를 검색하여 프로세스를 수용할 수 있는 가장 작은 블록을 할당
    • 장점 : 작은 단편화를 줄일 수 있음
    • 단점 : 검색 시간이 길어질 수 있고 작은 블록들이 많이 남아 외부 단편화가 발생할 가능성이 높음
  1. 최악 적합(Worst Fit)
  • 메모리 전체를 검색하여 프로세스를 수용할 수 있는 가장 큰 블록을 할당
    • 장점 : 큰 블록이 분할되어 남은 공간이 상대적으로 크게 남아 다른 프로세스가 사용하기 쉬움
    • 단점 : 큰 블록이 빠르게 분할되어 큰 블록이 없어지고 메모리 사용이 비효율적이 될 수 있음
      • 큰 블록을 자주 분할하게 되어 외부 단편화가 발생할 가능성이 큼

내부 단편화와 외부 단편화

내부 단편화(Internal Fragmentation)

  • 프로세스에 할당된 메모리 블록이 실제로 필요한 크기보다 큰 경우 사용되지 않는 내부 공간이 발생하는 현상
    • 주로 고정 분할 방식에서 발생

예시

  1. 초기 상태

    • 가용 메모리 : 1000KB
  2. 메모리 분할

    • 메모리를 4개의 고정 크기 분할로 나눔
      • 각 분할 크기 : 250KB
  3. 프로세스 할당

    • 프로세스 A : 200KB 할당 → 분할 크기 : 250KB
    • 프로세스 B : 100KB 할당 → 분할 크기 : 250KB
    • 프로세스 C : 150KB 할당 → 분할 크기 : 250KB
    • 프로세스 D : 50KB 할당 → 분할 크기 : 250KB
  4. 현재 메모리 상태

[A 200KB + Free 50KB][B 100KB + Free 150KB][C 150KB + Free 100KB][D 50KB + Free 200KB]

  1. 내부 단편화 발생

    • 프로세스 A : 200KB 할당 → 내부 단편화 : 50KB(250KB - 200KB)
    • 프로세스 B : 100KB 할당 → 내부 단편화 : 150KB(250KB - 100KB)
    • 프로세스 C : 150KB 할당 → 내부 단편화 : 100KB(250KB - 150KB)
    • 프로세스 D : 50KB 할당 → 내부 단편화: 200KB (250KB - 50KB)
  2. 내부 단편화 총합

    • 총 내부 단편화 : 50KB + 150KB + 100KB + 200KB = 500KB

외부 단편화(External Fragmentation)

  • 메모리의 할당과 해제가 반복되면서 사용할 수 없느 작은 메모리 조각들이 메모리 전체에 흩어져 있는 현상
  • 이는 메모리 블록이 서로 떨어져 있어 충분한 양의 총 메모리가 남아 있더라도 큰 크기의 연속된 메모리 블록을 할당할 수 없는 상황을 초래

예시

  1. 초기 상태

    • 가용 메모리 : 1000KB
  2. 프로세스 할당

    • 프로세스 A : 200KB 할당 → 남은 가용 메모리 : 800KB
    • 프로세스 B : 300KB 할당 → 남은 가용 메모리 : 500KB
    • 프로세스 C : 100KB 할당 → 남은 가용 메모리 : 400KB
  3. 프로세스 해제

    • 프로세스 A 종료 → 남은 가용 메모리 600KB(연속되지 않음)
  4. 현재 메모리 상태

    [Free 200KB][B 300KB][C 100KB][Free 400KB]

  5. 새로운 프로세스 할당 시도

    • 프로세스 D : 450KB 요청

결과

  • 프로세스 D는 450KB의 연속된 메모리 블록이 필요하지만 현재 가용 메모리는 600KB임에도 불구하고 연속된 450KB 공간이 없음, 따라서 프로세스 D는 할당될 수 없음
    👉🏻 이 상황이 외부 단편화
profile
HW + SW = 1

0개의 댓글