Operating Systems Design and Implementation
This is a terrific book. This is what I used when I first learned about operating systems internals back in university. It was written by Andrew S. Tanenbaum and Albert S. Woodhull.
Personally, I would view this as the book to read when learning about operating systems. Many operating system books may not even have real code examples and if they do those examples will be from larger, more complex systems that are harder to work with when you are just learning the basic concepts. This book has a distinct advantage in this regard as it includes the code for an entire OS which was designed for learning.
This book covers the concepts but also shows you how things work with actual code. The book is built around the Minix operating system which was created by Tanenbaum. Minix was originally created for educational purposes making it a great choice when you are fist learning about operating system internals.
The book covers both the the theory and specific implementation details behind:
- Process scheduling
- Memory Management
- Input / Output
- File Systems
This is my video reviewing the book:
The Minix operating system was used by and served as inspiration for Linus Torvalds when he built Linux. The OS has many major, fundamental design differences. Minix was also aparently used to compile some of the early builds of Linux.
Even if you plan to work with other systems, Minix is great to start with because it is smaller and easier to learn from than larger systems like Linux. The concepts will also transfer over well.
Here is a picture of the book from the side:
Here is a look at the back in case you wanted to see it.
Amazon affiliate disclosure statement We are a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to amazon.com.