CS计算机代考程序代写 data structure file system Hive Programming Assignment 4

Programming Assignment 4

CS450 Fall, 2021

1. This assignment is a pair programming effort. It is due on 12/02/2021

2. Purpose: Develop a set of tools that can help to recover a damaged file system. For

many reasons, the information in a directory file, in an inode etc. may get damaged and

cannot be read. As a result, a user program will not be able to access some parts of the

file system. In this exercise, we ask you to develop a set of tools and show that you can

use them to recover a file system if one or more of its directory inode is damaged.

3. Requirements: (60%)

1) Your tools and recovery program will work on the xv6 file system.

2) (10%) Write a program, called the directoryWalker, that prints out the

names of each file and directory in a file system tree, starting at a given point in

the tree. The program will also write the inodes associated with each file and

directory.

3) (10%) Write a program, called the inodeTBWalker, that prints out all the

allocated inodes. You obtain this set of inodes from the inode table.

4) (10%) Write a program that will compare the inode related output from

the two Walkers.
5) (10%) Write a program that can erase the information (including the block

pointers) in a directory inode so that you can test and demonstrate your results.

6) (20%) If one or more of the directory inodes of the file system is damaged and

therefore cannot be read, the directoryWalker can traverse only part of

the file system tree. Write a program that will fix the damaged file system. Can

you do this just by having the Walkers as specified above? What is the best

you can do in terms of the number of damaged directory inodes?

7) Bonus: (Additional 5% or more) Can you recover the file system if other parts of

the file system data structure is damaged? Implementation not necessary but

will count.

4. Deliverables:

1) (15%) A document that describes your design and why it works, the various

existing xv6 functions and header files that you changed, and the manual pages

for the system calls that you added to the system. The document should not be

more than 6 pages with at least a 11 point font size.

2) (25%) The test data (i.e. the test file system) that you use and explanation on

why the test data is of good quality. If you use the equivalence partitioning

method to generate your test data, describe your equivalence partitions.

3) Source(with complete xv6 source code) and executable objects with a README

on how to build and execute them. If you use an version of xv6 other than the

one in http://github.com/mit-pdos/xv6-public you need to provide the details of

how to make it work and how to compile it.

4) Upload all files as a zip archive with GroupID_PA4.zip. Documents and readme

only supports: txt, doc, docx and pdf format.
5) (Mandatory, i.e. no point if not submitted) Self-evaluation is due 24 hours after

submission.

http://github.com/mit-pdos/xv6-public