d.Apel.sis.close

Сделай свою wap-шпаргалку =) попробуй конструктор сайтов http://www.panweb.com/


Un proces închide un fişier atunci când nu mai doreşte să îl acceseze. Sintaxa aplelui sistem close este: close(fd);
unde fd este descriptorul fişierului returnat de open.Apelul modifică intrările din GFT şi IT corespunzătoare descriptorului fd. Aceste intrări nu sunt şterse, ci doar eliberate (când contoarele ajung la 0 se invalidează legăturile între tabele). Ele pot fi utilizate de acelaşi fişier (dacă se redeschide imediat) sau realocate altui fişier ce va fi deschis.
Dacă contorul de referinŢă din GFT este mai mare ca 1 (datorită apelurilor sistem dup sau fork), înseamnă că alŢi descriptori de fişier referă intrarea din GFT. ïn acest caz nucleul va decrementa contorul din GFT şi cu aceasta operaŢia de închidere ia sfârşit. Dacă contorul din GFT este egal cu 1, nucleul eliberează intrarea şi decrementează contorul de referinŢă corespunzător intrării din IT. Dacă contorul este egal cu 0 (nici un proces nu mai referă inodul), nucleul eliberează inodul din memoria internă (algoritmul iput) pentru a putea fi realocat. ïnaintea încheierii apelului close, nucleul eliberează intrarea corespunzătoare descriptorului din UFDT. Dacă procesul va încerca să acceseze descriptorul înainte ca acesta să fie reasociat unui fişier, nucleul va returna o eroare. Când un proces se încheie (exit) nucleul închide fişierele corespunzătoare descriptorilor activi din UFDT.
după încheierea procesului B. Astfel, sunt eliberate intrările pentru descriptorii de fişier 3 şi 4 din UFDT, şi intrările corespunzătoare din GFT (contoarele fiind 0). Sunt decrementate şi contoarele referinŢă din IT corespunzătoare fişierelor ?/etc/passwd? şi ?private?. Cum contorul pentru ?private? este 0, inodul său este pus în lista inodurilor libere, însă intrarea sa din IT nu este ştearsă. Dacă un alt proces accesează fişierul ?private? cât timp inodul se mai află în lista liberă, el va fi utilizat de către nucleu.