Carnegie Mellon

Computer Science Department |
 |
 |
 |
 |
 |
 |
 |
 |
|
|
|
15-410 Project 4 File System Page
Project Options
-
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.
-
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.
-
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
-
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).
-
Your proccess/file-descriptor management should work in
a defensible and solid way.
-
Concurrent I/O operations on a single file should happen
sensibly.
-
Of course, your code should be a pleasure to read,
and the interface between it and your P3 kernel
should be clean and modular.
-
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?
|