This section contains documents that could not be made accessible to screen reader software. A "#" symbol is used to denote such documents.

Amazon logo Help support MIT OpenCourseWare by shopping at! MIT OpenCourseWare offers direct links to to purchase the books cited in this course. Click on the book titles and purchase the book from, and MIT OpenCourseWare will receive up to 10% of all purchases you make. Your support will enable MIT to continue offering open access to MIT courses.

Some of the readings require the xv6 code (PDF), which is provided courtesy of Frans Kaashoek, Robert Morris, and Russ Cox and is used here with permission.

6.828 is inspired by what Lions did for Unix® version 6:
Lions, John. Lions' Commentary on UNIX® 6th Edition with Source Code. San Jose, CA: Peer-to-Peer Communications, 1996. ISBN: 1573980137.

1 Operating Systems Ritchie, Dennis M. "The Evolution of the Unix Time-sharing System." AT&T Bell Laboratories Technical Journal 63, no. 6, Part 2 (October 1984): 1577-93.
2 PC Hardware and x86 Programming Carter, Paul A. PC Assembly Language. July 23, 2006. (Note: Do not read chapters 5, 6, and 7.2.)
3 OS Organization Engler, Dawson R., M. Frans Kaashoek, and James O'Toole Jr. "Exokernel: An Operating System Architecture for Application-Level Resource Management." In Proceedings of the 15th ACM Symposium on Operating Systems Principles. New York, NY: ACM Press, 1995. ISBN: 0897917154.
4 Address Spaces using Segmentation (Handout) Read bootasm.S, bootother.S, bootmain.c, main.c, and init.c of xv6.
5 Address Spaces using Page Tables (Handout)

The Intel® 80386 Programmer's Reference Manual 1986. Chapters 5 and 6.

Read setupsegs in xv6.

6 Interrupt and Exception Handling

The IA-32 Intel® Architecture Software Developer's Manual (System Programming Guide). Vol. 3, 2002, chapter 5. (Includes: Basic Architecture, Instruction Set Reference Manual, and the System Programming Guide.) (Note: skip 5.7, 5.8.2, and 5.12.2.)

Read trapasm.S, trap.c, syscall.c, and usys.S of xv6.

7 Multiprocessors and Locking Read spinlock.c and skim mp.c of xv6.
8 Processes and Context Switching Read proc.c, setjmp.S, and sys_fork (in sysproc.c) of xv6.
9 Processes and Coordination Read remainder of proc.c and sys_exec, sys_sbrk, sys_wait, sys_exit, and sys_kill of xv6.
10 Files and Disk I/O Read iread, iwrite, filewrite, fileread, wdir, mknod1, and code related to these system calls in fs.c, bio.c, ide.c, and file.c of xv6.
11 Naming Read namei in fs.c (and remainder of fs.c), sysfile.c, and file.c of xv6.

High-performance File Systems

Ganger, Gregory R., M. Kirk McKusick, Craig A. N. Soules, and Yale N. Patt. "Soft Updates: A Solution to the Metadata Update Problem in File Systems." ACM Transactions on Computer Systems 18, 2 (May 2000): 127-153.
Mid-term Quiz
13 Multics and Unix Corbató, F. J., J. H. Saltzer, and C. T. Clingen. Multics - The First Seven Years. Presented at the Spring Joint Computer Conference, 1972. Montvale, NJ: The American Federation of Information Processing Societies Press, 1972.
14 Abstraction of OS Services Pike, Rob, Dave Presotto, Sean Dorward, Bob Flandrena, Ken Thompson, Howard Trickey, and Phil Winterbottom. Plan 9. 4th ed. Murray Hill, NJ: Bell Laboratories.
Hacking Day
Hacking Day (cont.)
15 Microkernels Liedtke, Jochen. "Improving IPC by Kernel Design." 14th ACM Symposium on Operating System Principles (SOSP). Asheville, North Carolina: 5-8 December 1993.
16 Virtual Machines Bugnion, Edouard, Scott Devine, and Mendel Rosenblum. "Disco: Running Commodity Operating Systems on Scalable Multiprocessors." In Proceedings of the Sixteenth ACM Symposium on Operating Systems Principles. Saint-Malo, France: October 1997.
17 Scheduling Mogul, Jeffrey, and K. K. Ramakrishnan. "Eliminating Receive Livelock in an Interrupt-driven Kernel." (This paper was originally published in the Proceedings of the USENIX 1996 Annual Technical Conference. San Diego, CA: January 1996.)
18 Scalable Coordination Mellor-Crummey, John M., and Michael L. Scott. "Algorithms for Scalable Synchronization on Shared-Memory Multiprocessors." ACM Transactions on Computer Systems 9, no. 1 (January 1991): 21-65.
19 Shell for 6.828 Kernel

Duff, Tom. "Rc - The Plan 9 Shell." (PDF)#

Haahr, Paul, and Byron Rakitzis. "Es: A Shell with Higher-order Functions." In USENIX Technical Conference Proceedings (Winter 1993): 51-60.

20 Security: OKWS Krohn, Maxwell. "Building Secure High-Performance Web Services with OKWS." In Proceedings of the USENIX 2004 Technical Conference. Boston, MA: June 27-July 2, 2004, pp. 185-198. (PDF)#
21 XFI Erlingsson, Úlfar, Martín Abadi, Michael Vrable, Mihai budiu, and George C. Necula. "XFI: Software Guards for System Address Spaces." Presented at the Symposium on Operating System Design and Implementation (OSDI), Seattle, WA, November 6-8, 2006.
22 OS Bugs Engler, Dawson, David Yu Chen, Seth Hallem, Andy Chou, and Benjamin Chelf. "Bugs as Deviant Behavior: A General Approach to Inferring Errors in Systems Code." Symposium on Operating Systems Principles. Stanford, CA: Computer Systems Laboratory, Stanford University, 2001, pp. 57-72.
Hacking Day
23 OS Bakeoff
Quiz 2