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.
unknown|6 years ago
[deleted]