George Mason University

CS571 - Operating Systems - Fall 2001

Tuesday 4:30-7:10, ST1/126

Section 001 -- the in-class section
Section 003 -- the network section

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

This page last updated on 12/14/01.

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:

Academic Integrity

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


Final grades will be completed and submitted to registrar no later than Dec 18.

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).


TECHNICAL NOTES: Copies of technical newsletters (distributed by email) are posted here.

NETWORK SECTION: All classes will be conducted using the ClassWise system for distribution of the class to the networked students. ClassWise records the lectures; those recordings are available to all members of the class. Please consult the ClassWise Web Page for information on how to download the ClassWise client for your WinTel PC. If you need technical support AFTER you have downloaded and tried the demo, call 703-993-1743 between 2pm and 7pm weekdays.


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
  • Multi-thread programming and IPC in Unix. A web tutorial.
  • 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's primary TA is Vamshi Kalakuntla, The course is also assisted by TA Yun Yang, They are your primary source for help with programming assignments. Their office hours are:

    Monday 7:30-8:30pm, ST2/435 (Kalakuntla)

    Wednesday 2:00-4:00pm, ST2/435 (Kalakuntla)

    Thursday 7:30-9:30pm, ST2/365 (Yang)


    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.


    Aug 28: OS overview and base architecture
    Sep 4: Processes, threads, time sharing
    Sep 11: Synchronization, monitors
    Sep 18: Information Object models
    Sep 25: Virtual Machine models
    Oct 2: Storage systems, file systems
    Oct 9: No class -- Columbus holiday
    Oct 16: Virtual memory systems
    Oct 23: Performance evaluation
    Oct 30: Performance evaluation
    Nov 6: Distributed systems
    Nov 13: Remote procedure call
    Nov 20: Protection and Security
    Nov 27: Protection and Security
    Dec 4: 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.