Operating Systems (CIS-4020) Labs

In this course, the labs are relatively long, complicated, and open-ended. In some labs, you will be writing Linux kernel modules. Use this skeleton as a starting point. In some labs, you may want your module to provide a /proc file that "contains" a significant amount of material. Use this skeleton as a starting point.

  1. DevBox and HackBox. Here you will set up and experiment with the virtual machines that we will use for operating system development. Install both DevBox and HackBox in some suitable location and then run through at least some steps in Section 5 of the DevBox and HackBox document. Don't worry if you don't get to all the steps. LaTeX source of the DevBox and HackBox document.

    If you are curious, you may also wish to browse over my Compiling Linux document. The bulk of what is described there has already been done for you. However, you may find the information useful if you need to recompile the kernel in some special way. LaTeX source of the document. This document is licensed under the GNU Free Documentation License.

  2. Counting System Calls. In this lab you will modify the kernel to count the number of times each system call is invoked. You will also write a module that creates a /proc file providing access to the count information. Slides describing the lab.

  3. Fork Watcher. In this lab you will modify the Linux kernel to gather information about each fork system call that is executed. As with the counting system calls lab you will also write a module that creates a /proc file providing access to the gathered information. Slides describing the lab.
  4. Scheduling Simulation. In this lab you will write a program that simulates several CPU scheduling algorithms so you can compare their performance.
  5. GenericFS. In this lab you will experiment with the GenericFS file system for Linux. The exact content of this lab varies from year to year depending on the current state of GenericFS. The lab focuses on file system implementation and layout.

  6. Labs below are subject to change

  7. Shared Memory. In this lab you will experiment with System V shared memory segments. This exposes you to an important System V IPC facility and also gives you practice thinking about the memory management services provided by the kernel.

  8. Device Drivers. In this lab you will write a simple character mode device driver for QNX. Use the skeleton resource manager discussed in class as the starting point for your driver.

Additional Labs

There are a number of other good topics that could be explored in lab. For example, here are some possibilities.


Last Revised: 2016-11-01
© Copyright 2016 by Peter Chapin <peter.chapin@vermontstate.edu>