-*- text -*-
-* Code:
+* The tests in tests/ don't apply the grading patches.
+
+* We need better and more example programs.
+
+ - Need an mmap example program as a replacement for the crappy mmap FAQ
+ question.
+
+ - How about `diff' and `cmp' programs?
+
+* Threads:
+
+ - mlfqs tests suck. They aren't even correct, e.g. the amarv
+ submission from win0405 is graded incorrectly.
+
+* Userprog project:
+
+ - Don't emphasize that stuff needs to be copied from user space to
+ kernel space. Instead, emphasize validation and suggest that
+ copying is a common solution and that it will be necessary in
+ project 3 and in real OSes. Also revise the grading criteria to
+ match.
+
+ - Mark read-only pages as actually read-only in the page table. Or,
+ since this was consistently rated as the easiest project by the
+ students, require them to do it.
+
+ - Don't provide per-process pagedir implementation but only
+ single-process implementation and require students to implement
+ the separation? This project was rated as the easiest after all.
+ Alternately we could just remove the synchronization on pid
+ selection and check that students fix it.
+
+* VM project:
+
+ - Discuss the perils of mixing dirty bits between kernel and user virtual
+ memory.
+
+ - Sample solution.
+
+ - Update grading/vm to reflect new mmap, munmap forms.
- - Speed up disk routines: filling an 8 MB disk takes a long time.
- (They're only slow because timer_sleep always waits for at least
- one timer tick.)
+* Filesys project:
- - userprog project should mark read-only pages as actually read-only
- in the page table. Or, since this was consistently rated as the
- easiest project by the students, require them to do it.
+ - Increase maximum disk size from 8 MB to something that actually
+ requires doubly indirect nodes. There is a negative pressure here
+ from the bitmap object--perhaps we need a specialized bitmap that
+ doesn't have to be all in-memory at once.
- - For userprog project, don't provide per-process pagedir
- implementation but only single-process implementation and require
- students to implement the separation? This project was rated as
- the easiest after all. Alternately we could just remove the
- synchronization on pid selection and check that students fix it.
+ Alternatively, shrink the inode size.
+
+ - Add mkdir and ls example user programs.
+
+ - Add option to disable buffer cache.
+
+ - Get rid of "dump" commands--they're not really useful.
+
+ - Sample solution.
+
+ - Need a better way to measure performance improvement of buffer
+ cache. Some students reported that their system was slower with
+ cache--likely, Bochs doesn't simulate a disk with a realistic
+ speed.
+
+ - Clarify effect of remove(cwd).
* Documentation:
. Low-level x86 stuff, like paged page tables.
+ . Specifics on how to implement sbrk, malloc.
+
. Other good ideas.
- - The semantics of the join system call should change so that it
- only returns the exit code once.
+ . opendir/readdir/closedir
- - mmap/munmap should use segment IDs like Nachos. Too hard
- otherwise.
+ . everything needed for getcwd()
- Add src/testcases/vm, src/testcases/filesys and make it clear to use
them?
too long (especially when SHOW_PROGRESS is turned on) and doesn't
show significant improvement.
+* Code:
+
+ - Make threads test use a program and arguments like the other
+ projects.
+
+ - Revise command-line arguments for sensibility instead of for
+ Nachos compatibility.
+
+ - Get rid of all compile-time flags, e.g. MLFQS should be a runtime
+ command-line option.
+
+ - Need an optimization barrier and an explanation of it in the
+ documentation.
+
+ - Need to check the wait system call more thoroughly.
+
+ - Library is not precisely standard, e.g. ptrdiff_t should not be
+ defined by stdlib.h.