CS 1651: Advanced Operating Systems
Programming Assignment #4: Several Interesting Projects
Due Dates: Monday, April 5, 3pm (design) and April
19, 2004, 3pm (final project)
What to submit?
You must submit a design document in the first phase and your source
code (your new/modified source files, your applications, etc) and a
readme file explaining your design decisions and detailed instructions
for testing. You will be required to make
appointments to demostrate your system. Your README file is just that,
a straightforward description of the submission (files, sourcecode,
and general solution). In addition to these deliverables you will
submit a more detailed project document. This should read like a
whitepaper for your design and your experimental results where
appropriate.
You may want to use latex for preparing your paper, but a common
problem is starting a document with latex can be tedious.
For your convenience a tar file containing a document skeleton and a
makefile can be found
here.
In short, edit the .tex files and add references to the .bib file.
Brief Project Descriptions (click on the titles for more details):
- The Best Disk Layout
Build on the redirector project to implement a data layout scheme that
optimizes for real-world workloads
A large part of this project will be defining the “real-world”
workloads, and designing the appropriate experiments to test your
layout against these workloads (we expect you will have at least 3
workloads based on real applications).
- The Consistent Disk
Implement a consistent virtual disk. Use (for example) a brute-force
approach to analyze the performance of the disk. Then devise a layout
that improves performance based on the underlying disk’s measure
performance.
For a disk partition, remap all blocks/sectors such that you achieve
this goal.
This is similar to content distribution networks, that implement p2p
networks (the virtual layout should be optimized for performance).
- Write-Optimized Block Device
You’ve studied LFS, and WAFL. Those were file systems. Now implement a
virtual block-device that is optimized for writes. Hint: A suggestion would be
to allow remapping of blocks to enable the writing of old blocks to new
locations.
We can suggest a couple of workloads, but it may be very interesting to
add your own read cache … that way you can verify the effects of
increasing read cache sizes on the importance of write optimization.
- (FreeBSD only) Bandwidth control for
VoD
Use a netnice traffic control application (netniced) on top of
Video-on-Demand (VoD) to manage bandwidth and enable different user
classes.
This is a project that should be done jointly with the previous
one. Or find a Good App instead.
- Aiding File
Transfers through Network Control
Use a netnice traffic controller (or similar), to improve the handling
of network file/storage I/O.
For example, you could consider re-prioritizing packets based on your
knowledge of what they mean and their relative importance for response
time.
- The Fair Web Server
Modify Apache to control bandwidth per client thread or per type of
file.
This could be used to guarantee a fair-share allocation of the server’s
network bandwidth.
This can be done with Netnice (FreeBSD only) or other type of bandwidth
controller
- Choose-your-own-adventure
If you’d like to propose an alternative project topic, then do so
EARLY. We need to approve it, so you’d want that done before we issue
the final project descriptions (otherwise project selection would delay
you relative to the rest of the class).
The following may be helpful for the project document:
- R. Levin and D. D. Redell, "An Evaluation of the Ninth SOSP
Submissions," Operating Systems Review, Vol. 17, No. 3, July 1983,
pp. 35-40 (HTML).
- George D. Gopen and Judith A. Swan, "The Science of Scientific
Writing" American Scientist, Vol.78, No.6, November-December, 1990,
pp. 550-558 (HTML).
- R. A. Day, "How to Write a Scientific Paper," IEEE Transactions on
Professional Communication, Vol.20, No.1, June 1977, pp. 32-37.