I would really like to understand how an operating system works behind the scenes. However, I think that the kernel of most open-source OSs out there are too complex for learning purposes, even for a full-time programmer to learn. Are there any "simple" OSs made for learning purposes only out there?

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.
If this question can be reworded to fit the rules in the help center, please edit the question.

9 Answers
9

Andrew Tanenbaum's Minix (see Operating Systems Design and Implementation) is intended for exactly this sort of purpose. Another (albeit quite dated) possibility is to read through Lion's Book, which covers Unix V6 (full Unix, but an old enough version that it's still simple enough for fairly easy study). The obvious disadvantages of the latter are that the C it uses is quite obsolete, so even fairly experienced C programmers may find parts somewhat difficult to read, and you can't plan on a modern compiler digesting the code.

Another smallish OS that gets a lot of love these days is FreeRTOS. It runs on almost everything. If you came from Mars and had a processor or eval board where it doesn't run, you could read about 10 pages of documentation, modify about five files related to interrupts, timers, and UARTs and you would be running.

Linux and a lot of other operating system design is influenced by UNIX, so this video where the original designers (Kernigan, Richie, and Thompson and others) is both informative and gets the design ideas right from the source.

People can understand all of CP/M and early DOS versions. After that things got out of control and nobody knows everything anymore. They weren't designed for learning how an OS works but many people did learn that from those OS.

Consider adding some references or additional anecdotal evidence to back up your answer. Or add some additional detail to indicate why X version is more easily understood than Y version.
–
GlenH7Sep 24 '12 at 1:40