파일이나 장치에 매핑되지 않은 페이지 실행 파일에서 스택이나 힙을 사용할 때 활용한다.
필요할 때까지 메모리가 로딩되지 않는 것 즉, struct page는 존재하지만 물리 프레임에 연결되어 있지 않고 페이지의 데이터가 로딩되지 않았다.
<aside> 1️⃣ 페이지 할당 요청이 발생한다.
</aside>
vm_alloc_page_with_initializer
에서 uninit_new
를 통해 초기화되지 않은 페이지, 즉 Lazy Loading하는 페이지를 생성한다.anonymous
or file-backed
)이 결정되고 그에 맞는 초기화 함수가 설정된다.<aside> 2️⃣ 유저 프로그램이 페이지에 접근을 시도하지만, 페이지가 메모리에 로드되지 않았기 때문에 페이지 폴트가 발생한다.
</aside>
VM_UNINIT
)
uninit_initialize
를 호출한다. (go to 3.)vm_do_claim_page
로 페이지를 메모리에 로드한다. (go to 4.)<aside> 3️⃣ 페이지를 미리 설정된 타입으로 초기화한다.
</aside>
struct uninit_page
에 저장된 페이지 타입에 따른 초기화 함수를 호출한다.<aside> 4️⃣ 페이지를 메모리에 로드한다.
</aside>
vm_do_claim_page
호출