운영체제 8. 메모리(주 기억장치) 관리 (3) - Variable Partition Multi-programming

728x90
반응형

출처 : https://www.youtube.com/watch?v=o1TB9NWvG9w&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=26

 

 

 

Variable Partition Multiprogramming

 

  • 초기에는 전체가 하나의 영역
  • 프로세스를 처리하는 과정에서 메모리 공간이 동적으로 분할
  • No internal fragmentation, 프로세스가 필요로하는 만큼의 메모리 공간을 할당해주기 때문

 

 

  • VPM 예제
    • Memory space : 120 MB
      1. 초기상태
      2. 프로세스 A(20MB)가 적재 된 후
      3. 프로세스 B(10MB)가 적재 된 후
      4. 프로세스 C(25MB)가 적재 된 후
      5. 프로세스 D(20MB)가 적재 된 후
      6. 프로세스 B가 주 기억장치를 반납한 후
      7. 프로세스 E(15MB)가 적재 된 후
      8. 프로세스 D가 주기억장치를 반납한 후

 

 

 

State table에는 파티션과 시작 주소, 크기, 현재 해당 파티션을 사용하는 프로세스의 ID를 표시한다.

 

(1) : 맨 처음 초기상태에는 파티션이 1개, 시작주소는 u, 크기는 120MB, 아무도 사용하고 있지 않으므로 프로세스 ID는 None이다.

 

(2) : 프로세스 A가 들어오면 메모리 공간의 20MB를 분할해서 프로세스 A에게 할당해준다. 그러면 state table에 첫 번째 파티션에는 프로세스 A가 들어와서 20MB를 할당해준다. 2번째 파티션은 시작주소 u + 20(이전 메모리 공간)이 되고, 메모리 크기는 120 - 20 = 100MB로 state table을 업데이트 한다.

 

(3) : 프로세스 B가 들어오면 파티션을 새로 생성해서 10MB를 B에게 할당해준다. 그 뒤, state table을 업데이트 한다.

 

 

(4) : 프로세스 C가 들어오면 파티션을 새로 생성해서 25MB를 할당해주고, state table을 업데이트 한다.

 

 

(5) : 프로세스 D가 들어오면 파티션을 새로 생성해서 20MB를 할당해주고, state table을 업데이트 한다.

 

파티션이 프로세스가 요청한 크기에 맞추어 동적으로 나누어지기 때문에 Internal fragmentation은 존재하지 않는다.

 

 

(6) 프로세스 B가 작업을 마치고 메모리 공간을 반납한다. 이때 프로세스 B가 쓰고있던 파티션 2는 이미 나누어져 있는 공간이기 때문에 그대로 10 MB가 그대로 분리되어있고, current process ID가 None이 된다.

 

 

(7) 프로세스 E가 들어왔는데, 파티션 2번에는 적재할 수 없으므로, 새로운 파티션을 만들어서 메모리 공간을 할당해준다.

 

 

(8) 프로세스 D가 작업을 마치고 메모리 공간을 반납한다. 이때 프로세스 D가 쓰고있던 파티션 4는 이미 나누어져 있는 공간이기 때문에 그대로 20 MB가 그대로 분리되어있고, current process ID가 None이 된다.

 

시간이 지남에 따라 비어있는 공간이 존재하는 것을 확인할 수 있다.

 

 

프로세스 P(5MB)가 들어왔을 때, 파티션 1번(10MB), 2번(20MB), 3번(30MB) 중 어디에 넣어주어야 할까?

 

 

배치 전략 (Placement strategies) : 프로세스를 적재할 수 있는 메모리 공간이 여러 개인 경우 어디에 적재해야 하는가에 대한 전략

 

  • First-fit (최초 적합)
    • 충분한 크기를 가진 첫 번째 partition을 선택
    • 장점
      • Simple and low overhead
    • 단점
      • 공간 활용률이 떨어질 수 있음.
      • 예를 들어, 첫 번째 파티션이 14KB였다면 13KB를 요구하는 프로세스를 적재하면 1KB가 남는데, 이 1KB가 무언가를 적재할 수 있을 확률은 굉장히 낮다.
      • 혹은 첫 번째 파티션이 50KB였고 프로세스를 적재한 뒤 37KB가 남았는데, 다음에 40KB를 요구하는 프로세스가 나타날 수 있다.

 

 

  • Best-fit (최적 적합)
    • Process가 들어갈 수 있는 파티션 중 가장 작은 곳을 선택 = 요구량보다 큰 메모리 공간 중 프로세스의 요구량과 가장 차이가 적은 메모리 공간을 선택
    • 탐색 시간이 오래 걸림 = High overhead
      • 모든 파티션을 살펴봐야 함
    • 장점
      • 크기가 큰 파티션을 유지할 수 있음
    • 단점
      • 활용하기에는 너무 작은 크기의 파티션이 많이 발생

 

 

  • Worst-fit (최악 적합)
    • Process가 들어갈 수 있는 partition 중 가장 큰 곳을 선택
    • 탐색시간이 오래 걸림
      • 모든 파티션을 살펴봐야 함 = High overhead
    • 장점
      • 작은 크기의 파티션 발생을 줄일 수 있음
    • 단점
      • 큰 요구량을 가진 프로세스를 적재할 큰 크기의 파티션 확보가 어려움

 

 

  • Next-fit (순차 최초 적합)
    • 최초 적합 전략과 유사
    • state table에서 마지막으로 탐색한 위치부터 탐색
    • 메모리 영역의 사용 빈도 균등화
    • Low overhead

 

 

50MB를 요구하는 프로세스 P가 존재하는데, 메모리 공간은 10MB, 20MB, 30MB 밖에 존재하지 않는다. 그렇다면 P를 어디에 넣어주어야 할까?

= External fragmentation issue. 즉, 총 비어있는 메모리 공간은 10 + 20 + 30 = 60MB로 충분하지만 연속되지 않아서 프로세스를 적재할 수 없는 상황

 

 

Coalescing holes (공간 통합)

 

  • 인접한 빈 영역을 하나의 파티션으로 통합
    • 프로세스가 메모리를 release하고 나가면 수행
    • 즉, 프로세스를 적재할 수 있는 메모리 공간이 나올 때까지 기다리고, 기존에 프로세스가 나가면 해당 메모리 공간을 인접한 비어있는 메모리 공간과 합쳐서 거대한 요구량을 가진 프로세스를 적재하는 방법
    • Low overhead

 

 

Storage Compaction (메모리 압축) : 쉽게 말해서 떨어져있는 메모리 공간을 하나로 압축하는 방법이다.

 

  • 모든 빈 공간을 하나로 통합
  • 프로세스 처리에 필요한 적재 공간 확보가 필요할 때 수행
  • 프로세스들이 하고있던 일들을 중지시켜야 함 = High overhead
    • 모든 프로세스 재배치 (프로세스 중지)
    • 많은 시스템 자원을 소비
    • 자주 해주어서는 안됨, 일정시간 혹은 특별한 요청이 있을 때에만 해야함

 

 

Continuous Memory Allocation 요약

 

  • Uni-programming
    • Simple
    • Fragmentation problem
  • Fixed Partition Multi-programming(FPM)
  • Variable Partition Multi-programming(VPM)
    • Placement stragies
      • First-fit, Best-fit, Worst-fit, Next-fit
    • External fragmentation issue
      • Coalescing holes
      • Storage compaction

 

 

 

728x90
반응형