Operating Systems: Three Easy Pieces

Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau

New: A blog entry on why textbooks should be free.

Welcome to Operating Systems: Three Easy Pieces (now version 0.7 -- see BOOK NEWS for details), a free online operating systems book! The book is centered around three conceptual pieces that are fundamental to operating systems: virtualization, concurrency, and persistence. In understanding the conceptual, you will also learn the practical, including how an operating system does things like schedule the CPU, manage memory, and store files persistently. Lots of fun stuff!

This book is and will always be free in PDF form, as seen below. For those of you wishing to BUY a copy, please consider the following:

  • A wonderful hardcover edition (v0.7) - this may be the best printed form of the book (it really looks pretty good), but it is also the most expensive way to obtain the black book of operating systems. Currently: $39.00
  • An almost-as-wonderful (and somewhat cheaper) softcover edition (v0.7) - this way is pretty great too, if you like to read printed material but want to save a few bucks. Currently: $27.50
  • A pretty awesome electronic edition (v0.7) - this is a nice convenience and adds things like a hyperlinked table of contents, glossary of terms, lists of hints, tips, systems advice, and a few other things not seen in the free version. Currently: $10.00

These paid methods are both brought to you by the demand of various students and professors, and are a nice way to show your appreciation.

Lulu special: Use the code FOOLSGOLD and receive 10% off (through 4/2).

And now, the free online form of the book, in chapter-by-chapter form:

Intro Virtualization Concurrency Persistence Appendices
Preface Dialogue Dialogue Dialogue Dialogue Dialogue
Dialogue Processes Address Spaces Concurrency and Threads code I/O Devices Virtual Machines
Introduction code Process API code Memory API Thread API Hard Disk Drives Dialogue
Direct Execution Address Translation Locks Redundant Disk Arrays (RAID) Monitors
CPU Scheduling Segmentation Locked Data Structures Files and Directories Dialogue
Multi-level Feedback Free Space Management Condition Variables File System Implementation Lab Tutorial
Lottery Scheduling code Introduction to Paging Semaphores Fast File System (FFS) Systems Labs
Multi-CPU Scheduling Translation Lookaside Buffers Concurrency Bugs FSCK and Journaling xv6 Labs
Summary Advanced Page Tables Event-based Concurrency Log-structured File System (LFS)
Swapping: Mechanisms Summary Data Integrity and Protection
Swapping: Policies Summary
Case Study: VAX/VMS Dialogue
Summary Distributed Systems
Network File System (NFS)
Andrew File System (AFS)

INSTRUCTORS: If you are using these free chapters, please just link to them directly (instead of making a copy locally); we make little improvements frequently and thus would like to provide the latest to whomever is using it. Also: we have made our own class-preparation notes available to those of you teaching from this book; please drop us a line at remzi@cs.wisc.edu if you are interested.

HOMEWORKS: Some of the chapters have homeworks at the end, which require simulators and other code. More details on that, including how to find said code, can be found here: HOMEWORK

BOOKS NEWS: A huge number of pictures added, chapters completed, and other fun details in the latest stable version, 0.7. Track changes: NEWS

ACKNOWLEDGEMENTS: These students have greatly contributed to this effort, through endless bug reports and other comments. Your name could go here! (as well as in the printed book): ERRATA