Blog OS, an operating system written in Rust constructed through a series of independent tutorials.[0]
The CS140E embedded operating system.[1] This OS comes from an experimental course taught by Dawson Engler at Standford. The instruction is lab-based with no lectures. The student builds the OS on a Raspberry Pi through the use of primary-source technical references like datasheets and ARM manuals.
If you want an even fuller OS for teaching purposes, early versions of Minix were designed with teaching in mind, and there’s a book to go along with it.
Yeah, but they used a much more confusing architecture for early Minix (16-bit protected mode) that I'm of the opinion it obfuscates a lot of the underlying concepts.
And xv6 has a book that goes along with it as well.
PintOS is also a nice learning OS that's been used in classes. It is initially incomplete and there are 4 projects to implement process schedulling, paging, files. It simplifies the learning process since the hardware related initialization code is already implemented and is readable enough to be understood, while allowing you to focus on implementing the main ideas in OSs.
Currently I'm doing project 1 on my own. It would have been really nice if my university offered me something like this, to have instructor feedback.
The MIT Operating Systems opencourseware class labs has some great exercises when learning about operating systems[0]. I've also found older linux kernels, like v1.0, are easier to follow for learning [1].
For some purposes, I wonder if OpenBSD would also be a strong candidate for learning about operating systems, given their focus on correctness, openness, portability, etc., and the fact that everything learned then becomes useful on a fully general-purpose OS that one could use in the long term (ie, lots of headroom, less need to start over for learning some things, somewhere else).
The quality and good order of the documentation in particular makes it less or not necessary to go doing web searches etc to find out how to do things, but they take one in an orderly progression from installation, via FAQs and excellent manual pages, all the way along to useful development info.
agree - possibly any of the BSD's might be a good follow up for 'advanced' study since the codebase & kernel structures have a direct lineage. Maybe doing the 'base' course on like 4.2BSD which is still smaller and close to v7 might make sense
The included textbook is _really_ good introduction to systems programming. I highly recommend taking a look if you are interested in kernel programming or interaction between OS.
like literally, i was asking for instructions. neither this post nor the github repo offered any instructions of what one is supposed to do with this, aka, how to build it, how to run it, or what to learn.
In addition to teaching, it's been used as the core of a couple proprietary OSes for small envs. I think at least one TEE monitor is a heavily modified xv6.
not sure what all the downvotes are for - it was a legitimate question. The instructions just say to clone the github repo. The github repo just says it's for learning - no instructions.
How is one to learn without instructions? Or it only to teach those whom already know the answers?
Blog OS, an operating system written in Rust constructed through a series of independent tutorials.[0]
The CS140E embedded operating system.[1] This OS comes from an experimental course taught by Dawson Engler at Standford. The instruction is lab-based with no lectures. The student builds the OS on a Raspberry Pi through the use of primary-source technical references like datasheets and ARM manuals.
[0] https://os.phil-opp.com/ [1] https://github.com/dddrrreee/cs140e-20win/