SHPORA.net :: PDA

Login:
đćăèńòđàöèÿ

Main
FAQ

ăóìàíèòàđíûć íàóêè
ćńòćńòâćííûć íàóêè
ìàòćìàòèśćńêèć íàóêè
òćőíèśćńêèć íàóêè
Search:
Title: | Body:

a.Algoritmul chdir

Algoritmul chdir (modifică directorul curent al unui proces).
^Sintaxa apelului sistem chdir este:
^chdir (nume?_cale);
^unde nume_cale este numele noului director curent al procesului.
^algoritm change directory
^intrare:
^ numele noului director
^ie?ire: niciuna
{ determină inodul corespunzător noului director (algoritm namei);
^if (inodul nu este al unui director sau accesul nu este permis)
{ eliberează inodul (algoritm iput);
^return (eroare);
}
^deblochează inodul;
^eliberează inodul corespunzător directorului curent anterior (algoritm iput);
^plasează informaȚiile corespunzătoare noului inod în slotul corespunzător directorului curent din u area;
} .--Nucleul analizează numele noului director folosind algoritmul namei ?i verifică dacă directorul specificat este într-adevăr director, precum ?i permisiunile de acces. Noul nod este deblocat, dar rămâne alocat ?i cu valoarea contorului incrementată. Se eliberează inodul vechiului director curent memorat în u area (algoritm iput), iar noul inod este salvat în u area. După schimbarea directorului curent algoritmul namei va utiliza inodul din u area ca director de început pentru căutarea căilor ce nu încep din rădăcină. După execuȚia chdir, contorul inodului noului director este cel puȚin 1, pe când cel al directorului anterior este decrementat cu 1. Inodul alocat în timpul unui apel chdir este eliberat numai când procesul execută un alt chdir sau exit (se încheie).
Pentru ficare utilizator se păstează în nucleu o variabilă globală pentru rădăcină (root). O copie a acestei variabile este în u area. Procesele pot schimba rădăcina curentă (cea din u area) prin intermediul apelului sistem chroot. Sintaxa este:chroot (nume_cale);
unde nume_cale este numele noii rădăcini. Algoritmul pentru chroot este similar cu chdir.