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: CPU Scheduling
Sections 5.4 (Multiple-Processor Scheduling) and 5.9 (Algorithm Evaluation)
can be omitted if desired.
- Chapter 6: Process Synchronization
Section 6.3 (Peterson's Solution) may be omitted if you do not intend on
covering software solutions to the critical section problem. Sections 6.7
(Monitors) and 6.10 (Atomic Transactions) may be omitted.
- 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: File-System Interface
Sections 10.3.3 and 10.3.4 may be omitted (Single-Level and Two-Level
Directories). Sections 10.5 (File Sharing) and 10.6 (Protection) may be omitted
if desired.
- Chapter 11: File-System Implementation
Section 11.2.3 (Virtual File Systems) may be skipped. Section 11.6
(Efficiency and Performance) may be covered lightly. Sections 11.7 (Recovery),
11.8 (Log-Structured File Systems) and 11.9 (NFS) may be omitted. You may
also choose to skip coverage of the WAFL File System in Section 11.10.
- Chapter 12: Mass-Storage Structure
Sections 12.3 (Disk Attachment) may be skipped. Sections 12.5 (Disk Management)
and 12.6 (Swap Space Management) may be covered lightly. Sections
12.7 (RAID Structure), 12.8 (Stable Storage Implementation) and 12.9 (Tertiary-Storage
Structure) may be skipped. Disk scheduling algorithms (Section 12.4)
make nice programming exercises.
- 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.