SHPORA.net :: PDA | |
Main FAQ гуманитарные науки естественные науки математические науки технические науки b.Alg namei algoritm namei /* converteşte nume cale într-un inod */
intrare: nume cale ieşire: inod blocat { if (numele căii începe din rădăcină) inod de lucru = inodul rădăcină (algoritm iget ); else inod de lucru = inodul directorului curent (algoritm iget ); while (mai sunt componente neparcurse) { citeşte următoarea componentă din nume cale; verifică dacă inodul de lucru este al unui director, permisiunile de acces în regulă; if (inodul în lucru este al rădăcinii şi componenta este "..") continue; citeşte directorul (inodul de lucru) prin folosirea repetată a algoritmilor bmap, bread şi brelse; if (componenta se potriveşte cu numele unei intrări în director (inodul de lucru)) { citeşte numărul inodului din intrarea corespunzătoare componentei identificate; eliberează inodul de lucru (algoritm iput ); inodul de lucru = inodul componentei din intrare (algoritm iget); } else /* componenta nu este în director */ return (nici un inod); } return (inodul de lucru); } || Nucleul execută o căutare secvenţială în fişierului director asociat inodului de lucru, încercând să determine o potrivire între componenta curentă a numelui căii şi numele unei intrări în director. Pe baza offsetului (se începe cu offsetul 0) în fişierul director se determină blocul disc corespunzător (folosind algoritmul bmap) pe care-l citeşte (folosind algoritmul bread'). Tratând conţinutul blocului ca o secvenţă de intrări în director, nucleul caută o intrare care se potriveăte cu componenta curentă din numele căii. Dacă găseşte o potrivire, el înregistrează numărul inodului din intrarea respectivă, elibereazã blocul (algoritm brelse) şi vechiul inod de lucru (algoritm iput), şi alocă un inod pentru fişierul din director pentru care s-a realizat potrivirea (algoritm iget'). |