X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=doc%2Fvm.tmpl;h=aef4fb8b9a0ac5b73d4fbfd4fa33b284d8333ea7;hb=f415a37905c57f61b444806bf84f5405184452aa;hp=85e9d837967bcd8e7f382e48a354acce3d10009e;hpb=fa97205f611b922b85299e79edba9a0bbbe3cfb2;p=pintos-anon diff --git a/doc/vm.tmpl b/doc/vm.tmpl index 85e9d83..aef4fb8 100644 --- a/doc/vm.tmpl +++ b/doc/vm.tmpl @@ -32,17 +32,17 @@ FirstName LastName ---- ALGORITHMS ---- ->> Describe your code for locating the physical page, if any, that ->> contains the data of a given virtual page. +>> Describe your code for locating the frame, if any, that contains +>> the data of a given page. ->> How does your code coordinate accessed and dirty bits between kernel ->> and user virtual addresses that alias a single physical page, or +>> How does your code coordinate accessed and dirty bits between +>> kernel and user virtual addresses that alias a single frame, or >> alternatively how do you avoid the issue? ---- SYNCHRONIZATION ---- ->> When two user processes both need a new page frame at the same time, ->> how are races avoided? +>> When two user processes both need a new frame at the same time, how +>> are races avoided? ---- RATIONALE ---- @@ -60,13 +60,12 @@ FirstName LastName ---- ALGORITHMS ---- ->> When a physical page frame is required but none is free, some page ->> frame must be evicted. Describe your code for choosing a frame to ->> evict. +>> When a frame is required but none is free, some frame must be +>> evicted. Describe your code for choosing a frame to evict. ->> When a process P obtains a physical frame that was previously used ->> by a process Q, how do you adjust the page table (and any other ->> data structures) to reflect the physical frame Q no longer has? +>> When a process P obtains a frame that was previously used by a +>> process Q, how do you adjust the page table (and any other data +>> structures) to reflect the frame Q no longer has? >> Explain your heuristic for deciding whether a page fault for an >> invalid virtual address should cause the stack to be extended into the @@ -78,18 +77,19 @@ FirstName LastName >> explain how it prevents deadlock. (Refer to the textbook for an >> explanation of the necessary conditions for deadlock.) ->> A page fault in process P can cause another process Q's page frame to ->> be evicted. How do you ensure that Q cannot access or modify the page +>> A page fault in process P can cause another process Q's frame to be +>> evicted. How do you ensure that Q cannot access or modify the page >> during the eviction process? How do you avoid a race between P ->> evicting Q's page frame and Q faulting the page back in? +>> evicting Q's frame and Q faulting the page back in? ->> Suppose a page fault in process P causes a page to be read from disk. ->> How do you ensure that a second process Q cannot interfere by e.g. ->> attempting to evict the page while it is still being read in? +>> Suppose a page fault in process P causes a page to be read from the +>> file system or swap. How do you ensure that a second process Q +>> cannot interfere by e.g. attempting to evict the frame while it is +>> still being read in? >> Explain how you handle access to paged-out pages that occur during >> system calls. Do you use page faults to bring in pages (as in user ->> programs), or do you have a mechanism for "locking" pages into +>> programs), or do you have a mechanism for "locking" frames into >> physical memory, or do you use some other design? How do you >> gracefully handle attempted accesses to invalid virtual addresses? @@ -114,7 +114,7 @@ FirstName LastName >> Describe how memory mapped files integrate into your virtual memory >> subsystem. Explain how the page fault and eviction processes differ ->> for swap pages and other pages. +>> between swap pages and other pages. >> Explain how you determine whether a new file mapping overlaps any >> existing segment.