You are on page 1of 18

Sisteme de calcul si operare

Structura i funcionarea sistemului de operare LINUX

Student: Murrescu Marina Gabriela

Grupa: 5306 Anul: 2011-2012

Cuprins

1. Introducere 2. Istoric 3. Limbaje de programare 4. Arhitectura Linux 5. Nucleul(kernel) Linux 6. Utilizatori i permisiuni 7. Procese n Linux 8. Module n Linux 9. Concluzii 10. Bibliografie

1. Introducere Un sistem de operare reprezint un set de programe care asigur gestionarea resurselor unui sistem de calcul implementnd algoritmi destinai s maximizeze performanele i realizeaz o interfa ntre utilizator i sistemul de calcul , extinznd dar i si mplificnd setul de operaii disponibile. n ierarhia sistemelor de operare, un loc important l ocup sistemul de operare Linux. Nucleul Linux (n englez "kernel") reprezint nucleul sistemului de operare deschis care a fost creat de Linus Torvalds n 1991 i mbuntit ulterior cu ajutorul programatorilor din ntreaga lume. Acesta a fost dezvoltat iniial pentru microprocesorul Intel 80386, ns ulterior a fost portat pe multe alte platforme. Este scris aprope n ntregime n limbajul de programare C, mpreun cu nite extensii GNU C i cu cteva linii de cod scrise n limbajul de asamblare. Dezvoltat sub licena GNU GPL (GNU General Public License), codul surs al nucleului Linux este software liber. Nucleul este cel mai bine cunoscut ca principala component a sistemului de operare GNU/Linux. Distribuiile de software bazate pe nucleul Linux se numesc distribuii GNU/Linux.

2. Istoric n 1987, un profesor de la Universitatea Vrije din Amsterdam, pe nume Andrew S. Tanenbaum, a scris o carte despre arhitectura sistemelor de operare, care era nsoit de codul unui nucleu complet, numit Minix. Minix arta pentru un utilizator ca un Unix foarte mic (de aici i numele), dar era construit folosind o arhitectur complet deosebit de cea a Unix -ului tradiional (Minix era un micro-nucleu). n anul 1991, Linus Torvalds, un student n varsta de 21 de ani de la Universitatea din Helsinki, Finlanda, a nceput s lucreze pe baza unor idei simple pentru a realiza un sistem de operare. A nceput cu crearea unui comutator de task-uri de sistem (folosind instruciunile procesorului Intel 386) i a unui driver de terminal . Apoi, tnrul student a trimis un mesaj pe Internet , n reeaua Usenet comp.os.minix care includea urmatoarea fraz: "Creez un sistem de operare (liber) - e doar o pasiune, nu va fi la fel de mare i de profesional ca GNU - pentru calculatoarele compatibile AT 386[...] E scris cel mai mult n C, dar muli n-ar numi C ceea ce scriu eu. Folosete fiecare feature al lui 386 la care m-am putut gndi, fiindc a avut i scopul de a m nva pe mine despre 386. Cum am mai spus, folosete un MMU, att pentru paginare (nu pe disc nc) i segmentare... Pn n acel moment, proiectul GNU crease multe componente necesare unui sistem de operare liber, dar nucleul su, numit "GNU Hurd", nu era complet i nici disponibil.

