운영체제#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을 찾는 게 어려움
- Coalescing
- 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)해 빈 공간이 생겼을 때, 인접해있는 빈공간과 병합하게 함
- Bit map