Git Product home page Git Product logo

simple-file-system's Introduction

###Zadaniem jest zaimplementowanie prostego systemu plików z jednopoziomowym katalogiem.

Rozmiarem bloku, którzy przyjąłem jest 4kB. Pierwszy blok to superblok, który zawiera informacje o tym ile bloków danych zawartych jest w systemie, oraz ilość dostępnych i-node(czyli plików do utworzenia). Dzięki temu wiemy, z jakimi przesunięciami dostawać się do konkretnych sektorów(i node, dane) W nim zawarte są również informacje o tym ile jest wolnych i-node oraz bloków na dysku Następnie w pamięci znajdują się bitmapy ilustrujące zajęte i wolne bloki danych, oraz i-node.(po 1 bloku) Gdy blok bądź i-node jest wolny, bit ilustrujący jest ustawiony na 0, gdy zajęty - na 1. W i-node znajduje się informacja o nazwie pliku, informacja o rozmiarze, oraz wskaźniki do bloków pamięci, które zajmuje plik.(stała liczba wskaźników, równa ilości bloków) ####Kopiowanie pliku z minixa na wirtualny system: Gdy plik będzie kopiowany na dysk, najpierw przeszukujemy tablicę i-node w poszukiwaniu informacji, czy plik o takiej nazwie istnieje. Jeśli istnieje - wykorzystamy ten i-node. Dealokujemy bloki danych zajmowane przez plik, a następnie alokujemy te bloki dla nowego pliku. Gdy plik nie istnieje - sprawdzamy czy jest wystarczająca ilość wolnych bloków i jest wolny i-node. Gdy jest: przechodzimy po bitmapie, alokując kolejne bloki danych i zmieniając w bitmapie wartość dla nich na 1, oraz uzupełniając numery bloków w i-node. ####Kopiowanie pliku na minixa z wirtualnego systemu plików: Sprawdzamy czy jest plik o takiej nazwie, następnie sprawdzamy, czy jest obecnie używany(pozycja w bitmapie). Jeśli tak - kopiujemy zawartość bloków wskazywanych przez i-node(uważamy na to, aby skopiować tylko tyle, ile zajmuje plik. ####Struktura logiczna:

Numer struktury logicznej Nazwa Offset od początku
1 Superblok 0
2 Bitmapy i-node BLOCK_SIZE
3 Bitmapy danych 2 * BLOCK_SIZE
4 Struktury i-node 3 * BLOCK_SIZE
5 Bloki danych (3 + ceil((sizeof(inode) * number_of_blocks) / BLOCK_SIZE) * BLOCK_SIZE

simple-file-system's People

Contributors

kacper20 avatar

Watchers

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