목록정글 일지 (22)
미소를뿌리는감자의 코딩

//vm/anon.cstatic voidanon_destroy (struct page *page) { struct anon_page *anon_page = &page->anon; /* pseudo * anon이 사용 중인 리소스 해제, page는 caller가 해제할 것이므로 신경 안써도 된다. * anon이 사용 중인 frame, page를 해제*/ // 점거 중인 bitmap 삭제 --- 까먹었던 거 추가 if (anon_page->slot != BITMAP_ERROR) bitmap_reset(swap_table, anon_page->slot); if (page->frame) { list_remove(&page->frame->frame_elem); // 리스트에서 해당 frame 제거 pag..

1. 개요이번엔 file이 swap in/out 되는 과정에 대해서 알아볼 것이다.file의 경우엔 file이라는 저장 장소가 있으므로 slot을 할당 받거나 반환할 필요가 없다. 2. 본문/* Swap out the page by writeback contents to the file. */static boolfile_backed_swap_out (struct page *page) { /* pseudo * (dirty 유무 확인) * (true) file에 변경사항 저장. dirty하지 않다고 명시 * (false) 바로 swap_out 진행. RAM에서 해당 frame 사용 중이지 않다고 명시.*/ struct file_page *file_page UNUSED = &page->file; if ..

1. 개요ANON type의 페이지가 swap in/out을 다루는 코드를 작성하였다. anon_swap_in의 경우엔 디스크의 swap영역에 있던 데이터를 RAM으로 가져온다.anon_swap_out의 경우엔 RAM에서 쫓겨 나서, swap영역에 데이터를 저장하게 된다. 2. 본문// vm/anon.c/* Swap out the page by writing contents to the swap disk. */static boolanon_swap_out (struct page *page) { /* pseudo code * swap 영역에서 slot 할당 받기 * (slot을 할당 받았다면) 해당 slot에 메모리 넣고, 해당 RAM을 free * (swap disk 초과로 할당 받지 못했다면) 커..

1. 개요UNINIT페이지에서 vm_file로 페이지를 할당하는 과정에 대해서 다루는 함수를 알아볼 것이다. 2. 본문우선, vm_file_init은 수정할 것이 없다. 왜냐하면 ANON 페이지와 다르게 디스크에 메모리를 할당 받을 필요가 없다. 다음으로 file_backed_initializer에 대해서 알아보자./* Initialize the file backed page */boolfile_backed_initializer (struct page *page, enum vm_type type, void *kva) { /* Set up the handler */ /* pseudo : * file_backed와 관련된 operation을 설정 * UNINIT에서 FILE_BACKED라는 상태를 명시..