
Shows how to add IP/UDP to a simple Unix-like OS. You might want to also read volume 1:
Operating System Design - The XINU Approach, Second Edition, 2015. ISBN 9781498712439
https://pages.hmc.edu/harris/ddca/
An interesting second book that makes the connection to the software side is Bryant/O'Hallaron "Computer Systems: A Programmer's Perspective"
...and, more on the theory side, both books by Hennessy and Patterson ("Computer Architecture: The Hardware/Software Interface" and "Computer Architecture: A Quantitative Approach").
On the OS implementation side, I still like Comer's "Operating System Design: The Xinu Approach" quite a lot. While this book is quite old, I learned OS design from Comer (and am still teaching this at university level 30 years later...).
A good complement would be Cox/Kaashoek/Morris "xv6: a simple, Unix-like teaching operating system" (free download)
https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.p...
A useful addition on OS theory is Remzi and Andrea Arpaci-Dusseau's "Operating Systems: Three Easy Pieces" (also free)
https://pages.cs.wisc.edu/~remzi/OSTEP/
If you want to dig into programming languages, I would recommend Cooper/Torczon "Engineering a Compiler" (unfortunately published by Elsevier) and "Crafting Interpreters" by Nystrom (free)
https://shop.elsevier.com/books/engineering-a-compiler/coope...
https://craftinginterpreters.com
Finally, if you're interested in virtualization (system and bytecode level), I can recommend Smith/Nair "Virtual Machines"
https://www.sciencedirect.com/book/9781558609105/virtual-mac...
I use many of these books in my courses and recommend them to my students - so far, they seem to like the books:
(My OS course at NTNU) https://multicores.org/tdt4186_22/
(My Compiler Construction course at NTNU) https://multicores.org/tdt4205_21/
I hope this helps a bit. Learning all of this will be quite a challenge but also bring a lot of fun! :)
A big portion of most compiler books focus on parsing. This book instead focuses on implementing a lisp to assembly compiler. Lisp being easy to parse the parsing topic is skipped, instead it focuses on more interesting topics, like register allocation, garbage collection, closure conversion, dynamic typing and so on!
At the end of the book you will have a lisp to assembly compiler and be able to imagine how complicated high level constructs actually run on the machine which is exciting to say the least.
The book is accompanied with optional lectures.
https://iucompilercourse.github.io/IU-P423-P523-E313-E513-Fa...
------
Operating System Design: The Xinu Approach, Second Edition
Unlike most operating system books, this one goes over the implementation of a simple embedded operating system ( Xinu ) and explains its mechanics by going over its code and internal data structures. It also has interesting exercises like extending the OS to support virtual memory.
If you are planning to read this book you should buy one of the supported hardware boards so that you can actually run the OS on it, modify it and load it again to see your changes in action.
The book isn’t free, but I’ve found it to be fun to work through. The projects are centered around building and running on small boards like beaglebone, Galileo, and more recently raspi (although this isn’t covered in the book.)
...and there's more:
- "xv6: a simple, Unix-like teaching operating system" https://pdos.csail.mit.edu/6.828/2020/xv6/book-riscv-rev1.pd...
- Douglas Comer's book "Operating System Design - The Xinu Approach" (https://xinu.cs.purdue.edu)
- Gernot Heiser's "Inside L4/MIPS" (https://ts.data61.csiro.au/publications/papers/Heiser:IL4.pd...)