Totodat, sistemul de operare BSD nu era nc eliberat de constrngerile legale, ceea ce a permis nucleului Linux s umple golul respectiv i, dei avea iniial o funcionalitate limitat, a atras comunitatea dezvoltatorilor de software i a utilizatorilor. Ulterior, ntre Linus i Tanenbaum s-a iscat o ceart publica, pe Internet , Tanenbaum considernd ca arhitectura micro-nucleu era mai potrivit pentru evoluia sistemelor viitoare. Pe de alta parte, Linus s-a bazat foarte mult pe arhitectura Unix-ului tradiional. n momente de nfierbantare, marele profesor Tanenbaum a declarat ca Linus ar pica daca ar fi student la cursul su de sisteme de operare. Astfel, tnrul student a fcut o noua revoluie n software, punnd baza sistemului de operare GNU/Linux, folosind nucleul su i programele GNU. i avnd codul sub protecia licenei GPL, ceea ce i-a dat posibilitatea de a face codul free. Tnrul a reuit s adune tot mai muli adereni la ideea sa. Unul dintre motive era entuziasmul cu care Linus accepta modificrile sugerate de alii i le introducea n codul lui (Tanenbaum era mult mai conservator). Un alt motiv era faptul c Linus a implementat anumite trsturi foarte utile unui sistem de operare, cum ar fi memoria virtual. (Tanenbaum a spus c ateapt vremea cnd RAM-ul o s fie att de ieftin nct nu va mai fi nevoie de memorie virtual.) Dezvoltnd mai departe propriul cod i integrnd modificri operate de ali programatori, Linux Torvalds a continuat ulterior s lanseze noi versiuni ale nucleului Linux. Cert este c evoluia numrului de utilizatori a fost exploziv, exponenial. n 1995, cnd Linus a fost la Bucureti la conferina ROSE a prezentat un grafic care arta c numarul de utlizatori crescuse de la 50, ci erau in 1991, la 500000 n 1995. La puin peste 20 de ani de la apariie, sistemul de operare a devenit complex, au aprut i nc mai apar noi faciliti, performana fiind una remarcabil. Numrul de utlizatori este mereu n cretere, sistemul de operare fiind foarte popular, desi nu este foarte facil de manevrat. n prezent sunt estimai peste 8 milioane de utilizatori ai Linux, iar nucleul su are peste 200 de autori, pe lng acetia existand cteva mii de oameni care testeaz i gsesc bug-uri. Exist o multitudine de versiuni ale sistemului de operare Linux pe Internet, acesta fiind open-source i fiind disponibil pentru oricare utilizator de Internet. Dintre acestea, putem enumera ca exemple: Red Hat, Mandrake Linux, Debian, Linux, Ubuntu etc. 3. Limbaje de programare Nucleul Linux este scris n versiunea limbajului de programare C suportat de compilatorul GNU GCC (care suport un superset al C-ului standard), mpreun cu unele seciuni relativ scurte de cod scrise n limbajul de asamblare al arhitecturii int (la ultima numrtoare, Linux suporta aproximativ 20 de familii diferite de procesoare). Datorit extensiilor C suportate de compilatorul GCC, acesta a fost (mpreun cu setul de unelte asociat) mult vreme singurul compilator capabil s compileze corect un nucleu Linux. Mai recent, Intel susine c i-a modificat compilatorul C astfel nct i acesta s poat modifica nucleul. Sunt folosite, pe lng C, i multe alte limbaje, n primul rnd n legtur cu procesul de 'construire' a nucleului (metodele prin care este creat din surse imaginea bootabil). Printre acestea se numr Perl, Python, i diferite limbaje de shell scripting. Unele driver-e ar putea fi scrise i n C++, Fortran, sau alte limbaje, dar acest comportament este cu trie nerecomandat. Sistemul de construire a nucleului suport doar GCC pentru compilarea nucleului i a driver-elor.

4. Arhitectura Linux Linux este contruit dup un anumit set de principii. nelegerea acestor principii este foarte util dac vrem s nelegem modul de funcionare a ntregului sistem. Acestea sunt cunoscute drept Calea Linux, care este derivata din filosofia ce a stat (i st) la baza sistemului UNIX. Principiile ce formeaz Calea Linux pot fi rezumate astfel: utilizarea de programe care ndeplinesc o singur sarcin; pentru realizarea sarcinilor complexe, se folosesc mai multe programe, ntre care exist o legtur; stocarea informaiilor pe medii ce pot fi utilizare cu uurin; nu exist o singur cale adevrat de a face ceva; preferina uneltelor commandline, n detrimentul uneltelor grafice.

Cele mai multe trsturi ale sistemului de operare Linux vin ca o consecin a respectrii acestor principii. Legat de acestea, un sistem Linux este construit din componente mici, ce pot fi uor nlocuite. n cele ce urmeaz, le vom examina pe cteva dintre cele mai importante. Acestea sunt: boot loader, kernelul, coaja,serverul X Window , managerul de ferestre i mediul desktop. Prin urmare, vom avea o privire a sistemului de fiiere Linux. Componentele de baz ale sistemului Linux Boot loader Boot loader-ul este acea parte din sistem, a crei executare are loc prima dat. Chiar i n situaia n care exist doar un simplu sistem de operare instalat, nucleul se ncarc. Dac sunt instalate mai multe sisteme de operare sau mai multe versiuni de kernel ale Linux, asta permite s alegem pe care dorim s o ncepem. Cele mai populare boot loadere sunt: boot loader GRUB (Grand Unified Boodloader) i LILO (Linux LOader). Cei mai muli utilizatori nu trebuie s se preocupe de instalarea boot loader-ului, ntruct acesta este instalat i configurat n mod automat. Nucleul (Kernel) Nucleul este componenta central a sistemului, ntruct comunic n mod direct cu partea hardware. De fapt, numele de Linux se refer la un anume tip de software de acest gen. Acesta le permite programelor s ignore diferenele dintre computere. Nucleul aloc resursele de care dispune sistemul - memoria, procesorul, spaiul pe hard disk i dispozitivele externe programelor care ruleaz pe calculator. Apoi, acesta separ fiecare program de la

