The layout of your 128 KB disk is as follows
char name[8]; //file name int size; // file size (in number of blocks) int blockPointers[8]; // direct block pointers int used; // 0 => inode is free; 1 => in use
Note that each inode is 48 bytes in size, since a char has size 1 and an int has size 4. Together, all 16 inodes take up 768 bytes. Combining this with the free block list gives us a total size of 896 bytes for the super block. The super block may not fill the 1 KB, but start writing file blocks after 1KB into the disk.
You need to implement the following operations for your file system.
create_fs disk0
This will create a file with the name
disk0in your current directory. The program also "formats" your file system---this is done by initializing all blocks in the super block to be free and marking all 16 inodes to be free.
If you work on this assignment on your home PC, here is the source code for the create_fs program.
Your program should take input from a input file and perform actions specified in the file, while printing out the result of each action. The format of the input file is as follows.
diskName // name of the file that emulates the disk C fileName Size //create a file of this size D fileNAme // delete this file L // list all files on disk and their sizes R fileName blockNum // read this block from this file W fileName blockNum // write to this block in the file (use a dummy 1KB buffer)An sample input file looks like this:
disk0 C file1 3 W file1 0 W file1 1 C lab.java 7 L C file2 4 R file1 1 D lab.java LA sample input file is available. Be sure to print out what your program does after reading each line from this file. It'd also be helpful if you printed out the disk addresses of any block that you allocate, deallocate, read or write.
A percent of your lab grade will come from your participation in this project as a member of your group.
What you need to turn in (each person individually):
Include in your zip file a copy of your assessment of the division of labor in the group in the format shown below. For a 2 person group, if you give yourself a 50% and your partner gives you a 50%, you will get the full credit for group participation. If you give your partner a 40% and your partner gives himself or herself a 40%, he or she will get fewer points for group participation. And so on...
You should be very careful about using code snippets you find on the Internet. In general your code should be your own. It is OK to read tutorials on the web and use these concepts in your assignment. Blind use of code from web is strictly disallowed. Feel free to check with us if you have questions on this policy. And be sure to document any Internet sources/ tutorials you have used to complete the assignment in your README file.