ARM64 OS Handbook
🔍

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:

  1. OSTEP (Operating Systems: Three Easy Pieces) - for conceptual foundation
  2. This handbook's chapters in order - for practical ARM64 implementation
  3. ARM Programmer's Guide for ARMv8-A - for architecture details as needed
  4. OSDev Wiki - for specific implementation challenges
  5. Linux kernel source - for examples of production-quality kernel code