toate componentele, astfel nct, n cazul apariiei unei erori la una dintre ele, celelalte nu sunt afectate. Utilizatorii nu trebuie s i fac griji n privina nucleului, dar sunt programe care, pentru a rula, necesit anumite versiuni de kernel sau, pur i simplu, n situaia n care exist un anumit tip de kernel, acestea sunt executate mai bine. Shell Shell-ul este o interfa text ce permite rularea programelor i controlarea sistemului prin introducerea comenzilor, folosind tastatura. Fr o coaj (sau ceva care s poat nlocui acest tip de fiier, ca un mediu desktop, spre exemplu), ar fi foarte greu ca sistemul s funcioneze. Shell-ul este doar un program exist mai multe tipuri de shell pentru linux, fiecare avnd caracteristici i avantaje diferite. Majoritatea sistemelor Linux utilizeaz Bourne Again Shell (bash). Shell-ul Linux ofer support multitasking (posibilitatea ca mai multe programe s ruleze n acelai timp). X Window Server Serverul X Window este un nlocuitor grafic al shell-ului, ce este responsabil de ntocmirea i prelucrarea grafic a datelor de intrare de la tastatur, mouse, tablete i alte dispozitive. Acesta este transparent de reea, ceea ce i permite s lucreze ntr-un mediu grafic, att pe computerul personal, ct i pe un alt computer aflat la distan, folosind o reea. Serverul X Window cel mai folosit n cadrul Linux este X. Org. Majoritatea programelor au nevoie doar de acest server pentru a rula, astfel c poate fi folosit orice mediu desktop i orice manager de ferestre. Manager de ferestre Este un program care comunic cu serverul X Window. Sarcina principal a acestuia este legat de gestionarea ferestrelor. O aplicaie a acestuia n mediul Linux este vizibil n situaia n care, fcnd click pe o fereastr, aceasta este adus naintea altora, minimizndu-le. Cele mai cunoscute programe de tip manager de fereastr sunt: Metacity GNOME - desktop fereastra manager de mediu; Kwin manager de ferestre KDE; Xfwm Xfce - manager de ferestre, un manager uor de proiectat, pentru a consuma ct mai puine resurse; Compiz Fosion un subprogram, , plcut ochiului, n mare parte din cauza animaiilor windows personalizate, a mai multor desktop-uri amplasate pe un cub ce poate fi rotit cu ajutorul mouse-ului, frontiere transparente, ferestre etc..

Mediul Desktop (Desktop Environment) Mediul desktop (cum ar fi mediul desktop GNOME, KDE, Xfce) reprezinta colecii de programe, special concepute pentru a prezenta o interfa de utilizator consistent, cuprinztoare pentru majoritatea sarcinilor comune. La acest lucru se refer majoritatea

oamenilor atunci cnd se refer la un sistem de operare, chiar dac este o simpl pies dintr un sistem mai mare i mai complex. nlocuirea unui mediu desktop este o operaiune destul de dificil, astfel nct, utilizatorilor nceptori le este recomandat s foloseasc mediul implicit.

Sistemul de fiiere (File System) Exist mai multe sisteme de fieiere, astfel c se pot distinge: BTRFS, ext3/, VFS ; NILFS ori SquashFS. Hard-diskul unui computer are o interfa destul de simpl: accept doar comenzi precum read block no. 550923 and put it in memory address 0x0021A400. S presupunem c, dup editarea unui text, dorim a-l salva pe hard-disk. i totui, ar fi ciudat sa utilizam numere de block (adrese) pentru identificarea fragmentelor de date, cum ar fi textul. De asemenea, ar trebui ca utilizatorul s i aminteasc ce date a stocat i locul acestora. Pentru a rezolva aceast problem, a fost introdus conceptul de fiier (o zon de stocare denumit). Pentru a putea fi organizate, fiierele sunt cuprinse n directoare. Directoarele pot conine alte directoare, ceea ce duce la structur n stilul unui arbore. Fiecare fiier poate fi identificat n mod unic, printr-un drum, care descrie poziia sa n ierarhia directoarelor. n Linux, directorul de nivel superior este denumit director rdcin i este notat cu un slash :/.Fiecare fiier i directorul de sistem trebuie s fie descendent dintr -un director root (este ceva comun a vorbi despre directoare folosind terminologia relaiilor de familie, precum mam, copil, descendent, strmo, frate etc). Directoarele sunt separate cu un slash ( /), iar numele de directoare i fiiere pot conine toate caracterele, cu excepia slash ului i a caracterului nul (imposibil de introdus din tastatur). O cale ar fi, de exemplu: /var/busteni/apache/error.log. aceast cale se refer la un fiier numit error.log, care se gsete n directorul numit apache, care este subdirector dintr-un director numit buteni, la rndul su, subdirector dintr-un altul, numit var (care este subdirector din directorul rdcin notat cu / - ). Directorul rdcin conine, de obicei, un numr mic de subdirectoare. Cele mai importante sunt: /home- aici se salveaza datele utilizatorilor; /bin programele necesare pentru a ndeplini funciile de baz, adic schimbarea unui director sau copierea unui fiier; /dev fiiere speciale ce reprezint dispozitivele hardware; /etc fiiere de configurare; /mnt punctul de montare pentru uniti externe conectate la computer: cd-uri sau usb-uri; /tmp fiiere temporare; /usr/local programe instalate pe computer; /var date variabile produse de programe, cum ar fi jurnalele de eroare;

/boot- aici se gaseste binarul kernel-ului si toate cele necesare bootarii Linux. /bin,/sbin,/usr/bin,/usr/sbin- binarele sistemului.

