CS380L: Advanced Operating Systems

Project Proposal

The goal of this assignment is to come up with a plan for your programming project.

The project is a more open-ended assignment, where you have the flexibility to pursue an OS topic or subsystem that interests you. The goal of the first part of this assignment then, is to identify roughly what you will be doing for the rest of the assignment.

If you work with a research group, I encourage your to adapt your research into a project. The idea should be your own and should be new, but it can significantly leverage your research group's infrastructure. You must do the writeup and the presentation completely on your own (though if you need to use a figure or two from your research group, you may do so with attribution).

There are suggestions at the end of this assignment for projects. Unless you have made other arrangements, you should focus on doing something with Linux device drivers.

You must submit a proposal (1-2 pages long).

Provide a detailed timeline of how you plan to build the system. It is really important to have intermediate milestones where some subset of functionality is completely working by date X rather than working on all functionality in parallel and finding out what works on the deadline. Give a list of 4 key milestones.

What infrastructure will you have to build to run the experiments you want to run? What hardware will you need and where will you get it? (Talk to me early if you have an experiment that needs hardware support but you don't know where to get the hardware from.)

What kind of experiments do you plan to run? How will you know if you have succeeded? What kind of performance or functionality problems do you anticipate?

Planning is important. So I will review your proposal and give you feedback. you might need to hand in a revised proposal.

You can work in groups for your project.


There are many resources concerning device drivers (in addition to the actual code/documentation that came with the kernel source). For example, there is a book "Linux Device Drivers" by Rubini & Corbet. (A slightly older 2nd edition is available online at this site.

I will review your proposal, and I might request a revision.
In your proposal, please cover these issues.


You will use some code I wrote to simulate a distributed system when you implement part of the Paxos protocol. There are things I would like to do with this code, and you can help. The advantage is that you will work directly with me and I will understand what you are doing and care about it a lot. That is also the disadvantage.

Recreate a result

If you want to recreate and extend a result from a paper, you can do that. Please indicate what paper and exactly how you plan to recreate the experiments and what you hope to learn.

Optimize cp -r

Use Linux's asynchronous IO interfaces (aio) to build an optimized version of cp -r. Your implementation should take an existing directory name and a new name. Your code copies the entire directory tree to the new location. It should do so in as optimized a way as possible, so consider looking for file pages that are already in memory, use fallocate, schedule multiple reads at once, be aware of readahead, etc.

Access control

Application-Defined Decentralized Access Control is an access control system we have built into the Linux kernel. Port a web application to use this access control system.