CSS 430: Operating Systems Assignments
We use Java to program all assignments except Program 1. Program 1
consists of two sub problems, one practising Linux system calls in C
or C++ and the other using Java. Programs 2 through to 3 implement in
Java an operating system simulator, called ThreadOS step by
step through assignments.
The operating system I recommend for all assignments is Linux
(UW1-320). This is because Program 1 uses Linux system calls; the
ThreadOS simulator is stored in the css430 account at UW1-320; and the
grader will grade your assignments using a UW1-320 machine.
There are more reasons why this course recommends Unix-based
operating systems: (1) many companies and institutions use Unix
machines as their servers, while their client machines are Windows,
(2) most computation-intensive and concurrent applications are based
on Unix, (3) many OS design techniques and concepts came from Unix,
(4) the Linux Kernel code is free to obtain and is commented in many
reference books, and (5) it is easy to coordinate and submit a batch
of jobs through shell scripting. While you are repeatedly using Unix
for your assignment work, you will gradually get familiar with Unix
Here is a procedure to log on one of the UW1-320 Linux machines and
upload your files:
- To use a console of any UW1-320 machine, enter UW1-320 Linux
Laboratory with your student ID card and log into any machine with
your UW Net ID and the corresponding password.
- To remotely log into a UW1-320 machine, use ssh and establish a
connection to uw1-320-lab.uwb.edu.
You will automatically
get one of the lab machines and see your home directory immediately.
- To transfer files to the UW-320 file server
- From an off-campus Linux machine: use the sftp command and establish a connection to
- From a Windows machine: use PuTTY, downloadable at: /http://www.chiark.greenend.org.uk/~sgtatham/putty/
- From a Mac: use Fugu 1.2, downloadable at
The Source for Java Technology
Visit http://www.oracle.com/technetwork/java/index.html. This
Tutorials: helps you run Java programs at Windows, Unix, and Mac,
introduces the Java language, and lists essential Java classes.
- Java SE
Version 6, API documentation: lists all necessary Java API
classes. You will frequently visit this page to review what classes
are ready to use for your assignment programs.
: allows you to download the Java SE version 6 platform
Java Programming Environments
- Compile-time errors: The javac compiler points
out where your source program has syntax errors. Carefully look at
its error messages. You will find out code line numbers that
have syntax errors. Open your source code, go to those lines, and
fix your bugs.
- Run-time errors: The java virtual machine points out
where your compiled program has run-time errors. Carefully look at its
error messages. You will find out your source code's line numbers that
have run-time errors. Open your source code, go to those lines, and
fix your bugs.
- Debugging tools:
The following three may be helpful to develop your Java
program. However, please note that they may not be always useful when
you develop multi-threaded programs. (Most assignments are
- NetBeansIDE (available at UW1-320)
- Eclipse (available at UW1-320)
- Program 1 exercises basic linux
system-call programming and also implements a simple shell on our
operating system simulator, ThreadOS.
- Program 2 implements a
multilevel-queue-based scheduler in Java.
- Program 3 realizes inter-threads
synchronization in ThreadOS in order to arbitrate disk
read/write requests from multiple threads.
- Program 4 implements a disk cache
based on the second-chance algorithm.
- Project constructs a Unix file
system on top of ThreadOS.
Submit a soft copy of your work. Your soft copy must inlcudes
the following tow files:
|Documentation of your report including explanations,
illustrations, discussions, and output consideration
|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)
I sincerely appreciate that Dr. Marvin Solomon gave me a permission to
use a part of his operating systems class assignments. His original
work can be located at