Linux. Componentele sistemului de operare
Pagina principala | Curs | Laborator | Proiect |
Procesul de logare in Linux>> |
Introducere
Unix este un sistem de operare multitasking si multi-user. Multitasking
insemna ca sistemul poate rula mai multe procese in acelasi timp (sistemul de
operare DOS nu este multitasking, la un moment dat un singur proces poate rula).
Multi-user inseamna ca la un moment dat mai multi utilizatori pot lucra
simultan folosind resursele calculatorului care ruleaza sub sistemul de operare
Unix. Deoarece un calculator are o singura tastatura (tipic), accesul simultan
a mai multor utilizatori este posibil: de la terminale legate direct la calculatorul
cu SO Unix (de ex. prin cate o conexiune seriala pentru fiecare terminal) sau
prin intermediul retelei de calculatoare.
Linux este o versiune de Unix distribuita gratuit, sistem de operare creat in 1991 de un student finlandez Linus Torvalds. Suporta aproape toate caracteristicile versiunilor comerciale Unix si multe altele neexistente pe sistemele Unix. Exista mai multe distributii Linux ca de exemplu: RedHat, Mandrake, Slackware, SuSe etc.
Pentru ca un utilizator sa poata folosi resursele unui host care
ruleaza SO (Sistemul de Operare) Unix, are nevoie de un nume utilizator (login
name sau user name) si de o parola (password). Prin aceste
doua elemente un utilizator este identificat si verificat de catre SO Unix.
Daca cele doua elemente nu coincid cu informatiile pe care le detine SO, accesul
este rejectat.
Daca numele de utilizator si parola sunt valide, accesul este acordat - spunem
ca utilizatorul "s-a logat". In acest moment prompterul afisat
de catre SO semnalizeaza ca sistemul este gata sa primeasca comenzi de la utilizator.
Componentele sistemului de operare Linux
Kernel: este partea din sistemul de operare (SO) care se incarca in memorie la pornirea calculatorului. Este nucleul SO si controleaza accesul la toate dispozitivele hardware ale calculatorului, gestioneaza procesele (reamintiti-va ca Unix este un SO multitasking), gestioneaza memoria, etc. Kernelul ramane tot timpul incarcat in memorie pina la oprirea calculatorului. Marimea kernelului poate fi de la cateva sute de Kbyte pana peste un Mega (foarte rar) in functie de cat de multe echipamente hardware (placi audio, retea, SCSI) si facilitati trebuie sa suporte.
Utilitare: sunt programe care se afla pe un suport de
stocare (de ex. hard-disk), si sint incarcate in memorie numai in momentul lansarii
lor in executie. Dupa terminarea executiei zona de memorie se elibereaza. Practic
toate comenzile din Unix sunt utilitare. De exemplu cand executati comanda pine,
sistemul incarca acest program de pe hard-disk in memorie si il lanseaza
in executie.
Shell-ul
Un utilitar important este shell-ul. Cand un utilizator s-a logat in sistem un shell (este un program, asa numitul "interpretor de comenzi" - command.com la DOS) este lansat in executie automat. Acest shell este cel care afiseaza prompterul si preia comenzile introduse de utilizator. Cand introduceti o comanda shell-ul cauta pe disk comanda pe hard-disk Cand l-a gasit ii spune kernel-lui sa initieze executia programului dupa care asteapta terminarea executiei. Kernelul-ul copiaza programul in memorie si incepe executia lui. Copia programului din memorie se numeste proces. Astfel se face distinctia intre un program care este un fisier pe hard-disk si un proces care se afla in memorie si executa un anumit lucru.
Functiile unui shell
a) executia programelor: de fiecare data cind utilizatorul introduce o linie de comanda (terminata cu <ENTER>) shell-ul analizeaza comanda si decide ce trebuie facut. Pentru shell orice linie de comanda are forma generala "nume_program parametru1 parametru2 ....". Este important ca intre campurile liniei de comanda sa existe un separator <SPACE> sau <TAB>. Primul camp este programul care trebuie lansat in executie, restul reprezinta parametrii pe care le primeste programul. De exemplu:
cp file1 file2
are ca efect lansarea in executie a programului
de copiere cp care primeste ca parametrii numele celor doua fisiere, rezultatul
fiind copierea fisierului file1 in fisierul file2.
Mentionam ca exista unele comenzi incorporate in shell, adica shell-ul nu mai
are nevoie sa lanseze in executie un program extern ci este in stare sa rezolve
singur problema. De ex. comanda "cd" de schimbare a directorului
curent.
b) substituire de nume de variabile si fisiere: shell-ul permite definirea
de variabile. La apelul unei variabile shell-ul este raspunzator sa inlocuiasca
numele variabilei cu valoarea sa. De exemplu:
comanda "zece=10" defineste variabila zece
cu valoarea 10
comanda "echo $zece" va avea ca efect inlocuirea numelui variabilei
cu valoarea sa,
adica pe ecran va apare "10"
Detalii urmeaza a fi prezentate ulterior.
Shell-ul de asemenea realizeaza substituirea numelor de fisiere. Caracterele
*, ?, [] au semnificatii speciale in linia de comanda.
Shell-ul va incerca sa efectueze inlocuiri (substituiri). De exemplu comanda:
rm *.jpg
va avea ca efect stergerea tuturor fisierelor cu
extensia .jpg din directorul curent, fiindca caracterul * (cu semnificatia orice)
este inlocuit pe rind cu numele fiecarui fisier existent ce are extensia jpg.
Detalii vor fi prezentate ulterior.
c) redirectarea intrarilor si iesirilor: comenzile (programele) in general isi preiau intararea de la asa numitul dispozitiv standard de intrare (standard in) si scriu iesirea pe care o produc la dispozitivul standard de iesire. In mod normal standard in este asociat cu tastatura si standard out cu monitorul. Exista posibilitatea ca intarea sau iesirea unui program sa fie redirectat. De exemplu comanda:
cat file
are ca efect listarea continutului fisierului file la standard out, adica va apare pe monitor. Comanda:
cat file > newfile
are ca efect listarea continutului fisierului file, dar acesta
NU va apare pe monitor ci va fi inscris in fisierul newfile. Acesta deoarece
iesirea comenzii "cat file" a fost redirectata spre fisierul newfile.
Caracterul de redirectare folosit a fost ">", interpretat de shell
cand analizeaza linia de comanda.
Detalii vor fi prezentate ulterior.
d) controlul asupra mediului (environment): shell-ul
ofera comenzi care permit controlul mediului in care lucreaza utilizatorul.
De exemplu specificarea cailor de cautare, modificarea intervalului de timp
la care se verifica posta electronica, etc.
Detalii vor fi prezentate ulterior.
e) shell-ul ca limbaj de programare (interpretat): shell-ul are un limbaj de programare incorporat. Este vorba de un limbaj interpretat, adica shell-ul analizeaza o linie din program si il executa dupa care trece la linia urmatoare etc. Limbajul permite constructii cu buclare, decizii si altele intalnite la toate limbajele de programare.
Variante de shell
Exista mai multe variante de shell (programe shell scrise de
autori diferiti), cele mai reprezentative fiind :
- shell-ul Bourne (shell-ul standard), programul se numeste sh (tipic)
- shell-ul C , programul se numeste csh
- shell-ul Korn, programul se numeste ksh
- shell-ul Bourne-again, compatibil cu shell-ul Bourne dar incorporeza si elemente
avansate din shell-ul C si Korn, programul se numeste bash, acesta fiind
folosit implicit in Linux.
Variantele de shell pastreaza compatibilitatea cu shell-ul standard (Bourne shell) dar fiecare adauga cateva functionalitati suplimentare. Ca urmare un program shell scris pentru shell-ul de C probabil nu va rula sub shell-ul standard dar invers va functiona intotdeauna.
Procesul de logare in Linux>> |