Giter VIP home page Giter VIP logo

simplefs-for-os's Introduction

SimpleFS-for-OS

Academic project made by three people in order to build a simple virtual file system.

Instructions :

To compile:

$ make simple_fs 

to run the control interface (inside bash, no gui provided):

$ ./simple_fs

Modules description:

  • bitmap.h -> all the functions about the two bitmaps
  • disk_driver.h -> functions about block memory of our File System
  • simplefs.h -> functions and data to manage directory and files at high level: create,read,list,remove them
  • inode.h in -> data structure for the inode metadata

Project requirements:

File System implement a file system interface using binary files

  • The file system reserves the first part of the file to store:

    • a linked list of free blocks
    • linked lists of file blocks
    • a single global directory
  • Blocks are of two types

    • data blocks
    • directory blocks

    A data block are "random" information A directory block contains a sequence of structs of type "directory_entry", containing the blocks where the files in that folder start and if they are directory themselves

Our project is based on a simple File System implementation, which is a simplified version of a commercial File System in use today and this means that it is possible to creare Directory and File and access them (list,read,write,delete). To do that we divided disk space in fixed size (512 B) blocks:

[S|B|B|I|I|I|I|I|D|D|D|D|D|D...]

  • First block (S) is used to store DiskHeader structure which contains general info on File System
  • Second one (B) is used to store the Data Bitmap (see below)
  • Third one (B) is used to store the Inode Bitmap
  • Next five blocks (I) are used to store inodes, wich contains metadata upon file and directories stored in D
  • Last blocks (D) are used to store file and directories

About the BitMap concept

Bitmap are data structures implemented with arrays of char in wich each bit of a char entry, show if the block in disk with the index of the block + the microindex of the bit is free (0 value) or allocated (1 value). We use two instances of them one for data blocks (Data Bitmap) and one for Inode blocks (Inode Bitmap).

Credits:

Project made by three cs students :
Tiziano Bari -> https://github.com/RareAverage301
Giuseppe Capaldi -> https://github.com/N0t-A-G3n1us
Davide Lo Iudice -> https://github.com/LinguaggioScalabile

simplefs-for-os's People

Contributors

d-loiudice avatar davidestudente avatar not-a-genius avatar tizianobari avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.