WIL(23/05/16)
Memory Management
struct page : union
union : C에서 다른 type의 data를 같은 메모리 위치에 저장하는 data type임. 여러가지중 한번에 하나의 value만 가질 수있음.
여기서는
- struct uninit_page uninit
- struct anon_page anon
- struct file_page file
세가지가 있음. 즉 page는 3개 중 하나의 형태를 가지는데 처음에는 uninit이였다가 anon,file 둘중 하나로 갈라진다.
enum vm_type
VM_UNINIT(0, 초기화안됌), VM_ANON(1, 파일 없이 anonymous page), VM_FILE(2,파일 있음), VM_PAGE_CACHE(프4 내용)
맨 처음엔 UNINIT 상태로 시작. 그 후 ANON이나 FILE로 갈라지는듯.
VM_MARKER
정보 저장(state)을 위한 보조 비트 플래그 마커!
supplemental page table
supplemental page table은 각 페이지에 대한 추가적인 정보를 보충해줌. 페이지 테이블의 형식으로 인한 한계로 인해 요구됌
목적 : page fault 발생한 페이지를 spt에서 찾아 있었어야할 데이터 알아내기, 프로세스가 종결되면 커널은 spt를 통해 free할 자원 결정
spt의 구성원 추적을 위해 페이지 테이블 쓸 수도 있음.
page fault 의 의미
버그로 취급했던 프로젝트 2와 다르게 3에서는 파일이나 swap slot과 연결되야 함을 나타내는 것.
※이후 추가적으로 업데이트할 예정.