X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Fvm.tmpl;fp=doc%2Fvm.tmpl;h=ea7349a67870fae46461ff774abc1d297bb7b57f;hb=615bf3b3d2a8573ed6fb9ddc0055745e163ac999;hp=0000000000000000000000000000000000000000;hpb=5780c9f434cca090f88463b7f0199d49b4ded288;p=pintos-anon diff --git a/doc/vm.tmpl b/doc/vm.tmpl new file mode 100644 index 0000000..ea7349a --- /dev/null +++ b/doc/vm.tmpl @@ -0,0 +1,148 @@ + +---------------------------+ + | CS 140 | + | PROJECT 3: VIRTUAL MEMORY | + | DESIGN DOCUMENT | + +---------------------------+ + +---- GROUP ---- + +>> Fill in the names and email addresses of your group members. + +FirstName LastName +FirstName LastName +FirstName LastName + +---- PRELIMINARIES ---- + +>> If you have any preliminary comments on your submission, notes for the +>> TAs, or extra credit, please give them here. + +>> Please cite any offline or online sources you consulted while +>> preparing your submission, other than the Pintos documentation, course +>> text, and lecture notes. + + PAGE TABLE MANAGEMENT + ===================== + +---- DATA STRUCTURES ---- + +>> Copy here the declaration of each new or changed `struct' or `struct' +>> member, global or static variable, `typedef', or enumeration. +>> Identify the purpose of each in 25 words or less. + +---- ALGORITHMS ---- + +>> Describe your code for locating the physical page, if any, that +>> contains the data of a given virtual page. + +>> How does your code coordinate accessed and dirty bits between kernel +>> and user virtual addresses that alias a single physical page, 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? + +---- RATIONALE ---- + +>> Why did you choose the data structure(s) that you did for representing +>> virtual-to-physical mappings? + + PAGING TO AND FROM DISK + ======================= + +---- DATA STRUCTURES ---- + +>> Copy here the declaration of each new or changed `struct' or `struct' +>> member, global or static variable, `typedef', or enumeration. +>> Identify the purpose of each in 25 words or less. + +---- 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. + +>> Explain your heuristic for deciding whether a page fault for an +>> invalid virtual address should cause the stack to be extended into the +>> page that faulted. + +---- SYNCHRONIZATION ---- + +>> Explain the basics of your VM synchronization design. In particular, +>> 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 +>> during the eviction process? How do you avoid a race between P +>> evicting Q's page 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? + +>> 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? + +---- RATIONALE ---- + +>> A single lock for the whole VM system would make synchronization easy, +>> but limit parallelism. On the other hand, using many locks +>> complicates synchronization and raises the possibility for deadlock +>> but allows for high parallelism. Explain where your design falls +>> along this continuum and why you chose to design it this way. + + MEMORY MAPPED FILES + =================== + +---- DATA STRUCTURES ---- + +>> Copy here the declaration of each new or changed `struct' or `struct' +>> member, global or static variable, `typedef', or enumeration. +>> Identify the purpose of each in 25 words or less. + +---- ALGORITHMS ---- + +>> 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. + +>> Explain how you determine whether a new file mapping overlaps any +>> existing segment. + +---- RATIONALE ---- + +>> Mappings created with "mmap" have similar semantics to those of data +>> demand-paged from executables, except that "mmap" mappings are written +>> back to their original files, not to swap. This implies that much of +>> their implementation can be shared. Explain why your implementation +>> either does or does not share much of the code for the two situations. + + SURVEY QUESTIONS + ================ + +Answering these questions is optional, but it will help us improve the +course in future quarters. Feel free to tell us anything you +want--these questions are just to spur your thoughts. You may also +choose to respond anonymously in the course evaluations at the end of +the quarter. + +>> In your opinion, was this assignment, or any one of the three problems +>> in it, too easy or too hard? Did it take too long or too little time? + +>> Did you find that working on a particular part of the assignment gave +>> you greater insight into some aspect of OS design? + +>> Is there some particular fact or hint we should give students in +>> future quarters to help them solve the problems? Conversely, did you +>> find any of our guidance to be misleading? + +>> Do you have any suggestions for the TAs to more effectively assist +>> students, either for future quarters or the remaining projects? + +>> Any other comments?