HW3 DESIGN SUMMARY ================== OVERALL DOCUMENTATION -20 Egregious violation of style versus design document example -10 Numerous excessively long lines (> 79 characters) -10 Numerous capitalization, punctuation, spelling, or grammar errors DESIGN -10 Failure to check return value of malloc() -10 Use of ASSERT to check something that can actually fail, e.g. malloc() -6 First race condition [specify where] -3 For each additional race conditiona [specify where] CODING STYLE -10 Inconsistent or bad coding style: no indentation, cramming many statements into one line, other issues at TA's discretion -10 Numerous very long source code lines (> 100 characters) -10 Commented-out or #if'd out code makes real code hard to read -10 Many missing comments on structure, structure members, global or static variables, or function definitions -10 Function(s) should be decomposed for clarity [indicate function] -10 Cut-and-pasted code should be made into function [indicate where] -10 Uninformative or deceptive identifiers Total deductions (capped at -40): XXX PROBLEM 1: PAGE TABLE MANAGEMENT DOCUMENTATION -16 Grossly inaccurate: documentation has no resemblance to code -8 Important inaccuracies: documentation and code differ significantly [indicate how] -4 Minor inaccuracies: documentation and code differ [indicate how] -4 A1: Missing entirely/missing comments or purpose/too long -4 A2: Missing/non-responsive/too long/too short -4 A3: Missing/non-responsive/too long/too short -4 A3: Sharing implemented, but no explanation of how accessed and dirty bits are coordinated -4 A3: Sharing not implemented, but explanation states or implies that a page can have multiple aliases -4 A4: Missing/non-responsive/too long/too short -4 A5: Missing/non-responsive/too long/too short DESIGN -25 Not implemented -10 Page dirty status must be determined accurately, not approximately -10 SPT implemented with a list (per page) -10 Per-process supplementary page table not protected Total deductions (capped at -25): XXX PROBLEM 2: PAGING TO AND FROM DISK DOCUMENTATION -30 Grossly inaccurate: documentation has no resemblance to code -15 Important inaccuracies: documentation and code differ significantly [indicate how] -8 Minor inaccuracies: documentation and code differ [indicate how] -5 B1: Missing entirely/missing comments or purpose/too long -5 B2: Missing/non-responsive/too long/too short -5 B3: Missing/non-responsive/too long/too short -5 B4: Missing/non-responsive/too long/too short -5 B4: Heuristic does not make sense -2 B4: Claim that "struct intr_frame" is on user stack -2 B4: Forgot to mention stack limit heuristic -5 B5: Missing/non-responsive/too long/too short -5 B5: Claim that deadlock is "rare" or has a "short" window -5 B6: Missing/non-responsive/too long/too short -3 B6: Didn't answer first part of question -3 B6: Didn't answer second part of question -3 B5: Disables interrupts -5 B7: Missing/non-responsive/too long/too short -5 B8: Missing/non-responsive/too long/too short -3 B8: When pre-locking of pages is used, no discussion of deadlock prevention -3 B8: When global eviction lock is used, no discussion of how pages are brought into main memory -5 B9: Missing/non-responsive/too long/too short DESIGN -45 Not implemented -5 Clock algorithm implementation literally uses a timer -10 Clock algorithm implementation resets dirty bits -5 Eagerly writes dirty pages to disk when running clock algorithm -5 Stack fault heuristic allows more than 32 bytes below stack pointer -3 Stack limit is smaller than 1 MB -20 Globally locked and all page faults serialized -10 Holds per process single SPT lock during the entire length of I/O -5 Does not clear the swap slot after bringing the page back in memory. (Could potentially run out of swap slots) Total deductions (capped at -45): XXX PROBLEM 3: MEMORY-MAPPED FILES DOCUMENTATION -12 Grossly inaccurate: documentation has no resemblance to code -6 Important inaccuracies: documentation and code differ significantly [indicate how] -3 Minor inaccuracies: documentation and code differ [indicate how] -3 C1: Missing entirely/missing comments or purpose/too long -3 C2: Missing/non-responsive/too long/too short -3 C3: Missing/non-responsive/too long/too short -3 C3: No mention of stack expansion -2 C3: Claim that memory mappings in different processes can "overlap" -3 C4: Missing/non-responsive/too long/too short DESIGN -20 Not implemented -5 Pre-reserves or permanently assigning file pages to frames -5 Pre-reserves or permanently assigning file pages to swap slots -5 Global counter for mapid_t lacks synchronization -5 Global table of file mappings lacks synchronization -5 Global table allows multiple processes to access same file mapping -5 Superfluous locking on per-thread data structure [which] -5 Fails to release resources in normal / failure case [specify where] Total deductions (capped at -20): XXX