CS422S: Operating Systems Organization (Spring 2002)

Department of Computer Science
School of Engineering and Applied Science
Washington University in St. Louis

Updates:

Tue Apr 9 13:01:44 CDT 2002

Homework 4 assigned

Thu Apr 4 16:44:38 CST 2002

Project 3 (aka the 4th project) is now posted. Due on the last day of class.


Instructor

Fred Kuhns
Email: fredk at cse dot wustl dot edu
Office Hours: Tuesday and Thursday 2:30 to 3:30, Bryan 504

Graders

Zachary Byers,
Email: zcb1@cec.wustl.edu
Office Hours: Tu, Th 3:00-5:00PM in Lopata 408 (Graders Office), or by appointment through e-mail.
Kevin Chin,
Email: klc2@cec.wustl.edu
Office Hours: TBD in Lopata 408 (Graders Office), or by appointment through e-mail.
Xin Fan,
Email: xf1@cec.wustl.edu
Office Hours: Monday 7:00PM to 9:00PM in Lopata 408 (Graders Office), or by appointment through e-mail.
Josh Hays,
Email: jph1@cec.wustl.edu
Office Hours: News Group monitoring, or by appointment through e-mail.
Olcan Sercinoglu,
Email: os1@cec.wustl.edu
Office Hours: News Group monitoring, or by appointment through e-mail.
Gregory Shea,
Email: gss2@cs.wustl.edu
Office Hours: Sun. 12:00-3:00PM in Lopata 408 (Graders Office), or by appointment through e-mail.
Joseph Tucek,
Email: jat2@cec.wustl.edu
Office Hours: Tu, Th 3:30PM to 4:30PM in Lopata 408 (Graders Office), or by appointment through e-mail.

Locations


Course Description

Exploration of operating systems as managers of shared local and remote resources. Using UNIX and Linux as conceptual and experimental frameworks, students study algorithms and data structures that support essential operating systems services. Concepts are reinforced through programming exercises and comparative studies. Topics include: time sharing and real-time scheduling of processes and threads, networking, memory management, virtual memory, device management, concurrent programming and file system organization.

This course covers three aspects of systems:

  1. An example of developing a large and complex program (application) and the various issues and concerns that arise from such an endeavor. That is, an operating systems is nothing more than a program (i.e. server) providing a set of services to clients. So it should be studied as such giving the students an opportunity to view a broad range of issues and complexities and possible solutions that arise in any large project.

    This aspect of the course reinforces the necessity of structured design and development methodologies.

  2. Resource abstraction and management: develop an appreciation for how system resources (hardware and software) can be modeled as abstract resources. Then developing a general set of mechanisms (algorithms) for manipulating, partitioning and scheduling the resources for both internal use and for allocating to clients. The students learn to differentiate between the resource (or its abstraction), mechansisms to manipulate it and policies governing use.

    The student will also learn common abstractions such as threads, address space and files. As well as more interesting notions such as migrating threads or scheduler activations.

    They also learn about very useful constructs for managing resources in a concurrent programming environment: synchronization mechanisms and multi-threaded programs.

  3. Gaining additional experience designing and developing programs that
    • must deal with concurrent programming issues
    • consider perhaps novel resource abstractions and implement mechanisms to manage them
    • perform standard systems programming tasks
    • interoperate with other modules/programs.

Prerequisites

