5 - Suggest where to start in each assignment?
11 - Many students thought this was by far the hardest. What can we do
12 to make it a little easier?
14 Move `join' part to project 2?
16 - Students don't understand that they'll need to read lots of code
17 before they can start writing.
19 - Students don't read the debugging documentation. Point out in
20 multiple places, and especially point to the backtrace
23 - Students think data structures are more important than they really
24 are. Say that clever data structures won't get you too much extra
25 credit compared to simpler ones. Really bad or "stupid" data
26 structures might cost points though.
28 - Some students would appreciate more discussion of nitty-gritty
31 Finally, by doing pintos, an x86 OS, I was hoping to gain some
32 knowledge about how an X86 OS really works. Instead we ended up
33 banging on a black box with magical ASM that would pop up in gdb
34 when we had memory corruption. While one could make the argument
35 that this is too much application over theory, I feel like the
36 theory of OS/140 is application oriented enough that going over
37 what an x86 OS really does would not be harmful or
38 unacademic. What's in those first few bytes to bootstrap the OS?
39 How does it find a kernel that is scattered across a filesystem
40 that the bootloader/computer knows nothing about. How does I/O
41 initiailization works? What is that magic about transforming a
42 thread into a process? I have absolutely no idea.
44 This feeling of not having a better grasp of OS/low-level
45 programming is something I can't shake, but that I'm not sure how
46 one would be rectified. How on earth did pintos get written in ~2
47 months? I'm again at a loss.
49 - printf()s can fail in weird circumstances. Should we try adding
50 code for using the special output port, which doesn't need any
55 - Students thought project 2 was especially easy. Reduce amount of
56 time to allow more time for another project? Add something to do
57 with the page table? Move `join' functionality here from project
62 - One student suggestion:
64 Second point of confusion: the difference between kernel address
65 space and actual physical addresses (kernel address minus
66 PHYS_BASE). It seemed weird that the functions to access
67 pagedir entries used kernel virtual addresses instead of
68 physical addresses. We eventually realized that when the
69 assignment refers to the virtual-to-physical translations that
70 we're supposed to do, 'physical' actually means 'kernel virtual'
71 (or a location on disk). A sentence or two clearing up this
72 ambiguity would have been helpful.
76 - A fair number of students thought this was the hardest project.
77 Perhaps we could add some notes about where to start?
82 3) This is probably an "unsupported" configuration, however I'll point
83 it out anyway. Running user programs under Pintos compiled on my
84 desktop I get the following warning:
86 unknown ELF segment type 65041580
88 If you look at /usr/include/elf.h you will find:
90 #define PT_LOOS 0x60000000 /* Start of OS-specific */
92 It would appear that elf segments starting with this program header
93 are "OS-specific" My Occam's Razor explanation here is that the
94 segment holds the bits to configure the stack protection features in
97 gcc version is: gcc version 3.3.4 20040623 (Gentoo Linux 3.3.4-r1,
98 ssp-3.3.2-2, pie-8.7.6)
100 This probably means that we should provide a linker script that leaves