CSE 221: Final Project
Fall 2003
The goal of the final project is to deepen your knowledge in one
area of computer systems research. You can work in groups of 1-3
people of your choice on the project. If you do not form a group on
your own, we will help you find one. You will work on the projects in
the last half of the class, and we will use our final period to
conduct brief presentations of all of the projects.
The project can take one of two forms:
1. Survey
Your project will survey the major research results and directions
of a particular systems reseach area (see below for suggestions). You
will need to identify the area, propose a set of 6-8 papers for that
area, read the papers, and write a 6-8 page report. The report should
describe the area, classify and synthesize the approaches and
techniques, distinguish contributions made by the various research
projects described in the papers, and hypothesize about potential
future research directions. The report should demonstrate critical
thinking about the work covered in the area, not just regurgitate the
material in the papers read.
2. Implementation
Your project will focus on implementating an artifact or
experimentally evaluating a system (see below for suggestions). You
will need to propose an implementation or evaluation project, and
write a 6-8 page report. The report should summarize previous work,
state the problem you are investigating, and then describe the
implementation or set of experiments you performed. If you performed
experiments, you should clearly describe your experimental methodology
and the results of your experiments.
If you were assigned a machine for doing kernel hacking for your
project, here are directions for remote console and power access to
the machine.
Groups and topics: 11/4 at 9:30am
- Choose a group to work with and a topic to work on. You can
work alone, or in groups of up to three people (if you would like to
work in larger groups, send the professor mail justifying why).
- By the class period on Tuesday, 11/4, email to the professor and
TA (1) the members of your group, including email addresses, and (2)
the project topic and the type of project you want to do.
- If you would like us to help find you a group, send the professor
and the TA mail.
- Take advantage of the department BBQ on Friday 10/31 and office
hours on Monday 11/3 to discuss project ideas.
- We will provide feedback for you to use for the project proposal.
Proposal: 11/10 at 23:59 (midnight)
- Write a 1-2 page ASCII project proposal based upon initial
feedback from us. Include group member names and emails, project
topic and type. State project goals, list of references, and a TODO
list for both before and after the project checkpoint.
- Email to professor and TA by midnight on Monday, 11/10.
Checkpoint: 11/21 at 23:59 (midnight)
- Write a 2-3 page ASCII progress report. Address progress on your
TODO list from your proposal.
- Email to both the professor and the TA by midnight on Friday, 11/21.
Reports due: 12/9 at 11:30am (at the presentations) (Savage), 12/10 at 12:00 (noon) (Voelker)
- Project reports should be 6-8 pages (including references),
single-spaced, single or double column, 11pt font (no smaller, no
larger).
- Email a PDF or PS version of your report to both the professor
and the TA by noon on Wednesday, 12/10. Place two hardcopies of the
report under the professor's door (AP&M 5131 (Voelker), AP&M 5220 (Savage)).
Presentations: Tue 12/9 at 11:30am in WLH 2204 (Savage), Fri 12/12 at 8am in WLH 2112 (Voelker)
- Each group will briefly present their project during the
final exam period.
Survey Projects
- Threads vs. Events. A long-standing debate in operating
systems is the use of threads versus events to architect and structure
high-performance servers. As a contemporary example of this, Matt
Welsh (now at Harvard) demonstrated in his thesis that an event-based
architecture for high-performance Internet services scales and
performs better than those using a thread architecture.
Interestingly, Eric Brewer, Matt's thesis advisor at Berkeley, and his
student Rob von Behren just published a paper in this year's SOSP that
demonstrates that a thread architecture scales better for Internet
services.
Read and digest the published work on this topic, starting with
Welsh's and von Behren's work and progressing backwards through
referenced work. Synthesize and summarize the arguments on this topic
in your report. Explain how researchers could arrive at seemingly
contradictory conclusions. Take a stand, and compellingly argue one
side. Can future work end this debate once and for all?
"SEDA: An Architecture for Well-Conditioned, Scalable Internet
Services." Matt Welsh, David Culler, and Eric Brewer. SOSP 2001,
October, 2001.
"Capriccio: Scalable Threads for Internet Services." Rob von Behren,
Jeremy Condit, Feng Zhou, George C. Necula, Eric Brewer. SOSP 2003,
October 2003.
- New Directions in Protection. An old topic that is
receiving new attention is protection. Much of this attention is due
to issues in the use and control of digital media rights. Efforts are
underway, such as the Palladium effort at Intel, to provide additional
hardware for implementing additional protection and security features.
Read and digest published work on this topic, starting with the
XOMOS paper referenced below as well as tracking down information on
Palladium. Survey these efforts, compare and contrast the new
protection and security goals with more traditional goals that we have
read and discussed in this course, and describe how operating systems
need to change to take advantage of this new hardware. If this
hardware becomes prevalent, how will it change the face of computing?
"Implementing an Untrusted Operating System on Trusted Hardware"
David Lie, Chandramohan A. Thekkath, Mark Horowitz. SOSP 2003.
Finally, below is a list of suggested topics that have appeared
recently in the OS literature. These are only suggestions; if there
is another topic that you are particularly interested in, then I
encourage you to pursue that topic.
- Operating system support for mobile computing
- Operating system support for clusters, cluster-based systems
- Object mobility, mobile agents
- Virtual machines
- Scalable Web servers, Web caches
- Scalable file systems, high-performance file systems, storage area networks
- Wide-area distributed systems
- Peer-to-peer networks and systems
- System and cluster profiling and performance techniques
Implementation Projects
- Laptop Access Points. Apple Powerbooks running OS X can
act as an 802.11 Access Point (AP). As an AP, a Powerbook can act as
a gateway between, say, a wired network and other nearby 802.11
wireless laptops. Implement this functionality for Linux laptops.
Open Access Point software exists, so most of the work will be getting
it to run smoothly and seemlessly.
- HotelNet. The goal of HotelNet is to provide multihop
wireless access in an environment that has a single available Internet
connection, such as a hotel hosting a conference. Conferences
typically provide wireless Internet access near the conference venue,
and it would be convenient for attendees to be able to use that
Internet access from their hotel rooms in the evening. Assuming that
attendess are randomly distributed throughout the hotel, chances are
good that they can form an multihop ad-hoc network using attendee's
laptops in their rooms and the wireless AP providing Internet access
near the conference venue.
Implement HotelNet using existing software packages.
Implementations exist for various ad-hoc routing protocols, such as a
Click implementation of AODV.
- Network mobility. Folks at Scripps Institute of
Oceanography have an interesting need for network mobility and ad-hoc
networks. They frequently go on cruises in the ocean around the world
to conduct research experiments. Consider each boat as being its own
network. When a boat obtains Internet access, either via satellite or
when docked at port, SIO wants seemless network access without having
to change IP addresses or DNS names -- for connections originating
from the boat to the Internet, and viceversa.
Furthermore, they often have multiple boats within communication
range of each other. They would like to form a multihop wireless
ad-hoc network among the boats, with the boat with the best satellite
connectivity serving as the Internet access point. Again, they
require that each ship maintain its own network and that IP addresses
and DNS names do not change as the ad-hoc network is formed.
Using existing implementations for VLANs and ad-hoc routing
algorithms, implement a system that SIO can use for its boats.
- BREW Cell Phones. BREW is a runtime system for
programmable cell phones. Do something with BREW.
- Arch/OS interaction. Read these two papers: Ousterhout, "Why Aren't Operating Systems Getting Faster as Fast as Hardware" and Anderson, Levy, Bershad and Lazowska, "The Interaction of Architecture and Operating System Design", ASPLOS 1991. Each deals with performance interactions between operating systems and microprocessor architecture. Repeat one or more important aspects of these studies using current hardware and explain your conclusions.
- Disk performance. Modern disks have complicated performance characteristics. Build a test suite to measure how read and write bandwidth change across the disk, changes in seek time.
- Virtual honeyfarm. One way to detect new network worms is through the use of a honeypot... a machine that exists purely for the purpose of being broken into. Use Xen to take this idea to the next level: a virtual honey farm. A single PC should be able to support many virtual linux systems. Each should be able to be reloaded on demand. Detect compromises by logging outbound network data.
- User-level file system. Take the file system code from a popular operating system (e.g. linux or
freebsd) and rehost it at user-level (like the Alpine project did for networking (http://alpine.cs.washington.edu)). It isn't necessary to do this perfectly this quarter :-)
- Disk layout. Windows reorganizes data on disk over time to improve performance. Repeat this exercise on linux or freebsd. Consider doing one of the above:
a) track which sets of files are read together and arrange to store these files sequentially on disk
b) track which files have the most data read and store them on the outside tracks with the greatest bandwidth.
c) move frequently accessed files to the center of the disk (to reduce seek latency) Measure how much difference this made.
- PC suspend/resume. Build a pc suspend mechanism for linux that copies all essential state (i.e. all allocated memory) either to a server over the network or to a flash card (its quite reasonable to carry 1GB in your wallet these days) and then can restore this state on demand.
- Crash server.
When an application running under Windows crashes it automatically sends back to Microsoft critical information about the crash and what caused it (application name, register set, stack contents, etc). Build this capability into linux.
- SimPoint an OS. Brad Calder and his students have
developed a tool called SimPoint
that enables fast and accurate program simulation and analysis. So
far they have used the tool primarily on user-level applications like
the spec benchmarks. Extend and use SimPoint on an open source
operating system like Linux or FreeBSD.