f2764a94e9af89de1f405f180d91f0e51d985a70
[pintos-anon] / ta-advice / hw2.txt
1 HW2 DESIGN SUMMARY
2 ==================
3
4 OVERALL
5
6   DOCUMENTATION
7     -20 Egregious violation of style versus design document example
8     -10 Numerous excessively long lines (> 79 characters)
9     -10 Numerous capitalization, punctuation, spelling, or grammar errors
10
11   DESIGN
12     -10 Failure to check return value of malloc()
13     -10 Use of ASSERT to check something that can actually fail, e.g. malloc()
14
15   CODING STYLE
16     -10 Inconsistent or bad coding style: no indentation, cramming
17         many statements into one line, other issues at TA's discretion
18     -10 Numerous very long source code lines (> 100 characters)
19     -10 Commented-out or #if'd out code makes real code hard to read
20     -10 Many missing comments on structure, structure members, 
21         global or static variables, or function definitions
22     -10 Function(s) should be decomposed for clarity [indicate function]
23     -10 Cut-and-pasted code should be made into function [indicate where]
24     -10 Uninformative or deceptive identifiers
25
26 Subtotal: /10 (not capped)
27
28 PROBLEM 1: ARGUMENT PASSING
29
30   DOCUMENTATION
31     -30 Grossly inaccurate: documentation has no resemblance to code
32     -15 Important inaccuracies: documentation and code differ significantly
33         [indicate how]
34      -5 Minor inaccuracies: documentation and code differ [indicate how]
35      -5 A1: Missing entirely/missing comments or purpose/too long
36     -10 A2: Missing/non-responsive/too long/too short
37     -10 A3: Missing/non-responsive/too long/too short
38     -10 A3: Claims that strtok_r() does not modify the string it parses
39     -10 A3: Claims that strtok() uses a static buffer for parsing
40     -10 A4: Missing/non-responsive/too long/too short
41      -5 A4: Claims time or space advantage for user-space parsing
42      -5 A4: Claims that the shell implements relative paths
43      -5 A4: Claims that user space parsing reduces context switches
44      -5 A4: Claims that the shell enforces security policy
45  
46   DESIGN
47     -30 Not implemented
48     -10 Uses global variables, locks, etc.
49     -15 Doesn't check for stack overflow
50     -10 Assumes any command line under N bytes long will fit in a page
51         [change N to the value assumed, where N >= 1,366]
52     -10 Assumes that the command line is capped at 128 bytes
53      -1 Assumes that individual strings must be word-aligned for performance
54     -10 Argument passing code is difficult to read or poorly abstracted
55
56 Subtotal: /30 (capped at 0)
57
58 PROBLEM 2: SYSTEM CALLS
59
60   DOCUMENTATION
61     -60 Grossly inaccurate: documentation has no resemblance to code
62     -30 Important inaccuracies: documentation and code differ significantly
63         [indicate how]
64     -10 Minor inaccuracies: documentation and code differ [indicate how]
65     -10 B1: Missing entirely/missing comments or purpose/too long
66      -1 B1: Omitted global file system synchronization
67      -3 B1: Omitted data for tracking file descriptors
68      -3 B1: Omitted data for "wait" system call
69      -3 B1: Omitted data for "exec" to wait for process loading to complete
70      -6 B2: Missing/non-responsive/too long/too short
71      -2 B2: Claims that Pintos has stderr file descriptor
72      -6 B3: Missing/non-responsive/too long/too short
73      -3 B3: Claims that struct intr_frame's eax member is on user stack
74      -6 B4: Missing/non-responsive/too long/too short
75      -6 B4: Inspects page table for every byte accessed
76      -6 B4: Inspects page table for each N-byte block (N <= 1,024)
77      -6 B4: Can miss inspection for some pages in a block
78      -6 B4: Claims that each byte in 4 kB can be on separate page
79      -6 B4: Wrong answer for "ideal" case
80     -12 B5+B8: Missing/non-responsive/too long/too short
81      -3 B5+B8: "wait" or "exit" disables interrupts
82      -3 B5+B8: "wait" or "exit" calls thread_block() (use semaphores instead)
83      -3 B5+B8: "wait" or "exit" uses global lock or semaphore
84      -3 B5+B8: "wait" always returns -1 if child has already exited
85      -3 B5+B8: "wait" or "exit" searches a global list of all processes
86      -6 B5+B8: "wait" or "exit" has race condition [which]
87      -6 B6: Missing/non-responsive/too long/too short
88      -6 B7: Missing/non-responsive/too long/too short
89      -3 B7: Calls thread_block() directly (use semaphores instead)
90      -3 B7: Success flag in child struct thread needs too much synchronization
91      -6 B9: Missing/non-responsive/too long/too short
92      -6 B10: Missing/non-responsive/too long/too short
93      -6 B11: Missing/non-responsive/too long/too short
94      -6 B11: Claims that Pintos supports multi-threaded processes
95
96   DESIGN
97     -60 Not implemented
98      -5 Global counter for file descriptors lacks synchronization
99     -10 Global table of file descriptors lacks synchronization
100      -5 Global table allows multiple processes to access same file descriptor
101      -5 Added big array (>= 512 bytes) to struct thread without justifying
102     -10 Added big array (>= 1024 bytes) to struct thread
103      -5 Superfluous locking on per-thread data structure [which]
104     -10 System call handler is poorly abstracted or unreadable
105      -5 Failed to update comment on process_wait() function after implementing
106      -5 "open" system call fails to release all resources in error cases
107
108 Subtotal: /60 (capped at 0)