Interrupts, firmware, and I/O
We’re nearing the end of the general CS subjects in this book, and we’ll start to dig our way out of the rabbit hole soon.
This part tries to tie things together and look at how the whole computer works as a system to handle I/O and concurrency.
Let’s get to it!
A simplified overview
Let’s look at some of the steps where we imagine that we read from a network card:
Remember that we’re simplifying a lot here. This is a rather complex operation but we’ll focus on the parts that are of most interest to us and skip a few steps along the way.
Step 1 – Our code
We register a socket. This happens by issuing a syscall to the OS. Depending on the OS, we either get a file descriptor (macOS/Linux) or a socket (Windows).
The next step is that we register our interest in Read
events on that socket.
Step 2 – Registering events with the OS
This is handled in...