본문 바로가기
OS(운영체제)

연속 메모리 할당 (Contiguous Memory Allocation)

by 걸어가는 신사 2021. 12. 9.

연속적인 메모리 할당

각 프로세스는 다음 프로세스가 적재된 영역과 인접한 하나의 메모리 영역(연속된 영역)에 적재(Load)된다.
  • 메인 메모리는 두 부분으로 나눠진다.
    • Operating System이 적재되어 있는 부분
    • 사용자 프로세스가 적재되어 있는 부분
  • 각 프로세스들은 연속적인 영역에 적재되어 있다.

 

1. 다중 분할 할당 (Multiple-Partition Allocation)

  • 연속 메모리 할당의 한가지 방식
  • 가변 분할(Variable-partition) 프로그래밍으로 각 작업에 필요한 만큼의 메모리만을 차지하게 한다.
    • Internal Fragmentation을 없앨 수 있다.
  • OS는 할당된 Partition과 Free Partition(Hole) 정보를 계속 알고 있어야 한다.
    • Hole : 하나의 큰 사용 가능한 메모리 블록

  • Example
    • 프로세스 5, 8, 2 적재되어 있다
    • 프로세스 8 종료 시 하나의 연속된 hole 발생
    • 프로세스 5 종료 시 두 개의 연속되지 않은 hole 발생 (External Fragmentation 발생)

(2) 동적 메모리 할당 문제(dynamic storage allocation problem)

가용 hole 집합에서 크기 n의 블록의 요청을 어떻게 만족시킬 것 인가?
  • 최초 적합(first-fit)
    • 첫 번째 사용 가능한 가용 공간을 할당한다.
  • 최적 적합(best-fit)
    • 사용 가능한 공간 중에서 가장 작은 것을 택한다.
  • 최악 적합(worst-fit)
    • 가장 큰 가용 공간을 택한다.
    • 할당해 주고 남게 되는 가용 공간이 충분히 커서 다른 프로세스들에게 사용될 수 있다.
  • 최초, 최적의 조합이 메모리 이용 효율 측면에서 효율이 좋다.

 

2. 단편화 (Fragmentation)

Contiguous Allocation의 문제점

(i) 외부 단편화 (External Fragmentation)

프로세스들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 어떤 가용 공간은 너무 작은 조각이 되어 버려서 사용할 수 없다.

(ii) 내부 단편화 (Internal Fragmentation)

할당된 메모리가 요청된 메모리 크기보다 약간 더 큰 경우, 두 크기의 차이만큼 사용할 수 없다.

(iii) 압축 (compaction)

  • 메모리 모든 내용을 한 군데로 몰고 모든 가용 공간을 다른 한 군데로 몰아서 큰 블록을 만드는 것
  • 외부 단편화 문제를 해결할 수 있다.
  • 그러나 비용이 크고 압축이 항상 가능한 것은 아니다.
반응형

댓글