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! :)
(see also the "Virtual Machines" book by Smith and Nair, ISBN-13 978-1558609105, if you are interested in this topic).
I can also recommend John Lions' "Commentary on the Sixth Edition Unix Operating System" - https://warsus.github.io/lions-/, Douglas Comer's Xinu (https://xinu.cs.purdue.edu) as well as Niklaus Wirth's "Compiler Construction" (https://people.inf.ethz.ch/wirth/CompilerConstruction/Compil...) and Project Oberon (http://www.projectoberon.com).
Oh that book already does in fact already exist, and it's amazing:
http://www.amazon.co.uk/Virtual-Machines-Versatile-Platforms...
1) Virtual Machines: Versatile Platforms for Systems and Processes by Smith and Nair - Seems to be a comprehensive subject overview book.
2) Virtual Machines by Iain Craig - Seems like a more hands-on book with languages and VMs.
3) Virtual Machine Design and Implementation in C/C++ by Bill Blunden - Seems like an hands-on implementation.
If somebody who has read any of the above can add some comments that would be helpful to everybody.
On the same subject can someone recommend a book or any other resource to learn about virtual machine internals? My goal is to try to build a toy clone of VirtualBox/VMWare.
So far I have found one -- Virtual Machines by James E. Smith and Ravi Nair.
