Projects

File system simulation

You are not Member of this Project.
Project Owner : Anupriya24
Created Date : Wed, 20/02/2013 - 19:25
Project Description :

 

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.

 

Keywords

 

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. 

 

Requirements

 

Hardware requirements

 

Number

Description

Alternatives (If available)

1

PC with 2 GB hard-disk and 256 MB RAM

Not-Applicable

 

 

 

 

Software requirements

 

Number

Description

Alternatives (If available)

1

Unix/Linux

Windows

2

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

 

No

Milestone Name

Milestone Description

 

Timeline

 

From Week – To week

Remarks

 

1

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.

2-3

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

2

Technology familiarization and Task breakup

Understanding of the technology needed to implement the project.

4-6

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

3.

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.

7-10

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).

4.

Implementation/Build

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.

11-15

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.

5

Integration Testing

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

16

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

6

Final Review

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

17-18

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)

 

 

You are not authorized to access this content.
You are not authorized to access this content.
You are not authorized to access this content.
You are not authorized to access this content.
You are not authorized to access this content.