CSS 430: Operating Systems
Fall 2008

T/Th 3:30-5:35pm
Room: UW1-030
Prof. Kelvin Sung


Professor:

Kelvin Sung <ksung@u.washington.edu>, room UW1-339, phone 352-5420, office hours: Thursday 1:00-3:00 pm (or by appointment).

Course Description:

This course introduces the logical design of operating systems, especially focusing on the design in Java. Topics covered include processes, threads, CPU scheduling, synchronization, deadlocks, memory management, virtual memory, file systems, I/O systems, protection, and security used in the popular desktop and real-time operating systems.

Prerequisites:

CSS343.

Work Load and Grading:

Course Work

Percentage

Assignment 1

8%

Assignment 2

8%

Assignment 3

8%

Final Project

14%

Class Participation  

2%

Weekly Quiz

10% (Weekly on the Web)

Midterm Exam

25%

Final Exam

25%

Textbooks:

  1. Operating System Concepts with JAVA, Seventh edition, Abraham Silberschatz, Peter Galvin, and Greg Gagne, Addison-Wesley, 2007. (Notice that there are links to ppt slides on the book web-site, you are welcome to refer to this. I do not use powerpoint slides if I can help it).
  2. A Java book of your choice.

Some Java Books:

References:

Policies:

All programs except the final project are to be done independently. Any collaboration of work will result in severe penalty. You may discuss the problem statement and any clarification with each other, but any actual work to be turned in, must be done without collaboration.

The final project may be done by a team of two, (or three students if you cannot find a single partner), in which case each student must achieve an equally amount of work. (If you work with other two students, you must explain the reasons in your report. Otherwise you will receive only 2/3 of the full score.) For the detailed instructions, see the project assignment sheet.

Any homework is due at the beginning of class for both its hardcopy and softcopy on the due date. Both copies must be submitted. The submission may be postponed only in emergencies such as accidents, sickness, sudden business trips, and family emergencies, in which case you may turn in your homework late with a written proof. No make-up exams will be given except under exceptional circumstances. Barring emergencies, I must be informed before the exam.

If you believe that you have a disability and would like academic accommodations, please contact Disability Support Services at 425.352.5307, 425.352.5303 TDD, 425.352.5455 FAX, or at dss@uwb.edu. They will be happy to provide assistance. You will need to provide documentation of your disability as part of the review process.

Course Goals:

The overall goal of CSS 430 is to learn fundamental concepts that are used in and applicable to a variety of operating systems. The course consists of three major concepts: (1) process management that schedules, executes, synchronizes with events, and terminates your application programs, (2) memory management that loads your programs in memory and allocates/de-allocates memory space they requested dynamically, and (3) file system that provides the mechanism for on-line storage of and access to both data and programs residing on the disks. The course also covers protection, (and security if time is allowed) which are essential to have the modern operating systems work in the Internet computing world. Through the course, we will use Java to illustrate many operating-system concepts. Using Java, you will implement each concept of process management, memory management, and file system. As with most technical courses, besides ability and motivation, it takes time to learn and master the subject. Expect to spend an additional 10 to 15 hours a week outside of class time on the average.

Assignments:

   ssh -l your_linux_account uw1-320-lab.bothell.washington.edu
   javac your_program1.java your_program2.java ...

Upon a successful compilation, you will get an your_program1.clas, your_program2.java ...

   java your_program1

To run our ThreadOS simulator with your assignment, type:

java Boot
   tar -cvf - your_program1.java your_program2.java > program1.tar
      *    * *                  *                  * *
  (A space must be inserted at each of these * marks.)

Criteria

Percentage

Documentation of your report including explanations, illustrations, discussions, and output consideration

30%

Correctness of your program (Syntax errors, run-time errors, and/or incorrect answers will result in a significant number of points being deduced from your grade). Also reassure that you have used the algorithm as specified in each assignment

50%

Organization of your program (modularization, coding style, and an appropriate amount of comments)

20%

Topics covered and tentative 430 spring schedule:

Note that this is an approximate ordering of topics. Chapters will take about the allotted time and not all sections in all chapters are covered.

Week

Date

Topics

Chapters

Assignment

 1

Sep 25

Introduction

1

Program 1 assigned

2

Sep 30

OS Structures

2

 

 

Oct 2

Process Management

3

 

3

Oct 7

Threads

4

Program 1 due
Program 2 assigned

 

Oct 9

CCSC-NW Conference

No class: Work on Program 2

 

4

Oct 14

CPU Scheduling

5

 

 

Oct 16

 

 

 

5

Oct 21

Process Synchronization 

 

 

Oct 23

Catch up

 

Program 2 due
Program 3 assigned

6

Oct 28

Deadlocks

7

 

 

Oct 30

Midterm exam in class

Chap: 1-6

 

7

Nov 4

   

 

 

Nov 6

 File-System Interface

 10

 

 8

Nov 11

Veterans Day

Holiday: no class

 

 

Nov 13

File-System Implementation

11 (Except 11.8 – 11.10)

Program 3 due

Project assigned

9

Nov 18

Final Project Explanation

 

 

 

Nov 20

 Memory Management

 8

 

10

Nov 25

 

 

 

 

Nov 27

 Thanksgiving

Holiday: no class

 

11

Dec 2

Virtual Memory

9

 

 

Dec 4

Review + Catch up

 

Final Project Due

12

Dec 9

Final exam in class

Chap: 8 – 11 (Except 11.8 – 11.10)

 

 

Acknowledgment

The materials (including lecture notes and assignments) used in this course are based on the contents developed by Professor Munehiro Fukuda.