EECS 338   Introduction to Operating Systems

Spring 2008

Course Description

This is an introductory course on operating systems. The goal of the course is to help students understand the functions and design of modern operating systems. The course will cover various OS topics, including processes/threads, CPU scheduling, synchronization, semaphores, monitors, dead lock dectecion and prevention, memory management, virtual memory, file systems, and distributed systems. The course involves system programming under UNIX environment.

Prerequisites

Knowledge of C programming language and data structures. Note, the university bulletin requires EECS 337 as the prerequisite, but this may not be accurate. In general, knowledge on computer systems, both hardware organization and software design, is helpful.

Textbooks 

Required:
Operating System Concepts (7th edition), by Silberschatz, Galvin and Gagne, John Wiley Sons, 2004, ISBN: 0-471-69466-3
OR
Operating System Concepts (6th edition, Windows XP update), by Silberschatz, Galvin and Gagne, John Wiley Sons, 2003, ISBN: 0-471-25060-0

Helpful:

Any reference books on UNIX/LINUX programming. An example is: Unix : Interprocess Communications in UNIX (2nd edition), by Gray J. S., Prentice Hall, 1998. Note, some students may choose to use the Linux version. That is better.

Course Information

Instructor: Shudong Jin (Email: jins@case.edu)
Lecture time: Tuesday & Thursday, 2:45-4:00pm; Location: NORD 410
Office hours: Tuesday, 4:00-5:00pm, and Thursday, 10:00-11:00am; Office: OLIN 502

Recitation leader: TBA
Recitation time: Tuesday, 6:00-7:00pm; Location: NORD 410

Grader: TBA

Course Content and Requirements

Lectures will be given twice each week, and there will be a recitation session on Unix programming per week. Students are expected to attend all the lectures and recitations, and to be responsible for all the materials covered in class. Classes missed due to reasons other than medical conditions may not be made up. Active participation and contribution to improving the lectures are especially encouraged.

There will be 7 assignments, including 5 programming assignments and 2 written assignments. Most of the programming will be done in UNIX/LINUX environment using C language. You may use your own Linux machine, Smithlab or the department SUNs. However, your code must run on the department servers who run a version of LINUX. The grader will also run your code there. Students can use electronic submission via email to the grader or the instructor. We will use this software system to detect code copying. The two written assignments will be given so that the students will get ready for the midterm and final exams. Late submission of assignements are still acceptable within 3 days after the deadline, and the grades will be discounted by 10% for every passed day. After 3 days, no submissions will be accepted.

For each programming assignment, please send your electronic copies -- source code, makefile, binary code, README, and anything you want the grader to know. This should be done by Midnight of the due date. Hardcopies are not required. For written assignments, both electronic and hard copies are acceptable.

There will be an in-class midterm exam (in the week before the Spring break), and a final exam.

Grading Policy

Assignments (mainly programming): 50%
Midterm exam: 20%
Final exam: 30%
Active participation and contributions: up to 10% bonus.

Current grades of the class.

Tentative Schedule

Content from the 7th edition of the textbook

Week   1 (01/15, 01/17)    Introduction (Chapter 1), Operating-System Structures (Chapter 2)
Week   2 (01/22, 01/24)    Operating-System Structures (Chapter 2), Processes (Chapter 3)
Week   3 (01/29, 01/31)    Threads (Chapter 4), CPU schdeuling (Chapter 5)
Week   4 (02/05, 02/07)    CPU Scheduling (Chapter 5), Process Synchronization (Chapter 6)
Week   5 (02/12, 02/14)    Process Synchronization (Chapter 6)
Week   6 (02/19, 02/21)    Process Synchronization (Chapter 6)
Week   7 (02/26, 02/28)    Deadlocks (Chapter 7)
Week   8 (03/04, 03/06)    Midterm and midterm review, Memory Management (Chapter 8)
Week   9 (03/11, 03/13)    Spring Break
Week 10 (03/18, 03/20)    Virtual memory (Chapter 9)
Week 11 (03/25, 03/27)    File-System Interface (Chapter 10), File-System Implementation (Chapter 11)
Week 12 (04/01, 04/03)    Mass-Storage Systems (Chapter 12), IO Systems (Chapter 13)
Week 13 (04/08, 04/10)    Protection (Chapter 14) and Security (Chapter 15)
Week 14 (04/15, 04/17)    Distributed System Structures (Chapter 16) and File Systems (Chapter 17)
Week 15 (04/22, 04/24)    Distributed Coordination (Chapter 18), Course review
May 1, 12:30-3:30pm        Final Exam