I need to build a simplified version of the Unix File System called SmallFS -- 2
Budget: $10 – $30 USD
1. Shell: The first component is a simple shell application that allows the user to perform
operations on the SmallFS such as printing debugging information about the file system,
formatting a new file system, mounting a file system, creating files, and copying data in or
out of the file system. To do this, it will translate these user commands into file
system operations such
as FileSystem.debug, FileSystem.format, FileSystem.mount, FileSystem.create, FileSystem.rea
d and FileSystem.write.
2. File System: The second component takes the operations specified by the user through
the shell and performs them on the s disk image. This component is charged with
Page 2 of 16
organizing the on-disk data structures and performing all the bookkeeping necessary to
allow for persistent storage of data. To store the data, it will need to interact with the disk
emulator via methods such as Disk.read and Disk.write, which allow the file system read
and write to the disk image in 4096 byte blocks.
3. Disk Emulator: The third component emulates a disk by dividing a normal file (called a disk
image) into 4096 byte blocks and only allows the File System to read and write in terms of
blocks. This emulator will persistently store the data to the disk image using the
normal open, read, and write system calls.
operations on the SmallFS such as printing debugging information about the file system,
formatting a new file system, mounting a file system, creating files, and copying data in or
out of the file system. To do this, it will translate these user commands into file
system operations such
as FileSystem.debug, FileSystem.format, FileSystem.mount, FileSystem.create, FileSystem.rea
d and FileSystem.write.
2. File System: The second component takes the operations specified by the user through
the shell and performs them on the s disk image. This component is charged with
Page 2 of 16
organizing the on-disk data structures and performing all the bookkeeping necessary to
allow for persistent storage of data. To store the data, it will need to interact with the disk
emulator via methods such as Disk.read and Disk.write, which allow the file system read
and write to the disk image in 4096 byte blocks.
3. Disk Emulator: The third component emulates a disk by dividing a normal file (called a disk
image) into 4096 byte blocks and only allows the File System to read and write in terms of
blocks. This emulator will persistently store the data to the disk image using the
normal open, read, and write system calls.