|
Sistemul de
operare MS-DOS
Exemple:c:\files\fisier1.txt
numele fisierului este precedat de litera unitatii de disc si
de calea de directoare\files\fisier1.txt se precizeaza o cale
pe unitatea de disc curent a fisier1.txt fisierul este cautat
in directorul curent al unitatii curented:fisier2.doc fisierul
este cautat in directorul curent al unitatii d:, deoarece
calea care urmeaza dupa litera de disc nu incepe cu simbolul
"\", deci nu se porneste din radacina. Cum realizeaza
sistemul de operare gestiunea sistemelor de fisiere, altfel
spus, cum este regasit pe disc un fisier despre care in prima
instanta se cunoaste doar numele? Pentru a raspunde la
aceasta intrebare trebuie sa urmarim cum isi organizeaza
sistemul de operare informatia pe disc. Mai intai se impun
cateva consideratii sumare legate de organizarea fizica a
discului. Intr-un mod destul de asemanator memoriei, fiecare
octet de pe disc este identificat printr-o adresa. Practic
insa, discul este impartit in zone de date de dimensiuni mai
mari, numite sectoare (care au in cele mai multe cazuri 512
octeti). Din motive tehnologice, cautarea unui octet pe disc
consta din doua etape distincte:- cautarea sectorului din care
face parte octetul dorit- cautarea octetului respectiv in
sectorul din care face parte In general, prima etapa are o
durata mult mai mare. Daca tinem cont ca, in orice program,
cel mai adesea se acceseaza in mod repetat datele invecinate,
rezulta ca este mult mai rapid sa citim printr-o singura
operatie un grup mai mare de octeti decat sa realizam cate o
operatie de citire pentru fiecare dintre acei octeti (desigur,
la fel se intampla si la scriere).Din acest motiv, citirile si
crierile de date pe disc nu se fac la nivel de octet, ci la
nivel de bloc de octeti. Dimensiunea unui asemenea bloc
variaza in functie de mai multi factori. Primul sector al uni
disc hard contine tabela de partitii. Asa cum am aratat
anterior, un disc hard poate contine mai multe zone
independente una de alta, numite partitii. Numarul maxim de
paritii care pot fi create pe disc este 4 (desi poate fi marit
prin anumite mijloace, care nu intereseaza aici), deci tabela
are 4 elemente. Fiecare element poate contine informatii
despre una dintre partitii, in principal adresele primului si
ultimului sector din partitia respectiva (evident, pentru a nu
complica prea mult structura, partitiile sunt zone continui de
date pe disc). In plus, deoarece la pornirea calculatorului
sistemul de operare este incarcat de obicei de pe disc, este
marcata partitia care contine sistemul de operare, numita
partitie activa. Deoarece dischetele nu pot avea decat o
singura partitie, ele nu au tabela de partitii, iar structura
unei dischete este identica cu a unei partitii de pe discul
hard.Structura unei partitii este urmatoarea: FAT 1 FAT 2
Sectorul de boot Tabelele de
alocare a fisierelor Directorul radacina Zona
de date Sectorul de boot (sau de autoincarcare)
contine un mic program care realizeaza incarcarea in memorie a
fisierelor care formeaza sistemul de operare. Acest sector nu
este utilizat decat in cazul partitiei active. Tabelele
de alocare a fisierelor (FAT - File Allocation
Table) memoreaza modul de ocupare cu informatie a zonei de
date a partitiei si sunt identice nu numai in structura, ci si
in continut. Sistemul DOS mentine doua copii tocmai pentru a
putea restabili informatia in cazul cand una dintre tabele
este alterata din diverse motive. Asa cum am vazut, informatia
este transferata inspre si dinspre disc in blocuri. La randul
sau, sistemul de operare stocheaza fisierele pe disc utilizand
ca unitate elementara clusterul, care reprezinta o zona
continua formata din unul sau mai multe sectoare, in functie
de caracteristicile discului. In acest fel, un fisier va ocupa
pe disc mai mult decat dimensiunea sa reala. De exemplu,
pentru un disc la care un cluster are 4 sectoare (deci 2048
octeti), un fisier de 9473 octeti va ocupa pe disc 5 clustere,
adica 10240 octeti. Tabela de alocare a fisierelor contine,
pentru fiecare cluster de pe partitie, o valoare care
indica una din urmatoarele situatii: - clusterul nu este
alocat (nu contine nici un fel de informatie utila) -
clusterul este defect (eroare fizica pe disc) - cluster
rezervat pentru uzul sistemului de operare - clusterul
contine date ale unui fisier; in acest caz, valoarea din
FAT fie va reprezenta numarul clusterului care contine
urmatoarele date ale aceluiasi fisier, fie va marca (printr-o
valoare speciala) faptul ca acest cluster contine finalul
fisierului.Deci, pentru fiecare fisier exista un lant de
clustere care contin datele respectivului fisier. Practic,
pentru a putea accesa un fisier in intregime, trebuie
cunoscuta numai adresa primului sau cluster si, utilizand
informatiile din FAT, se pot determina si clusterele
urmatoare. Acest mod de memorare elimina necesitatea ca
fisierele sa ocupe zone continui de date pe disc, deoarece
datele pot fi regasite si cand fisierul ocupa clustere aflate
in pozitii neinvecinate. Urmatoarea zona o reprezinta
directorul radacina. Acesta, ca si oricare alt director, este
de fapt un tabel ale carui elemente, numite si intrari in
director, contin informatii despre cate un fisier sau
subdirector. Aceste informatii sunt: - numele
fisierului - numarul primului cluster ocupat de catre
fisier - dimensiunea fisierului - data si ora cand a
fost creat fisierul etc. Pornind de la numele unui fisier,
sistemul de operare il poate regasi pe disc. Sa luam ca
exemplu urmatorul nume (complet) de fisier: c:\programe\bc\bin\bc.exe In
primul rand se identifica unitatea de disc pe care se face
cautarea, in cazul de fata unitatea c:. Daca unitatea de disc
nu este precizata, sistemul cauta pe unitatea implicita. In
continuare se observa ca, deoarece calea incepe cu simbolul
"\", autarea va porni din directorul radacina. In caz contrar,
cautarea ar porni din directorul curent al unitatii
respective. Evident, este necesar sa fie cunoscuta pozitia pe
disc a directorului din care incepe cautarea. Asa cum am
aratat, directorul radacina incepe de la o adresa fixa pe
disc, cunoscuta de sistem. In ceea ce priveste directorul
curent, adresa de inceput a acestuia este retinuta in
permanenta de catre sistemul de operare. Deci, in oricare din
cazuri, sistemul stie de unde sa inceapa cautarea. Urmeaza
inspectarea intrarilor din directorul radacina, pentru a gasi
elementul corespunzator subdirectorului programe. Daca nu
exista un subdirector cu acest nume in directorul radacina,
cautarea este abandonata si sistemul de operare semnalizeaza
esecul. Daca s-a gasit subdirectorul, se citeste adresa
primului sau cluster si, de la acea adresa, se incepe
inspectarea intrarilor sale pentru a gasi subdirectorul
bc. Cautarea continua in acest fel pana cand se intalneste un
caz de eroare sau pana cand este gasit fisierul bc.exe. Din
acest moment, folosind adresa primului cluster ocupat de
fisier si informatiile din FAT, fisierul poate fi accesat dupa
dorinta. Comenzi uzuale ale
sistemului MS-DOS Ca orice sistem ajuns la o
anumita vechime, MS-DOS a cunoscut o serie de imbunatatiri
de-a lungul timpului, inclusiv adaugarea de noi instructiuni,
practic fiecare versiune aducand ceva in plus in acest sens.
Totusi, numai cateva dintre aceste instructiuni sunt folosite
cu adevarat frecvent. Datorita importantei pe care o are
sistemul de fisiere, majoritatea acestor comenzi uzuale se
refera la manipularea structurii de directoare si a
continutului fisierelor. Iata o scurta prezentare a acestor
comenzi: litera_disc: Schimba unitatea de disc
curenta. Noua unitate curenta este cea a carei litera este
inclusa in comanda. Exemplu: c: noua unitate de
disc curenta este c: dir Afiseaza
numele si eventual alte informatii despre fisierele si
subdirectoarele din directorul curent de pe unitatea curenta
de disc sau dintr-un director precizat ca argument al
comenzii. Daca se doreste precizarea mai multor nume de
fisiere simultan, se pot utiliza in construirea numelor de
fisiere si directoare asa-numitii specificatori de fisier,
care sunt simboluri cu semnificatii speciale. Astfel, simbolul
"*" poate inlocui 0 sau mai multe caractere din numele unui
fisier, iar simbolul "?" (mai rar utilizat) poate inlocui 0
sau 1 caractere dintr-un nume. De asemenea, se pot folosi doua
denumiri speciale pentru directoare: "." reprezinta directorul
curent al unitatii curente, iar ".." desemneaza directorul
parinte al directorului curent (adica directorul care il
contine). Se observa ca aceste nume speciale nu pot fi
folosite in caile care pronesc din directorul
radacina.
|