Q&A 게시판

리눅스 커널에 대한 Q&A 게시판 입니다. (비밀글 체크는 꼭 필요한 경우에만)

Swap in 과정에서 Swap-in 되는 페이지의 Pfn등이 변하는지 궁금합니다.

작성자
최진우
작성일
2022-10-13 19:48
조회
134
안녕하세요,

대학원에서 연구를 진행 중인데

Swap 관련 내용에 관하여 블로그 내용이 많은 도움이 되었습니다.

다름이 아니라,

제가 진행하는 연구에 필요한 궁금점이 생겨 질문을 드려봅니다.

'Swap-in' 과정을 진행에서, Swap-in 되는 페이지가

pfn을 새롭게 할당을 받아 Physical Address가 기존과 다르게 바뀌는지와,

만약 위가 맞다면 이 과정을 커널 코드의 어느 부분에서 확인할 수 있는지 여쭙고 싶습니다.
전체 1
  • 2022-10-14 19:08
    안녕하세요? 최진우님,

    swap된 페이지에 access하는 경우 fault가 발생하며 swap 캐시에서 찾아보는데,
    swap 디스크에 저장되고 없으면, 해당 디스크에서 다시 읽어내는 swap-in 과정을 진행합니다.
    이 때 새로운 페이지를 할당한 후 사용하므로 pfn은 변경됩니다.

    다음은 해당 fault 이후에 alloc_page_vma() 함수로 버디 시스템으로 부터 새로운 페이지를 할당받습니다.

    handle_mm_fault -> __handle_mm_fault -> handle_pte_fault -> do_swap_page

    page = lookup_swap_cache(entry, vma, vmf->address);
    swapcache = page;
    if (!page) {
    if (data_race(si->flags & SWP_SYNCHRONOUS_IO) &&
    __swap_count(entry) == 1) {
    /* skip swapcache */
    page = alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma,
    vmf->address);


    감사합니다.