Further Reading
Books, papers, and online resources referenced throughout this handbook. Organized by topic.
Operating Systems (General)
- Operating Systems: Three Easy Pieces by Remzi Arpaci-Dusseau and Andrea Arpaci-Dusseau. Free online at ostep.org. Excellent introduction to OS concepts with practical examples.
- Modern Operating Systems by Andrew Tanenbaum. Comprehensive coverage of OS design, including distributed systems.
- The Design of the UNIX Operating System by Maurice Bach. Classic reference on Unix kernel internals.
- Linux Kernel Development by Robert Love. Practical guide to the Linux kernel, useful for understanding how production kernels work.
ARM64 Architecture
- ARM Architecture Reference Manual ARMv8-A (ARM DDI 0487). The definitive reference for ARM64. Covers all instructions, system registers, exception model, and memory management.
- Programmer's Guide for ARMv8-A (ARM DEN 0024). More approachable than the architecture manual. Explains the programming model, cache management, and MMU.
- ARM Cortex-A Series Programmer's Guide for ARMv8-A (ARM DEN 0024A). Good starting point for understanding ARM64 from a software perspective.
- ARM GICv3 Architecture Specification (ARM IHI 0069). If you need to understand the interrupt controller in detail.
Low-Level Programming
- Linkers and Loaders by John Levine. Explains how linkers, loaders, and object file formats (including ELF) work.
- Computer Organization and Design: ARM Edition by Patterson and Hennessy. Computer architecture from the hardware perspective.
- The C Programming Language by Kernighan and Ritchie. The definitive C reference.
Online Resources
- OSDev Wiki (wiki.osdev.org). Community-maintained wiki with practical guides, tutorials, and reference material for OS development. Essential resource.
- QEMU Documentation (qemu.org). QEMU system emulation documentation. Useful for understanding the emulated hardware.
- Raspberry Pi Documentation (raspberrypi.com/documentation). Hardware documentation for Raspberry Pi 4 (BCM2711) and 5 (BCM2712).
- ARM Community (community.arm.com). Forums and documentation from ARM.
- Linux Cross-Reference (Elixir) (elixir.bootlin.com). Searchable Linux kernel source. Useful for seeing how production kernels implement OS concepts.
Academic Papers
- The UNIX Time-Sharing System by Ritchie and Thompson (1974). The original Unix paper. Short, readable, and still relevant.
- seL4: Formal Verification of an OS Kernel by Klein et al. (2009). Describes the first formally verified microkernel. Demonstrates what rigorous OS verification looks like.
- Exokernel: An Operating System Architecture for Application-Level Resource Management by Engler et al. (1995). A research OS that pushes hardware abstractions to user space.
- Plan 9 from Bell Labs by Pike et al. (1995). A distributed OS that treats networking as a first-class primitive.
Tools
- aarch64-none-elf-gcc: ARM64 cross-compiler. Part of the GNU Arm Embedded Toolchain.
- QEMU: System emulator. Test the kernel without real hardware.
- GDB (gdb-multiarch): Cross-debugger for debugging the kernel via QEMU's gdbstub.
- Make: Build system automation.
- clang-format: Code formatting tool. Used to enforce coding standards (Chapter 44).
Recommended Reading Order
If you are new to OS development, read these in order:
- OSTEP (Operating Systems: Three Easy Pieces) - for conceptual foundation
- This handbook's chapters in order - for practical ARM64 implementation
- ARM Programmer's Guide for ARMv8-A - for architecture details as needed
- OSDev Wiki - for specific implementation challenges
- Linux kernel source - for examples of production-quality kernel code