💡 추가
- 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함
'OS' 카테고리의 다른 글
크래프톤 정글 2기 2 PintOS Memory Mapped Files 헷갈리는거 (0) | 2023.06.22 |
---|---|
크래프톤 정글 2기 2 PintOS Virtual Memory 메모리 용어정리 (0) | 2023.06.17 |
크래프톤 정글 2기 2 PintOS SystemCall (0) | 2023.06.12 |
크래프톤 정글 2기 1-2 PintOS Command Line Parsing (0) | 2023.06.03 |
크래프톤 정글 2기 1-2 PintOS Priority Scheduling(우선순위 스케줄링) (0) | 2023.06.01 |