CSS 430: Operating Systems Assignments


Language

We use Java to program all assignments except Program 1. Program 1 consists of two sub problems, one practicing 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 got 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 Tutorial: helps you run Java programs at Windows, Unix, and Mac, introduces the Java language, and lists essential Java classes.
  2. Java SE Version 7, 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 7 : allows you to download the Java SE version 7 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. Project constructs a Unix file system on top of ThreadOS.

Submissions

ssh -l your_linux_account uw1-320-lab.uwb.edu

   javac your_program1.java your_program2.java ...
                java your_program1

To run our ThreadOS simulator with your assignment, type:

 
   java Boot

Upon a successful compilation, you will get an your_program1.clas, your_program2.java ...

                                  tar -cvf - your_program1.java your_program2.java > program1.tar
         *    * *                  *                  * *
               (A space must be inserted at each of these * marks.)

Why did I color code the above command? How do you parse the above command?

WARNING: if you do not understand what the above command says, MAKE VERY SURE you have backup copies of your program, chances are you will overwrite your program whencreating the tar. Remember to download/un-tar your submission to make sure everything is correct. If your submission is corrupted or in-complete, you will receive a zero for the assignment. I repeat, if we cannot untar your submission, or if you submitted a zipped archive, you will receive a zero for the assignment. Is this clear?

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/