목록2024/12 (17)
미소를뿌리는감자의 코딩

//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. 개요Swap In/Out에 대한 코드를 작성하기 위해 위 함수를 재 작성해야 한다. 2. 본문/* Initialize the data for anonymous pages *//* HDD과 연관되지 않는 anon type에 대해, init을 */void vm_anon_init(void) { /* TODO: Set up the swap_disk. */ swap_disk = disk_get(1, 1); // 1:1 (스왑공간)에 해당하는 디스크를 반환. ; 즉, 스왑 디스크 반환 slot_max = disk_size(swap_disk) / SLOT_SIZE; // 디스크 크기와 슬롯 크기를 이용해 사용할 수 있는 스왑 슬롯의 최대 개수를 계산 swap_table = bitmap_cr..