revised book list

Tom Anderson (tom@emigrant)
Sun, 23 Aug 1998 01:29:18 -0700 (PDT)

If people have more suggestions. I'm as interested in
finding stuff to drop as I am finding stuff to add.

tom
-------
1. Historical Background
------------------------

Edsger W. Dijkstra.
The Structure of the "THE" Multiprogramming System.
Communications of the ACM 11(5), May 1968, pp. 341-346.

Per Brinch Hansen.
The Nucleus of a Multiprogramming System.
Communications of the ACM 13(4), April 1970, pp. 238-250.

Jack B. Dennis and Earl C. Van Horn.
Programming Semantics for Multiprogrammed Computations.
Communications of the ACM 9(3), March 1966, pp. 143-155.

A. Bensoussan, C. Clingen, and R. Daley.
The MULTICS Virtual Memory: Concepts and Design.
Communications of the ACM, Vol. 15, No. 5 (May 1972), pp. 308-318.

Jerome H. Saltzer.
Protection and the Control of Information Sharing in Multics.
Communications of the ACM 17(7), July 1974, pp. 388-402.

Dennis M. Ritchie and Ken Thompson.
The UNIX Timesharing System.
Communications of the ACM 17(7), July 1974, pp. 365-375.

2. OS Architecture and Structure
--------------------------------

W. Wulf, E. Cohen, W. Corwin, A. Jones, R. Levin, C. Pierson, and F. Pollack.
HYDRA: The Kernel of a Multiprocessor Operating System.
Communications of the ACM 17(6), June 1974, pp. 337-344.

R. Levin, E. Cohen, W. Corwin, F. Pollack, and W. Wulf.
Policy/Mechanism Separation in HYDRA.
Proceedings of The Fifth Symposium on Operating Systems Principles,
pp. 132--140.

B. Bershad, S. Savage, P. Pardyak, E. Sirer, M. Fiuczynski, D. Becker,
C. Chambers, and S. Eggers.
Extensibility, Safety and Performance in the SPIN Operating System.
Proc. of the 15th ACM. Symp. on Operating Systems Principles, December 1995.

3. Concurrency and Scheduling
-----------------------------

Andrew Birrell, An Introduction to Programming with Threads,
DEC SRC Research Report Number 35, January 1989.

Thomas Anderson, Brian Bershad, Edward Lazowska, and Henry Levy.
Scheduler Activations: Effective Kernel Support for the User-Level
Management of Parallelism.
ACM Trans. on Computer Systems 10(1), Feburary 1992, pp. 53-79.

Carl Waldspurger and William Weihl.
Lottery Scheduling: Flexible Proportional-Share Resource Management.
Proc. of the First USENIX Symposium on Operating Systems Design
and Implementation, November 1994.

Sheng-Chang Cheng, John Stankovic, and Krithivasan Ramamritham.
Scheduling Algorithms for Hard Real-Time Systems -- A Brief Survey.
In Hard Real-Time Systems, John Stankovic and Krithivasan Ramamritham,
IEEE Computer Society, 1988.

4. Communication
----------------

Andrew Birrell and Bruce Nelson.
Implementing Remote Procedure Calls.
ACM Trans. on Computer Systems 2(1), February 1984, pp. 39-59.

Norman Hutchinson, Larry Peterson, Mark Abbott, and Sean O'Malley.
RPC in the x-Kernel: Evaluating New Design Techniques.
Proceedings of the 12th SOSP, December 1989, pp. 91-101.

B. Bershad, T. Anderson, E. Lazowska, and H. Levy.
Lightweight Remote Procedure Call.
Proceedings of the 12th SOSP, December 1989, pp. 102-113.

Thorsten von Eicken, David E. Culler, Seth C. Goldstein, and Klaus E. Schauser.
Active Messages: A Mechanism for Integrated Communication and Computation.
Proc. 19th Int. Symposium on Computer Architecture, May 1992, pp. 256-266.

5. Virtual Memory and Distributed Virtual Memory
------------------------------------------------

Henry M. Levy and Peter Lipman. Virtual Memory Management in VAX/VMS.
Computer 15(3), March 1982, pp. 35-41.

Michael Young, Avadis Tevanian, Richard Rashid, David Golub, Jeffrey
Eppinger, Jonathon Chew, William Bolosky, David Black, and Robert Baron.
The Duality of Memory and Communication in the Implementation
of a Multiprocessor Operating System.
Proc. of the 11th Symposium on Operating System Principles, pages 63-76,
November 1987.

Kai Li and Paul Hudak.
Memory Coherence in Shared Virtual Memory Systems.
ACM Trans. on Computer Systems 7(4), November 1989, pp. 321-359.

J. B. Carter, J. K. Bennett, and W. Zwaenepoel.
Implementation and Performance of Munin.
Proc. of the 13th ACM Symp. on Operating Systems Principles, Oct. 1991,
pp. 152-164.

M. Satyanarayanan, H. H. Mashburn, P. Kumar, D. C. Steere, and J. J. Kistler.
Lightweight Recoverable Virtual Memory.
ACM Trans. on Computer Systems 12(1), Feb. 1994, pp.33-57.

6. File Systems
---------------

Marshall K. McKusick, William N. Joy, Samuel J. Leffler, and Robert S. Fabry.
A Fast File System for UNIX.
ACM Trans. on Computer Systems 2(3), August 1984, pp. 181-197.

