Semester Project and Writing Assignment

Assignment

For this assignment, which will count as a significant part of your grade (30%), you must first make a modification to the Linux kernel, and then write a paper analyzing the effects of your changes.

The modification to the Linux kernel must be non-trivial, however there is a great variety in the relative complexity and difficulty even among the ideas below, and the extent to which you challenge yourself will affect my grading of your work. Once you have made the modification to the kernel, either by modifying existing code or writing a new loadable module, you must perform an experiment in order to gather objective data about the effects of your change on the system. Having performed the experiment, you must write an academic paper describing your changes, explaining your experiment, presenting the results and then discussing the implications.

As an optional, extra credit portion of the assignment, you must find three academic papers which discuss issues related to your modification and discuss your results in contrast to theirs.

If you have relevant experience working on drivers or code for a different operating system, you may perform your work on it instead of Linux.

Project Ideas

Below are a number of project ideas. Any of these would be legitimate projects. You are, of course, free to come up with your own idea, though you will have to write a brief description and get it approved by me before you begin work.

Paper Outline

This is a suggested paper outline, you are not required to follow this outline, though you must ensure that your paper includes at least the information that would be in these sections.

  1. Introduction
  2. Description of Prior Kernel Behavior
  3. Description of Changes and Desired Effects
  4. Experiment Procedures
  5. Experiment Results
  6. Analysis of Results
  7. Conclusion
  8. References
  9. Source code in Unified Diff Format

Resources

The following resources may be useful in helping you complete this project.

In the lab you can access copies of the linux kernel, UML patch and a Debian root file system. You can reach them directly on a lab computer at the path: ~caskey/public_html/uml, or online at the URL http://www.cs.lmu.edu/~caskey/uml/. If you are not in the lab, then you will probably have an faster time accessing these at their main distribution points or a mirror. The lab's outbound internet connection is quite limited.

If you have issues with the project, itself (and not simply where the various linux kernel structures are), you can contact me via email. However do not forget to put CMSI587 in the subject line!

Notes

To start up your linux session, you need something like the following:

$ ./linux devfs=mount mem=32M ubd0=~/uml-root,/u/blue/caskey/public_html/uml/Debian-3.0r0.ext2

Transferring your experiment program

The bare debian root image is only just enough to boot. There are no compilers or development tools available inside of it. You don't want to use your UML environment for development anyway as you are going to be running experimental kernels against it and could end up corrupting the entire thing. To move a test program into your UML, you must transfer the file somehow. The easiest is to use a floppy disk.

On the host, mount your floppy and copy your test program over, then unmount.

$ mount /floppy $ cp ./testprogram /floppy $ umount /floppy

Now, you can add the ubd1 as a block device that maps to the hosts floppy drive:

$ ./linux ... ubd1=/dev/fd0

And from inside your UML session, mount the new device as a floppy:

$ mount /dev/ubd/1 /floppy

Then you can run your program directly from the floppy, or copy it into your root filesystem where it will stay between test sessions.

Valid XHTML 1.0!