운영체제#7

LeeMir, 05 April 2021

3강 - Memory Management


No Memory Abstraction
  • Real Memory System
  • 주소가 미리 정해져있었으므로 컴파일러는 주소를 기준으로 컴파일
  • 0번 Address부터 OS(vector table), User Program, Driver 순서
  • Address Space
  • 모든 Program의 Address를 0부터 시작하듯 프로그램을 짜기 위해 0 ~ MAX(prog.)에 Base Register를 더해서 사용한다.
  • Fixed Partitioning을 이용해 Memory를 사용하는 방법
    • 한 Partition만 붐비는 문제가 있을 수 있음
    • Partition보다 작은 Program만 실행할 수 있음, 남은 빈 공간에 대해 메모리 낭비 문제
  • Dynamic Partitioning을 지속하면 Process가 배치된 사이에 빈 공간이 존재(Memory Fragmentation, 메모리 단편화)
  • Memory Allocate 방법
    • First Fit
    • Best Fit
    • Next Fit
    • Worst Fit
  • Solutions for Fragmentation
    • Coalescing
      • Program이 Memory를 반납(free)할 때 인접 unused 블록과 합쳐서 통합한 빈공간을 만듦
    • Compaction
      • 자잘한 빈공간을 하나로 합치고 사용중인 Program끼리 인접하게 만듦
      • Dynamic Program Relocation이 가능해야함
      • 부하가 큼
      • Optimal Compaction을 찾는 게 어려움
  • Swapping
    • Process를 HDD에 Swap In, Swap Out을 하면서 더 많은 Process를 실행할 수 있음
    • 메모리 효율성을 높일 수 있음
    • 한 Process에서 메모리가 부족해 다른 Process를 Swap Out할 수도 있음
  • Overlay
    • Memory에 Program에 있는 모든 함수를 한 번에 적재하는 것이 아니라, 그때그때 필요한 함수를 불러서 적재함
    • RAM보다 더 큰 Program을 실행할 수 있음
  • Memory Management
    • Bit map
      • Memory 상에서 빈 공간을 0, 사용중인 공간을 1로 나타내어 관리
    • Linked Lists
      • Process를 반납(free)해 빈 공간이 생겼을 때, 인접해있는 빈공간과 병합하게 함