CS 5204 -  Advanced Operating Systems - Autumn 2000

VIRGINIA TECH
DEPARTMENT OF COMPUTER SCIENCE
Thursday 7:00 PM - NVGC Room 325
 
Instructor: A. Cyrus Sabzevari
 
E-mail: cyrus@cs.vt.edu (please prefix the subject of your message with CS 5204)
Home E-mail: acyrus@prodigy.net    (please prefix the subject of your message with CS 5204)
  URL: http://www.nvc.cs.vt.edu/~cyrus/f00.html
Go to home page
This page last updated: 11/30/00 by: ACS

Message Board & Assignments 

SYLLABUS :

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

Back to the top


READINGS:

Required reading:

  1. M. Singhal and N. Shivaratri, "Advanced Operating Systems", McGraw Hill, 1994.
Other recommended books:
  1. J. Bacon, "Concurrent Systems: Operating Systems, Database and Distributed Systems: an integrated approach," 2nd edition, Addison Wesley, 1998.
  2. A. Silberschatz, P. Galvin, G. Gagne, "Applied Operating System Concepts", Wiley, 1999.
  3. W. R. Stevens, "UNIX Network Programming" Prentice Hall, 1990.
  4. B. O. Gallmeister, "Programming for the Real World POSIX.4", O'Reilly & Associates, 1995.
  5. D. Butenhof, "Programming with POSIX Threads", Addison-Wesley, 1997.
  6. A. Tanenbaum, Modern Operating Systems, Prentice-Hall 1992.
  7. R. Chow and T. Johnson, Distributed Operating Systems and Algorithms, Addison Wesley, 1997.
  8. A. Tanenbaum, Distributed Operating Systems, Prentice Hall, 1995.
  9. T. Q. Pham and P. K. Garg, Multithreaded Programming with Windows NT, Prentice Hall, 1996.
  10. H. Custer, Inside Windows NT, Microsoft Press, 1993.
Back to the top


PROJECTS

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.

Project 1

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

Back to the top


LECTURE OUTLINES:

 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 

Back to the top