George Mason University

CS571 - Operating Systems - Spring 2002

Tuesday 4:30-7:10, ENT 175

Section 001

News | Assignments | Resources | TA | Grading | Late | Syllabus | Description | Readings | Groups | Projects | Schedule

This page last updated on 4/17/02.

Professor Peter J. Denning
(for fastest service prefix the subject of your email with CS571)

Course office hour Tuesday 3:00-4:00 or by appt; e-mail all times
ST2 Room 430B; 703-993-1525

This page URL:

Click here for CS571, Fall 2001

Academic Integrity

Read this very important statement about academic integrity, and live by it.


Final Quiz Q2 is posted below. It is due Tuesday May 7. You can deliver it in person to the CS office or you can fax it to me at 703-993-1710. There are two bonus questions worth 1 extra-credit point each. (4/17/02)

The links below will include the current topic list, the current newsletter, and lecture slides. Lecture slide links will be added as the slides are needed for class. Recorded lectures are available via the network section page (see below).


The lecture slides for this course (and its companion CS471) are available as an Internet book, The Art of Operating Systems. These slides will support topics covered in the syllabus and the book.

Extra slides shown weekly are listed below.

  • January 22, 2002.
  • February 5, 2002.
  • February 19, 2002.
  • March 19, 2002.

    Click the title line above to see the technical newsletters. Copies of previous semester's issues are also here.


    This space will contain links to all assignments.


    Links to web-based resources useful in the course appear in this space. Those needing Adobe Acrobat reader are marked "PDF".

  • Programming - Solaris Multithread
  • Introduction to Programming Threads. Written by Christopher Angelo Provenzano at MIT.
  • Solaris Documentation (including Multithreaded Programming Guide)
  • Programming -- Java
  • Java Threads Tutorial by Allen Holub, from Java One.
  • Build your own supercomputer with Java, by Aasish Patil.
  • Java Programming including threads and network programming.
  • SUN's Online Java Tutorial.
  • Tutorials and Notes
  • OS Overview. From Encyclopedia of Computer Science. (PDF)
  • Levels Chart. (PDF)
  • Reading Practices to help you read faster and more effectively. (PDF)
  • Notes on Virtual Machines. (PDF)
  • Definitions of Virtual Machines.
  • Passwords , an article from American Scientist. (PDF)
  • Queueing network models tutorial. (PDF)
  • Queueing formulas list.
  • Before Virtual Memory by Peter Denning, a personal retrospective on the early development of this technology (Needs Adobe Acrobat reader).
  • Virtual Memory overview, by Peter Denning, from a recent issue of ACM's Computing Surveys (PDF)
  • Analysis Methods for Virtual Memory by Denning. Shows LRU, OPT stack distance methods and WS interreference interval method. (PDF)
  • Sliding Through Operating Systems, Daniel Menasce's on-line book.
  • Other
  • Paul Baran's Reports on packet switched network architectures from 1965.
  • Virtual Memory Module of the CNE.
  • Interprocess Synchronization Module of the CNE.
  • Workflow Module of the CNE
  • Distributed Shared Memory Module of the CNE.
  • Workbenches (as Java applets) implementing workbenches about operating system principles (you must have Java enabled on your browser).

  • TA:

    The course TA is Vamshi Kalakuntla ( His office is in Room ST2/435 and hours are:

  • Monday, 2:30-4:30pm
  • Tuesday, 7:30-9:30pm
  • The TA will be primarily responsible to help you with programming and system questions around your two projects (P1 and P2). Questions about other assignments should be directed to Professor Denning.


    There will be:

    The homework assignments are important to your progress. At the beginning of the next class following the due date I will review the questions and their answers.

    Extra credit problems may be offered from time time; extra credit (EC) points will be added to your total.

    Your overall score, S, at any given time can be estimated by computing your average to date in each category on a scale from 1 to 10, combining them by the given weights, and adding your (total EC points)/20. When expressed as a number between 1 and 10, your grade is (no curve):

    Class participation is very important. Active participation may be rewarded with extra points toward your score S.


    I will not accept assignments late unless you have pre-arranged a new due date, or if there is an emergency and you let me know as soon as possible after the emergency. The principle I am working with is that your due date is a promise; you are responsible for your promises. If you cannot fulfill your promise, you need to negotiate a new due date as soon as you know.


    Jan 22: OS overview and base architecture
    Jan 29: Processes, threads, time sharing
    Feb 5: Synchronization, monitors
    Feb 12: Information Object models
    Feb 19: Virtual Machine models
    Feb 26: Storage systems, file systems
    Mar 5: Virtual memory systems
    Mar 10: No class -- Spring holiday
    Mar 19: Performance evaluation
    Mar 26: Performance evaluation
    Apr 2: Distributed systems
    Apr 9: Remote procedure call
    Apr 16: Protection and Security
    Apr 23: Protection and Security
    Apr 30: Course Review
    May 7: OS futures


    CS571 is a 3-credit course with prerequisites CS310 and CS365 or equivalent. I am assuming you know the prerequisite material. I am also assuming you are a competent C++/Java programmer.

    The course introduces the basic concepts in operating systems, emphasizing distributed systems. These concepts include processes, synchronization, memory management, file and I/O management, user program execution. The UNIX operating system is used to illustrate implementation of these concepts. Basic performance analysis methods such as Markov chains and Mean Value Analysis are introduced to study the performance aspects of mechanisms used in operating systems. You will get some hands-on experience in operating systems through a course project.


    Required text books:

    Other recommended books:

    I may also select articles for you to read; if that happens, copies will be available for you on this web page as resources.


    On the first day of classes, you will form into project groups, most of size 3. You should meet with your group once a week as part of your normal class work. You should discuss all homework questions freely and frequently in your group. Except when group projects are explicitly declared, you must write your own individual report for each assignment. You will learn much more working with your group than you would working alone. It is important to acknowledge the sources of your information -- name the persons with whom you collaborated, cite sections from books or articles if you use them, etc. In short, collaborate freely, acknowledge all help and sources, and write your own individual homework reports. Your study group will also function as a project team in the projects that you will work on. At all times, you must observe the University's Honor Code.


    There will be a course project to implement a simulator of a significant part of an operating system.

    It is important for your to work out in advance how you will divide up the work on the project among your team mates so that you can aim for equal distribution of the points. It is important to work out a schedule so that you can get everything done -- don't put the main work off to the last minute because you can be severely hampered by computer overloads that so frequently happen in last-minute rushes. It is also important to keep your promises to your group members because otherwise they will not sign an equal-distribution statement with you at the end. The project due dates will not be postponed except for major emergencies (e.g., snow days or machine unavailability).

    If you encounter any breakdowns in the operation of your group, let me know immediately so that I can help you solve the problem.