CSS 430: Operating Systems
Winter 2004

MW 8-10:05pm


Kelvin Sung <ksung@u.washington.edu>

Room: UW1-339

Phone: 352-5420

Office hours: Monday: 1-2:30pm

                        Wednesday: 3-4:00pm

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.



Work Load and Grading:

Course Work




Assignment 1




Assignment 2




Assignment 3




Assignment 4




Assignment 5




Midterm Exam




Final Exam





  1. Either one of the following:

a.      (AOSC) Applied Operating System Concepts, First edition, Abraham Silberschatz, Peter Galvin, and Greg Gagne, Addison-Wesley, 2000.


b.      (OSC) Operating System Concepts, Windows XP Update, sixth edition, Abraham Silberschatz, Peter Galvin, and Greg Gagne, Addison-Wesley, 2003.

  1. A Java book of your choice.

Some Java Books:



All programs 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. Once again, there should be no collaboration on any of the programming assignments.

All assignments are due at the beginning of class on the due date, including both hard and soft copies. 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 involved in modern operating systems: (1) process management that schedules, executes, synchronizes with events, and terminates your application programs; (2) memory management that loads your programs into memory and dynamically allocates/deallocates memory space requested; and (3) file system management 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 allows) which are vital to the modern operating systems connecting to the Internet computing world. Throughout the course, we will use examples based on Java to illustrate the concepts. Through programming assignments you will practice concepts involved in process management, memory management, and file systems. As with most technical courses, besides ability and motivation, it takes time to learn and master the subject. On average, you are expected to spend an additional 10 to 15 hours a week outside of class time.


  • 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 summary of your consideration of test results, (i.e., do they make sense?). Please do not copy and re-submit the assignment specifications, I know what is assigned. 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 program using g++:

g++ your_program1.cpp your_program2.cpp ...

If a given .cpp file includes only template definitions, don't compile it directly. Such file should be treated as a header file, thus included in another .cpp file that must be compiled using g++. Upon a successful compilation, you will get an a.out executable file.

    • To archive your source programs in a file named "myFile.tar":
               tar -cvf - *.java > myFile.tar 

Alternatively, you can do:

               tar -cvf myFile.tar *.java

How/Why are the above commands different/same? The file name must be the concatenation of your first name initial, your last name and ".tar". For instance, if your name is Micky Mouse, the corresponding file name is "MMouse.tar".

    • To submit your archived file "myFile.tar" including your homework assignment 1:
chmod 644 myFile.tar
cp myFile.tar ~css430/f03/hw1/

If your name is Micky Mouse and you would like to submit your assignment 2, you should type:

   chmod 644 MMouse.tar
   cp MMouse.tar ~css430/f03/hw2/

Don't email your softcopy to me. You may overwrite your previous copy with a newer copy as many times as you want, however the corresponding directory such as hw1/, hw2/, hw3/, hw4/, and hw5/ will be closed exactly at the due time. These directories are read-protected, and thus you won't be able to read any files in there.

  • 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



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


Correctness of your program (Syntax errors, run-time errors, and/or incorrect answers will result in significant points being deducted from your grade). In addition, please make sure that you have implemented the algorithms as specified in each assignment


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


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.


Date (MW)






Jan 5


Lab Orientation(9:20-9:50pm)

1 - 2

AOSC p1-44


OSC p1-54



Jan 7

OS Structures and Java


AOSC p45-84


OSC p 55-92

Program 1 assigned 


Jan 12



AOSC p87-114   or

OSC p95-117



Jan 14



AOSC p115-133


OSC p 129-148



Jan 19

Martin Luther King Day (no class)





Jan 21

CPU Scheduling


AOSC p135-171 or

OSC p151-188

e-reserve: 6.7 of AOSC

Program 1 due
Program 2 assigned


Jan 26






Jan 28

Process Synchronization


AOSC p173-225 or

OSC p189-225

e-reserve: 7.8 of AOSC



Feb 2






Feb 4



AOSC p227-251 or

OSC p243-270

Program 2 due
Program 3 assigned 


Feb 9

Midterm exam in class

1 - 7

AOSC p1-225


OSC p1-225



Feb 11

Memory Management


AOSC p255-296 or

OSC p 273-316



Feb 16

Presidents Day (no class)





Feb 18




Program 3 due
Program 4 assigned 


Feb 23

Virtual Memory


AOSC p297-344 or

OSC p 317-369

Program 3 due
Program 4 assigned 


Feb 25






Mar 1

File Systems

11 (AOSC)



11 + 12.4 + 12.5 (OSC)

AOSC p345-400 or

OSC p 371-409 

+ p421-437



Mar 3

Program 5 explanation



Program 4 due
Program 5 assigned   


Mar 8

Case Study (Win XP)


OSC p.789-824

(Also on e-reserve)



Mar 10



AOSC p567-590 or

OSC p629-656



Mar 15

final exam in class


Everything we learned



Mar 18

Program 5 Due



Both hard and soft copy by 10am


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