Software Components
가상 메모리 성능 향상을 위한 관리 기법들
- Allocation strategies (할당 기법)
- Fetch strategies
- Placement strategies (배치 기법)
- Replacement strategies (교체 기법)
- Cleaning strategies (정리 기법)
- Load control strategies (부하 조절 기법)
1. Allocation Strategies
각 프로세스에게 메모리를 얼마 만큼 줄 것인가?
- Fixed allocation (고정 할당)
ㆍ프로세스의 실행 동안 고정된 크기의 메모리 할당
- Variable allocation (가변 할당)
ㆍ프로세스의 실행 동안 할당하는 메모리의 크기가 유동적
고려사항
- 프로세스 실행에 필요한 메모리 양을 예측해야 함
- 너무 큰 메모리 할당 시,
-> 메모리가 낭비 됨
- 너무 적은 메모리 할당 시,
-> Page fault rate 상승
-> 시스템 성능 저하
2. Fetch Strategies
특정 page를 메모리에 언제 적재할 것인가?
- Demand fetch (demand paging)
ㆍ프로세스가 참조하는 페이지들만 적재
ㆍPAge fault overhead
- Anticipatory fetch (pre-paging)
ㆍ참조될 가능성이 높은 page 예측
ㆍ가까운 미래에 참조될 가능성이 높은 page를 미리 적재
ㆍ예측 성공 시, page fault overhead가 없음
ㆍPrediction overhead (kernel의 갱ㅂ), Hit ratio 에 민감함
실제 대부분의 시스템은 Demand fetch 기법을 사용한다.
- 일반적으로 준수한 성능을 보여줌
- Anticipatory fetch
ㆍPrediction overhead : 예측하는 것이 쉽지 않으며, 잘못된 예측 시 자원 낭비가 크다.
ㆍ하지만, 예측 가능한 상황에서 anticipatory fetch를 사용하면 많은 자원을 절약할 수 있다.
3. Placement Strategies
Page / Segment를 어디에 적재할 것인가?
- Paging System에서는 불필요 (Process (Page) 과 Memory (Page frame) 양측을 고정된 크기로 자르기 때문이다.)
- Segmentation system에서의 배치 기법
ㆍFirst-Fit
ㆍBest-Fit
ㆍWorst-Fit
ㆍNext-FIt
4. Replacement Strategies
빈 page frame이 없는 경우, 새로운 Page를 어떤 page와 교체할 것인가
-> 다음 포스팅 참조
5. Cleaning Strategies
변경된 page를 언제 write-back할 것인가?
- 변경된 내용을 swap device에 반영
- Demand cleaning
ㆍ해당 page에 메모리에서 내려올 때, wriet-back 수행
- Anticipatory cleaning (pre-cleaning)
ㆍ더 이상 변경될 가능성이 없다고 판단할 때, 미리 write-back
ㆍPage 교체 시 발생하는 write-back 시간 절약
ㆍWrite-back 이후, page 내용이 수정되면 overhead 발생
이 또한, 대부분의 시스템은 Demand cleaning 기법을 사용한다.
- 일발적으로 준수한 성능을 보여줌
- Anticipatory cleaning
ㆍPrediction overhead : 예측하는 것이 쉽지 않으며, 잘못된 예측 시 자원 낭비가 크다.
6. Load Control Strategies
시스템의 multi-programming degree 조절
- Alloctaion strategies와 연계 됨
적정 수준의 multi-programming degree를 유지해야 함
- Plateau (고원) 영역으로 유지
- 저부하 상태 (Under-loaded)
-> 시스템 자원 낭비, 성능 저하
- 고부하 상태 (Over-loaded)
-> 자원에 대한 경쟁 심화, 성능 저하
-> Thrashing (스레싱) 현상 발생 (과도한 page fault가 발생하는 현상)
댓글