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.
I finished all the exercises in the 6.824 MIT course on hacking on a RISC-V OS. This course and this book are the only two things you need to get a firm grasp of what goes in the innards of an Operating system.
There are lot of scholarly books by respected professors and they have their place but this book and the 6.824 course is all you will ever need to learn Operating systems. This tiny 100+ page book is the guiding light while you get your hands dirty hacking on C and Assembly. By itself it’s of limited use but along with the xv6 source code and the exercises it’s truly indispensable.
The book has conceptual explanations for all things central to an OS like concurrency, locking, virtual memory, scheduling etc. If you want to get down to brass tacks and understand how core features in OS are implemented, you must read this and the xv6 source code.
This is indispensable to all OS hackers. After doing the xv6 exercises and reading this short text, you should have a solid conceptual understanding of what an OS does and how it implements core features. Special mention to exercises via which I learnt how multi level page tables, trap processing, mmap and how a network stack works in OS. I even got a printed copy of this book.
My deepest gratitude to the MIT PDOS group and MIT for making such courses and books available online for free.
I highly recommend this book, granted you also do the xv6 exercises.
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