X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Fvm.tmpl;h=aef4fb8b9a0ac5b73d4fbfd4fa33b284d8333ea7;hb=2e9f1eca8738a888033e4be9f661da9734e130e9;hp=ea7349a67870fae46461ff774abc1d297bb7b57f;hpb=615bf3b3d2a8573ed6fb9ddc0055745e163ac999;p=pintos-anon diff --git a/doc/vm.tmpl b/doc/vm.tmpl index ea7349a..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,9 +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 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 @@ -74,20 +77,21 @@ 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), do you have a mechanism for "locking" pages into physical ->> memory, etc.? How do you gracefully handle attempted accesses to ->> invalid virtual addresses? +>> 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? ---- RATIONALE ---- @@ -110,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.