> 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>.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://pkuflyingpig.gitbook.io/pintos/appendix/bibliography.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
