Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Fiind un sistem de operare multitasking si multiutilizator, UNIX necesita efectuarea unei serii de operatii relativ complexe atat la lansare cat si inainte de scoaterea calculatorului de sub tensiune.
Lansarea sistemului UNIX are de obicei loc in patru etape, ale caror efecte se pot suprapune in timp :
La punerea calculatorului sub tensiune controlul este preluat de un program inscris in memoria permanenta. Acest program examineaza configuratia sistemului de calcul si efectueaza o serie de teste de buna functionare, dupa care se examineaza perifericele in cautarea unui candidat pentru lansarea sistemului, se verifica existenta unui sistem de fisiere UNIX pe discul ales dupa care se citeste si se incarca in memorie nucleul sistemului de operare, aflat intr-un fisier obisnuit, direct executabil (/vmlinuz pentru S.O. Linux).
Nucleul S.O. primeste controlul si determina montarea sistemului de fisiere de pe discul de pornire. Radacina acestui sistem de fisiere devine radacina intregii ierarhii de cataloage accesibile unui utilizator. In acest moment exista un singur proces, care ulterior va deveni procesul fictiv 0 (insarcinat de obicei cu gestiunea memoriei virtuale). Nucleul creeaza procesul init (prin incarcarea programului /etc/init), acesta este singurul proces care nu este creat prin mecanismul uzual de duplicare (fork()). Controlul este preluat de init, care continua activitatile legate de lansarea sistemului. La sfarsitul acestei etape initializarea nucleului a luat sfarsit, sistemul functionand normal, unicul proces utilizator prezent fiind init, care ruleaza cu privilegiile superutilizatorului.
init lanseaza un interpretor de comenzi (/bin/sh de exemplu), caruia ii revine sarcina citirii si executarii fisierului de comenzi indirecte de configurare /etc/rc, care contine comenzi care asigura:
verificarea (cu ajutorul comenzii fsck) a corectitudinii sistemului de fisiere radacina, si eventual corectarea automata a eventualelor erori minore. Daca fsck esueaza, atunci un interpretor de comenzi este lansat cu intentia ca operatorul sa refaca manual consistenta sistemului de fisiere. In acest timp sistemul lucreaza si operatorul primeste privilegiile superutilizatorului;
montarea (cu ajutorul comenzii mount) a celorlalte discuri din configuratie;
initializarea altor echipamente periferice (interfete de retea de exemplu);
lansarea in fundal a unui numar de procese (demoni). De exemplu, sistemele din familia BSD lanseaza demonul inetd, destinat lansarii automate a proceselor inregistrate ca servicii la distanta (ftp, rlogin etc.).
init creeaza (prin duplicare) cate un proces getty pentru fiecare terminal. Fiecare getty asteapta introducerea unui nume de utilizator la terminalul respectiv, afisand un prompt (de exemplu login:); aceasta conditie fiind satisfacuta, getty se transforma in login, pentru a accepta utilizatorul in sistem.
Uneori ultimele doua etape se desfasoara in paralel; procesele lansate de init in ultima etapa pot fi sau inscrise in codul binar al lui init, sau listate intr-un fisier destinat acestui scop, in general /etc/inittab. Toate aceste activitati fiind indeplinite, init (procesul 1) trece in asteptare. Din aceasta stare el va iesi temporar la semnalarea mortii unui interpretor de comenzi principal.
Procesul login asociat terminalului in cauza, afiseaza un al doilea prompt (de exemplu password:) si asteapta introducerea unei parole. Parola citita este cifrata, apoi login cauta perechea (nume_utilizator, parola_cifrata) in fisierul /etc/passwd. Daca este gasita perechea respectiva, atunci din acelasi /etc/passwd se citesc :
numarul de utilizator (uid-ul) utilizatorului si numarul grupului (gid-ul) din care face parte. login, care pana acum rulase cu privilegiile superutilizatorului, isi schimba apartenenta, de acum inainte ruland sub uid-ul si gid-ul utilizatorului in curs de acceptare.
catalogul de referinta al utilizatorului. login schimba catalogul curent in catalogul de referinta al utilizatorului. Daca schimbarea nu reuseste, catalogul curent este stabilit in catalogul radacina.
numele interpretorului de comenzi (de exemplu /bin/sh sau /bin/bash).
login introduce in mediu o serie de valori (de exemplu HOME=catalogul de referinta, SHELL=numele absolut al interpretorului) si se autoanlocuieste (prin exec()) cu interpretorul de comenzi al carui nume a fost citit. La inceperea executiei, interpretorul de comenzi primeste un prim argument (argumentul zero) incepand cu un minus (de exemplu -sh in loc de sh), pentru a afla astfel ca este un interpretor de comenzi principal. Interpretorul de comenzi efectueaza o serie de initializari, apoi afiseaza un prompt (de exemplu $).
Introducerea unui caracter sfarsit de fisier (<CONTROL> D) sau a comenzii exit sau logout determina terminarea executiei interpretorului de comenzi. Acest lucru poate avea loc si ca urmare a receptionarii de catre interpretorul de comenzi a unui semnal imperativ de oprire, emis fie ca urmare a inceperii operatiilor de oprire a sistemului (comanda shutdown), fie din initiativa superutilizatorului (prin comanda kill -KILL). Moartea interpretorului de comenzi determina inregistrarea intr-un fisier datele referitoare la sesiunea proaspat incheiata, trimite un semnal de rupere a legaturii catre toate procesele legate de terminalul respectiv, apoi lanseaza (prin duplicare) un nou getty pentru acel terminal, astfel o noua sesiune de lucru poate incepe.
La oprirea S.O. trebuie terminate toate procesele active, inregistrate pe disc toate informatiile prezente in zonele tampon de scriere, demontate toate sistemele de fisiere si terminate toate comunicatiile in retea. Aceste activitati sunt executate automat de comanda shutdown, accesibila numai superutilizatorului. Scoaterea calculatorului de sub tensiune fara a da inainte comanda shutdown (sau fara a astepta mesajul prin care sistemul anunta ca poate fi scos de sub tensiune) produce intotdeauna o serie de erori in sistemul de fisiere. De multe ori aceste inconsistente sau pot fi corectate automat, sau pot fi rezolvate manual (cu eventuale pierderi de date), nu de putine ori insa, sistemul de fisiere este grav compromis.
Copyright © 2024 - Toate drepturile rezervate