08585b56f60ccd268bec98b1088b90cf81c0d723
[pintos-anon] / grading / threads / review.txt
1 TESTCASES [[/10]]
2 -----------------
3   -2 Problem 1-1: no test cases/no test output/no description in TESTCASES
4   -1 Problem 1-1: not enough testing/inconclusive test output
5   -2 Problem 1-2: no test cases/no test output/no description in TESTCASES
6   -1 Problem 1-2: not enough testing/inconclusive test output
7   -2 Problem 1-3: no test cases/no test output/no description in TESTCASES
8   -1 Problem 1-3: not enough testing/inconclusive test output
9   -2 Problem 1-4: no test cases/no test output/no description in TESTCASES
10   -1 Problem 1-4: not enough testing/inconclusive test output
11
12
13 DESIGN [[/40]]
14 --------------
15
16  -20 Missing or far too brief DESIGNDOC
17   -2 Changing interfaces, each (max -6)
18
19 DESIGNDOC (per problem):
20   -1 Minor details missing
21   -2 Major details missing
22   -5 Totally missing
23
24 Overall:
25   -1 Gratuitous use of malloc() (e.g. for allocating a list or a lock)
26   -1 Inappropriate use of ASSERT (e.g. to verify that malloc() succeeded)
27
28 Problem 1-1: Alarm Clock
29   -1 Uses lock/interrupt disabling without justifying
30   -1 Uses a lock within interrupt handler
31   -3 Busy waiting
32   -2 Wakes up too often, e.g. by using semaphores with negative values
33   -1 Traverses entire list of sleeping threads every tick
34   -1 Doesn't protect data structure in timer_interrupt
35   -1 Doesn't protect data structure in timer_sleep
36   -3 Bad design
37
38 Problem 1-2: Join
39   -3 Busy waiting in thread finish when waiting on the parent's join
40   -3 A static list of all parent-child pairs is extremely wasteful
41   -3 Obviously wasteful with memory (not deleting threads)
42   -2 Finished parent deletes children which may still be running
43   -1 Enable/disable interrupts
44   -2 Joinable child lets its struct thread be deleted before parent dies
45   -1 Race condition between join and thread exit
46
47 Problem 1-3: Priority Scheduler
48   -3 Doesn't use sorted queue scheduler, and don't justify why they didn't
49   -2 sema_up() doesn't pick highest-priority waiting thread
50   -1 Should use sorted queue in semaphores, unless explained in DESIGNDOC
51   -1 cond_signal() doesn't pick highest-priority waiting thread
52   -1 Should use sorted queue in conditions, unless explained in DESIGNDOC
53   -2 Yield should pick the highest-priority thread (including current)
54   -3 Bad design
55   +2 Used a heap or other advanced priority queue for ready_list
56
57 Problem 1-4: Advanced Scheduler
58   -2 Isn't table-driven
59   -5 Bad design
60
61
62 STYLE [[/10]]
63 -------------
64   -1 No attempt to conform to existing coding style
65
66
67 COMMENTS
68 --------