

프로세스가 실행될 때 process_exec() → load() 함수 순으로 호출되며, lazy_load_segment()가 실행된다.
이때 vm_alloc_page_with_initializer()를 통해 VM_UNINIT 타입의 페이지가 만들어진다.
이렇게 등록된 페이지들은 SPT에 저장되어, 페이지 폴트 발생 시 필요한 처리를 한다.

1. 사용자가 해당 주소를 접근할 때 page_fault()가 발생한다.
2. vm_try_handle_fault()-> vm_do_claim_page()호출해서 메모리 안의 공간을 할당한다.
3. swap_in 함수가 실행된다.
4. 이후 디스크에서 파일 내용을 읽어오거나, 0으로 초기화 한다.
(그림에서 채워준다는 부분 !)

swap_in 함수가 호출된다.
이 함수는 해당 페이지가 디스크에서 불러와야 하는 건지, 그냥 0으로 채워야 하는 건지 판단해서
그에 맞는 동작을 수행한다.

하지만 시스템의 물리 메모리는 한정돼 있기 때문에,
어느 순간 페이지가 너무 많아지면 일부 페이지를 스왑 디스크로 내보내게 된다.
이걸 swap-out이라 부른다.
swap-out이 되면,
해당 페이지는 메모리에서 쫓겨나고,
프레임과 연결이 끊긴다.
그리고 PTE_P 비트가 가 0으로 바뀐다.
즉, 이제 이 주소를 접근하면 "아, 이건 페이지는 존재하지만 지금 메모리에 없음!"이라는 걸 나타내는 상태가 된다.

page_fault()를 일으킨다.vm_try_handle_fault()가 실행된다.
swap-in이라고 한다.
그림이 있으니까 이해가 쉽네요