b.Apel sis.openNucleul cautг fi?ierul оn cadrul sistemului de fi?iere folosind algoritmul namei (vezi figura 5.2). Dupг ce gгse?te inodul din memoria internг, se verificг permisiunile de acces la fi?ier, iar dacг acestea sunt corespunzгtoare, se alocг o intrare оn GFT pentru fi?ierul ce este deschis. O intrare оn GFT conЮine: un pointer cгtre inodul fi?ierului deschis, tipul deschiderii fi?ierului (citire ?i/sau scriere), deplasamentul (offsetul) de la care nucleul urmeazг sг execute urmгtoarea citire sau scriere. Nucleul iniЮializeazг aceastг valoare cu 0 pe durata aplelului open, ceea ce оnseamnг cг prima citire sau scriere se va face, implicit, de la оnceputul fi?ierului. De asemenea, un proces poate deschide un fi?ier pentru adгugare, caz оn care nucleul va iniЮializa offsetul cu valoarea lungimii fi?ierului. Nucleul alocг o intrare оn UFDT, iar valoarea indexului din tabelг corespunzгtor acestei intrгri este descriptorul de fi?ier returnat utilizatorului. Intrarea din UFDT conЮine un pointer cгtre intrarea corespunzгtoare din GFT.Sг presupunem cг un proces executг urmгtorul cod: deschide fi?ierul "/etc/passwd" de douг ori, odatг doar pentru citire, iar a doua oarг pentru citire-scriere, ?i fi?ierul "local" odatг, pentru scriere.
^fd1 = open("/etc/passwd", O_RDONLY);
^fd2 = open("local", O_WRONLY);
^fd3 = open("/etc/passwd", O_RDWR);
Fiecare open returnează procesului un descriptor de fişier, iar intrarea corespunzătoare din UFDT pointează către o intrare proprie din GFT, chiar dacă un fişier ("/etc/passwd") este deschis de două ori. Intrările din GFT corespunzătoare aceluiaşi fişier pointează către o singură intrare din IT.
Să presupunem că un al doilea proces execută următorul cod:
fd1=open("/etc/passwd",O_RDONLY);
fd2=open("private",O_RDONLY);