基础知识准备

C语言

  1. Linux C编程一站式学习 (宋劲杉)
  2. The C Programming Language (K & R)
  3. Linux System Programming: Talking Directly to the Kernel and C Library (Robert Love)
  4. Advanced Programming in the UNIX Environment (APUE)
  5. The Linux Programming Interface: A Linux and UNIX System Programming Handbook (Michael Kerrisk)
  6. Unix Network Programming, Volume 1: The Sockets Networking API (UNP)

汇编

  1. Programming from the Ground Up (Jonathan Bartlett, Dominick Bruno Jr)
  2. https://en.wikibooks.org/wiki/X86_Assembly
  3. https://sourceware.org/binutils/docs-2.25/as/index.html

Bootloader

  1. 教程: http://www.brokenthorn.com/Resources/OSDevIndex.html
  2. 实现: https://github.com/heguangyu5/my-bootloader

Toy OS

  1. 教程: http://www.jamesmolloy.co.uk/tutorial_html/index.html
  2. 实现: https://github.com/heguangyu5/my-os

Linux Kernel

  1. Linux Kernel Development (Robert Love)
  2. Understanding the Linux Kernel (Daniel P. Bovet, Marco Cesati)

其它很有用的参考资料

  1. AMD64 Architecture Programmer’s Manual Volume 1: Application Programming
  2. AMD64 Architecture Programmer’s Manual Volume 2: System Programming
  3. AMD64 Architecture Programmer’s Manual Volume 3: General-Purpose and System Instructions
  4. http://wiki.osdev.org/
  5. http://lwn.net/
  6. PCI System Architecture (MindShare Inc., Tom Shanley, Don Anderson)
  7. 8259A PROGRAMMABLE INTERRUPT CONTROLLER
  8. 82093AA I/O ADVANCED PROGRAMMABLE INTERRUPT CONTROLLER (IOAPIC)
  9. Mastering Algorithms with C (Kyle Loudon)