Dispozitivele vzute ca fiiere (Devices as files) Aa cum fiierele pot fi scrise i citite, dispozitivele din computer pot primi i trimite date. Din aceast cauz, Linux reprezint dispozitivele conectate la sistem ca fiiere n directorul /dev. Astfel c, aceste nu pot fi redenumite sau mutate (acestea nu sunt stocate pe orice disc). Aceast abordare simplific mult programarea aplicaiei. Dac utilizatorul doreste sa trimita ceva de la un calculator, folosind un port serial, nu este nevoie de un alt program la dosar se scrie /dev/ttyS0, care reprezint un port de serial. n acelai mod fiierul reprezentnd placa de sunet (/dev/dsp) poate fi citit pentru a capta sunetul de la un microfon ataat, n scris sau n scopul de a produce sunet prin difuzoare. Utilizatorul obinuit cu sistemul Windows, ar fi surprins de faptul c nu exist litere de unitate. Directorul rdcin reprezint unitatea pe care este sistemul instalat (C: n Windows). Alte uniti pot fi montat sau demontat n orice director (unul gol, de preferin), n sistemul de fiiere. Prin montarea unui disc, v ataai directorul rdcin al acestui disc la un director, n sistemul de fiiere. Dup aceea, este posibil accesarea discului, ca i cum ar fi o parte din discul de sistem al computerului. De exemplu, pe un disc exist un director de text, care, la rndul su, conine un fiier numit linux-intro.text i se monteaz aceast unitate n directorul /media/usbkey, fiierul linux-intro.tex putnd fi accesat prin calea /media/usbkey/text/linux-intro.tex. n cele mai multe distribuii Linux, dispozitivele de memorie usb i cd-urile sunt montate n mod automat cnd sunt inserate sau anexate, iar directorul de montate implicit este un subdirector al /mass-media sau /mnt. De exemplu, primul cd-rom ar putea fi montat n /media/cdrom0, n timp ce coninutul de o cheie usb ar putea fi accesibil prin intermediul /media/usb. Directorul de montare poate fi schimbat manual, dar este necesar a nva dou comenzi shell i a ti fiierul dispozitiv care reprezint unitatea utilizatorului 5. Nucleul (kernel) Linux Arhitectura fundamental a sistemului de operare GNU/Linux

De la crearea sa din anul 1991 i pn n prezent, nucleul Linux a trecut prin multe schimbri, muli programatori aducndu-i aportul la mbuntirea i dezvoltarea sa. Arhitectura nuceului este foarte complex, avnd circa 6 milioane de linii de cod. Arhitectura Linux nu este la fel de simpl, precum cea prezentat n imagine. De exemplu, mecanismul prin care apelurile de sistem sunt manipulate (trecerea de la spaiul de utilizator la spaiul kernel-ului), poate fi diferit de la arhitectur la arhitectur. Mai noile uniti centrale de procesare (CPU) ofer posibilitatea unei virtualizri mai eficiente, comparativ cu procesoarele x86 mai vechi, care folosesc metoda tradiional int 89h. n partea de sus este utilizatorul sau aplicaia, spaiul. Aici sunt executate aplicaiile. Mai jos de partea utilizatorului este spaiul nucleului, locul unei kernel-ul Linux exist. De asemenea, aici mai exist i GNU C Library (glibc). Aceasta i ofer o interfa apelului de sistem, care se conecteaz la kernel i face posibil mecanismul de tranziie ntre aplicarea de utilizator, spaiu i kernel. Acest lucru este important, ntruct kernel-ul i ghidul de aplicare ocup diferite spaii protejate pentru adrese. n timp ce fiecare proces utilizator-spaiu i ocup propriul spaiu de adrese virtuale, kernelul ocup un singur spaiu de adrese. Kernel-ul Linux poate fi mprit pe trei niveluri brute. n partea de sus avem interfaa de apel de sistem, care implementeaz funciile de baz (cum ar fi, de exemplu, citit i scrie). Mai jos de inferfaa apelului de sistem este codul kernelului, care poate fi considerat ca o arhitectur-independent de codului kernel. Acest cod este comun tuturor arhitecturilor de procesoare suportate de Linux. Mai jos este codul arhitecturii-dependente, care compune ceea ce, n mod curent, numim BSP (Board Support Package). Acest cod servete ca procesor i platform de cod specific a arhitecturii date. Proprieti ale nucleului Linux Cnd este vorba de arhitectura unui sistem mare i complex, precum Linux-ul, sistemul poate fi privit din mai multe perspective. Unul din scopurile descompunerii arhitecturale este acela de a oferi o modalitate mai bun de intelegere a sursei. Nucleul Linux implementeaz o serie de atribute de arhitectur importante. Att la nivel nalt, ct i la nivelurile mai mici, nucleul este compus dintr-un numr de subsisteme distincte. Linux-ul poate fi considerat, de asemenea, monolit, deoarece conine n kernel toate serviciile de baz. Acesta este diferit de Microkernel, caz n care kernelul ofer servicii de baz, precum comunicarea, I/O, de memorie i de management al procesului i alte servicii specifice, conectate la stratul de Microkernel. Fiecare i are propriile avantaje i dezavantaje. n timp, nucleul Linux a devenit eficient n privina memoriei i utilizrii procesorului, dar i foarte stabil. Dar un aspect mai interesant al sistemului Linux, dincolo de mrimea i complexitatea acestuia, const n portabilitate. Linux-ul poate fi compilat pentru a rula pe un numr mare de procesoare i platforme, cu diferite arhitecturi i nevoi. Un exemplu n acest sens, este capacitatea Linux-ului de a rula un proces pe unitile cu o unitate a gestionare a memoriei

