목록전체 글 (64)
정글에서 온 개발자
배경 void supplemental_page_table_kill (struct supplemental_page_table *spt); Frees all the resources that were held by a supplemental page table. This function is called when a process exits (process_exit() in userprog/process.c). You need to iterate through the page entries and call destroy(page) for the pages in the table. You do not need to worry about the actual page table (pml4) and the phys..
해결하려는 문제 #ifdef VM 블럭 아래에서 코딩을 해야 하는데, 해당 코드가 음영처리 된다. 아래와 같이 정의되어 있는 속성을 써도 빨간줄도 뜬다. #ifdef VM 안에서 정의된 함수들은 자동 완성이 안된다. 문제의 원인 Makefile가 돌아갈때는 알아서 설정되는 define 값들이 자동으로 설정된다. Makefile을 돌리기 전 코딩하는 상황에서는 VM이 define되지 않았기 때문에 아래와 같은 문제가 생긴다. 접근 그럼 VM을 define해주면 되지 않을까? 가장 먼저 생각나는 방법은 파일에 직접 #define VM을 해주는 방법이다. 실제로 잘 작동한다. 하지만 이 방법은 코드 자체를 조정하는 방법으로, VM을 끄고 싶을 때 해당 코드로 가서 일일히 꺼야 하는 단점이 있다. #define..
기존 mmap 코드 void * do_mmap (void *addr, size_t length, int writable, int fd, off_t ofs) { //에러 처리 void *va = pg_round_down(addr); if(length == 0 || addr == 0 || va != addr || fd == 0 || fd == 1){ return NULL; } struct file *file = thread_current()->fdt[fd]; //이 부분 off_t read_bytes = file_length(file); if(read_bytes 0) { /* Do calculate how to fill this page. * We will read PAGE_READ_BYTES bytes f..