基础知识准备
C语言
Linux C编程一站式学习 (宋劲杉)
The C Programming Language (K & R)
Linux System Programming: Talking Directly to the Kernel and C Library (Robert Love)
Advanced Programming in the UNIX Environment (APUE)
The Linux Programming Interface: A Linux and UNIX System Programming Handbook (Michael Kerrisk)
Unix Network Programming, Volume 1: The Sockets Networking API (UNP)
汇编
Programming from the Ground Up (Jonathan Bartlett, Dominick Bruno Jr)
https://en.wikibooks.org/wiki/X86_Assembly
https://sourceware.org/binutils/docs-2.25/as/index.html
Bootloader
教程:
http://www.brokenthorn.com/Resources/OSDevIndex.html
实现:
https://github.com/heguangyu5/my-bootloader
Toy OS
教程:
http://www.jamesmolloy.co.uk/tutorial_html/index.html
实现:
https://github.com/heguangyu5/my-os
Linux Kernel
Linux Kernel Development (Robert Love)
Understanding the Linux Kernel (Daniel P. Bovet, Marco Cesati)
其它很有用的参考资料
AMD64 Architecture Programmer’s Manual Volume 1: Application Programming
AMD64 Architecture Programmer’s Manual Volume 2: System Programming
AMD64 Architecture Programmer’s Manual Volume 3: General-Purpose and System Instructions
http://wiki.osdev.org/
http://lwn.net/
PCI System Architecture (MindShare Inc., Tom Shanley, Don Anderson)
8259A PROGRAMMABLE INTERRUPT CONTROLLER
82093AA I/O ADVANCED PROGRAMMABLE INTERRUPT CONTROLLER (IOAPIC)
Mastering Algorithms with C (Kyle Loudon)