(MMU), dar i pe cele care nu ofera MMU. Portul uClinux al nucleului este prevzut cu sistem de sprijin pentru unitile non MMU.

Subsisteme majore ale nucleului Linux Interfaa apelului de sistem SCI este un strat subire care ne ofer mijloacele necesare de efectuare a apelurilor de funcii din spaiul de utilizator n kernel. Aceast interfa poate fi dependent de arhitectur, chiar i n cadrul aceleai familii de procesoare. SCI este, de fapt, o funcie de apel de servicii de multiplexare i demultiplexare.

Managementul procesului Managementul procesului se preocup de executarea proceselor. n kernel acestea sunt numite fire i reprezint o vizualizare individual a procesorului (cod fir, de date, stiv, registre i CPU). n spaiul de utilizator, termenul de proces este folosit adesea, dei punerea n aplicare a Linux nu separ cele dou concepte (procese i fire). Nucleul ofer o interfa de program de aplicare (API Aplication Program Interface), prin intermediul SCI, pentru a crea un nou proces (furculi, Exec sau sistemul portabil de inferfa de operare - POSIX, funcii etc), a opri un proces (ucide, ieire) i de a comunica i pentru a le sincroniza ntre ele (semnal sau mecanisme de POSIX). De asemenea, n managementul procesului este nevoie de a mpri procesorul n fire active. Nucleul implementeaz un algoritm de planificare roman, care opereaz n timp constant, indiferent de numrul de fire de lupt pentru CPU. Acesta se numete 0(1) planificator, care indic faptul c, pentru a duce la finalizare un fir sau o serie de fire, este necesar aceeai unitate de timp. Planificatorul 0(1) ofer, de asemenea i suport pentru mai multe procesoare (numit multiprocesare simetric sau SMP - Symmetric multi processing).

Managementul memoriei O alt resurs important gestionat de kernel este memoria. Pentru o mai bun eficien, avnd n vedere modul n care sistemul hardware gestioneaz memoria virtual, memoria este gestionat cu ajutorul paginilor (cu mrimea de 4 kb, pentru majoritatea arhitecturilor). n Linux sunt incluse mijloace de gestionare a memoriei disponibile, precum i mecanismele hardware pentru mapri (cartografieri) fizice i virtuale. Dar, managementul memoriei e mi mult dect gestionarea tampoanelor de 4 kb. Pe lng tampoanele de 4 kb, Linux ofer abstraciuni (spre exemplu, placa de alocare). Acest sistem de management al memoriei folosete ca baz tamponul de 4 kb, dar aloc din cadrul su structuri, innd evidena paginilor ce sunt pline, parial pline sau goale. Se permite astfel sistemului a-i crete sau descrete dinamica, n funcie de nevoile sistemului mai mare.

Oferind suport pentru mai muli utilizatori de memorie, pot exista cazuri cnd memoria este epuizat. Din acest motiv, paginile pot fi mutate din memorie pe disc. Acest proces poart numele de pompare, deoarece paginile sunt schimbate de pe memorie pe hard disk.

Sistemul virtual al fiierelor Sistemul virtual al fiierelor (VFS Virtual File System) este un aspect interesant al nucleului Linux, deoarece ofer o abstracie de inferfa, comun fiierelor de sistem. VFS -ul creeaz o modalitate de comunicare ntre SCI i sistemele de fiiere suportate de kernel (figura de mai jos).

VFS-ul ofer un material de comutare ntre utilizatori i sistemele de fiiere.

n partea de sus a VFS-ului este o abstraciune comun API, precum: deschidere, nchidere, citire, scriere. n partea de jos a VFS-ului sunt abstraciuni de sistem care definesc modul n care funciile sus-strat sunt puse n aplicare. Acestea sunt plugin-uri pentru sistemul de fiiere date (din care exist peste 50). Sub stratul sistemului de fiiere este tamponul cache, care ofer un set comun de funcii (independent de orice sistem special de fiiere). Acest strat cache optimizeaz accesul la dispozitivele fizice de pstrare a datelor pentru o perioad scurt de timp (sau citite n avans, astfel ca datele s fie disponibile cnd e necesar). Mai jos de tamponul cache sunt driverele de dispozitiv, care implementeaz interfaa pentru dispozitivul fizic particular.

Stiva de reea Stiva de reea, prin design, urmeaz o arhitectur stradificat, modelat dup protocoale. Internet Protocol (IP) este baza statutului de protocol, care se afl sub protocolul de transport (cel mai frecvent Protocolul Controlului Transportului sau TCP Transmission Control Protocol). Deasupra TCP este stratul Sockets, care este invocat prin SCI. Stratul Sockets este API standard pentru subsistemul de reea i ofer o interfa de utilizator la o varietate de protocoale de reea. Cadrul de acces la primele uniti de date IP protocol (PDU) i pn la TCP i ghidul de utilizare Datagram Protocol (UDP), stratul Sockets ofer un mod standardizat pentru gestionarea conexiunilor i pentru mutarea datelor ntre terminale.

