One of the most exciting areas of Software Engineering is operating systems design. That and design of compilers are the two topics I have always dreamed of studying more closely. While my friend Max Trushin is digging deeply into the second topic, I find myself getting sucked in the first one. Indeed, lately I’ve spent significant time installing and tweaking my two Arch Linux installations. What I found recently though, takes my Linux hobby to an entirely new level. I’m talking about the Massachusetts Institute of Technology’s course in Operating System Engineering.
It’s a 6-month-long course that covers all you need to know about OS design, starting from basics, all the way through multitasking and micro-kernels.
Here’s what they provide for free:
A list of literature, with some of the books actually available for free download:
- Compact 32-bit protected mode PC Assembly tutorial (~180 pages PDF)
- The Unix Time-sharing System (10 pages PDF) — the original UNIX article by UNIX authors Ken Thompson and Dennis Ritchie, published back in 1974
- The Evolution of the Unix Time-sharing System – a follow up 1984 article by Dennis Ritchie
- Multics, the first seven years – a short overview of the predecessor that inspired Ken Thompson to write UNIX
- Rc – The Plan 9 Shell
- Phil Storrs PC Hardware book – archive.org’s copy of a great online book on general PC hardware architecture and programming.
- A great list of reference resources for low-level system programming.
Lecture notes (from 2006, and from 2011 – click on lecture topic) summarizing the essence of 23 lectures on topics ranging from boot process management to shell design.
A working Unix clone, complete with source code and commentaries:
- Complete source code, 8000 lines, plus an easy to print PDF version
- A textbook / commentary, explaining design and implementation details, in an easy to follow manner.
More information available on MIT current 6.828 course page and on MIT open courseware page for 6.828.
Not sure about you but I’m seriously considering reading through the lectures, if not doing the actual labs!
