Pipedija - tautosaka, gandai, kliedesiai ir jokios tiesos! Durniausia wiki enciklopedija durnapedija!


Failų sistema

Iš Pipedijos - durniausios enciklopedijos.
Jump to navigation Jump to search

Failų sistema - tai tokia duomenų struktūra, kuri leidžia saugoti visokius duomenis kur nors. Reikalas gi tas, kad jei turim šiaip sau kokią tai duomenų saugojimo vietą, tai surašę ką papuola, kur papuola, paskui nieko rasti negalėsim, todėl turėsim ką papuola ir kur papuola, bet ne tai, ką reikia. Štai vat tada ir atsiranda visokios duomenų saugojimo struktūros, kurios ir vadinamos failų sistemomis. Bendra mintis čia tokia, kad duomenų saugojimo vieta paskirstoma visokiais gabalais, o atskiroje vietoje saugomi duomenų aprašymai, kad gautųsi tuos duomenis surasti.

Šiais laikais praktiškai visur yra naudojamos hierarchinės failų sistemos, kurios turi failų ir katalogų struktūrą, kuri primena medį. Tokios sistemos pirmiausiai atsirado Multics sistemoje, paskui išplito UNIX sistemose, o paskui jau ir visur kitur, įskaitant ir DOS bei Windows.

Failų sistemos būna labai įvairios - pačios primityviausios būna juostų failų sistemos, kur juostos pradžioje yra failų sąrašas su markeriais, nuo kurios iki kurios juostos vietos eina tasai failas. Failai rašomi tik ištisiniais, 100% ilgio nuosekliais gabalais. Panašios sistemos būdavo naudojamos senoviniuose PDP kompiuteriuose ar pirmuose pirmuose asmeniniuose kompiuteriuose, kurie naudodavo magnetofonus duomenims saugoti. Jei reikdavo perrašyti kokius nors duomenis, tai prasidėdavo labai didelės problemos su juostos vietos pernaudojimu, nes atsilaisvinusius gabalus pakartotinai panaudoti būdavo sudėtinga. Neretai po kelių duomenų perrašymų vos ne pusė juostos pasidarydavo tuščia, bet netinkama naudojimui, nes tiesiog sufragmentuota į per mažus tuščius gabalus. Tai tada prasidėdavo perrašymai iš juostos į juostą, kad gautųsi tą juostą defragmentuoti.

Sudėtingesnės failų sistemos leidžia padalinti duomenis gabalais (blokais ar klasteriais) ir paskui tuos blokus dalinti pagal poreikį.

Dažniausiai failų sistemos skristomos pagal visokį papildomą funkcionalumą:

  • Hierarchinės (praktiškai visos šiuolaikinės failų sistemos), kurios turi katalogų medžio struktūrą.
  • Koduotos, kur duomenys (visa failų sistema ar jos dalys) yra užšifruojamos
  • Žurnalinės, kur kiekvienas duomenų rašymas yra atskirai užrašomas, kad būtų galima išsiaiškinti, kur duomenys dingo, jei kas ne taip
  • Transakcinės - pagerintos žurnalinės, kurios organizuotos taip, kad praktiškai būtų neįmanoma prarasti duomenų, nes jie rašomi taip, kad nedingtų išvis
  • Struktūruotos, kurios leidžia struktūruoti failų turinį taip, kaip duomenų bazėse ar panašiai
  • Objektinės - kurios apie failą leidžia saugoti daug papildomų duomenų, kurie leistų visaip tuos failus gudriau valdyti


FAT - failų sistemos pavyzdys

Viena iš paprasčiausių failų sistemų yra klasikinė FAT, kuri yra geras bendrai visokių failų sistemų pavyzdys. Tokioje sistemoje diskas dalinamas į daug klasterių, kurie failams duodami porcijomis. Pvz., jei klasteriai yra 1 kilobaito dydžio, t.y., 1024 baitų, tai netgi 1 baito dydžio failas gaus išsyk 1 kilobaito dydžio klasterį, kurio priekyje tą savo vieną baitą ir įsirašys. Jei failas bus 1025 baitų dydžio, tai jis jau gaus 2 klasterius, ir taip toliau.

Vat visas FAT sistemos veikimo principas:

  • Diskas paskirstomas į keturias skirtingas dalis:
  • Failų alokacijos lentelėje (FAT) surašomi visi klasteriai, esantys toje ketvirtoje disko dalyje:
    • Jei klasteris yra tuščias ir nenaudojamas duomenims, jis pažymimas šešioliktainiu skaičiumi, lygiu 0
    • Jei klasteris yra naudojams failui laikyti - jis lentelėje žymi sekančio to failo klasterio numerį
    • Jei klasteris yra paskutinis failui priklausantis klasteris, tai jis pažymimas šešioliktainiu skaičiumi, lygiu FF
  • Tada šakniniame kataloge parašomas įrašas, kuriame yra failo vardas ir pirmo tam failui priklausančio klasterio numeris

Kai reikia perskaityti failą, pirmiausiai skaitomas katalogas, jame randamas pirmo klasterio numeris FAT lentelėje, ir toje vietoje randamas antras klasterio numeris, to antro vietoje randamas trečio klasterio numeris ir taip toliau. Šitaip nuosekliai surandami visi failui priklausančių klasterių numeriai, o tada tie klasteriai yra perskaitomi iš disko. Kai reikia įrašyti failą, tai panašiai ieškoma tuščių klasterių, kurie paskirstomi failams.

Aišku, tokios failų sistemos turi nemažai apribojimų - linkusios fragmentuotis, pamesti failus ir taip toliau. Bet tai jau kita tema.