Driverele dispozitivelor Marea majoritate a codurilor surs ale nucleului Linux-ului exist n driverele dispozitivelor, care fac s fie utilizabil un anumit dispozitiv hardware. n Linux, baza sursei de drivere (arborele driverelor) este divizat, astfel c sunt acceptate o multitudine de dispozitive: bluetooth, I2C, de serie .a.

6. Utilizatori i permisiuni n Linux, accesul la fiiere este permis numai pe baza unui utilizator, ceea ce nseamn c numai prin logare se pot accesa directoarele i fiierele sistemului. Aceti utilizatori au drepturi numai pe anumite fiiere. Mai exact, pe un anumit fiier pot avea doar drept de citire, sau la anumite fiiere le este restricionat accesul. Acest lucru este fcut cu ajutorul permisiunilor.

Utilizatori Utilizator este o denumire pentru cineva care utilizeaz ori interacioneaz cu sistemul. Utilizatorii sunt identificai printr-un nume (o denumire) i o parol. Utilizatorii sistemului sunt de 2 tipuri: cei fcui de utilizator i cei ai sistemului (numiti si daemoni). Daemoni sunt folositi de anumite programe pentru a lansa anumite servicii i a permite accesul n anumite pri ale computerului. Un exemplu de daemon este gpm, care permite folosirea mouse-ului fr a fi logat. Pe plan intern, fiecare utilizator are un numr unic atribuit, care este numit ID de utilizator (user id) sau, pe scurt, UID. Trebuie doar s tie UID-ul n anumite situaii rare. n plus, utilizatorii pot fi organizai n grupuri. Exist un utilizator special, cu numele de utilizator root sau UID0. Acesta este, de asemenea, un superuser. Superuserul (super utilizatorul) poate face orice i nu este controlat n niciun fel de mecanismele de securitate. Avnd un astfel de cont de utilizator, este foarte util pentru sarcinile administrative i configurarea sistemului. n unele distribuii (Ubuntu), accesul la contul de root este dezactivat, dar sunt utilizate alte mecanisme n locul su. Dac un utilizator are mai mult de un cont pe un sistem Linux, nu este nevoie s dea log out pentru a schimbat conturile ntre ele. Nu este necesar cunoaterea comenzilor shell pentru a utiliza fiierele de pe mai muli useri, singura condiie ca utilizatorul s tie numele i parola user-ului. Datorit acestui mecanism, v putei petrece timpul ca un utilizator cu un nivel sczut de privilegii i de a comuta la un cont mai privilegiat doar n cazul n care avei nevoie. A utiliza un user cu puine privilegii confer sigurana c, n cazul unei greeli, nu se produc modificri la nivelul root.

Permisiuni de fiiere Noiunea de User (utilizator) exist pentru a controla msura n care oamenii i programele pot controla sistemul. Acest lucru este realizat printr-un sistem de permisiuni de fiiere. Fiecrui fiier i aparine unui utilizator, dar proprietarul trebuie s fie membru al aceluiai grup din care face parte i utilizatorul. Fiecare fiier are trei persmiuni: read (citire), write (scriere) i execute (executare). Aceste persmisiuni pot fi atribuite la trei tipuri de relaii de proprietar: proprietar, grup sau altele. n categoria altele sunt inclui toi utilizatorii care nu sunt proprietari ai fiierului i nu fac parte din grupul care deine acel fiier. Doar proprietarul acelui fiier i super proprietarul (superuserul) pot schimba persmisiunile sau datele de proprietate ale unui fiier. Acest sistem permite un control mai precis asupra acel

care pot face ceva pe un anumit computer. Utilizatorii pot fi mpierdicai s modifice sistemul de fiiere prin eliminarea privilegiului de a write (scriere) sau de la executarea unor comenzi, prin eliminarea permisiunii execute (executare). Utilizatorilor le este permis a executa programe, fr a le modifica. Acest lucru este foarte important, ntruct majoritatea sistemelor Linux includ un compilator, care v permite s v creai propriile programe. Aceste permisiuni se pot seta cu ajutorul literelor sau a cifrelor. Cea prin litere se face prin folosirea setului de caractere 'r','w','x'. 'r' vine de la Read, i ofer drept de citire asupra fiierului respectiv, 'w' vine de la Write, i da drept de scriere asupra unui fiier. 'x' vine de la Execute, i d drept de execuie asupra unui fiier. Un utilizator poate s aib pe un fiier toate aceste drepturi, numai anumite drepturi sau nici un drept (accesul la respectivul fiier i este restricionat). Permisiunile se pot da i prin cifre. Cifrele reprezint permisiuni pentru: proprietar, grup i ali utilizatori. Fiecare cifr este o sum de coduri de persmisiune: 1 executare, 2 scriere i 4 citire. De exemplu, 755 le permite tuturor utilizatorilor a citi sau executa fiierul, ns doar un proprietar poate scrie. Un alt exemplu: 400 i permite proprietarului a citi dosarul, ns nimnui nu i mai este permis s fac ceva. 500 i permite proprietarului s citeasc sau s execute fiierul, membrilor grupului s citeasc doar fiierul i altor utilizatori le este interzis s fac ceva. Pentru a seta permisiunile se folosete utilitarul chown. Pentru a aduga un drept, se folosete comanda "chown + drept nume_fiier", iar pentru a scoate un drept se va folosi comanda "chown - drept nume_fiier". De exemplu, pentru a da drept de scriere i citire asupra unui fiier, va trebui s se dea comanda "chown + rw nume_fiier", iar pentru a scoate drepturile de scriere i citire asupra unui fiier va fi necesar comanda "chown -rw nume_fiier". Alte comenzi folosite pentru permisiuni sunt: chmod (de schimbare a modului), chgrp (group change) - folosit pentru modificarea permisiunii referitoare la fiiere.

