Documente Academic
Documente Profesional
Documente Cultură
Gestiunea fisierelor
Implementarea sistemului de
fisiere
Sisteme de operare
Lect. Dr. Ozten CHELAI
7 8 9
B1 B B B B Bk B B B B B Bm
1 1 1 1 1 1 1 1 1
B1 Bk Bm
Alocarea înlănţuită soluţionează toate problemele alocării contigue. În acest caz fiecare fişier este o listă
înlănţuită de blocuri fizice care pot fi răspândite oriunde pe disc.
Aşa cum am văzut anterior, în tabela directorilor sunt memorate informaţii de două tipuri
corespunzătoare fiecărui fişier. Este vorba de informaţiile care descriu fişierul şi reprezintă atributele
acestuia şi informaţiile necesare localizării fişierului în spaţiul fizic, pe disc.
În cazul alocării cu listă înlănţuită, informaţia de localizare a fiecărui fişier este reprezentată de adresa
primului bloc, care este păstrată în intrarea corespunzătoare fişierului în directorul părinte al acestuia.
Restul informaţiilor de localizare sunt memorate pe disc, la începutul fiecărui bloc ce conţine datele din
fişier.
Această organizare conduce la necesitatea realizării de accese la disc atât pentru operaţii de
citire/scriere informaţii utile, ale fişierului, cât şi pentru citire/scriere informaţii de organizare a fişierului
reprezentate de adresele blocurilor de disc.
În cazul acestui tip de alocare nu există fragmentare externă, oricare bloc din lista blocurilor libere
putând fi folosit pentru a satisface o cerere.
De asemenea, nu este necesară declararea dimensiunii fişierului în momentul creării acestuia. Un fişier
poate continua să crească(extinda) atât timp cât există blocuri libere pe disc. În consecinţă, nu este
necesară compactarea spaţiului pe disc.
Alocare înlanţuită
1 2 6 3 Director
8 11 9
7
234 EOF
-1
Schema de alocare cu FAT poate conduce la un număr semnificativ de căutări pe disc. Astfel, capul de citire/scriere trebuie
să se mute de la începutul partiţiei, unde face citiri din FAT, la blocul identificat. În cel mai rău caz, ambele mutări au loc
pentru fiecare dintre blocuri. O soluţie este păstrare în cache a tabelei FAT. Un avantaj al utilizării FAT este înbunătăţirea
timpului de acces în cazul accesului aleator, deoarece se poate afla localizarea oricărui bloc utilizând doar citiri din FAT.
Alocare indexată
Alocarea înlănţuită soluţionează problemele fragmentării externe şi declaraţiei de dimensiune ce apar la alocarea contiguă.
Totuşi, în absenţa FAT, alocarea înlănţuită nu suportă adresare directă eficientă, deoarece pointerii la blocuri, răspândiţi în blocurile de pe
toată suprafaţa discului, trebuie să fie extraşi în ordine. Alocarea indexată rezolvă acestă problemă prin aducerea tuturor pointerilor
într-o singură locaţie, blocul index.
Fiecare fişier are un bloc index propriu, acesta fiind un vector de adrese de blocuri de disc. Intrarea i în blocul index pointează
către blocul i al fişierului. Directorul conţine adresa blocului index. Pentru citirea blocului de date i al fişierului se foloseşte intrarea i din
blocul index pentru a localiza şi citi blocul de date. Schema este similară mecanismului de paginare.
Alocarea indexată suportă acces direct şi nu produce fragmentare externă deoarece orice bloc liber de pe disc poate satisface o
cerere de spaţiu suplimentar.
În schimb acest mod de alocare conduce la utilizarea ineficientă a spaţiului deoarecer overhead-ul indus de pointerii din blocul index
este, în general, mai mare decât cel datorat pointerilor din lista înlănţuită. Fie cazul comun al unui fişier de unul sau două blocuri. Folosind
alocarea cu listă înlănţuită este necesar spaţiu suplimentar pentru unul sau doi pointeri. În cazul alocării indexate, un întreg bloc index
trebuie alocat chiar dacă se folosesc doar două intrări ale acestuia.
1 2 6 3 Director
2
8 11 9 6
7
8
11
10 11 -1 12
-1
-1
-1
De aici apare problema stabilirii dimensiunii blocului index. Deoarece fiecare fişier va avea un bloc index propriu, apare cerinţa unei
dimensiuni mici a acestuia. Dacă acesta este prea mic însă, nu va fi capabil să conţină suficienţi pointeri pentru un fişier de dimensiuni
mari, fiind necesar un mecanism special pentru rezolvarea acestor situaţii.
Alocare indexată. Alocare mixtă
Schema înlănţuită propune ca blocul index să fie un bloc de disc astfel încât poate fi citit şi scris în mod
direct.
Pentru a gestiona fişiere mai mari este necesară înlănţuirea mai multor blocuri index.
De exemplu, un bloc index ar putea conţine un mic antet cu numele fişierului şi setul primelor 100
adrese de blocuri de disc.
Adresa următorului bloc index este numai pentru fişiere de dimensiuni mici sau pointer la următorul
bloc index în cazul fişierelor de dimensiuni mari.
Indexul multinivel este o variantă a reprezentării înlănţuite care utilizează un bloc index de nivel 1
pentru a localiza un set de blocuri index de nivel 2 care conţin pointeri la blocurile fişierului.
Pentru a accesa un bloc de date, sistemul de operare utilizează indexul de nivel unu pentru a
localiza blocul index de nivel doi şi pe acesta din urmă pentru a localiza blocul de date dorit. Acest
model poate fi continuat cu nivele de ordin trei, patru, etc., funcţie de dimensiunea maximă a
fişierelor. Cu blocuri de 4096 oct. se pot memora 1024 pointeri de dimensiune 4 oct. într-un bloc
index. Două nivele de indexare permit memorarea de fişiere de max. 4Goct. (1 048 576 blocuri de
date).
Schema combinată este o altă variantă, utilizată în UFS, care presupune păstrarea primilor (ex. 15)
pointeri ai blocului index în structura de date inode ataşată fişierului.
Primii 12 pointeri conţin localizarea de blocuri directe, blocuri ce conţin date ale fişierului.Astfel
că datele fişierelor de dimensiuni mici (până în 12 blocuri) nu necesită un bloc index separat. Dacă
dimensiunea blocului este de 4Koct, atunci se pot accesa direct până la 48 Koct. de date.
Următorii 3 pointeri indică la blocuri de indirectare.
Un bloc de indirectare de nivel 1 este un bloc index ce conţine adrese de blocuri de date.
Următorul pointer localizează un bloc de indirectare de nivel 2, care conţine adrese de blocuri
de indirectare de nivel 1 care, la rândul lor, conţin adrese de blocuri de date.
Ultimul pointer ar putea conţine adresa unui bloc de indirectare de nivel 3.
Folosind această metodă, numărul de blocuri ce pot fi alocate unui fişier depăşeşte spaţiul adresabil
cu adrese de 4oct. utilizate de majoritatea sistemelor de operare. Un pointer pe 32 biti (4 oct.) poate
adresa doar 232 oct., adică 4Goct. Multe implementări UNIX, incluzând Solaris şi AIX de la IBM,
suportă pointeri de 64 biţi, permiţând astfel dimensiuni de fişiere de ordinul tertaocteţilor.
Schemele de alocare indexată au cam aceleaşi probleme de performanţă ca şi cele de adresare
înlănţuită. Blocurile index pot fi păstrate în memorie în regim de caching, dar blocurile de date pot fi
răspândite pe toată partiţia pe care se află instalat sistemul de fişiere.
Nume fişier Referinţă
Schemă combinată, cu i-node
Bloc
atribute date