How to debug user programs with gdb.
[pintos-anon] / TODO
1 -*- text -*-
2
3 * Test pintos with GSX.
4
5 * Get rid of warnings for NDEBUG build.
6
7 * Need targets for checking single tests or single subdirs
8
9   - `make check' should say how to get more information
10
11   - `make recheck', `make clean-check'
12
13 * Need to put time limits on tests.
14
15 * Add a way for students to prints messages ignored by the autograder.
16
17   - Ignore text between /* and */.
18
19   - Allow for a comment on `exit' lines?
20
21 * Improve automatic interpretation of exception messages.
22
23 * Remove names from synchronization primitives?  They don't seem
24   useful in practice.
25
26 * debug_backtrace() in kernel should only dereference valid pointers.
27
28 * Mention how to use add-symbol-file in gdb.
29
30 * We need better and more example programs.
31
32   - Need an mmap example program as a replacement for the crappy mmap FAQ
33     question.
34
35   - How about `diff' and `cmp' programs?
36
37 * Threads:
38
39   - mlfqs tests suck.  They aren't even correct, e.g. the amarv
40     submission from win0405 is graded incorrectly.
41
42 * Userprog project:
43
44   - Don't emphasize that stuff needs to be copied from user space to
45     kernel space.  Instead, emphasize validation and suggest that
46     copying is a common solution and that it will be necessary in
47     project 3 and in real OSes.  Also revise the grading criteria to
48     match.
49
50   - Mark read-only pages as actually read-only in the page table.  Or,
51     since this was consistently rated as the easiest project by the
52     students, require them to do it.
53
54   - Don't provide per-process pagedir implementation but only
55     single-process implementation and require students to implement
56     the separation?  This project was rated as the easiest after all.
57     Alternately we could just remove the synchronization on pid
58     selection and check that students fix it.
59
60 * VM project:
61
62   - Discuss the perils of mixing dirty bits between kernel and user virtual
63     memory.
64
65   - Sample solution.
66
67   - Update grading/vm to reflect new mmap, munmap forms.
68
69 * Filesys project:
70
71   - Increase maximum disk size from 8 MB to something that actually
72     requires doubly indirect nodes.  There is a negative pressure here
73     from the bitmap object--perhaps we need a specialized bitmap that
74     doesn't have to be all in-memory at once.
75
76     Alternatively, shrink the inode size.
77
78   - Add option to disable buffer cache.
79
80   - Sample solution.
81
82   - Need a better way to measure performance improvement of buffer
83     cache.  Some students reported that their system was slower with
84     cache--likely, Bochs doesn't simulate a disk with a realistic
85     speed.
86
87   - Clarify effect of remove(cwd).
88
89 * Documentation:
90
91   - Finish writing tour.
92
93   - Add "Digging Deeper" sections that describe the nitty-gritty x86
94     details for the benefit of those interested.
95
96   - Add explanations of what "real" OSes do to give students some
97     perspective.
98
99   - GNU make 3.80 or later is required.
100
101 * Assignments:
102
103   - Add extra credit:
104
105     . Low-level x86 stuff, like paged page tables.
106
107     . Specifics on how to implement sbrk, malloc.
108
109     . Other good ideas.
110
111     . opendir/readdir/closedir
112
113     . everything needed for getcwd()
114
115 * Tests:
116
117   - Release some of them.
118
119   - The threads, userprog, vm test source files could use
120     factorization and cleanup along the lines of fslib in the filesys
121     tests.
122
123   - The p1-4.c testcase needs significant tuning.  Currently it takes
124     too long (especially when SHOW_PROGRESS is turned on) and doesn't
125     show significant improvement.
126
127 * Code:
128
129   - Need an optimization barrier and an explanation of it in the
130     documentation.
131
132   - Need to check the wait system call more thoroughly.