CATEGORII DOCUMENTE |
Subsistemul de fisiere
Reprezentarea interna a unui fisier este data de un inod (inode). Acesta contine descrierea fisierului: localizarea pe disc, lungimea, permisiunile de acces, timpii de acces si proprietarul. Termenul inod este prescurtarea termenului index node si este utilizat in mod frecvent in literatura consacrata sistemului UNIX. Fiecare fisier are un singur inod, insa poate avea mai multe nume, toate asociate aceluiasi inod. Fiecare nume este numit legatura (link). Cand un proces se refera la un fisier prin nume, nucleul analizeaza numele fisierului componenta cu componenta, verificand daca procesul are permisiunea sa traverseze directoarele corespunzatoare numelor din cale, si regaseste eventual inodul corespunzator fisierului. De exemplu, daca un proces executa:
open ('/fs2/mjb/rje/sourcefile',1);
nucleul regaseste inodul pentru '/fs2/mjb/rje/sourcefile'. Cand un proces creeaza un fisier nou, nucleul ii aloca un inod nefolosit.
Inodurile sunt stocate in sistemul de fisiere, dar sunt citite de nucleu in tabela de inoduri aflata in memoria principala (inode table -IT) atunci cand se lucreaza cu fisierele. nucleul contine alte doua structuri de date: tabela de fisiere (global file table - GFT) si tabela descriptorilor de fisier utilizator (user file descriptor table -UFDT). Tabela de fisiere este o structura globala a nucleului, iar tabela descriptorilor de fisiere utilizator este alocata fiecarui proces. Cand un proces deschide sau creaza un fisier, nucleul aloca in fiecare tabela o intrare corespunzatoare inodului fisierului. Intrarile in cele trei structuri: pastreaza starea fisierului si accesul utilizatorilor la ele. Tabela de fisiere pastreaza deplasamentul in fisier de unde se va efectua urmatoarea operatie de citire sau scriere a utilizatorului, si drepturile de acces permise procesului ce a accesat fisierul. Tabela descriptorilor de fisiere utilizator identifica toate fisierele deschise de un proces. Figura 2.2 prezinta tabelele si relatiile dintre ele. In urma apelurilor sistem open si creat, nucleul returneaza un descriptor de fisier care este un index in tabela descriptorilor de fisiere.
Figura 2.2. Descriptori de fisiere, tabela de fisiere si tabela de
inoduri
Cand se executa apelurile sistem read si write, nucleul foloseste descriptorul de fisier pentru a accesa tabela descriptorilor de fisiere. Apoi, urmand pointerii spre intrarile din tabela de fisiere si tabela de inoduri gaseste datele din fisier. Capitolele 4 si 5 vor descrie mai detaliat aceste structuri de date.Sistemul UNIX pastreaza directoarele si fisierele obisnuite pe dispozitive bloc cum ar fi benzile magnetice sau discurile. In viitor se vor utiliza frecvent statiile de lucru fara disc, fisierele fiind localizate in sisteme aflate la distanta si accesate prin retea. Pentru simplitate, in textul ce urmeaza se presupune utilizarea discurilor. Un sistem poate avea mai multe unitati fizice de disc, fiecare continand unul sau mai multe sisteme de fisiere. Pentru a usura administrarea gestionarii datelor stocate pe disc, se recomanda partitionarea acestuia in cateva sisteme de fisiere. La nivel logic nucleul nu lucreaza cu discurile, ci cu sistemele de fisiere pe care le trateaza ca dispozitive logice si le identifica prin numarul de dispozitiv logic. Conversia intre adresele de dispozitiv logic (sistemul de fisiere) si adresele dispozitivului fizic (disc) este realizata de driverul de disc. In continuare, prin termenului de 'dispozitiv' se va intelege unul logic, alta semnificatie fiind exprimata explicit.
Un sistem de fisiere consta dintr-o secventa de blocuri logice, fiecare continand 512, 1024, 2048 sau alt multiplu de 512 octeti, in functie de implementare. Dimensiunea unui bloc logic este aceeasi pentru un sistem de fisiere, dar poate diferi de la un sistem de fisiere la altul pentru aceeasi configuratie de sistem. Folosirea de blocuri logice mai mari creste rata de transfer a datelor intre disc si memorie, deoarece nucleul poate transfera mai multe date intr-o operatie cu discul, executandu-se astfel mai putine operatii de transfer memorie-disc ( operatii consumatoare de timp). De exemplu, citirea de 1 ko de pe disc intr-o singura operatie este mai rapida decat citirea a 512 octeti in doua operatii. In acelasi timp, daca un bloc este foarte mare, capacitatea efectiva de stocare poate scadea (Capitolul 5). Pentru simplitate, in carte se va folosi termenul 'bloc' pentru a desemna un bloc logic de 1 ko, alte cazuri urmand a se specifica explicit.
Figura 2.3. Structura sistemului de fisiere
Un sistem de fisiere are urmatoarea structura (Figura 2.3):
Blocul de boot ocupa partea de inceput a unui sistem de fisiere, de obicei primul sector, si poate contine codul de bootstrap care este citit de masina pentru incarcarea sau initializarea sistemului de operare. Desi este necesar doar un singur bloc de boot pentru incarcarea sistemului, fiecare sistem de fisiere are un bloc de boot (posibil gol).
Superblocul descrie starea sistemului de fisiere- dimensiunea, numarul maxim de fisiere ce se pot stoca, localizarea spatiului liber din sistemul de fisiere si alte informatii.
Lista de inoduri este o lista de inoduri aflata dupa super bloc in sistemul de fisiere. Administratorii specifica dimensiunea listei de inoduri la configurarea sistemului de fisiere. nucleul refera inodurile prin indexul in lista de inoduri. Intr-un sistem de fisiere un singur inod este inod radacina (root inode): el este inodul prin care structura de directoare a sistemului de fisiere este accesibila dupa executia apelului sistem mount (Subcapitolul 5.14).
Blocurile de date incep la sfarsitul listei de inoduri si contin datele fisierelor si date necesare administrarii sistemului. Un bloc de date alocat poate face parte doar dintr-un singur fisier al sistemului de fisiere.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1083
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved