diff --git a/src/userprog/process.c b/src/userprog/process.c index 9ef5282..dbfc8c2 100644 --- a/src/userprog/process.c +++ b/src/userprog/process.c @@ -811,6 +811,7 @@ get_usr_kpage (enum palloc_flags flags, void *upage) return NULL; else page = frame_alloc (flags, upage, t); + pagedir_set_accessed (t->pagedir, upage, true); #else page = palloc_get_page (flags | PAL_USER); #endif diff --git a/src/vm/page.c b/src/vm/page.c index 79c176f..a1c0349 100644 --- a/src/vm/page.c +++ b/src/vm/page.c @@ -77,7 +77,9 @@ page_load (struct page_entry *page, bool writable) /* Allocate a frame for the page. If a frame allocation fails, then frame_alloc should try to evict a page. If it is still NULL, the OS panics as this should not happen if eviction is working correctly. */ - void *frame = frame_alloc (0, page->upage, thread_current ()); + struct thread *t = thread_current (); + void *frame = frame_alloc (0, page->upage, t); + pagedir_set_accessed (t->pagedir, page->upage, true); if (frame == NULL) PANIC ("Could not allocate a frame to load page into memory.");