CSS 430: Operating Systems
Fall 2006

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


Professor:

Kelvin Sung <ksung@u.washington.edu>, room UW1-339, phone 352-5420, office hours: Tuesday/Thursday 5:40-6:40 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%

Assignment 4

8%   cancelled

Final Project

18%

Class Participation  

4%

Midterm Exam

23%

Final Exam

23%  31%

Textbooks:

  1. Operating System Concepts with JAVA, Sixth edition, Abraham Silberschatz, Peter Galvin, and Greg Gagne, Addison-Wesley, 2004.
  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.

To request academic accommodations due to a disability, please contact Disabled Student Services (DSS) in Bothell Library Annex Building, Room 106, (email: rlundborg@bothell.washington.edu, TDD: 425-352-5303, and FAX: 425-352-5444). If you have a documented disability on file with the DSS office, please have your DSS counselor contact me and we can discuss accommodations.

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:

  • Hardcopy must include your report, program listing, and execution output. Your report must include specifications, explanations, and/or illustrations of algorithm and data structures you used, and summarize your consideration of test results, (i.e., do they make sense?). Note that you do not have to repeat writing all the assignment specification. Use a typewriter font (e.g. courier new) for your source code and execution output.
  • Softcopy must be a tar archived file that includes only your java source code. Your code should compile and run properly using javac under linux since the grader tests them only using linux javac. Follow the softcopy submission procedure shown below:
    • To log in the uw1-320-lab linux laboratory:
   ssh -l your_linux_account uw1-320-lab.bothell.washington.edu
    • To compile your Java program, type:
   javac your_program1.java your_program2.java ...

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

    • To run your Java program, type:
   java your_program1

To run our ThreadOS simulator with your assignment, type:

java Boot
    • To archive your source programs in a file named "program1.tar":
   tar -cvf - your_program1.java your_program2.java > program1.tar
      *    * *                  *                  * *
  (A space must be inserted at each of these * marks.)
  • Assignments are due at the beginning of lecture for both your hardcopy and softcopy on the specified date. No late programs will be accepted unless you provide me with a proof showing that you have been under an emergency circumstance. No matter the circumstances, it is always best to turn in something.
  • Grading

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%

Catalyst EPost (Message Board)

You can access CSS430 EPost to exchange messages with your classmates. Please use this board for only dicussions. No junk email. Note that the professor will not keep track of all messages.

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 (TTh)

Topics

Chapters

Reading

Assignment

1

Sep 28

Introduction

1 - 2

pp1-56

 

 2

Oct 3

OS Structures

In-class Linux lab orientation

3

pp57-100

Program 1 assigned

 

Oct 5

Process Management

4

pp101-142

 

Oct 10

 

 

 

 

 

Oct 12

Threads

 5

 pp143-170

 

Oct 17

CPU Scheduling

6

pp171-213

Program 1 due
Program 2 assigned

 

Oct 19

 

 

 

 

Oct 24

Process Synchronization

7

pp215-280

 

 

Oct 26

 

 

 

 

Oct 31

Deadlocks

8

pp281-314

Program 2 due
Program 3 assigned

 

Nov 2

Midterm exam in class

1-8  1-7

pp1-314  pp1-280

 

Nov 7

Invited Talk:

Mid-Term hand-back

 

Professor Shinjo

 

 

Nov 9

Catch up

 

 

 

 8

Nov 14

File-System Interface

11

pp421-461

 

 

Nov 16

File-System Implementation

 12

 pp463-491 and 500-503

Program 3 due
Program 4 assigned

Nov 21

Final Project Explanation

 

 

Program 3 due           

Project assigned

 

Nov 23

Thanksgiving break

 

 

 

10 

Nov 28

Memory Management

9

pp317-361

 

 

Nov 30

 

 

 

 

11 

Dec 5

Virtual Memory

10

pp363-419

 

 

Dec 7

Protection

18

pp679-706

Final Project Due

(Regular Due times)

12

Dec 12

Final exam in class

8 - 12, and 18

Pp281-491, 500-503 and 679-706

 

 

Dec 14

Final Project Due

 

 

 

 

Acknowledgment

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