There are a large number of different operating systems out there, including everything from expensive, industrial strength systems to small hobbyist projects. If you’re a computer user, you’re bound to find something out there that you can put to use. But what if you aren’t just a user or even a hobbyist? What if you are a serious computer science student interested in knowing what makes an operating system tick? While there a large number of excellent books on the subject, the best way to learn (as with most things related to computers) is to do it yourself. But writing a whole operating system, or even the kernel by yourself isn’t an easy thing to do, especially if you’re starting from scratch. Most programmers will agree that a very good way to learn programming, any sort of programming, is to read other people’s code, understand what makes it ticks, and then use some of those principles in your own projects. This isn’t hard for small pieces of software, but an operating system, even the kernel, isn’t a small piece of software. Most of the kernels out there, even the smaller ones are rather complicated pieces of code. They’ve probably been in development for years, with large groups of people contributing lots of different code. If you’re new to kernel development, looking at the Linux or BSD kernels probably isn’t a good way to start learning. So what do you do?
Enter Minix. Minix is a UNIX clone, but it has been made with students in mind. Minix 1 and 2 were made by Andrew Tanenbaum exclusively for students to go along with his book: Operating Systems: Design and Implementation. Minix 3, is still geared towards students, but is also being made usable as a day-to-day system for low resource computers. What makes Minix3 good for students is that it is compact. The whole of the kernel (it uses a microkernel design) fits into just 4000 lines of executable code. The rest of the system runs in user mode, and in case you want to take a look at those parts too, you can do so just as easily. Minix has a fully modularized design, which means that you can tinker with one small part without having to worry too much about breaking everything else.
Even though Minix is for students, doesn’t mean that is unusable as a proper operating system. Over 400 UNIX programs have been ported including a graphical X window system and networking capabilities using TCP/IP. As for programmers, there is a native C compiler and the shell, ash supports scripting. There are also interpreters for BASIC, Perl and Python (though the Python interpreter is very out of date). That should be enough to let you tinker around and learn something useful. While you’re at it, you might want to get the book as well, especially if you don’t know anything about operating systems.
However if you want something that is still in the early stages of development, but has a clear game plan, you might want to take a look at Fiwix, a project geared towards producing a kernel compatible with Linux while keeping students in mind. Like I said, it’s in its early stages so you could learn a lot if you hang around. The Google Directory on operating systems has a few listings for educational operating systems, and some of the might be worth taking a look at. But please do not jump into the world of operating systems without an adequate knowledge of C/C++ and a good grounding in operating system theory or you might find out that you bit of more than you can chew.