J. Ousterhout, H. Da Costa, D. Harrison, J. Kunze, M. Kupfer, and J. Thompson.
A Trace-Driven Analysis of the UNIX 4.2 BSD File System.
Proc. of the 10th SOSP, December 1985, pp. 15-24.

Mendel Rosenblum and John K. Ousterhout.
The Design and Implementation of a Log-Structured File System.
ACM Trans. on Computer Systems 10(1), February 1992, pp. 26-52.

7. Distributed File Systems
---------------------------

R. Sandberg, D. Goldberg, S. Kleiman, D. Walsh, and B. Lyon,
Design and Implementation of the Sun Network Filesystem.
Proc. of the 1985 Usenix Summer Conference, June 1985, pp. 119-130.

John H. Howard, Michael L. Kazar, Sherri G. Menees, David A. Nichols,
M. Stayanayanan, Robert N. Sidebotham, and Michael J. West.
Scale and Performance in a Distributed File System.
ACM Trans. on Computer Systems 6(1), February 1988, pp. 51-81.

T. Anderson, M. Dahlin, J. Neefe, D. Patterson, D. Roselli, and R. Wang.
Serverless Network File Systems.
ACM Trans. on Computer Systems 14(1), Feb. 1996.

James Kistler and M. Satyanarayanan.
Disconnected Operation in the Coda File System.
ACM Trans. on Computer Systems 10(1), February 1992, pp. 3-25.

8. Reliability
--------------
J. Gray.
The Transaction Concept: Virtues and Limitations.
Proc. of the Seventh VLDB, September 1981, pp. 144-154.

Bruce G. Lindsay, Laura M. Haas, C. Mohan, Paul F. Wilms and Robert A. Yost.
Computation and Communication in R*: A Distributed Database Manager.
ACM Trans. on Computer Systems 2(1), February 1984, pp. 24-38.

Kenneth P. Birman.
The Process Group Approach to Reliable Distributed Computing.
Communications of the ACM 36(12), December 1993, pp. 37-53.

John Chapin, Mendel Rosenblum, Scott Devine, Tirthankar Lahiri,
Dan Teodosiu, and Anoop Gupta.
Hive: Fault Containment for Shared-Memory Multiprocessors.
Proc. of the 15th ACM SOSP, pp. 12-25, December 1995.

9. Distributed Applications and Services
--------------------------------------------

Michael D. Schroeder, Andrew D. Birrell and Roger M. Needham.
Experience with Grapevine: The Growth of a Distributed System.
ACM Trans. on Computer Systems 2(1), February 1984, pp.3-23.

Eric Jul, Henry Levy, Norman Hutchinson, and Andrew Black.
Fine-Grained Mobility in the Emerald System.
ACM Trans. on Computer Systems 6(1), February 1988, pp. 109-133.

Douglas B. Terry, Marvin M. Theimer, Karin Peterson, Alan J. Demers,
Mike J. Spreitzer, and Carl H. Hauser.
Managing Update Conflicts in Bayou, a Weakly Connected Replicated
Storage System.
Proceedings of the Fifteenth ACM Symposium on Operating Systems Principles,
p. 172-183, December, 1995.

10. Security
-----------

Roger M. Needham and Michael D. Schroeder.
Using Encryption for Authentication in Large Networks of Computers.
Communications of the ACM 21(12), December 1978, pp.993-998.

M. Burrows, M. Abadi, and R. Needham.
A Logic of Authentication.
ACM Trans. on Computer Systems, 8(1), Feb. 1990.

11. Experience
--------------
B. Lampson.
Hints for Computer System Design.
IEEE Software, 1(1):11-28, January 1984.

J. Ousterhout.
The Role of Distributed State.

----------
Strongly considered, but left out for now:

David D. Redell, Yogen K. Dalal, Thomas R. Horsley, Hugh C. Lauer,
William C. Lynch, Paul R. McJones, Hal G. Murray, and Stephen C. Purcell.
Pilot: An Operating System for a Personal Computer.
Communications of the ACM 23(2), February 1980, pp. 81-92.

David Cheriton.
The V Distributed System.

B. Walker, G. Popek, R. English, C. Kline, and G. Thiel.
The LOCUS Distributed Operating System.
Proc. 9th SOSP, October 1983.

Leach et al., Apollo

Butler Lampson and David Redell.
Experience with Processes and Monitors in Mesa.

John Ousterhout, Co-scheduling.

Maurice Herlihy.
A Methodology for Implementing Highly Concurrent Data Structures.
Proc. of the 2nd ACM SIGPLAN Symposium on Principles and Practice
of Parallel Programming, March 1990, pp. 197-206.

Henry Massalin and Calton Pu.
Threads and Input/Output in the Synthesis Kernel.
Proceedings of the 12th SOSP, December 1989, pp. 191-200.

Leslie Lamport.
Time, Clocks, and the Ordering of Events in a Distributed System.
Communications of the ACM, Vol. 21, No. 7 (July 1978), pp. 558-565.

Roger Haskin, et al.
Recovery Management in QuickSilver.

Alfred Z. Spector, et al.
Distributed Transactions for Reliable Systems

Ken Thompson's Turing Lecture.

Victor L. Voydock and Stephen T. Kent.
Security Mechanisms in High-Level Network Protocols.

D. Denning and P. Denning. Data Security.
Computing Surveys, Vol. 11, No. 3 (September 1979), pp. 227-249.