> For the complete documentation index, see [llms.txt](https://pkuflyingpig.gitbook.io/pintos/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pkuflyingpig.gitbook.io/pintos/appendix/bibliography.md).

# Bibliography

## Hardware References

\[IA32-v1]. IA-32 Intel Architecture Software Developer's Manual Volume 1: Basic Architecture. Basic 80x86 architecture and programming environment. Available via [developer.intel.com](https://www.cs.jhu.edu/~huang/cs318/fall20/project/developer.intel.com). Section numbers in this document refer to revision 18.

\[IA32-v2a]. IA-32 Intel Architecture Software Developer's Manual Volume 2A: Instruction Set Reference A-M. 80x86 instructions whose names begin with A through M. Available via [developer.intel.com](https://www.cs.jhu.edu/~huang/cs318/fall20/project/developer.intel.com). Section numbers in this document refer to revision 18.

\[IA32-v2b]. IA-32 Intel Architecture Software Developer's Manual Volume 2B: Instruction Set Reference N-Z. 80x86 instructions whose names begin with N through Z. Available via [developer.intel.com](https://www.cs.jhu.edu/~huang/cs318/fall20/project/developer.intel.com). Section numbers in this document refer to revision 18.

\[IA32-v3a]. IA-32 Intel Architecture Software Developer's Manual Volume 3A: System Programming Guide. Operating system support, including segmentation, paging, tasks, interrupt and exception handling. Available via [developer.intel.com](https://www.cs.jhu.edu/~huang/cs318/fall20/project/developer.intel.com). Section numbers in this document refer to revision 18.

\[FreeVGA]. [FreeVGA Project](https://www.cs.jhu.edu/~huang/cs318/fall20/project/specs/freevga/home.htm). Documents the VGA video hardware used in PCs.

\[kbd]. [Keyboard scancodes](https://www.cs.jhu.edu/~huang/cs318/fall20/project/specs/kbd/scancodes.html). Documents PC keyboard interface.

\[ATA-3]. [AT Attachment-3 Interface (ATA-3) Working Draft](https://www.cs.jhu.edu/~huang/cs318/fall20/project/specs/ata-3-std.pdf). Draft of an old version of the ATA aka IDE interface for the disks used in most desktop PCs.

\[PC16550D]. [National Semiconductor PC16550D Universal Asynchronous Receiver/Transmitter with FIFOs](https://www.cs.jhu.edu/~huang/cs318/fall20/project/specs/pc16550d.pdf). Datasheet for a chip used for PC serial ports.

\[8254]. [Intel 8254 Programmable Interval Timer](https://www.cs.jhu.edu/~huang/cs318/fall20/project/specs/8254.pdf). Datasheet for PC timer chip.

\[8259A]. [Intel 8259A Programmable Interrupt Controller (8259A/8259A-2)](https://www.cs.jhu.edu/~huang/cs318/fall20/project/specs/8259A.pdf). Datasheet for PC interrupt controller chip.

\[MC146818A]. [Motorola MC146818A Real Time Clock Plus Ram (RTC)](https://www.cs.jhu.edu/~huang/cs318/fall20/project/specs/mc146818a.pdf). Datasheet for PC real-time clock chip.

\[PCASM]. [PC Assembly Language Book](https://www.cs.jhu.edu/~huang/cs318/fall20/project/specs/pcasm-book.pdf). Guide to x86 assembly language.

## Software References

\[ELF1]. [Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification Version 1.2 Book I: Executable and Linking Format](https://www.cs.jhu.edu/~huang/cs318/fall21/project/specs/elf.pdf). The ubiquitous format for executables in modern Unix systems.

\[ELF2]. [Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification Version 1.2 Book II: Processor Specific (Intel Architecture)](https://www.cs.jhu.edu/~huang/cs318/fall21/project/specs/elf.pdf). 80x86-specific parts of ELF.

\[ELF3]. [Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification Version 1.2 Book III: Operating System Specific (UNIX System V Release 4)](https://www.cs.jhu.edu/~huang/cs318/fall21/project/specs/elf.pdf). Unix-specific parts of ELF.

\[SysV-ABI]. [System V Application Binary Interface: Edition 4.1](https://www.cs.jhu.edu/~huang/cs318/fall21/project/specs/sysv-abi-4.1.pdf). Specifies how applications interface with the OS under Unix.

\[SysV-i386]. [System V Application Binary Interface: Intel386 Architecture Processor Supplement: Fourth Edition](https://www.cs.jhu.edu/~huang/cs318/fall21/project/specs/sysv-abi-i386-4.pdf). 80x86-specific parts of the Unix interface.

\[SysV-ABI-update]. [System V Application Binary Interface--DRAFT--24 April 2001](https://www.cs.jhu.edu/~huang/cs318/fall21/project/specs/sysv-abi-update.html/contents.html). A draft of a revised version of \[ [SysV-ABI](https://www.cs.jhu.edu/~huang/cs318/fall21/project/pintos_14.html#SysV-ABI)] which was never completed.

\[SUSv3]. The Open Group, [Single UNIX Specification V3](http://www.unix.org/single_unix_specification/), 2001.

\[Partitions]. A. E. Brouwer, [Minimal partition table specification](https://www.cs.jhu.edu/~huang/cs318/fall21/project/specs/partitions/partition_tables.html), 1999.

\[IntrList]. R. Brown, [Ralf Brown's Interrupt List](http://www.ctyme.com/rbrown.htm), 2000.

## Operating System Design References

\[Christopher]. W. A. Christopher, S. J. Procter, T. E. Anderson, *The Nachos instructional operating system*. Proceedings of the USENIX Winter 1993 Conference. <http://portal.acm.org/citation.cfm?id=1267307>.

\[Dijkstra]. E. W. Dijkstra, *The structure of the "THE" multiprogramming system*. Communications of the ACM 11(5):341--346, 1968. <http://doi.acm.org/10.1145/363095.363143>.

\[Hoare]. C. A. R. Hoare, *Monitors: An Operating System Structuring Concept*. Communications of the ACM, 17(10):549--557, 1974. <http://www.acm.org/classics/feb96/>.

\[Lampson]. B. W. Lampson, D. D. Redell, *Experience with processes and monitors in Mesa*. Communications of the ACM, 23(2):105--117, 1980. <http://doi.acm.org/10.1145/358818.358824>.

\[McKusick]. M. K. McKusick, K. Bostic, M. J. Karels, J. S. Quarterman, *The Design and Implementation of the 4.4BSD Operating System*. Addison-Wesley, 1996.

\[Wilson]. P. R. Wilson, M. S. Johnstone, M. Neely, D. Boles, *Dynamic Storage Allocation: A Survey and Critical Review*. International Workshop on Memory Management, 1995. <http://www.cs.utexas.edu/users/oops/papers.html#allocsrv>.
