Project 3 : Virtual Memory
Part 1 : Memory Management
Part 2 : Anonymous Page & Lazy Loading(Demanding Page)
Part 3 : Stack Growth
Part 4 : Memory Mapped Files(File Backed Mapping)
Part 5 : Swap In/Out
Kernel space, 물리메모리와 1대1 매핑임, install page()함수를 통해 커널주소공간의 메모리를 유저주소공간으로 매핑
참고한 블로그 : 정리왕 DK
https://sunset-asparagus-5c5.notion.site/Step-1-Supplemental-Page-Table-73078ee7fb9c4d90be0e9a9689d4dd15
Part 1 : Memory Management
- Supplemental Page Table 구현
- pml4를 보완
- page fault시에 오류발생한 가상페이지를 조회하여 어떤 데이터가 있어야하는지 확인
- 프로세스가 종료될 때 참조하여 어떤 자원을 free시킬 것인지 결정
- Physical Frames 구현
- 프레임의 정보를 갖고있는 frame table을 구현.Part 2 : Anonymous Page & Lazy Loading(Demand Paging)
- Anonymous Page 구현
- file-backed page와 달리 메모리가 프로세스 자체에 의해 런타임 때 만들어지고 사용되는 경우.
- Lazy Loding 구현
- Demand Paging : 필요할 때 디스크에서 물리메모리에 올림.
- Bogus Page Fault
- 물리메모리가 꽉차있으면 프레임 퇴거 정책(Eviction - Anon Swap in/Out) 해야한다.
Part 3 : Stack Growth
- Page Fault 발생하고 Stack이 부족해서 발생한 Page Fault 일 때 스택을 키운다.
Part 4 : Memory Mapped Files(File Backed Mapping)
Part 5 : Swap In/Out