CSS 430: Operating Systems Assignments


Language

We will use Java for all program assignments except Program 1. Program 1 consists of two parts: one practicing Linux system calls in C++ and the other using Java. Programs 2 through 5 implement an operating system simulator called ThreadOS step by step.

Operating Systems

Linux is the the operating system recommended for this class. I will use Ubuntu which is also the the flavor of Linux utilized in the Linux lab. The assignments will be graded on a Linux system. Program 1 requires utilizing Linux system calls.

There are many other good reasons for you to learn Linux espcially if you are not already familiar with it:

UWB Linux Laboratories

There are a couple of different sets of Linux machines that UWB provides. There are machines located in the on-site Linux laboratory in UW1-320. There are also remote machines available (csslab1.uwb.edu - csslab12.uwb.edu).

Information on access the Linux Labs can be found here: Linux Lab

ThreadOS

ThreadOS is distributed via Canvas by many instructors. If the instructor does distribute it via Canvas than please use that version.

There is also a version of ThreadOS which can be found on the systems in the Linux lab in this directory: /usr/apps/CSS430/ThreadOS. Note that all files are not accessible. For this version note that not all files are accessible and the .java code is not necessarily matching the .class files. This is by design.

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.

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/