The proposed file system has to cater to the needs of both these types that would allow for the storage and retrieval of any type of file. Secondly, the proposed file system will be incorporated with or will function under the simple commands of read (), write (), open (), store () that is similar to the calls under UNIX.
The proposed file system will implement the concept of directories with a unique feature. As the total disk size given for the assignment is 120GB, storage and retrieval will take a lot of time is the entire disk space were to be considered as a single entity. Also the amount of information that would have to be maintained by the table in the main memory for the purpose of caching would be enormous and would occupy a lot of space. Therefore, in order to reduce the sizes of the tables and in order to improve the speed of accessing, the entire disk space will be partitioned into a series of virtual drives that will be considered as independent entities on logical terms. Thus, any file system will revolve around these virtual drives. Each virtual drive will have a size of 8GB each. Each of 8GB virtual drives will be made up of blocks of size 8kB each. Thus, in order to access any particular file, the file system can initially switch over to the particular drive by looking up at just 4 bits (24 =16), as the number of such virtual drives is 15. Thus, such an indexing will enable the search for a particular location simple and fast.
As has been previously mentioned, the file system will support directories, but the unique features of the directories is that they can span over different virtual drives in case there is not enough space for an existing directory to accommodate more files. There will be two primary types of files that will be maintained by the file system, which will be known as the GB_dir table and the KB_fil table. As the names suggest, the former will be used to index the directories while the latter one will be used for files. The KB_fil table will have the following fields:
Blocknum: This will be the number of the block that is already held by some file information.
Filname: as the name suggests, this denotes the name of the file that occupies the block.
Seq-nr: this field holds significance if the size of the file is more than that of a block (>8KB).
Size: This filed is used to specify the actual size of the file.
Endaddress: this will be localized to the block and will hold the last address of the memory location within the block, which is actually