This is a graduate level course in Operating Systems designed for advanced
supervisory
systems, multiprocessing and distributed processing. Students
will be introduced to models of
memory management, task scheduling, and other resource allocation decisions.
Knowledge of basic computer system organization and operating system concepts is required (undergraduate level – CS 3204 or CS 4014). Knowledge of basic probability and statistics is recommended (undergraduate level – STAT 4714). Some basic knowledge of Algorithms is also recommended.
It discusses the basic concepts in centralized operating systems, including processes, synchronization, and memory management. Then, the coverage shifts to distributed operating systems. Topics covered include: communication models in distributed systems (client/server, remote procedure calls, and group communication), synchronization issues, processes and threads, scheduling, distributed shared memory, and distributed file systems. Several operating systems (e.g. UNIX and Windows NT) will be used to illustrate the concepts. The course provides students with hands-on experience in operating systems through a project.
This class requires both analytical as well as excellent computer programming skills. You will be required to program in either C++ or Java though out the course (project) and must follow Object Oriented design and programming methods.
For a more detailed syllabus view: Detailed Syllabus
Required reading:
Students will work in teams for the project. A single final technical report is due for the project. Project will involve design and programming. For project to complete successfully, it is very important to plan ahead and follow a schedule. Starting to work on a project a few days before it is due, will very likely cause problems to its successful completion. The project due date will not be postponed. A 20-minute presentation may be scheduled for some of the projects. You will be required to program in either C++ or Java for the project. If you cannot program in either of these languages you should consider dropping the course.
For an analysis of the basic Priority Inheritance Protocol, refer to:
L Sha, R. Rajkumar, John Lehoczky, "Priority Inheritance Protocols:
An Approach to Real-Time Synchronization", IEEE Trans. Comput., Aug. 1990.
Useful links:
Link to Object Management Group's
(OMG) UML resource page
Link
to Rational Software's UML documentation
Link to OMG Corba resource page (not
needed for the project)
Link
to IBM's pthread information
Link
to a POSIX thread tutorial page
Link to a POSIX thread
programming page
Link
to JAVA thread page
Lecture
1 Outline - Introduction and Synchronization Mechanisms (Chapters 1&
2) Word
97 format
Lecture
2 Outline - Deadlock (Chapter 3) Word
97 format
Lecture
3 Outline - Virtual Memory (not in text book) Word
97 format
Lecture
4 Outline - Introduction to Distributed Systems (Chapters 4 and 5)
Word 97 format
Lecture
5 Outline - Mutual Exclusion in Distributed Systems (Chapter 6)
Word 97 format
Lecture
6 Outline - Deadlock Detection in Distributed Systems (Chapter 7)
Word 97 format
PThreads
presentation PowerPoint 97 format
Lecture
7 Outline - Agreement Protocols (Chapter 8) Word
97 format
Lecture
8 Outline - Distributed File Systems (Chapter 9) Word
97 format
Lecture
9 Outline - Distributed Shared Memory (Chapter 10) Word
97 format
Lecture
10A Outline - Recovery (Chapter 12) Word
97 format
Lecture
10B Outline - Over view of POSIX IPC (not in the text book) in word 97
format
Lecture
11 Outline - Fault Tolerance (Chapter 13) Word
97 format
Lecture
12 Outline - Distributed Sceduling (Chapter 11) Word
97 format
Lecture
13 Outline - Security, Access and Flow Control (Chapter 14) Word
97 format