OS

크래프톤 정글 2기 2 PintOS Virtual Memory 중간진행

김상주 2023. 6. 18. 23:07

💡 추가

  • vm_type(가상 메모리 타입)
    • VM_ANON ->(파일과 relate 되지 않은 페이지, aka anonymous page)
    • VM_PAGE_CACHE -> (페이지 캐시를 가진 페이지) (project 4에서 사용)
    • VM_FILE -> (파일과 relate 된 페이지)
    • VM_UNINIT -> (초기화 되지 않은 페이지)

 

  • 스레드 구조체는 하나의 프로세스의 페이지 테이블을 가리키는 포인터를 가지고 있다. 
     그게 *pml4

 

  • page fault가 일어나는 경우
    • 유저 프로그램이 커널 가상 메모리에 접근하려고 할 때
    • 커널에서 매핑되지 않은 유저 가상 주소로 접근하려고 할 때

 

  • 기존 load_segment()
    • kpage 즉 커널 주소에 파일을 모두 load함
    • 유저 page와 kpage를 install_page()로 매핑
  • 수정한 load_segment()
    • 요청이 올때만, 필요한 file만 kpage에 load함