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 addition to providing the boilerplate needed for a kernel module, it demonstrates how to create a /proc file associated with your module. Not all modules need a /proc file, but many benefit from having one.
DevBox and HackBox. In this lab 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 6 of the DevBox and HackBox document. 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.
LaTeX. In this lab you will install and experiment with the LaTeX typesetting system.
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. LaTeX source of the lab handout.
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.
LaTeX source of the lab handout.
Scheduling Simulation. In this lab you will write a program that simulates several CPU scheduling algorithms so you can compare their performance. Sample results to show the kind of data you should get: xlsx, ods. LaTeX source of the lab handout.
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.
There are a number of other good topics that could be explored in a lab. For example, here are some possibilities.
Kernel Threads. In this lab you will explore Linux kernel thread synchronization by writing a module that creates two threads serving as a producer/consumer pair.
Phoenix. In this lab you will experiment with the Phoenix micro-kernel. The exact content of this lab varies from year to year depending on the current state of Phoenix. The lab focuses on scheduling and process management.
Last Revised: 2024-11-18
© Copyright 2024 by Peter Chapin
<peter.chapin@vermontstate.edu>