Shared Memory File System

Today’s topic is how to construct a File System that lives in Shared Memory. So first off, what are the goals of this project?

Shared Memory File System Goals

1. MOUNTED IN SHARED MEMORY

The result is a very fast, real time file system.
We use Shared Memory so that the file system is public and not private.

2. PERSISTS TO DISK

When the file system is unmounted, what happens to it?

We need to be able to save the file system so that a system reboot does not destroy it.
A great way to achieve this is to save the file system to disk.

3. EXTENSIBLE IN PLACE

We want to be able to grow the file system in place.

4. SUPPORTS CONCURRENCY

We want multiple users to be able to access the file system at the same time.
In fact, we want multiple users to be able to access the same file at the same time.

With the goals now in mind we can now talk about the major design issues:

FAT File System & Design Issues

The FAT File System has been around for quite some time. Basically it provides a pretty good file structure. But I have two problems with it:

1. FAT IS NOT EXTENSIBLE IN PLACE.

That is, you cannot shutdown the file system and then add space to the end.
You have to create a new file system and then copy in the old data.
What a pain.

2. FAT DOES NOT PROVIDE FILE LOCKING.

That is, you cannot control file concurrency access.

Preview of Part 2

That is enough for today though. This blog post has presented the background for a Memory File System that is FAT based. Next time I’ll cover the rest of the Memory File System story. I will discuss the following subjects:

*) FAT Design.

Boot Block.
Disk Block Table.
Directory Blocks.

*) How to make the file system Extensible.

*) File Locking.