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: Main Memory
Sections 7.6 and 7.7 may be omitted if you do not wish to cover
segmented architectures.
- Chapter 8: Virtual Memory
Sections 8.7 (Memory-Mapped Files) and 8.8 (Allocating Kernel Memory)
may be omitted if desired. Section 8.9 (Other Considerations) may be covered
lightly as well.
- Chapter 9: Mass-Storage Structure
Sections 9.3 (Disk Attachment) may be skipped. Sections 9.5
(Disk Management) and 9.6 (Swap Space Management) may be covered
lightly. Sections 9.7 (RAID Structure), 9.8 (Stable Storage
Implementation) and 9.9 (Tertiary-Storage Structure) may be skipped.
Disk scheduling algorithms (Section 9.4) make nice programming
exercises.
- Chapter 10: File-System Interface
Sections 10.3.3 and 10.3.4 may be omitted (Single-Level and Two-Level
Directories). Sections 1o.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.12.
- 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 running short.