The virtual file system(VFS) is one of the most
important parts of the operating system. It handles communication
with permanent storage. In our case the VFS doesn't handle the file
operation them selves but requires the file system to give us
function pointers to work with.
A file in our VFS is nothing more than a data
structure with a pointer to the file system driver file, which itself
is attached to one of the permanent storage devices. This might seem
complex but it does provide us with a whole lot of possibilities,
which are provided not only by our system but also by others like
Linux and BSD.
The file system mounts still have to be written
though so I still can't go too deep into the implementation details
of those.
One thing we already have working though is a
special kind of file we call a buffer. When we open a file with the
initialiser function of the buffer it loads all of its functions into
the function pointers of the buffer and now allows us to read from,
write to, seek in and close the buffer like it's a normal file
somewhere on a disk. Internally it keeps all the data in the form of
a tree and when it's time to close the buffer, while no other part of
the application has opened it, it will remove all of it, which is
quite unlike a normal file.
Because of the index variable, which is 64 bits,
the buffer supports files of up to 16.000 PiB. If you don't know what
that means. Well, lets just say that it's plenty for the coming
decade if not more (I personally have trouble filling my 320 GiB, and
that's roughly 0.002% of the buffer …).
No comments:
Post a Comment