SHPORA.net :: PDA

Login:
регистрация

Main
FAQ

гуманитарные науки
естественные науки
математические науки
технические науки
Search:
Title: | Body:

a.Crearea fisier.

Dacă open asigură accesul la un fişier existent, apelul sistem creat permite crearea unui nou fişier în sistem. Sintaxa apelului sistem creat este:fd = creat (nume?_cale, moduri);
unde variabilele nume_?cale, moduri şi fd au semnificaŢia precizată la descrierea apelului open. Dacă nu există nici un fişier cu numele specificat, atunci nucleul crează un nou fişier cu numele şi permisiunile de acces (modurile) precizate. Dacă fişierul deja există, şi permisiunile de acces sunt corespunzătoare, nucleul trunchiază fişierul (eliberează toate blocurile sale şi setează dimensiunea fişierului la 0). ïn acest caz nucleul nu modifică atributele de proprietate, iar permisiunile de acces furnizate ca parametru sunt ignorate, păstrându-se cele ale vechiului fişier.
În figura 5.12 este prezentat algoritmul pentru crearea unui fişier. Folosind algoritmul namei, nucleul analizează numele fişierului, salvează offsetul primului slot liber din director în u area. Dacă nucleul nu găseşte componenta corespunzătoare din cale în director, o va scrie în slotul determinat anterior. De asemenea, memorează în u area şi Ţine blocat inodul directorului în care se caută. Pentru continuarea execuŢiei algoritmului, se verifică dacă procesul apelant are dreptul de a scrie în director (acela unde va fi creat noul fişier).
În caz că nu exista anterior un fişier cu acelaşi nume, nucleul asignează un inod pentru noul fişier (folosind algoritmul ialloc). Apoi scrie numele fişierului şi numărul inodului alocat în directorul tată la offsetul salvat în u area. După aceea eliberează inodul directorului tată. Nucleul scrie noul inod alocat pe disc (algoritm bwrite), iar apoi directorul în noua configuraŢie. Scrierea pe disc are loc în această ordine deoarece în cazul unei prăbuşiri a sistemului între cele două scrieri vom avea un inod care nu este referit de nici o nume de fişier, dar sistemul va funcŢiona normal. Dacă ordinea de sriere e inversată şi sistemul se prăbuşeşte între cele două scrieri, sistemul de fişiere ar conŢine o cale care referă un inod incorect.