diff options
Diffstat (limited to 'proj2.txt')
| -rw-r--r-- | proj2.txt | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/proj2.txt b/proj2.txt new file mode 100644 index 0000000..5405336 --- /dev/null +++ b/proj2.txt | |||
| @@ -0,0 +1,137 @@ | |||
| 1 | +---------------------------+ | ||
| 2 | | ProgOS | | ||
| 3 | | PROJECT 2: VIRTUAL MEMORY | | ||
| 4 | | DESIGN DOCUMENT | | ||
| 5 | +---------------------------+ | ||
| 6 | |||
| 7 | ---- GROUP ---- | ||
| 8 | |||
| 9 | >> Fill in the names and email addresses of your group members. | ||
| 10 | |||
| 11 | Peter Ketscher <e9651415@mail.student.tuwien.ac.at> | ||
| 12 | Karoline Knoth <e0326266@student.tuwien.ac.at> | ||
| 13 | Manuel Mausz <manuel-uni@mausz.at> | ||
| 14 | |||
| 15 | ---- PRELIMINARIES ---- | ||
| 16 | |||
| 17 | >> If you have any preliminary comments on your submission, notes for the | ||
| 18 | >> TAs, or extra credit, please give them here. | ||
| 19 | |||
| 20 | >> Please cite any offline or online sources you consulted while | ||
| 21 | >> preparing your submission, other than the Pintos documentation, course | ||
| 22 | >> text, lecture notes, and course staff. | ||
| 23 | |||
| 24 | PAGE TABLE MANAGEMENT | ||
| 25 | ===================== | ||
| 26 | ---- DATA STRUCTURES ---- | ||
| 27 | |||
| 28 | >> A1: Copy here the declaration of each new or changed `struct' or | ||
| 29 | >> `struct' member, global or static variable, `typedef', or | ||
| 30 | >> enumeration. Identify the purpose of each in 25 words or less. | ||
| 31 | |||
| 32 | struct thread: | ||
| 33 | struct hash page_table ...page table of thread | ||
| 34 | |||
| 35 | struct page_table_entry: | ||
| 36 | void *upage ...virtual address of page | ||
| 37 | bool loaded ...indicates if page is loaded | ||
| 38 | enum type ...type of page | ||
| 39 | union struct segment ...structure needed for lazy loading of data segments | ||
| 40 | struct hash_elem elem ...Hash element. | ||
| 41 | |||
| 42 | ---- IMPLEMENTATION ---- | ||
| 43 | >> A2: Describe how you implemented lazy page loading. How do you | ||
| 44 | >> determine the file and file offset corresponding to a virtual | ||
| 45 | >> address? | ||
| 46 | |||
| 47 | TODO | ||
| 48 | |||
| 49 | ---- SYNCHRONIZATION ---- | ||
| 50 | >> A3: How do you deal with or prevent page faults in file system | ||
| 51 | >> routines. Argue why your solution is deadlock free. | ||
| 52 | |||
| 53 | TODO | ||
| 54 | |||
| 55 | STACK GROWTH | ||
| 56 | ============ | ||
| 57 | |||
| 58 | ---- DATA STRUCTURES ---- | ||
| 59 | |||
| 60 | >> B1: Copy here the declaration of each new or changed `struct' or | ||
| 61 | >> `struct' member, global or static variable, `typedef', or | ||
| 62 | >> enumeration. Identify the purpose of each in 25 words or less. | ||
| 63 | |||
| 64 | extern void *syscall_sp ...stored stack pointer for the "page fault inside | ||
| 65 | syscall/kernel"-case | ||
| 66 | |||
| 67 | ---- IMPLEMENTATION ---- | ||
| 68 | >> B2: Describe how you integrated the (potentially growing) stack segment | ||
| 69 | >> into your page table management implementation. | ||
| 70 | |||
| 71 | TODO | ||
| 72 | |||
| 73 | ---- ALGORITHMS ---- | ||
| 74 | >> B3: Explain how you detect a page fault which should trigger a | ||
| 75 | >> stack growth. What asssumptions are needed for your implementation | ||
| 76 | >> to work? | ||
| 77 | |||
| 78 | TODO | ||
| 79 | |||
| 80 | MEMORY MAPPED FILES | ||
| 81 | =================== | ||
| 82 | |||
| 83 | ---- DATA STRUCTURES ---- | ||
| 84 | |||
| 85 | >> C1: Copy here the declaration of each new or changed `struct' or | ||
| 86 | >> `struct' member, global or static variable, `typedef', or | ||
| 87 | >> enumeration. Identify the purpose of each in 25 words or less. | ||
| 88 | |||
| 89 | struct page_table_entry: | ||
| 90 | union struct TODO ...structure needed for loading of memory mapped files | ||
| 91 | |||
| 92 | ---- ALGORITHMS ---- | ||
| 93 | |||
| 94 | >> C2: Describe how memory mapped files integrate into your virtual | ||
| 95 | >> memory subsystem. | ||
| 96 | |||
| 97 | TODO | ||
| 98 | |||
| 99 | >> C3: Explain how you determine whether a new file mapping overlaps | ||
| 100 | >> any existing segment. | ||
| 101 | |||
| 102 | TODO | ||
| 103 | |||
| 104 | ---- RATIONALE ---- | ||
| 105 | |||
| 106 | >> C4: Mappings created with "mmap" have similar semantics to those of | ||
| 107 | >> data demand-paged from executables, except that "mmap" mappings are | ||
| 108 | >> written back to their original files, not to swap. This implies | ||
| 109 | >> that much of their implementation can be shared. Explain why your | ||
| 110 | >> implementation either does or does not share much of the code for | ||
| 111 | >> the two situations. | ||
| 112 | |||
| 113 | TODO | ||
| 114 | |||
| 115 | SURVEY QUESTIONS | ||
| 116 | ================ | ||
| 117 | |||
| 118 | Answering these questions is optional, but it will help us improve the | ||
| 119 | course in future quarters. Feel free to tell us anything you | ||
| 120 | want--these questions are just to spur your thoughts. You may also | ||
| 121 | choose to respond anonymously in the course evaluations at the end of | ||
| 122 | the quarter. | ||
| 123 | |||
| 124 | >> In your opinion, was this assignment, or any one of the three problems | ||
| 125 | >> in it, too easy or too hard? Did it take too long or too little time? | ||
| 126 | |||
| 127 | >> Did you find that working on a particular part of the assignment gave | ||
| 128 | >> you greater insight into some aspect of OS design? | ||
| 129 | |||
| 130 | >> Is there some particular fact or hint we should give students in | ||
| 131 | >> future quarters to help them solve the problems? Conversely, did you | ||
| 132 | >> find any of our guidance to be misleading? | ||
| 133 | |||
| 134 | >> Do you have any suggestions for the TAs to more effectively assist | ||
| 135 | >> students, either for future quarters or the remaining projects? | ||
| 136 | |||
| 137 | >> Any other comments? | ||
