목차
- SoftWare Components
- 가상메모리 성능 향상을 위한 관리 기법들
Software Components
가상 메모리 성능 향상을 위한 관리 기법들
- Allocation strategies (할당 기법)
- Fetch strategies
- Placement strategies (배치 기법)
- Replacement strategies (교체 기법)
- Cleaning strategies (정리 기법)
- Load control strategies (부하 조절 기법)
Allocation Strategies
각 프로세스에게 메모리를 얼마 만큼 줄 것인가?
- Fixed allocation (고정 할당) - 프로세스의 실행 동안 고정된 크기의 메모리 할당
- Variable allocation (가변 할당) - 프로세스의 실행 동안 할당하는 메모리의 크기가 유동적
고려사항
- 프로세스 실행에 필요한 메모리 양을 예측해야 함
- 너무 큰 메모리 할당(Too much allocation) - 메모리 낭비됨
- 너무 적은 메모리 할당(Too small allocation) - page fault rate 상승, 시스템 성능 저하
Fetch Strategies
swap device 에서 memory로 특정 page를 언제 적재할 것인가? (fetch(데이터를 가져오는 것))
- Demand fetch (demand paging)
- 프로세스가 참조하는 페이지들만 적재함
- Page fault overhead
- Anticipatory fetch (pre-paging)
- 참조될 가능성이 높은 page를 예측
- 가까운 미래에 참조될 가능성이 높은 page를 미리 적재함
- 예측 성공 시, page fault overhead가 없음
- 만약 실행시 중단이 되면(실패하면) overhead가 크게 발생
- 커널이 개입하는 prediction overhead 발생, hit ratio(예상하는 것)에 민감함
실제 대부분은 시스템은 Demand fetch 기법사용
- 일반적으로 준수한 성능을 보여줌
- Anticipatory fetch는 prediction overhead, 즉 잘못된 예측시 자원 낭비가 크다
Placement Strategies
- page/segment를 어디에 적재할 것인가?
- paging system에는 불필요하다
segmentation system에서의 배치 기법
- First-fit
- Best-fit
- Worst-fit
- Next-fit
Replacement Strategies
프로세스 i에게 3개의 공간이 할당되었고 그 공간들은 각각 A,B,C로 꽉 찼음
새로운 D가 공간이 필요함 D를 누구와 교체해서 어디에 넣어야하나 => Replacement Strategies
즉, 새로운 page를 어떤 page와 교체 할 것인가? (빈 page frame이 없는 경우)
Fixed allocation
- MIN(OPT, B0) algorithm
- Random algorithm
- FIFO(First In First Out) algorithm
- LRU(Least Recently Used) algorithm
- LFU(Least Frequently Used) algorithm
- NUR(Not Used Recently) algorithm
- Clock algorithm
- Second chance algorithm
Variable allocation을 위한 교체 기법
- VMIN(Variable MIN) algorithm
- WS(Working Set) algorithm
- PFF(Page Fault Frequency) algorithm
Cleaning Strategies
변경된 page를 언제 write-back할 것인가? (update bit = dirty bit를 언제 치울 것인가?)
- 변경된 내용을 swap device에 반영
- Demand cleaning - 해당 page메모리에서 내려올 때 write-back
- Anticipatory cleaning (pre cleaning)
- 데이터를 쓰고 더 이상 변경될 가능성이 없다고 판단할 때, 미리 write-back
- 나중에 Page 교체시에 발생하는(memory에서 나올 때) write-back시간을 절약함
- write-back이후, page내용이 수정되면, 큰 overhead발생함
실제 대부분의 시스템은 Demand cleaning 기법 사용
- 일반적으로 준수한 성능을 보여줌
- Anticipatory cleaning
- prediction overhead, 잘못된 예측 시 자원 낭비가 큼
Load Control Strategies
시스템의 multi-programming degree(시스템에 들어온 프로세스의 수 = 부하) 조절 - allocation strategies와 연계 됨
적정 수준의 multi-programming degree를 유지 해야함
- Plateau(고원) 영역으로 유지
- 저부하 상태 (Under-loaded) - 시스템 자원 낭비, 성능 저하
- 고부하 상태 (Over-loaded)
- 자원에 대한 경쟁 심화, 성능 저하
- Thrashing(스레싱) 현상 발생 - 과도한 page fault가 발생하는 현상
- 처음 구간에서 일을 줄 수록 처리량(throughput)이 일정해 진다 = plateau (고원 상태)
- 더 부하를 주게 되면 처리량이 급격하게 떨어진다.
- 너무 많은 프로세스들이 페이지를 요청하지까 page fault가 발생함
- 성능이 급격하게 떨어지기 시작함. => thrashing
본 포스트는 KOREATECH의 HPC LAB. Duksu Kim 교수님 OS강의를 기반으로 정리한 내용입니다.
상업적 의도가 아닌 공부한 것을 정리해 놓은 목적으로 게시한 포스트입니다.
아래의 출처에서 자세한 내용을 수강하실 수 있습니다.
https://www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN
'CS > OS' 카테고리의 다른 글
[OS] 10. 가상 메모리 관리 - Replacement Strategies for Variable Allocation (0) | 2022.04.30 |
---|---|
[OS] 10. 가상 메모리 관리 - Replacement Strategies for Fixed Allocation (0) | 2022.04.27 |
[OS] 10. 가상 메모리 관리 - Cost model, HW components (0) | 2022.04.22 |
[OS] 9. Virtual Memory - Segmentation System (0) | 2022.04.19 |
[OS] 9. Virtual Memory - Paging system (0) | 2022.04.17 |