Carnegie Mellon
SCS logo
Computer Science Department
home
syllabus
staff
schedule
lecture
projects
homeworks
QA
 
 

15-410 Project 4 File System Page


Project Options

  1. Probably the wisest choice would be building a file system on top of the "RAM disk" infrastructure used by our P2 kernel and your P3 kernel. The result would be that you could implement things like cat or more and add I/O redirection to your shell. You would want to implement the Basic Calls, hopefully the Basic File Management calls, and, if if you were feeling ambitious, the Directory Management calls.

    One nice thing about working with the "RAM disk" is that a cache would be superfluous. Furthermore, if you restrict your implementation to being read-only (it is probably wise to complete that before attempting mutation operations), you can also skip Basic File Management. Don't worry, there's still enough to do, and the results will probably be satisfying. However, you will probably find that with a little thought you can make your RAM-disk file system read/write.

  2. You may choose to implement a file system stored on the IDE device driver. In this case you might wish to define your own file system format or to use an existing one such as FAT. To avoid getting bogged down, you should probably decide from the beginning to avoid interesting features such as a buffer cache. However, concurrent access to a single file will probabily require a similar but simpler structure.

  3. If possible, you should try to arrange for a mapping between readline() and print() on the one hand and your file system on the other. This is a little tricky, but imagine the benefits!

Grading

  1. The main consideration should be that you get something which clearly works (i.e., we can boot your kernel and play with it and see that something exciting is happening within a few minutes).

  2. Your proccess/file-descriptor management should work in a defensible and solid way.

  3. Concurrent I/O operations on a single file should happen sensibly.

  4. Of course, your code should be a pleasure to read, and the interface between it and your P3 kernel should be clean and modular.

  5. Please, if you implement directories, use / as the pathname separator rather than some other random character.

Have Fun!

Make sure to have some fun with this project. You've earned it, right?


[Last modified Saturday January 10, 2004]