CS422S: Operating Systems Organization (Spring 2003)


Home
Overview
Instructor
Graders
Notes
Homework
References

CS422: Course Overview

Instructor

Fred Kuhns
Email: fredk at cse dot wustl dot edu
also see instructor.html

Course Description

This course will explore the role 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.

Operating systems range in complexity from simple run-time executives on single processor embedded devices to general purpose computing environments distributed across the network on multiple heterogeneous systems. Consequently, this course will look at operating system as an example of developing a large and complex program 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, the application programs. Throughout the course students will be asked to consider a broad range of issues and complexities and possible solutions that arise in developing complex operational environments. This aspect of the course reinforces the necessity of structured design and development methodologies.

A fundamental component of designing an operating system is in selecting the proper set of resource abstractions and associated policies and mechanisms for their management. In this course students will explore various resource types and their common abstractions. For example, abstractions for memory, computations context, CPU, files and networks. 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.

Much of the course will be devoted to exploring the concurrent use of hardware resources. This is a central theme to all operating system and is critical for the development of correct 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), and text editors. 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 CS342 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. The first few lectures of cs422 provide suffucient background.

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

    Grading

    Relative weighting:
    Exams - 40%
    Programming Assignments - 40%
    Homework and Quizes - 20%

    Homeworks, Quizes, and Class Attendance

    Expect either a quiz or homework assigment each week, though this will vary depending on the work load. The quizes can be announced or unannounced. 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 30%
    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 20%
    Is the software logically structured?
    Is it understandable: use of comments and informative symbol names?
    Have potential maintainability or portability issues been addressed?
    Documentation - 30% (program must operate properly for full credit)
    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.


Last modified on Tue Jan 14 11:57:15 CST 2003