Linux- Componentele sistemului de operare

Linux- Componentele sistemului de operare postat de Jan 31, 2013 0 comentarii

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.

Prin procesul de logare se intelege conectarea unui utilizator la sistem. Pentru a intelege acest proces, in continuare sunt descrise etapele prin care trece sistemul cand un utilizator cere acces.
La pornirea sistemului se porneste automat un program getty care afiseaza mesajul login: pe fiecare terminal, dupa care asteapta sa se introduca data la terminalul respectiv. Imediat ce se introduc caractere urmate de ENTER programul getty se inchide, dar nu inainte de a porni programul login care va termina procesul de logare. Deasemenea caracterele introduse sunt transmise programului login, care trebuie sa fie numele de utilizator.

Dupa ce a fost lansat in executie programul login afiseaza la terminal sirul de caractere Password: si asteapta ca utilizatorul sa introduca parola (vezi figura mai sus). Dupa ce s-a intamplat acest lucru login compara numele utilizator si parola cu cele aflate in fisierele /etc/passwd (pentru numele utilizator) si /etc/shadow pentru parola. Aceste fisiere contin cate o linie pentru fiecare utilizator, in /etc/passwd aflandu-se numele utilizator, identificatorul utilizatorului (userID), grupul de care apartine (groupID), numele real, calea catre casa utilizatorului si programul care sa fie lansat in executie dupa ce se logeaza utilizatorul, adica shell-ul. Fisierul /etc/shadow contine parola in forma criptata si alte informatii legate de aceasta cum ar fi: numarul de zile dupa care expira, numarul de zile inainte de expirare cand este anuntat utilizatorul de expirare etc. Exemplu de mai jos indica patru linii din fisierul /etc/passwd:

taruc9:x:1515:102:TARU Catalin:/disk1/home1/stud/taruc9:/bin/bash
ursescu9:x:1516:102:URSESCU Andreas Sorin:/disk1/home1/stud/ursescu9:/bin/bash
vladv9:x:1517:102:VLAD Valentin Gabriel:/disk1/home1/stud/vladv9:/bin/bash
albuv9:x:1518:102: ALBU Vasile Catalin:/disk1/home1/stud/albuv9:/bin/bash
boiciuc9:x:1519:102: BOICIUC Nicolae:/disk1/home1/stud/boiciuc9:/bin/bash

In linia a doua observati utilizatorul ursescu9 are casa in directorul /disk1/home1/stud/ursescu9, userID-ul 1516 si groupID-ul 102, si se va lansa shell-ul bash dupa ce se logeaza.

Dupa ce login verifica parola introdusa cu cea aflata in /etc/shadow, verifica numele programului care se va executa, in Linux acesta fiind in general /bin/bash, adica shell-ul Bash. Acesta va afisa prompt-ul si va astepta comenzi de la utilizator.

In figura de mai sus vedeti ca utilizatorul george s-a conectat si a fost lansat shell-ul, utilizatorul ana este pe cale de a se conecta programul login a afisat textul Password, iar pentru celalalt terminal ruleaza programul getty.

Retineti: Pentru a avea acces la casa unui utilizator folositi semnul ~ urmat de numele utilizatorului. De exemplu comanda cd ~ursescu9 va schimba directorul in casa utilizatorului ursescu9, daca bininteles acesta permite accesul in contul lui.

Comenzi pentru directoare si fisiere

Sintaxa oricarei comenzi sau functii in Linux este explicata in asa numitele pagini de manual. De exemplu daca dorim sa vedem cum se foloseste comanda ls si nu stim parametrii pe care ii poate accepta, se poate apela pagina de manual cu comanda:

man nume_comanda

adica in cazul acestui exemplu ar fi: man ls.

Iesirea din pagina de manual si revenirea in linia de comanda se face cu tasta q (de la quit).

Se vor incerca urmatoarele comenzi.
1. Legat de directoare:

pwd
mkdir – creare director
rmdir – stergere director
ls, ls -l, ls -al
cd, cd /, cd .., cd ~, cd – schimbare de director

2. Referitor la fisiere:

cp – comanda de copiere
mv – comanda de mutare
less, more – comenzi de afisare fisier text
rm – stergere de fisiere
touch – creare de fisier

Nici un comentariu pana acum

Intra in conversatie

Nici un comentariu momentan!

Fii primul care intra in conversatie.

Informatiile dumneavoastra sunt in siguranta!Adresa de email nu va fi publicata. De asemena informatiile nu sunt distribuite catre alte persoane