- QEMU - A fast and popular x86 platform and
- Bochs - A more mature, but quirkier
and much slower x86 emulator. Bochs is generally a more faithful
emulator of real hardware than QEMU.
x86 Assembly Language
PC Hardware Programming
- General PC architecture information
- General BIOS and PC bootstrap
- VGA display - kern/console.c
- Keyboard and Mouse - kern/console.c
- 8253/8254 Programmable Interval Timer (PIT) - inc/timerreg.h
- 8259/8259A Programmable Interrupt Controller (PIC) - kern/picirq.*
- Real-Time Clock (RTC) - kern/kclock.*
- 16550 UART Serial Port - kern/console.c
- IEEE 1284 Parallel Port - kern/console.c
- IDE hard drive controller - fs/ide.c
- Sound cards (not supported in JOS, but you're welcome to do
it as a challenge problem!)
- E100 Network Interface Card
- E1000 Network Interface Card
- SPIN—an extensible microkernel for application-specific operating system services,
Brian N. Bershad, Craig Chambers, Susan Eggers, Chris Maeda, Dylan McNamee,
Przemyslaw Pardyak, Stefan Savage, and Emin Gun Sirer,
ACMS SIGOPS Operating Systems Review, January 1995.
- Mach: A New Foundation For UNIX Developer,
Mike Accetta, Robert Baron, William Bolosky, David Golub, Richard Rashid,
Avadis Tevanian, and Michael Young,
USENIX Summer, 1986.
- Microkernel operating system architecture and Mach,
David L. Black, USENIX Workshop on Micro-Kernels
and Other Kernel Architectures, April 1992.
- Exokernel: an operating system architecture for application-level resource management,
Dawson R. Engler, M. Frans Kaashoek, and James O'Toole Jr.,
ACM SIGOPS Operating Systems Review, December 1995.
- Thoth, a Portable Real-Time Operating System,
David R. Cheriton, Michael A. Malcom, Lawrence S. Melen, and Gary R. Safer,
Communications of the ACM, February 1979.
- Contiki - a Lightweight and Flexible Operating System for Tiny Networked Sensors,
Adam Dunkels, Bjorn Gronvall, and Thiemo Voight,
IEEE Local Computer Networks, 2004.
- Xen and the Art of Virtualization,
Paul Barham, Boris Dragovic, Keir Fraser, Steven Hand, Tim Harris,
Alex Ho, Rolf Neugebauer, Ian Pratt, and Andrew Warfield,
ACM SIGOPS Operating Systems Review, December 2003.
- Formal Requirements for Virtualizable Third Generation Architectures,
Gerald J. Popek and Robert P. Goldberg,
Communications of the ACM, July 1974.
- The Design and Implementation of a Log-Structured File System,
Mendel Rosenblum and John K. Ousterhout,
ACM Transactions on Computer Systems, February 1992.
- End-to-End Arguments in System Design
Jerome H. Saltzer, David P. Reed, and David D. Clark,
ACM Transactions on Computer Systems,
- Reflections on an Operating System Design
Butler W. Lampson and Howard E. Sturgis,
Communications of the ACM,
- Singularity: Rethinking the Software Stack,
Galen C. Hunt and James R. Larus,
ACM SIGOPS Operating Systems Review,