✨ Summary
- Page Fault 에 대한 처리 & Lazy loading
- Page Cycle
- 초기화 → (페이지 폴트 → 지연 로딩 → 스왑 인 → 스왑 아웃 → …) → 삭제
- UPAGE : 사용자 가상페이지
- KPAGE: 커널 가상 페이지
👷 구현 순서
vm_alloc_page_with_initializer
- 새로운 페이지를 만들고 spt에 삽입한다.
- VM_TYPE = VM_UNINIT (미결정된 페이지~~”a.k.a. 껍데기”~~ 로 지정)
- VM_UNINIT 에 대한 처리(생성, 초기화, 삭제)
- Lazy Loading을 위해 프로그램 시작 시 모든 페이지를 VM_UNINIT으로 만들어버렸으니, VM_UNINIT이 된 페이지들에 대한 작업 수행
- page fault handler
- Lazy loading 구현
- setup_stack
1. vm_alloc_page_with_initializer
[📖 Gitbook]
- initializer가 페이지 구조를 할당하고 페이지 유형에 따라 적절한 initializer를 설정하여 새로운 페이지를 초기화함
- 페이지 구조 할당 → initializer 설정까지의 단계