15-410 Approved Readings
Books
Advanced Configuration And Power Interface Specification
Available here.
Note:
As of 2020,
the UEFI web site contains a stern warning that all you
are allowed to do with the ACPI spec is to read it
(according to this theory you are not allowed to talk or write about
what you have read!).
If you are talking or writing about the ACPI spec
in the United States (or its territories or possessions),
you arguably have various constitutional and statutory
justifications for some speech acts related to the
ACPI spec.
Practical File System Design with the Be File System
(PDF)
Daniel Bovet and Marco Cesati.
Understanding the Linux Kernel (2nd Edition or newer)
Note: this book has some tendency to function as
a play-by-play of what happens inside Linux (on an x86) as opposed to
a design book.
You may find the BSD book
or the Love book
more design-oriented.
Maurice J. Bach.
Design of the Unix Operating System
This is a very clear overview of how Unix kernels
used to be constructed (some time ago).
Bar, Moshe.
Linux Internals
Some people have found this book dry due to extensive
source-code walk-throughs.
Joshua J. Bloch.
Effective Java
Though this isn't a book about an OS, there are
many related topics covered from a different perspective
(races and synchronization; access control and integrity).
Also, this book is full of things Java programmers need
to know (but often don't know they need to know).
If you are a working Java programmer, you probably want to
read the current edition rather than the earlier ones so
you can be up to date.
If you are curious about Java, earlier editions are probably fine.
Joseph Boykin, David Kirschen, Alan Langerman, Susan LoVerso.
Programming under Mach,
Addison-Wesley Unix and Open Systems Series;
Addison-Wesley Publishing Company, Inc. 1993.
ISBN 0-201-52739-1
This is perhaps the most straightforward book on
what Mach provided to programmers. Past students have
found it somewhat dry.
Pete Dice.
Quick Boot: A Guide for Embedded Firmware Developers,
2nd edition
Available here
(try from a campus IP address - you may get access via a CMU library
subscription).
Eppinger, Mummert, and Spector, ed.
Camelot and Avalon: a distributed transaction facility
This is the story of Mach the platform as opposed to Mach the
OS: Mach served as the basis for Camelot, a distributed transaction
system based on transactional virtual memory, and Avalon, a high-level
language built on Camelot. The system as developed didn't enter
popular use, but it's an interesting case study.
Niels Ferguson and Bruce Schneier.
Practical Cryptography
This is a good nuts-and-bolts book; if you
are interested in the human-factors, managerial,
political, or social implications of computer
security, you might prefer Secrets and Lies
(below).
Brian Goetz et al.
Java Concurrency in Practice
If you want to learn a lot more about concurrency,
this is a good chance to cover, in more detail than we
have time for, how to carefully define the problem and
some good tools to address it with.
Henry M. Levy.
Capability-Based Computer Systems
"This book was published by Digital Press in 1984. It is still the most thorough survey and description of early capability-based and object-based hardware and software systems."
(multiple PDFs)
Robert Love.
Linux Kernel Development
We received some complaints about the 2003 edition
containing too much play-by-play material, but the
2005 edition has received favorable student reviews.
You may find that the BSD book
provides more historical and design perspective.
You should also know that people familiar with other
operating systems may dispute some historical descriptions
and claims of architectural novelty.
These all can count as "the BSD book":
Marshall Kirk McKusick, George V. Neville-Neil, Robert N.M. Watson.
The Design and Implementation of the FreeBSD Operating System, 2nd ed.,
Addison-Wesley Professional, 2014.
ISBN-13: 978-0321968975,
ISBN-10: 0321968972.
Marshall Kirk McKusick, George V. Neville-Neil.
The Design and Implementation of the FreeBSD Operating System,
Pearson Education, 2004.
ISBN: 0-201-70245-2
Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, John S.
Quarterman.
The Design and Implementation of the 4.4 BSD Operating
System,
Addison-Wesley Publishing Company, Inc., 1996.
ISBN:0-201-54979-4
You may read any edition of "the BSD book",
though the older ones may describe a system which
seems oddly and perhaps frustratingly old.
David Loshin.
Efficient Memory Programming
Note that some students reported a distracting
number of minor errors in this book.
Jim Mauro, Richard McDougall.
Solaris Internals: Core Kernel Architecture
Mark Russinovich, David Solomon, & Alex Ionescu.
Windows Internals, 5th edition
The fifth edition contains coverage of key topics
such as 64-bit mode and hypervisor support.
Bruce Schneier.
Secrets and Lies
Note: his Beyond Fear is probably
too layman-targeted for this class. Meanwhile,
Applied Cryptography is probably too dry.
If you're looking for nuts and bolts, try
Practical Cryptography (above); this is
a more conceptual/high-level book.
Dissertations
Ben Blum,
Practical Concurrency Testing, or: How I Learned to Stop Worrying and Love the Exponential Explosion (CMU-CS-18-128)
(PDF)
"Landslide is a stateless model checker specializing
in undergraduate operating systems class projects."
Fay Chang,
Using Speculative Execution to Automatically Hide I/O Latency (CMU-CS-01-172)
(PDF)
To predict which data your application will fetch, clone a copy and
run it in a world where I/O happens instantly but returns fake data.
Replace out-of-date/inaccurate clones with newer ones as necessary.
Ann Chervenak,
Performance Measurements of the First RAID Prototype
(ps)
Note: this is a very dense piece of work,
but it is an excellent
example of what must be done to make real systems go fast. It is
also a good example of how to graduate even if your system doesn't
go as fast as you expected it to.
Richard P. Draves,
Control Transfer in Operating System Kernels
(PDF)
Note: this is the "continuations in the Mach kernel" dissertation.
Lawrence G. Esswood,
CheriOS: Designing an untrusted single-address-space capability operating system utilising capability hardware and a minimal hypervisor
(PDF)
Note: this is not an easy read.
But if you want a "modern microkernel dissertation",
this is one, and if you want a deep dive into capabilities
as a mode of thought, this will provide that as well.
Gregory S. Hartman,
Attentiveness: Reactivity at Scale
(abstract and 144M PDF)
This work attempts to explain why many applications fail to react in a timely fashion to your input
(the "cancel button problem"),
and lays out a roadmap for implementing attentive systems.
If you're in a hurry, you can probably get by with Chapters 1, 2, and 4.
Anuj Kalia,
Efficient Remote Procedure Calls for Datacenters
(PDF)
"We bring the speed of fast networks to distributed systems
without an expensive redesign with in-network hardware offloads."
Jay Kistler,
Disconnected Operation in a Distributed File System
(PDF)
Disconnected operation is a very timely topic.
Alexia Henry Massalin.
Synthesis: An Efficient Implementation of Fundamental
Operating System Services
(ps.gz)
The practical implications of this work are very unclear, but
it's definitely a good vehicle for thinking differently about
what a kernel might be.
Lily B. Mummert,
Exploiting weak connectivity
in a distributed file system
(PDF)
Adaptive mobility from the file system perspective.
Hugo Patterson,
Informed Prefetching and Caching (CMU-CS-97-204)
(PDF)
Instead of an application-blind cache eviction policy such as
LRU, use your cache space to hold data your particular application
is likely to want in the future.
Michael J. Sullivan,
Low-level Concurrent Programming Using the Relaxed Memory Calculus (CMU-CS-17-126)
(PDF)
"The Relaxed Memory Calculus (RMC) is a novel approach for
portable low-level concurrent programming in the presence of
the relaxed memory behavior caused by modern hardware
architectures and optimizing compilers."
Alfred Z. Spector,
Multiprocessing Architectures for Local Computer Networks,
STAN-CS-81-874.
This is old and not trivial to find (I think the E&S Library
has a copy), but it's fascinating...
Robert N. M. Watson,
New approaches to operating system security extensibility
(PDF)
Michael Wayne Young,
Exporting a User Interface to Memory Management
from a Communication-Oriented Operating System,
CMU-CS-89-202.
Paper collections
If multiple tracks are listed for an area, the suggestion
is to read one track's worth of papers on the expectation that
they have been chosen because they work well together.
- Autonet (N.B. The papers are interesting though the technology is dead)
- Capsicum
(related topic: CHERI) - ok to read a subset of two or three, but the first one is foundational
-
Capsicum: practical capabilities for UNIX
(PDF)
-
Analyzing Capsicum for Usability and Performance
(PDF)
-
Declarative, Temporal, and Practical Programming with Capabilities
(PDF)
-
Clean Application Compartmentalization with SOAAP
(PDF)
- CHERI
(related topic: EROS) - ok to read a subset of two or three - see also the CheriOS dissertation
-
An Introduction to CHERI
(PDF)
-
Beyond the PDP-11: Architectural support for a memory-safe C abstract machine
(PDF)
-
CheriABI: Enforcing Valid Pointer Provenance and Minimizing Pointer Privilege in the POSIX C Run-time Environment
(PDF)
-
Exploring C Semantics and Pointer Provenance
(PDF)
-
Efficient Tagged Memory
(PDF)
- Exokernel
(related topics: Xen, VMware)
- 1994:
The exokernel approach to extensibility (panel statement)
(PS)
- 1995:
The operating system kernel as a secure programmable machine
(PS)
- 1995:
Exterminate all operating system abstractions
(PS)
- 1995:
Exokernel: an operating system architecture for
application-level resource management
(PS)
- 1997:
Application performance and flexibility on exokernel systems
(HTML)
(PS)
- 2002:
Fast and flexible Application-Level Networking on Exokernel Systems
(PS)
- EROS - Yes, you can read about
EROS,
but you need
to propose a particular list of papers, see below.
- Plan 9
- File system track
- Introduction:
Plan 9 From Bell Labs
(PDF)
-
The Plan 9 File Server
(PDF)
-
Venti: A new approach to archival storage
(PDF)
- Network track
- Introduction:
Plan 9 From Bell Labs
(PDF)
-
The Organization of Networks in Plan 9
(PDF)
-
The IL protocol
(PDF)
- Naming track
- Introduction:
Plan 9 From Bell Labs
(PDF)
-
The Use of Name Spaces in Plan 9
(PDF)
-
Lexical File Names in Plan 9, or, Getting Dot-Dot Right
(PDF)
- Or suggest your own track of two to three other papers...
- Xen
(related topics: Exokernel, VMware)
-
Xen and the Art of Virtualization
(PDF)
-
Safe Hardware Access with the Xen Virtual Machine Monitor
(PDF)
-
Live Migration of Virtual Machines
(PDF)
- VMware
(related topics: Exokernel, Xen) - ok to read a subset of two or three
-
Fast Transparent Migration for Virtual Machines
(PDF)
-
VMI: An Interface for Paravirtualization
(PDF)
-
A Comparison of Software and Hardware Techniques for x86 Virtualization
(PDF)
-
The evolution of an x86 virtual machine monitor
(ACM--fetch while on campus)
- User-level isolation & execution of untrusted code (read two or three)
-
Native Client: A Sandbox for Portable, Untrusted
x86 Native Code (15 pages)
(PDF)
-
Vx32: Lightweight User-level Sandboxing on
the x86 (14 pages)
(PDF)
-
User-Level Sandboxing: a Safe and Efficient
Mechanism for Extensibility (13 pages)
(PDF)
- Stretching Linux
-
An Analysis of Linux Scalability to Many Cores (16 pages)
(PDF)
-
FlexSC: Flexible System Call Scheduling with Exception-Less
System Calls (14 pages)
(PDF)
- Scheduler activations (a different threading approach)
-
Scheduler Activations: Effective Kernel Support for
the User Level Management of Parallelism
(PDF)
-
An Implementation of Scheduler Activations on the NetBSD Operating System
(PS)
- Filesystem reliability options (you can read one, two, or three)
-
Analysis and Evolution of Journaling File Systems
(PDF)
-
Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem
(PDF)
-
Journaling Versus Soft Updates: Asynchronous Meta-data Protection in File Systems
(various)
Oddities
This is an odd thing that you can read. It is a hard thing to
read, so it will take some time and effort. Writing a meaningful
summary that is of finite length will be difficult. But if you
wnat to give it a shot you can.
Ian Beer,
Google Project 0.
An
iOS zero-click radio proximity exploit odyssey
.
Remember, you are not required to read something on this list.
This is the list of pre-approved readings. If you want to
read something else,
make a suggestion on the book choice page.
If you are proposing a collection of papers
which has not already been approved,
please send me a list of titles, page counts, and URLs.
I would appreciate it if you would make submissions in
HTML according to the format used in this document so I
can easily add approved readings. For example:
<P>Author.
<CITE>Title</CITE>
<A HREF="...">(PDF)</A></P>
<LI>Paper collection name
<UL>
<LI><CITE>Paper Title 1</CITE> (NN pages),
<A HREF="...">(PDF)</A>
<LI><CITE>Paper Title 2</CITE> (NN pages),
<A HREF="...">(PDF)</A>
</UL>
(Back to Book Report page)
|