+---------------------------+ | CS 3204 | | 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), or do you have a mechanism for "locking" pages into >> physical memory, or do you use some other design? 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 semesters. 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?