SHPORA.net :: PDA

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

Main
FAQ

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

b.Mont.Alg.mount

Fiecare intrare conȚine:
^un număr de dispozitiv care identifică sistemul de fi?iere conectat (acesta este numărul logic al sistemului de fi?iere);
^un pointer la un buffer ce conȚine superblocul sistemului de fi?iere (orice sistem de fi?iere activ are superblocul în memoria internă);
^un pointer la inodul rădăcinii sistemului de fi?iere ce va fi montat ("/" al sistemului de fi?iere "/dev/dsk1";
^un pointer la inodul directorului în care se va monta sistemul de fi?iere ("usr" din sistemului de fi?iere rădăcină)
Asocierea ce se realizează pe durata apelului sistem mount între inodul punctului de montare ?i inodul rădăcină al sistemului de fi?iere montat permite nucleului să traverseze cu u?urinȚă noua structură de directoare creată.
--algoritm mount
^intrări: numele fi?ierului bloc special
^numele directorului în care se face montarea
^opȚiuni de montare (read only)
^ie?ire: niciuna
{
^if (apelantul nu este superuser)
^return (eroare);
^determină inodul pentru fi?ierul bloc special (algoritm namei);
^execută verificări;
^determină inodul corespunzător directorului din arbore în care se face montarea (algoritm namei);
^if (nu este director sau contorul de referinȚă>1)
{
^eliberează inodul (algoritm iput);
^return (eroare);
}
^găse?te o intrare liberă în MT;
^apelează rutina de deschidere a fi?ierului ^special /*pentru citirea superblocului */;
^obȚine un buffer liber din bufferul cache (variantă algoritm getblk);
^iniȚializează câmpurile superblocului;
^alocă inod pentru rădăcina dispozitivului montat (algoritm iget) ?i-l salvează în MT;
^marchează inodul directorul în care se face montarea ca punct de montare;
^eliberează inodul fi?ierului special (algoritm iput);
^deblochează inodul directorului punct de montare;
}