File system simulation


Title of the project


File system simulation


Abstract of the project


The project involves creation of a virtual file system. The project would require creation and manipulation of various data structures to store the contents of the file system. There should be a programmer-level library of functions (API) like my_create, my_delete, my_open, my_close, my_read, my_write, etc to simulate file system operations. The APIs will work on this simulated file system. The file system can model an existing system such as Unix/Windows or you can invent your own.




Generic Technlogy keywords


Operating Systems, Programming


Specific Technology keywords


Unix, Windows, C, C++, Java


Project type keywords


Analysis, Design, Implementation, Testing


Functional components of the project


Following is a list of functionalities to be supported by this virtual file system. More functionalities can be added to this list. And, in places where the description of a functionality is not adequate, you can make appropriate assumptions and proceed.


  1. Provide a programmer-level library of functions (API) like my_create, my_delete, my_open, my_close, my_read, my_write, etc to simulate file system operations. The APIs will work on a simulated file system. You could either model your file system on an existing system (e.g. Unix, Dos, etc) or invent your own. Your system should provide support for directory hierarchies.


  1. You should allocate a large file on the actual file system, and treat it as a virtual disk for your file system simulation. In order to implement your API, you would create and manipulate various data structures on your virtual disk to create and manage your file system. For manipulating your file system's data on the virtual disk, you can use C file functions such as fopen, fread, fwrite or corresponding java functions.


  1. For demonstration of the use of your APIs, you will need to write simple user level commands or small programs that use your APIs. The commands should allow navigation of this file system and creation/removal/editing of entries in the file system. A command for listing the contents of a particular node in the file system is also required at a minimum.


  1. You need to implement only one mechanism each for free-space management, data access, and some simple security mechanism, but you must do the analysis for how it compares with other alternative strategies for the same.


  1. The file should support an hierarchical organization of data


Steps to start-off the project


The following steps will be helpful to start off the project.


  1. Study and be comfortable with technologies such as
    1. Windows OS and File system, C/C++/Java programming (emphasis on file handling)
    2. Unix/Linux OS and file system, C/C++/Java programming (emphasis on file handling)


  1. Study in detail the design of a file system for an OS such as Windows or Linux. 




Hardware requirements




Alternatives (If available)


PC with 2 GB hard-disk and 256 MB RAM






Software requirements




Alternatives (If available)





C/C++/Java compiler

Not Applicable



Manpower requirements


3 to 4 students can complete this in 4-6 months if they work fulltime on it.


Milestones and Timelines



Milestone Name

Milestone Description




From Week – To week




Requirements/Functional Specification

Complete specification of the system (with appropriate assumptions) including listing down the functionalities to be supported by the file system. A document detailing the same should be written and a presentation on that be made.


Attempt should be made to add some more relevant functionalities other than those that are listed in this document.


Technology familiarization and Task breakup

Understanding of the technology needed to implement the project.


The presentation should be from the point of view of being able to apply it to the project, rather than from a theoretical perspective.

The requirements should be broken up into individual members of the team and they should come up with milestones in their project life-cycle and dates of completion

A excel sheet containing the break-up of the tasks and important milestones dates should be the output of this stage


High-level and Detailed  Design

The design should detail about the approach towards creating the file system. The free-space management, data access and security related design and approach issues should be decided in this phase itself.


The scenarios should map to the requirement specification (ie, for each requirement that is specified, a corresponding approach or design should be there in the document).



The actual implementation of the file system should be made in this phase. Unit Testing for each unit/component of the system should be done so that the functionality of each unit is verified.


During this milestone period, it would be a good idea for the team (or one person from the team) to start working on a test-plan for the entire system. This test-plan can be updated as and when new scenarios come to mind.


Integration Testing

The system should be thoroughly tested by running all the testcases written for the system (from milestone 4).


Another 2 weeks should be there to handle any issues found during testing of the system. After that, the final demo can be arranged.


Final Review

Issues found during the previous milestone are fixed and the system is ready for the final review.


During the final review of the project, it should be checked that all the requirements specified during milestone number 1 are fulfilled (or appropriate reasons given for not fulfilling the same)



Guidelines and References

  2. - For UML tool for Detailed Design
  3. - Another UML tool

Tags :
Your rating: None Average: 3.2 (5 votes)