Advanced Single Semester Course
The following syllabus is designed for an undergraduate operating systems
course covering advanced issues. Determining what content to involve in
an advanced class can be a difficult task as quite often the background
constituting operating system fundamentals varies widely. However, it is
our experience that introductory courses generally cover material through
chapter 11 (File Systems). You may discover that you will need to adjust
what we recommend in earlier chapters based upon the experiences students
bring into your class. The projects at the end of certain chapters make excellent
exercises.
Below are recommendations for the first 20 chapters of the text. We have
attempted to offer solutions that are flexible enough allowing instructors
to tailor the material based upon the specific backgrounds of students and
goals of the class. We suggest covering at least one of the case studies
to complement the material.
- Chapter 1: Introduction
This chapter can be skimmed. Section 1.2 (Computer System Organization)
can be skipped if students are familiar with computer organization.
- Chapter 2: Operating System Structures
This chapter can be quickly skimmed, especially Sections 2.1 through 2.5.
The end-of-chapter project makes an excellent exercise.
- Chapter 3: Processes
Sections 3.1 and 3.2 can be skipped if students are familiar with the process
model and process scheduling. The end-of-chapter project makes an excellent
exercise.
- Chapter 4: Threads
For students familiar with the concept of threads, Section 4. 1
(Overview) can be skipped. The end-of-chapter project makes an excellent
exercise.
- Chapter 5: CPU Scheduling
Sections 5.1 through 5.3 can be skipped for students already familiar
with the notion of CPU scheduling. The secheduling algorithms make nice programming
exercises.
- 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. The end-of-chapter
project makes an excellent exercise.
- Chapter 7: Deadlocks
Sections 7.1 through 7.3 may be covered quickly for students already familiar
with deadlocks. The Bankers Algorithm makes an excellent programming exercise.
- Chapter 8: Main Memory
Sections 8.1 through 8.4 may be covered quickly depending upon students'
familiarity with main memory.
- Chapter 9: Virtual Memory
Sections 9.1, 9.2, and 9,4 may be skimmed quickly depending
upon students' familiarity with virtual memory.
- Chapter 10: File-System Interface
Section 10.1 (File Concept) may be skipped depending upon students' background.
- Chapter 11: File-System Implementation
Sections 11.1, 11.4, and 11.5 may be covered quickly depending
upon students' experience.
- Chapter 12: Mass-Storage Structure
Sections 12.1, 12.2, and 12.4 may be covered quickly depending
upon students' background. The 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.
- Chapter 14 Protection
We recommend covering this chapter in its entirety in an advanced operating
systems class.
- Chapter 15 Security
We recommend covering this chapter in its entirety in an advanced operating
systems class.
- Chapers 16-18 (Distributed Systems)
If you intend on covering distributed systems topics, we recommend covering
Chapters 16 (Distributed Systems Structures) and 17 (Distributed File Systems)
in their entirety. Chapter 18 (Distributed Coordination) can be covered if
there is sufficient time remaining.
- Chapter 19 (Real-Time Systems)
We recommend covering this chapter in its entirety in an advanced operating
systems class.
- Chapter 20 (Multimedia Systems)
We recommend covering this chapter in its entirety in an advanced operating
systems class.
- Chapters 21 and 22 (Linux and Windows XP Case Studies)
Covering at least one of the case studies nicely complements the material
covered in earlier chapters.