Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Apelul sistem close - UNIX

linux



+ Font mai mare | - Font mai mic



Apelul sistem close - UNIX

Un proces inchide un fisier atunci cand nu mai doreste sa il acceseze. Sintaxa aplelui sistem close este:



close(fd);

unde fd este descriptorul fisierului returnat de open. Apelul modifica intrarile din tabela de fisiere si tabela de inoduri corespunzatoare descriptorului fd. Aceste intrari nu sunt sterse, ci doar eliberate (cand contoarele ajung la 0 se invalideaza legaturile intre tabele). Ele pot fi utilizate de acelasi fisier (daca se redeschide imediat) sau realocate altui fisier ce va fi deschis. Daca contorul de referinta din tabela de fisiere este mai mare ca 1 (datorita apelurilor sistem dup sau fork), inseamna ca si alti descriptori de fisier refera intrarea din tabela de fisiere. In acest caz nucleul va decrementa contorul din tabela de fisiere si cu aceasta operatia de inchidere ia sfarsit. Daca contorul din tabela de fisiere este egal cu 1, nucleul elibereaza intrarea si decrementeaza contorul de referinta corespunzator intrarii din tabela de inoduri. Daca contorul este egal cu 0 (nici un proces nu mai refera inodul), nucleul elibereaza inodul din memoria interna (algoritmul iput) pentru a putea fi realocat. Inaintea incheierii apelului close, nucleul elibereaza intrarea corespunzatoare descriptorului din tabela descriptorilor de fisiere utilizator. Daca procesul va incerca sa acceseze descriptorul inainte ca acesta sa fie reasignat unui fisier, nucleul va returna o eroare. Cand un proces se incheie (exit) nucleul inchide fisierele corespunzatoare descriptorilor activi din tabela descriptorilor de fisiere utilizator.

In figura 5.11 se prezinta intrarile de interes din tabelele figurii 5.4 dupa incheierea procesului B. Astfel, sunt eliberate intrarile pentru descriptorii de fisier 3 si 4 din tabela descriptorilor de fisiere utilizator, si intrarile corespunzatoare din tabela de fisiere (contoarele fiind 0). Sunt decrementate contoarele de referinta din tabela inodurilor corespunzatoare fisierelor "/etc/passwd" si "private". Cum contorul pentru "private" este 0, inodul sau este pus in lista inodurilor libere, insa intrarea sa din tabela inodurilor nu este stearsa. Daca un alt proces acceseaza fisierul "private" cat timp inodul se mai afla in lista libera, el va fi utilizat de catre nucleu (vezi 4.1.2).

 

Figura 5.11 Structura tabelelor dupa inchiderea unor fisiere



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1054
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved