[OS] Lecture 10. Virtual Memory Management (2_6) - kibitzing/EnGrow GitHub Wiki
진구
- 가상 메모리 성능 향상 기법이 많이 있군
- 듣다 보니 가상 메모리 뭐 하는 거였지? 이런 생각이.. ㅋㅋ -> 항상 물리메모리에 쓰면 여러 문제가 발생할 수 있다. 응용프로그램과 운영체제로 분리해두면 응용프로그램은 실제 돌아갈 컴퓨터의 메모리 환경을 몰라도 짤 수 있게 된다.
- anticipatory fetching/cleaning은 현 OS에사 잘 안 쓰는데 왜 배워야하지? 우리가 프로그램을 짜면 그것도 또한 작은 OS. 메모리 관리를 해줘야 할 때가 있다. 좀 더 가면 디비에서 미리 댕겨서 캐싱해두는 것도 예측해서 가져오는 방법일수도
- 고정할당 가변할당은 앞에 배운거랑 같은건가..? 복습필수다ㅠ
- 로드 컨트롤, 경쟁이 심하면 성능저하가 일어난다.
세영
Software components
- 가상 메모리를 적절히 관리하려면 여러 소프트웨어 기법이 필요함
- Allocation strategies
- 각 프로세스에게 얼마만큼의 메모리를 줄 것인가? → Fixed/Variable allocation
- 너무 크게 주면 메모리 낭비, 너무 적게 주면 Page fault rate 늘어남
- Fetch strategies
- Demand fetch: 프로세스가 참조하는 페이지들만 적재, page fault overhead 늘어남 → 주로 이거 씀
- Anticipatory fetch: 참조될 가능성이 높은 page 예측해서 미리 적재, 예측 자체 및 잘못된 예측 시에 자원 낭비가 큼
- Placement strategies
- 페이징 시스템에서는 불필요
- Segmentation에서는 first/best/worst/next-fit,
- Replacement strategies
- 새로운 page를 어느 page로 교체할지에 대한 기법
- Cleaning strategies
- 변경된 page (dirty-page)를 언제 write-back할지 결정하는 기법
- Demand cleaning: 메모리에서 해제될 때 실행 → 주로 이거 씀
- Anticipatory cleaning: 더 이상 변경 가능성이 없다고 판단되면 미리 실행, write-back 후 내용이 수정되면 overhead 발생
- Load Control strategies
- multi-programming degree를 조절하는 기법, plateau 상태를 유지해야 좋음
- 너무 적게 조절하면 자원 낭비
- 너무 크게 조절하면 자원 경쟁 심화, Thrashing 발생
- Thrashing: 너무 많은 프로세스가 page를 사용하므로 과도한 page fault가 발생하는 현상