|
|
|
|
|
by lordleft
2091 days ago
|
|
This is super interesting -- for folks who are worked on or with this, what makes Xv6 well-suited for teaching OS concepts? What aspects of the OS are less robust / filled out than a standard Linux or BSD distro? I'm curious about the pedagogical considerations behind this OS. |
|
It's very small, which is great. You can print out the entire source code (and there's a makefile target that will produce a printable PDF) and read through it and actually understand the whole system.
At the same time, it has most of the features of an OS that you might want to cover in an intro course:
1. A basic round robin scheduler that you can replace with something more interesting like priorities.
2. A simple FS that still has some advanced features like transactions / crash recovery.
3. Support for SMP, so you can teach issues like locking / deadlocks.
4. UNIX-like system call API, that's again easy to extend to show how a new system call might be implemented.
Off the top of my head, some things it lacks compared to something like Linux:
1. Driver support. Basically only the vga and old-school IDE disks are supported. I've assigned a mouse driver as a final project before and it went pretty well: https://panda.moyix.net/~moyix/cs3224/fall16/bonus_hw/bonus_...
2. Related to (1), this means you aren't going to get anything related to networking.
3. No dynamic linking; every program is static.
4. Anything graphical (although I've seen people do this as a final project)