CS 551 
Operation System Design and Implementation 
Syllabus 
Summer 2002


In summary

  1. This course is about UNIX based operating systems.
  2. Exactly it is about how to implement them
  3. In addition to strengthening the theory, you will have a chance to modify operating system code.
  4. You will learn
  5. If you think struggling with an operating system is fun, you will have fun.
  6. Everything will be accomplished by yourself, we will just assist you.

Introduction

This course is about implementation of an operating system. Most of the operating system courses are strong on theory and weak on practice. The aim of this course is to provide implementation opportunity with fundamental principle of UNIX based operating Systems.

The theoretical part includes processes, inter process communication, semaphores, monitors, message passing, scheduling, input/output, deadlocks, device drivers, memory management subjects. For implementation, we will use the  MINIX operating system - UNIX compatible operating system. Making modification on MINIX source code will give you a real experience with a micro kernel operating system and prepare you for a new OS technology.

Programming is the central part of this courses. After you learn the theory of operating system, you will apply it on the  MINIX code. The theory is nice but coding is awful. For example you might have seen a beautiful linked list implementation in a data structure course. Instead of abstract data type, in MINIX you modify the list which includes processes, etc. To link a process, first you create a process control block and directly modify the next pointer of the tail process on the queue to point to the new one.

Most of the time in this course, you will spend , is for making modifications to the MINIX operating system. Therefore you will have to know the C language to do development under MINIX. As much as MINIX is unix compatible, you may not have the same commands that you are familiar in UNIX, so be prepared to spend a lot of time to figuring out what is going on with the MINIX operating system.

PREREQUISITES

CS 450 - Principle of Operating Systems
CS 351 - Systems Programming
UNIX and C Programming Background

ATTENDANCE POLICY

This class requires discussion and lecture. Therefore attendance is strongly encourage. Lack of attendance may affect your homework and exam grade.

TEXTBOOK

Operating System Design and Implementation, Andrew S. Tanenbaum and Albert S. Woodhull, Prince Hall, 1997.
 

COMPUTER LAB AND PC

Because of programming requirements of the course and the limitation of computer facilities of Computer Labs, we encourage you to install  the MINIX operating system on your computers.

WEEK BY WEEK TOPICAL OUTLINE ( GENERAL )

           Topics to be covered      
-------------------------------------
Week 1     - Introduction
Week 2     - Conceptual Overview     
           - Chapter I
Week 3     - Processes               
           - Inter process Communication          
Week 4     - Classical IPC         
           - Process Scheduling      
Week 5     - MINIX Processes
           - MINIX OS Source code organization
Week 6     - Software / Hardware Principles
           - Input / Output
           - Deadlocks
Week 7     - MINIX I/O
           - RAM Disk
           - Disks
Week 8     - MIDTERM EXAM 
Week 9     - Clocks 
           - Terminals
           - MINIX System Tasks
Week 10    - Basic Memory Management
           - Swapping
           - Virtual Memory
Week 11    - Paging
           - MINIX Memory Management
Week 12    - File System 
           - Design View
           - File Server 
Week 13    - Security- Protection Mechanism
           - MINIX File System
Week 14    - Project / Selected Topics
Week 15    - Project Demonstration

GRADING POLICY

In general grading will be  (yet to be finalized!)

En-Hsin Huang, huanenh@iit.edu