7.Procese in Linux Dup cum am menionat i n paginile anterioare, sistemul Linux este un sistem de operare multi-user cu capaciti multi-tasking. Termenul multi-user se refer n mod concret la capacitatea accesrii unui sistem informatic sau al unui program de ctre mai muli utilizatori concureni. Conceptul de multi-tasking reprezint n esen execuia mai multor procese individuale, folosind o singura resurs comun - un procesor. Un proces reprezint un program n execuie i are ataate o serie de informaii specifice, precum instruciunile programului, resursele folosite (cum ar fi fiiere deschise), unul sau mai multe fire de execuie i si alte informaii necesare procesului de execuie n paralel. Un proces (sau un task) n Linux este reprezentat de o structur de date task_struct. Linux pstreaz o tabel de task-uri, care este un vector de pointeri ctre toate task_struct definite.

Structura task_struct conine urmtoarele informaii: State: starea execuiei unui proces (executing, ready, suspended, stopped, zombie).

Informaii de planificare: informaii folosite de Linux pentru planificarea proceselor. Un proces poate fi normal sau real time i are o prioritate. Procesele real-time sunt planificate nanintea celor normale i n cadrul fiecrei categorii exist ierarhii de prioritate. Un contor ine minte timpul n care un proces este executat. Identificatori: fiecare proces are un identificator unic pentru utilizator i grup. Comunicaia interprocese: Linux suport mecanisme de comunicaie interproces. Legturi (Links): fiecare proces pstreaz legturi ctre procesul printe, procesele care au acelai printe cu el i ctre procesele fiu. Informaii despre timp: informaii despre timpul la care a fost creat procesul, timpul procesor consumat. File system: pointeri ctre fiierele deschise de un proces. Virtual memory: definete memoria virtual atribuit acelui proces. Processor-specific context: informaii despre regitri i stiv .

Strile de execuie ale unui proces: Running : corespunde la doua stari: procesul se executa sau este gata de executie. Interruptable: procesul este n starea blocat, eveniment,eliberarea unei resurse sau un semnal de la un alt proces. ateptnd c un

Uninterruptable: este tot o stare de blocaj, cu diferena ateapt ndeplinirea unei condiii hardware i nu accept alte semnale.

procesul

Procesul este oprit i poate fi pornit n urma unei aciuni a altui proces (exemplu: in faza de debug, procesul poate fi oprit). Procesul este terminat dar din diferite motive inca mai are structura sa in tabela de procese. Pentru execuie procesele au nevoie de acces la resursele sistemului : CPU, memorie, disc etc. Aceste resurse pot fi locale sau globale, private sau comune (partajabile). Toate resursele sunt critice (accesibile numai unui proces la un moment dat). Procesele concureaz pentru obinerea accesului la resurse. Sincronizarea este aciunea ce permite modificarea strii unui proces. Caracteristicile proceselor Orice proces Linux are un set de caracteristici comune, ce ofera informaii despre acesta: PID - sau Process ID, este un identificator de proces sub forma unui numr ntreg unic. PPID - similar cu PID, cu excepia c reprezint identificatorul procesuluicare a dat natere procesului curent (cunoscut i ca proces printe). Terminalul atasat - prescurtat si TTY , reprezinta terminalul la care procesul curent este legat. RUID

sau Real User Id , reprezinta identificatorul utilizatorului care a lansat aplicatia.

RGID si EGID - similare cu RUID si EUID, doar ca se refera la identificatorul grupului de utilizatori. Fisierul nice folosit pentru a determina factorul de prietenie al procesului, ce are ca scop stabilirea prioritii de execuie. n mod normal, procesele pot rula n doua moduri: foreground i background. Diferena intre cele dou moduri se refer strict la interaciunea interfeei cu utilizatorul, mai exact la ocuparea consolei din care respectivul proces a fost lansat. n acest mod, consola nu va fi eliberat pn la terminarea programului care o ocup.

Pentru gestionarea proceselor avem la dispoziie o serie de utilitare furnizate de shell: comanda jobs - afieaz toate comenzile ce ruleaz n fundal; comanda kill - folosit pentru terminarea oricrui proces; comenzile fg%n si bg%n aduc procesul cu identificator napoi n fundal, respectiv reactiveaz un proces suspendat .