Prerequisite knowledge and experience:
  1. CS 241 - Algorithms and Data Structures CS102/102and cs241 - provides the core understanding of software systems and their development. The student gains an understanding of conventional data structures (such as linked lists, trees, arrays and integers), basic algorithms and a working understanding and appreciation for algorithm complexity and the time versus space trade offs that can be made. These courses also provide an understanding of how data is represented in the system along with an introduction to software systems and development methodologies.

  2. In addition to the above, the prospective student must have additional experience designing and implementing software using a standard set of development tools, preferebly in the UNIX environment (UNIX is the target platform for the cs422 assignments because of source code documentation/paper availability). Ideally, this experience includes familiarity with typical software development tools such as a compiler (gcc preferred), debugger (gdb preferred), editor that knows about the language syntax (vim and emacs will do). As for languages, either C or C++: if C++ then familiarity with the core C constructs and the C standard library (libc) are desirable. Options: a) CS342 CS 342 Developing Object-Oriented Software with Patterns and Frameworks or b) CS306/ CS265.

  3. Nice to have, but not required: CS306 - it is helpful to have an understanding of the underlying hardware components in order to appreciate the software constructs built on top of them. For example, the stack and stack pointer and how it is used for function calls. Mapping C or C++ to assembly. Using a disassembler to debug difficult problems. How cache works and the role of typical bus bridges. Looking at a typical system (Intel for example) will help the students understand the OS abstractions and optimization techniques.

    However cs306 is not necessary to develop a sufficiently deep understanding of the material presented in cs422. However, the first few lectures of cs422 provide suffucient background.

  4. Or equivalent experience in software development and a basic understanding of computer architecture.

    Notes and Reference Materials

    1. Course Syllabus (PS or PDF)
    2. CS 422 Spring 2000 Web Page

    Texts

    Required:

    Other general references:

    Note: Much of the course meterial has been derived from the highlighted texts below.

    Grading

    The relative weighting of the components of the grades is:

    Homeworks, Quizes, and Class Attendance

    There will be weekly homework assignments from the required text and an occasional short graded quiz. The quizes can be announced or unannounced. Therefore, it is essential that you attend class in order to prepare for the quizes and exams. There will be no makeup quizes.

    Exams

    There will be two exams: a mid-term and a final. Each exam will be worth 20% of your grade. Material tested on the final exam will be comprehensive.

    Programming Projects

    There will be 4-6 programming projects. Three of the assignments (called projects below) will involve substantial programming. Students are assumed to be competent in C or C++ and familiar with the UNIX operating system.

    The general criteria for the grading of the programs is given below:

    Project Design 40%
    Are all conditions covered (errors, operations specified in assignment)?
    Have synchronization and process/thread scheduling issues been addressed?
    Have Proper measurement and/or data collection techniques been used?
    Does the overall design and implementation demonstrate an understanding of the underlying issues?
    Does the solution demonstrate insight or have novel approaches been used?
    Structure 15%
    Is the software logically structured?
    Is it rational and is there a sufficient use of comments?
    Have potential maintainability or portability issues been addressed?
    Documentation - 25%
    Is there a supplied README file and any other files required by the project?
    Does the analysis address all required issues and is it insightful?
    Is the documentation logically structured and is it understandable?
    Have instructions been followed?
    Program Operation - 20%
    Does the program work or does it terminate in an error?
    Does it accept the proper parameters?
    Are the results displayed properly?
    Are the results correct or reasonable?

    Late Submissions

    Homework and projects may be submitted up to three days late. However, for each day late 5 points will be deducted. After the third day the homework or project will not be accepted.

    Occasionally, in special situations, arrangements for a late submission can be made if requested well in advance of the due date.


    Syllabus (Subject to Change)

    Reference material for lectures (and source for many of the powerpoint slides):

    Date Class # Topic Text Chapter
    1/8 1 Introduction PPT, PS 1
    1/10 2

    Computer Architecture Review and OS Overview PPT, PS

    1 & 2
    1/15 3 The Process Model PPT, PS 2
    1/17 4 Processes management in UNIX, See lecture notes from 1/15 3
    1/22 5 Interprocess Communications PPT, PS 3
    1/24 6 Review Project and OS Structure Class Notes
    1/29 7 Threads PPT, PS 4
    1/31 8 Concurrency and Synchronization PPT,PS 5
    2/5 9 Concurrency and Synchronization: Continued 5
    2/7 10 Finish Concurrency and Synchronization 5
    2/12 11 Deadlocks 6
    2/14 12 Deadlocks PPT,PS 6
    2/19 13 Scheduling PPT, 9
    2/2114 Scheduling 9
    2/26 15 Review for Midterm
    2/2816 Midterm Exam. The midterm is in two parts: part one is to be taken in class and part two it to be tturned in no later then start of class Tuesday, 12 March. Part two in MS Word format, PostScript or PDF. N/A
    3/12 17 Real Time Scheduling PPT or PS 10
    3/14 18 Memory Management PS, PPT 7
    3/19 19 Finish Memory Management and start Virtual Memory PS, PPT 8
    3/21 20 Virtual Memory 8
    3/26 21 Discussion of Project 2, Quiz, File Systems PPT PS 12
    3/2822 File Systems 12
    4/223 Midterm returned and reviewed. I/O Systems PS, PPT

    11

    4/424 Mass-Storage Structure PS, PPT 12
    4/925 Networking Overview PPT PS 13

    4/11

    26

    Distributed File Systems PPT, PS 13 and 14
    4/1627 Distributed Process Management, PPT, PS 14 and ClassNotes
    4/18

    28

    Review for Final - Last Class PPT, PS. Class Notes and Review Questions
    4/26 29 Final exam, Friday 4/26, 1:00PM - 3:00PM N/A

    Homework Assignments

    You must turn in a hard copy of your homework in class the day it is due. Below are listed the homework assignments and due dates.

  • Assignment 4 -
    Chapter 7: 7.5
    Chapter 8: 8.1, 8.3
    Chapter 11: None
    Chapter 12: 12.3
    Assignments Due: Start of Class next Tuesday, 16 April

    Programming Assignments

    For an overview of the general project requirements see Project Requirements and Guidelines . For some background information in UNIX programming see Background.