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:
-
Linux is widely used in industry.
-
Many OS design techniques and concepts came from Unix.
-
Linux code is open-source and there are detailed descriptions available.
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
- 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.
- 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.
- IDEs:
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
multi-threaded programs)
- IntelliJ
- Jcreator
- NetBeansIDE
- Eclipse
Assignments
- 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.
ThreadOS.
- 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.
ThreadOS.
- 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/