Work on userprog tests.
[pintos-anon] / grading / userprog / review.txt
1 Design (/120 points)
2 --------------------
3
4 a) DESIGNDOC (/60 pts)
5     a) Arg passing                                          (/10)
6     b) System calls                                         (/20)
7          Didn't discuss global vs local allocation of fileID's
8          How to handle exceptions & why (ie killing processes
9            that do bad things)
10          Explaining choice of openFileID's & ASIDS
11     c) Multiprogramming                                     (/30)
12          How to find a free page.
13          Explaining how new processes are executed.
14          How they deal with running out of memory error on loading.
15
16 b) Other Design (/60 pts)
17
18    1. Argument passing
19       No checking for page boundaries in argument passing               -10
20       Uses memcpy/bcopy/memmove or file reading/writing for             +5
21         copying up to/starting from page boundaries -- good job!
22         (Search for memcpy/bcopy, not just extern, make sure they call it
23         with the possibility of copying more than 4 bytes at a time. ALSO if
24         they do File Read/Writes then that is not byte-by-byte but they will
25         fail page crossing only take off for failing the pagecrossing test.)
26       Don't decomp / reuse translation code                             -5
27       Using strtok instead of strtok_r or strsep                        -1
28         (strtok is not thread-safe)
29
30    2. System calls
31       No checking for page boundaries in system calls                   -20
32         (-5 if they only forgot for some system calls but did it somewhere)
33       Interrupts turned off for all system calls                        -10
34       Doesn't close open files after process exits                      -2
35       table/when file is closed, it is not removed from file table
36       Uses printf/fscanf/putc/getc when interacting                     -5
37         with StandardInput / StandardOutput
38       Using fixed length buffer for Read/Write                          -5
39       Using pointer to int casts as ASID/FileId without justifying      -5
40
41    3. Multiprogramming
42       Don't use the bitmap object                                       -5
43       Bitmap is not cleared when process dies                           -5
44       Access to bitmap is not sychronized                               -5
45       getting next ASID is not synchronized                             -5
46         ...or (mututally exclusive, depending on their solution)...
47       Doesn't use ASID's at all, but their system for identifying       -5
48         processes has synchronization or uniqueness problems (e.g. 
49         careless use of AddrSpace*'s)
50       Multiple translations for a page                                  -10
51         (One vaddr maps to two paddr's, or vice versa)
52
53 Style (/30 points)
54 ------------------
55 0) Had to modify code to get to compile the first                       -10
56    time
57 1) Minor changes to machine code                                        -10
58 2) Extraneous output                                                    -5
59 3) Unexplained dependencies                                             -5
60 4) Not Decomposing Exception handler                                    -5
61
62 TESTCASEs (/30 points)
63 ----------------------
64     Don't write own testcases                                           -15
65     Not sufficient testing                                        up to -10