CSS 430: Operating Systems Assignments


Language

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.

Operating Systems

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 commands.

UW1-320 Laboratory

Here is a procedure to log on one of the UW1-320 Linux machines and upload your files:

  1. 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.
  2. 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.
  3. To transfer files to the UW-320 file server
    1. From an off-campus Linux machine: use the sftp command and establish a connection to uw1-320-lab.uwb.edu.
    2. From a Windows machine: use PuTTY, downloadable at: /http://www.chiark.greenend.org.uk/~sgtatham/putty/
    3. From a Mac: use Fugu 1.2, downloadable at http://rsug.itd.umich.edu/software/fugu/

The Source for Java Technology

Visit http://www.oracle.com/technetwork/java/index.html. This site includes:
  1. Java Tutorials: helps you run Java programs at Windows, Unix, and Mac, introduces the Java language, and lists essential Java classes.
  2. 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.
  3. Java SE 6 : allows you to download the Java SE version 6 platform

Java Programming Environments

Assignments

  1. Program 1 exercises basic linux system-call programming and also implements a simple shell on our operating system simulator, ThreadOS.
  2. Program 2 implements a multilevel-queue-based scheduler in Java. ThreadOS.
  3. Program 3 realizes inter-threads synchronization in ThreadOS in order to arbitrate disk read/write requests from multiple threads.
  4. Program 4 implements a disk cache based on the second-chance algorithm. ThreadOS.
  5. Project constructs a Unix file system on top of ThreadOS.

Submissions

Submit a soft copy of your work. Your soft copy must inlcudes the following tow files:

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%

Acknowledgment

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 http://www.cs.wisc.edu/~solomon/