The Linux Kernel Primer: A Top-Down Approach for x86 and PowerPC Architectures