Typical Single Semester Course
The following syllabus is designed 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 13 chapters. 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 - Win32 (Windows), POSIX (Unix-based),
and Java. You may choose to cover just one of the APIs depending upon student
experience. (For example, if your curriculum is primarily C-based on Unix/Linux/Mac
OS X machines, you may choose to just cover POSIX.)
- Chapter 1: Introduction
This chapter can be covered fairly quickly. Section 1.2 (Computer
System Organization) can be skipped if students are familiar with computer
organization. Section 1.10 (Distributed Systems) can be ommitted if you do
not intend on covering networking.
- Chapter 2: Operating System Structures
Sections 2.6 (Operating System Design and Implementation), 2.8 (Virtual
Machines), 2.9 (System Generation), and 2.10 (System Boot) may be omitted
if desired.
- Chapter 3: Processes
Section 3.6 (Communication in Client-Server Systems) may be skipped if desired.
- Chapter 4: Threads
Section 4.4 (Threading Issues) can be covered lightly.
- Chapter 5: Process Synchronization
Section 5.3 (Peterson's Solution) may be omitted if you do not intend on
covering software solutions to the critical section problem. Sections 5.7
(Monitors) and 5.10 (Atomic Transactions) may be omitted.
- Chapter 6: CPU Scheduling
Sections 6.4 (Multiple-Processor Scheduling) and 6.9 (Algorithm Evaluation)
can be omitted if desired.
- Chapter 7: Deadlocks
You may only want to cover Sections 7.1 through 7.4.
- Chapter 8: Main Memory
Sections 8.6 and 8.7 may be omitted if you do not wish to cover
segmented architectures.
- Chapter 9: Virtual Memory
Sections 9.7 (Memory-Mapped Files) and 9.8 (Allocating Kernel Memory)
may be omitted if desired. Section 9.9 (Other Considerations) may be covered
lightly as well.
- Chapter 10: Mass-Storage Structure
Sections 10.3 (Disk Attachment) may be skipped. Sections 10.5
(Disk Management) and 10.6 (Swap Space Management) may be covered
lightly. Sections 10.7 (RAID Structure), 10.8 (Stable Storage
Implementation) and 10.9 (Tertiary-Storage Structure) may be skipped.
Disk scheduling algorithms (Section 10.4) make nice programming
exercises.
- Chapter 11: File-System Interface
Sections 11.3.3 and 11.3.4 may be omitted (Single-Level and Two-Level
Directories). Sections 11.5 (File Sharing) and 11.6 (Protection) may be omitted
if desired.
- Chapter 12: File-System Implementation
Section 12.2.3 (Virtual File Systems) may be skipped. Section 12.6
(Efficiency and Performance) may be covered lightly. Sections 12.7
(Recovery), 12.8 (Log-Structured File Systems) and 12.9 (NFS) may
be omitted. You may also choose to skip coverage of the WAFL File
System in Section 12.12.
- Chapter 13: I/O Systems
Section 13.1 and 13.2 may be omitted if students have an understanding
of I/O hardware. Section 13.6 (STREAMS) may be omitted. Remaining sections
may be covered lightly if time is running short.