링크: https://casys-kaist.github.io/pintos-kaist/project3/vm_management.html
어떤 메모리 영역이 무슨 목적으로 누구에 의해 사용되고 있는지를 추적해야 함!
⇒ supplement page table & physical frame 구현
Step 1: Supplemental Page Table 구현
A page
(defined in include/vm/vm.h
)
struct page {
const struct page_operations *operations;
void *va; /* Address in terms of user space */
struct frame *frame; /* Back reference for frame */
union {
struct uninit_page uninit;
struct anon_page anon;
struct file_page file;
#ifdef EFILESYS
struct page_cache page_cache;
#endif
};
};
페이지는 초기화되지 않은 페이지(VM_UNINIT
), 익명 페이지(VM_ANON
), file에 매핑된 페이지(VM_FILE
) 중 하나가 될 수 있다.