[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가 발생하는 현상