This text introduced the main ideas in operating systems by studying one operating system, xv6, line by line. Some code lines embody the essence of the main ideas (e.g., context switching, user/kernel boundary, locks, etc.) and each line is important; other code lines provide an illustration of how to implement a particular operating system idea and could easily be done in different ways (e.g., a better algorithm for scheduling, better on-disk data structures to represent files, better logging to allow for concurrent transactions, etc.). All the ideas were illustrated in the context of one particular, very successful system call interface, the Unix interface, but those ideas carry over to the design of other operating systems.
If you want to dive into the world of Unix-like OS development, read on. By itself this book worth almost nothing, but together with sources of xv6 and labs from here https://pdos.csail.mit.edu/6.828/2020... this trio will make your brain work like no course or book I have ever seen. The labs are carefully crafted and they even contain auto-grader too. 6.828 contains all needed instructions to start with labs, I recommend using Debian Linux because toolchain for RISC-V just works there. I had issues compiling it under MacOS.
You might need good knowledge of C and some knowledge of ASM before starting this course. This course by itself is not easy, also there will be no help from peers. To do labs, you must read the book and maybe watch some of videos from the course. Not all videos of the same quality though. But the ones from Robert Morrison are outstanding!
I am sure I will never go into developing OS, but the book and labs give you the best deep understanding you could ever get for free. OSTEP book is very shallow introduction that prepares you a little for xv6, but not much more. Tanenbaum's book is not about monolithic kernel. And I have yet to read Bach's book, so cannot say much about it.
this book is a guided way to learn about unix-like operating systems by playing with one yourself! i appreciated the level of detail in the descriptions of pretty much every file and function in the system, and the notes at the end of each chapter describing the real world application and why Unix is unique. also love that the whole book is available for FREE online. ah opensource <3.
i DIDN’T like that there were very few comments in the actual code. O/S code definitely does not speak for itself, especially when the intended reader hasn’t spent much time in the kernel!
if you’re one of my friends on goodreads and you’re thinking about diving into the world of operating systems, I’d give two caveats before you open the file for this book:
a) it assumes you know basic computer architecture concepts like memory management, caching, pipelining, and assembly code b) the book is meant to be used alongside the MIT labs— I don’t think it’d be much (or any) use alone