Typical Single Semester Course
The following provides a selection of topics for a typical
undergraduate course where the goal is to introduce students to
the concepts of operating systems. We expect the typical
undergraduate introductory operating systems course to partially
cover the first 15 chapters, as well as Chapter 18 (Virtual
Machines). Below are some recommendations what safely may be
skipped yet still provide the student with a solid understanding
of what operating systems are and what they do.
This text integrates three different APIs - POSIX
(Linux/macOS/UNIX), Java, and to a lesser extent Windows. You may
choose to cover just one of the APIs depending upon student
experience. For those students familiar with C, we strongly
encourage following the POSIX-based coverage of the text. For those
more familiar with Java, we encourage you to use the Java API.
- Chapter 1: Introduction
This chapter can be covered fairly quickly. Sections 1.2
(Computer System Organization) and 1.3 (Computer System
Architecture) can be skipped if students are familiar with those
topics. Section 1.8 (Distributed Systems) can be omitted if you
do not intend on covering networking. Section 1.11 (Free and
Open-Source Operating Systems) may also be omitted.
- Chapter 2: Operating System Structures
This chapter can be covered fairly quickly. Sections 2.7
(Operating System Design and Implementation), 2.9 (Building and
Booting an Operating System), and 2.10 (Operating System
Debugging) may be omitted if desired.
- Chapter 3: Processes
This is an important chapter and provides the basis for many
later topics. Some may choose to skip Section 3.7 (Examples of
IPC Systems) as well as Section 3.8 (Communication in
Client-Server Systems) may be skipped if desired.
- Chapter 4: Threads & Concurrency
Section 4.3 (Multithreading Models) may only require covering
the 1:1 model. Section 4.5 (Implicit Threading) may also be
skipped. Section 4.6 (Threading Issues) can be covered lightly.
- Chapter 5: CPU Scheduling
Sections 5.6 (Real-Time Scheduling) and 5.8
(Algorithm Evaluation) may be omitted if desired.
- Chapter 6: Synchronization Tools
Section 6.3 (Peterson's Solution) may be omitted if you do not
intend on covering software solutions to the critical section
problem. If you do not intend on covering lower-level details,
Section 6.4 (Hardware Support) may be omitted. Sections 6.7
(Monitors) may be omitted as well.
- Chapter 7 Synchronization Examples
You may choose to cover either Section 7.3 (POSIX
Synchronization) or 7.4 (Synchronization in Java) based upon the
programming environment you are using.
- Chapter 8: Deadlocks
You may only want to cover Sections 8.1 through 8.4.
- Chapter 9: Main Memory
We encourage you to cover this entire chapter. To save time, you
may choose to cover sections 9.6 and 9.7 which cover Intel and
- Chapter 10: Virtual Memory
Sections 10.7 (Memory Compression) and 10.8 (Allocating Kernel
Memory) may be omitted if desired. Section 10.9 (Other
Considerations) may be covered lightly as well.
Many users of the text cover the following five chapters on
storage management very lightly. We highlight what we feel
should be included in a typical introductory operating systems
- Chapter 11: Mass-Storage Structure
Section 11.4 (Error Detection and Correction) may be skipped.
Sections 11.5 (Storage Device Management) and 11.6 (Swap Space
Management) may be covered lightly. Section 11.7 (Storage
Attachment), and 11.8 (RAID Structure) can be omitted.
- Chapter 12: I/O Systems
Section 12.1 and 12.2 may be omitted if students have an
understanding of I/O hardware. Section 12.6 (STREAMS) may be
omitted. Remaining sections may be covered lightly if time is
- Chapter 13: File-System Interface
Sections 13.4 (Protection) and 13.5 (Memory-Mapped Files) may be
- Chapter 14: File-System Implementation
Sections 14.6 (Efficiency and Performance), 14.7 (Recovery), and
14.8 (The WAFL File System) may be omitted.
- Chapter 15 File-System Internals
Sections 15.4 (File Sharing), 15.5 (Virtual File Systems),
15.6 (Remote File Systems), 15.7 (Consistency Semantics), and
15.8 (NFS) may be skipped.
- Chapter 18 Virtual Machines
We encourage a light reading of this chapter even for
introductory courses given the importance of virtual machines.
Sections 18.7 (Examples) and 18.8 (Virtualization Research) can