Procesele pot fi afectate i prin combinaii de taste precum CTRL + Z (care suspenda procesul, dar nu l termin) i CTRL + C, care incheie definitiv procesul. Ca orice entitate dinamic, procesele au un ciclu de via bine definit, lund natere, evolund i terminndu-se dup nite reguli stabilite cu strictee. Structura de organizare a proceselor n Linux se poate asemna cu structura unui arbore, procesele reprezentnd rdcina arborelui, nodurile i frunzele acestuia. n cadrul Linux , procesele pot fi create numai din cadrul altor procese, acestea devenind procese fiu. Crearea unui proces implic folosirea unui mecanism de tip fork, prin care acesta creeaza o copie identic a sa, dar cu PID diferit. Terminarea execuiei unui proces, n mod normal (daca nu este incheiat forat), are loc printr-un mecanism ce returneaz un rezultat procesului printe, numit exit status. Acest rezultat reprezint un numr care poate oferi indicii despre modul n care procesul i-a desfurat activitatea, mecanismul fiind mprumutat din limbajul C. Procesul INIT Procesul rdcin, care este parintele tuturor proceselor ce ruleaz la un moment dat se numete INIT. Procesul are rolul de a iniializa sistemul ntr-un mod prestabilit, dup ce nucleul sistemului a fost ncrcat n totalitate. Mai exact, INIT va efectua sarcini precum montarea sistemului de fiiere, pornirea serviciilor aferente sistemului sau chiar ncrcarea interfeei grafice. n Linux, INIT este executat cu un parametru, cunoscut i ca run-level, prin intermediul cruia se specific modul n care se dorete iniializarea sistemului. Valoarea acestui parametru este un numr intreg ntre 1 i 6 , semnaland ce componente ale sistemului vor fi iniializate. Dup terminarea procesului de iniializare, acesta este clonat prin intermediul procedeului fork , devenind

un nou proces, numit getty, ce are rolul de a porni consolele virtuale aferente sistemului, de regul n numr de 6.

7. Module n Linux n Linux, LKM (sau Loadable Kernel Module) sunt module ce reprezinte extensii ale nucleului. Nucleul este mprit n dou parti: imaginea nucleului de baz (sau base kernel) i extensiile LKM, ce comunic n mod direct cu partea de baz. Modulele LKM sunt folosite n general pentru a aduce suport pentru un nou hardware sau filesystem sau pentru apeluri de sistem. Avantajele folosirii modulelor LKM n sistemele de operare se refer la faptul c, frar acestea, un sistem de operare ar trebui s includa toate funcionalitile posibil de anticipat deja compilate n baza nucleului. Utilizatorii ar trebui sa reconstruiasc i sa rebooteze baza nucleului de fiecare dat cand s-ar cere o nou funcionalitate. n Linux, LKM sunt ncrcate i descrcate prin comanda modprobe. Ele sunt localizate n /lib/modules i au estensia .ko (kernel object). Caracterul modular ofer sistemului Linux un grad de flexibilitate crescut, modulele putnd fi oprite cnd nu este nevoie de ele sau ncarcate doar cnd sunt necesare. LKM-urile pot ndeplini o serie intreag de funcii ntr-un sistem, dar cele mai comune pot fi: drivere - interata care i permite nucleului s comunice cu dispozitivele pentru care a fost creat; funcii de sistem - ofer programelor metode de a apela funciile sistemului, cum ar fi crearea unui nou proces, citirea de fiiere etc.; interpretoare de executabile - fac posibil ncrcarea n memorie i rularea programelor executabile;

8. Concluzii Sistemul de operare GNU/Linux este un sistem stabil, un sistem de operare ce ofer posibiliti nenumrate de implementare software i utilizare n domenii vaste. Dei pn nu demult era un sistem preferat de hackeri, acum este accesibil utilizatorilor cu orice nivel de cunotin n domeniul calculatoarelor. Unul dintre atuu-rile acestui sistem de operare este posibilitatea de a alege. Utilizatorul are posibilitatea de a alege dintre mai multe interfee grafice, browsere, clieni de mail, suite de office, pe cele care i satisfac cerinele. Fiind un sistem de operare open-source, Linux capt popularitate pe zi ce trece. Personal, nc nu am folosit Linux ca sistem de operare pentru computerul meu personal, dar m-am convins c merit s l ncerc.

9. Bibliografie Cri:

1. Alessandro Rubini i Jonathan Corbet , Linux device drivers, a II-a ediie, ed. O Reilly, 2001. 2. Christopher Negus, Linux bible, 2006. 3. Wolfgang Mauerer, Professional Linux Kernel Architecture, ed. Wiley Publishing, Inc, 2008. 4. Tim OReilly and Chuck Toporek, Linux Anatomy of a Linux System, ed. O Reilly, 2001. 5. Robert Love, Linux Kernel Development, ediia a II-a, ed. Sams Publishing, 2005. 6. Machtelt Garrels- Linux pentru nceptori- un ghid la ndemn ediia 1.25 Internet: 1. http://wwwhttp://www.scribd.com/doc/50507158/9/Procese2. Linux.cs.cmu.edu/~mihaib/articole/open/openhtml.html#SECTION03031000000000000000 3. http://www.scribd.com/doc/50507158/9/Procese-Linux 4. en.wikipedia.org 5. www.linux.org 6. www.scribd.com 7. http://itreviews.blogspot.com/2006/05/linuxs-boot-process-explained.html 8. http://ro.tldp.org/html/baza/strdat/i3.html