Meniu

Linux. Componentele sistemului de operare

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 ) 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 sau . 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.

Source: unitbv.ro

John Doe

Articole publicate de la contributori ce nu detin un cont pe gnulinux.ro. Continutul este verificat sumar, iar raspunderea apartine contributorilor.
  • | 340 articole

Nici un comentariu inca. Fii primul!
  • powered by Verysign