CSE 451: Resources
Textbooks
- Operating Systems: Principles and Practice (2nd Edition), Tom Anderson and Mike Dahlin
- xv6: a simple, Unix-like teaching operating system, Russ Cox, Frans Kaashoek, and Robert Morris
Lecture Readings
Unix
- The UNIX Operating System, AT&T Archives at YouTube
- The UNIX Time-Sharing System, Dennis M. Ritchie and Ken L. Thompson, Bell System Technical Journal 57(6)
- The Evolution of the Unix Time-sharing System, Dennis M. Ritchie
x86
- Intel 80386 Programmer’s Reference Manual
- Intel 64 and IA-32 Architectures Software Developer’s Manuals
- Volume 1: Basic Architecture
- Volume 2: Instruction Set Reference, A–Z
- Volume 3: System Programming Guide
- AMD64 Architecture Programmer’s Manual
- Executable and Linking Format (ELF) Specification
GCC Inline Assembly Language
- Brennan’s Guide to Inline Assembly, Brennan “Mr. Wacko” Underwood
- Inline assembly for x86 in Linux, Bharata B. Rao, IBM
- GCC Inline Assembly HOWTO, Sandeep S.
PC Hardware Programming
PC Bootstrap
-
Minimal Intel Architecture Boot Loader. Intel’s description of a minimal boot loader for Intel architectures. (PDF)
-
“El Torito” Bootable CD-ROM Format Specification. Defines the bootable CD-ROM format used by BIOS-based systems, by Curtis E. Stevens and Stan Merkin. (PDF)
-
The Multiboot Specification. A standard that allows boot loaders to load operating systems in a uniform way, by Yoshinori K. Okuji, Bryan Ford, Erich Stefan Boleyn, and Kunihiro Ishiguro. (PDF)
-
Unified Extensible Firmware Interface (UEFI) Specification, Version 2.5. The UEFI firmware specification published by the UEFI Forum. (PDF)
IDE Hard Drive Controller (boot/main.c)
- AT Attachment with Packet Interface – 6. ANSI specification describing the ATA/ATAPI storage interface. (PDF)
VGA Display (kern/console.c)
- VESA BIOS Extension (VBE) 3.0. Defines a standard interface for graphics modes and framebuffer access. (PDF)
Keyboard and Mouse (kern/console.c)
- Adam Chapweske’s resources. Practical documentation and references for PC keyboard and mouse hardware. (http://www.computer-engineering.org/index.html)
16550 UART Serial Port (kern/console.c)
-
Technical Data on 16550. Hardware reference documentation for the 16550 UART, by Byterunner Technologies. (http://byterunner.com/16550.html)
-
Interfacing the Serial / RS232 Port. Guide to RS-232 serial communication, by Craig Peacock. (http://www.beyondlogic.org/serial/serial.htm)
IEEE 1284 Parallel Port (kern/console.c)
-
IEEE 1284 – Updating the PC Parallel Port. National Instruments overview of the IEEE 1284 parallel port standard. (http://zone.ni.com/devzone/cda/tut/p/id/3466)
-
Interfacing the Standard Parallel Port. Practical guide to parallel port programming, by Craig Peacock. (http://www.beyondlogic.org/spp/parallel.htm)
ACPI (kern/acpi.c, kern/e820.c)
- Advanced Configuration and Power Interface (ACPI) Specification, Version 6.0. Defines hardware configuration and power management interfaces, published by the UEFI Forum. (PDF)
APIC (kern/lapic.c, kern/ioapic.c)
-
82093AA I/O Advanced Programmable Interrupt Controller. Intel documentation for the I/O APIC hardware. (PDF)
-
Intel 64 Architecture x2APIC Specification. Specification for the x2APIC interrupt architecture extension. (PDF)
PIC (kern/picirq.c)
- 8259A Programmable Interrupt Controller. Intel documentation for the legacy PIC hardware. (PDF)
AHCI (fs/ahci.c)
- Serial ATA Advanced Host Controller Interface (AHCI). Intel specification for SATA host controller programming. (PDF)