운영체제 8. 메모리(주 기억장치) 관리 (2)- Fixed Partition Multiprogramming

728x90
반응형

 

출처 : https://www.youtube.com/watch?v=te-GU7NKa5Y&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=25

 

 

Memory Allocation : 메모리를 프로세서에게 어떻게 할당해주는가?

  • Continuous Memory Allocation (연속 메모리 할당)
    • Uni-programming
    • Multi-programming
      • Fixed partition (FPM)
      • Variable partition (VPM)
  • Non-continuous Memory Allocation (비연속 메모리 할당)
    • 다음 시간

 

 

Continuous Memory Allocation

 

  • 프로세스 (context)를 하나의 연속된 메모리 공간에 할당하는 정책
    • 프로그램, 데이터, 스택 등
  • 메모리 구성 정책
    • 메모리에 동시에 올라갈 수 있는 프로세스 수
      • Multiprogramming degree
    • 각 프로세스에게 할당되는 메모리 공간 크기
    • 메모리 분할 방법

 

 

  • Uni(하나)-programming
    • Multiprogramming degree = 1, 프로세스가 한 번에 한 개만 올라간다.
  • Multi-programming
    • Fixed(static) partition multi-programming (FPM)
      • 고정 분할
    • Variable(dynamic) partition multi-programming (VPM)
      • 가변 분할

 

 

Uni-Programming

 

  • 하나의 프로세스만 메모리 상에 존재
  • 가장 간단한 메모리 관리 기법

 

 

  • Uni-Programming의 문제점
    • 프로그램의 크기 > 메모리 크기. 이럴경우 사용자(프로그래머)가 프로그램을 잘라서 메모리에 올려야한다.
  • 해결법
    • Overlay structure
      • 메모리에 현재 필요한 영역만 적재
      • 사용자가 프로그램의 흐름 및 자료구조를 모두 알고 있어야 함

 

 

  • 문제점 2
    • 커널 보호
    • 프로그램을 올릴 때 커널의 영역을 침범해서는 안된다.
  • 해결 방법
    • 경계 레지스터 (boundary register) 사용

 

 

  • 단점
    • Low system resource utilization : 메모리 공간에 여유가 있는데 하나의 프로그램만 올려야 하므로 남는 메모리 공간은 그냥 사용하지 못하고 낭비된다.
    • Low system performance
  • 해결법
    • Multi-programming : 여러 개의 프로그램을 메모리에 올려서 낭비를 줄인다.

 

 

Multi-programming에서 메모리를 나누는 방법은 2가지로 구분된다.

 

  1. Fixed partition
  2. Variable partition

 

 

Fixed Partition Multiprogramming

 

  • 메모리 공간을 고정된 크기로 분할
    • 미리 분할되어 있음
  • 각 프로세스는 하나의 partition(분할)에 적재. 하나의 프로세스를 적절한 파티션에 넣어준다.
    • Process : Partition = 1 : 1, 하나의 파티션에는 하나의 프로세스가 들어갈 수 있다.
  • Partition의 수 = K
    • Multiprogramming degree = K
    • Partition의 수 = Multiprogramming degree

 

 

자료구조 example

 

Partition table(혹은 State table이라고도 부름)에 파티션의 이름, 해당 파티션의 시작 주소와 크기, 현재 해당 파티션을 사용하는 프로세스 등을 안다면 Fixed partition multiprogramming을 사용할 수 있다.

 

 

  • 커널 및 사용자 영역 보호

Uni-programming 때와 마찬가지로 커널 영역이 침범되는 경우를 방지해야 한다. 또한 파티션이 미리 나누어져있기 때문에 파티션 영역을 침범하는 경우도 방지해야한다.

커널과 각 파티션의 영역에 Boundary register를 사용함으로써 이를 방지할 수 있다.

 

 

Fragmentation (단편화)

 

  • Internal fragmentation
    • 내부 단편화
    • 40MB인 프로세스가 들어왔을 때 50MB인 파티션에 넣어주면 10MB가 남고, 21MB인 프로세스가 들어오면 30MB인 파티션에 넣어주고 9MB가 남는다. 이렇게 10MB, 9MB가 남지만 이 메모리 공간은 사용하지 못하고 낭비되게된다.
    • Partition 크기 > Process 크기
      • 메모리가 낭비 됨
  • External fragmentation
    • 외부 단편화
    • 프로세스들을 넣고 남은 공간들이 10 + 9 + 5 + 10 + 10 = 44MB일 때, 30MB인 프로세스가 들어왔다고 해보자. 메모리 용량은 충분하지만, 연속된 메모리 공간이 아니여서 해당 프로세스를 메모리에 넣을 수가 없다.
    • (남은 메모리 크기 > Process 크기) 지만, 연속된 공간이 아님
      • 메모리가 낭비 

 

 

  • Fixed Partition Multiprogramming 요약
    • 고정된 크기로 메모리를 파티션으로 미리 분할하고, 하나의 파티션에 하나의 프로세스만 들어갈 수 있음
    • 장점
      • 메모리 관리가 간편함. 프로세스가 들어갈 수 있는 파티션에 넣어주기만 하면 됨
        • Low overhead
    • 단점
      • Internal / external fragmentation이 발생함으로써, 시스템 자원이 낭비될 수 있음
728x90
반응형