xv6 is an oversimplification that falsely convinces professors that they’ve taught something useful and students that they’ve learned something relevant. It’s not “just enough” operating system, it’s “just not enough” operating system.
Hmm I wonder if each person has a different criteria of "enough".
I see xv6 as playground for students to implement basic concepts like filesystem, scheduler, etc. And it provides userspace so they can easily test their implementation.
Perhaps you suggest to use production-grade kernel like Linux, instead?
only xv6 gives traps, stack, uart, kalloc, preemptive scheduler, rudimentary fs, init(0) and minimal userland out of the box. students are not expected to implement any of that, it is hard - instead, is a book to read, a beautiful one. assignments are built on top of the core public codebase.
> Perhaps you suggest to use production-grade kernel like Linux, instead?
i imagine the expression on the student’s face once they run into their first:
/* not sure what this code does and why it is even here */
if it wasn’t for xv6, the best available choice would probably be OpenBSD codebase (not yet reimplemented in rust), but that’d be one hell of a graduate course.
xv6 is material for undergraduate 6.1810, a gentle introduction to operating systems.