Sa invatam MS-DOS
Crearea fisierelor BAT cu ajutorul MS-DOS
Test de Evaluare
Contact
 

Sistemul de operare MS-DOS

    . Cand este scris un asemenea lant (numit si cale), caracterul care separa intre ele numele directoarelor este simbolul "\". In practica s-a constatat ca, de cele mai multe ori, utilizatorul lucreaza perioade lungi de timp in mod preponderent cu fisierele dintr-un anumit director (ceea ce este normal, deoarece structura de directoare a fost creata tocmai pentru a permite gruparea fisierelor dupa rolul lor). Intrucat este relativ greu de a scrie de fiecare data numele unui fisier precedat de calea pe care se afla in sistemul de fisiere, s-a introdus notiunea de director curent. Directorul curent are proprietatea ca toate fisierele (si subdirectoarele) pe care le contine pot fi identificate prin numele lor, fara a mai trebui precizata si calea. Pentru a evita conflictele, un sistem de fisiere nu are decat un singur director curent la un moment dat. Utilizatorul poate schimba directorul curent in orice moment, dupa dorinta. Sa dam cateva exemple de nume de fisiere:
\programe\tp\turbo.exe
\dos\ansi.sys
\autoexec.batfisier1.txttemp\fisier1.aux

In primele trei exemple se observa ca primul caracter al caii este "\", ceea ce inseamna ca se porneste din directorul radacina. Al treilea exemplu reprezinta un fisier aflat chiar in directorul radacina. In ultimele doua exemple, deoarece primul caracter nu este "\", calea porneste din directorul curent. Asa cum am afirmat, pot exista mai multe sisteme de fisiere la un moment dat.
In primul rand, orice calculator contine mai multe dispozitive de stocare - o unitate de disc flexibil si unul sau mai multe discuri hard. In al doilea rand, un disc dur poate fi impartit in mai multe zone independente una de alta (numite partitii), fiecare dintre acestea continand cate un sistem de fisiere, de asemenea independent de celelalte. Trebuie deci gasita o forma de a diferentia fisierele aflate in sisteme de fisiere diferite, deci in structuri de directoare diferite.Solutia adoptata de sistemul DOS este de a denumi fiecare
sistem de fisiere printr-o litera urmata de simbolul ":". Astfel, unitatile de disc flexibil sunt desemnate prin literele a: si respectiv b:, iar discurile dure si apoi unitatile CD-ROM, precum si alte dispozitive de stocare, primesc literele c:, d: etc. Aceasta litera precede denumirea fisierului, precizand astfel in care
sistem de fisiere trebuie cautat fisierul respectiv. Din aceste motive, sistemele de fisiere se mai numesc unitati de disc, iar literele asociate lor, litere de disc. Similar directorului curent, exista si o unitate de disc curenta, avand un rol analog. Practic, toate numele de fisiere (precedate sau nu de calea de directoare
corespunzatoare) de pe unitatea curenta nu au nevoie de a preciza care este unitatea pe care se afla. Mai mult, fiecare unitate are propriul director curent. Desigur, utilizatorul poate decide atat unitatea curenta, cat si directoarele curente pe toate unitatile de disc.
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.

prev next