Sunteți pe pagina 1din 329

Sisteme de operare

t Capitolul 1 INTRODUCERE
Informatica este o tiin recent i nu a avut nc timp s se structureze pe capitole strict delimitate i bine definite. Dezvoltarea exploziv din ultimele dou decenii a fcut ca ordonarea materialului s urmreasc cu greu abundena de noi informaii att n domeniul tehnicii de calcul ct i n privina numeroaselor probleme n rezolvarea crora aceasta poate fi utilizat. Nu exist o teorie unic a informaticii ci multe teorii care se suprapun parial arhitectura ordinatoarelor i evaluarea performanelor lor! conceperea i verificarea circuitelor! algoritmic i analiza algoritmilor! concepia i semantica limba"elor de programare! structuri i baze de date! principiile sistemelor de operare! limba"e formale i compilare! calcul formal! coduri i criptografie! demonstraie automatic! verificarea i validarea programelor! timp real i logici temporale! tratarea imaginilor! sinteza imaginilor! robotica etc. #iecare dintre aceste domenii are problemele sale deschise! unele celebre! de exemplu gsirea unei semantici pentru limba"ele de programare obiectual. $e plan didactic! ns! s%au conturat anumite discipline care s asigure studenilor posibilitatea de a accede la problematica vast a informaticii. $rintre altele se studiaz i &I&'()(*( D( +$(,-,( care intervin ntr%un sistem de calcul.

1.1 SISTEME DE OPERARE. DEFINIIE


.n sistem de operare /&+0 este un set de programe care are dou roluri primordiale %asigur o interfa ntre utilizator i sistemul de calcul! extinznd dar i simplificnd setul de operaii disponibile1

Sorin Adrian Ciureanu %asigur e!tionarea re!ur!elor fizice /procesor! memorie intern! echipamente periferice0 i logice /procese! fiiere! proceduri! semafoare0! implementnd algoritmi destinai s optimizeze performanele. De exemplu! cele dou componente ale definiiei pot fi publicitatea /interfaa0 i valoarea produsului /gestionarea resurselor0. (xemple de &+ sunt sistemele )&%D+&! 2IND+2& ! .NI3! ,&3! )-45! DI6I'-*! &+*-,I&! *IN.3! +&78 etc.

1.". #OCU# SISTEMU#UI DE OPERARE $NTR%UN SISTEM DE CA#CU#


4omponentele unui sistem de calcul sunt 9.%Hardware % care furnizeaz resursele de baz /.4! memorie! dispozitive I7+0. 8.%Sistem de operare - care controleaz i coordoneaz utilizarea hard:are%ului pentru diferite programe de aplicaii i diferii utilizatori. ;.%Programe de aplicaie - care definesc cile prin care resursele sistemului sunt utilizate pentru a rezolva problemele de calcul ale utilizatorilor /compilare! sisteme de baze de date! "ocuri video! programe business etc.0. <.%Utilizatori care pot fi persoane! maini! alte calculatoare etc.
Utilizator 1 Utilizator 2 Utilizator 3 Utilizator n

compilator

asamblor

editor texte

sistem de baze de date

Programe sistem de aplicaie Sistem de operare Hardware calculator

Fi .1.1. S&'e(a &o(ponentelor unui !i!te( )e &al&ul. -cum zece ani! un sistem de operare era doar o pies de baz a softului care rula pe o main i permitea manipularea fiierelor! conversa

5 Sisteme de operare cu orice periferic i lansa programe. -cum sistemele de operare au devenit mai complexe! funcionnd ca intermediari ntre utilizator i hard:are! realiznd executarea programelor utilizator cu mai mare uurin i utiliznd eficient hard:are%l calculatorului. =n concepia lui -. 'anenbaum! un calculator este organizat pe mai multe niveluri. 'recerea de pe un nivel pe altul se poate face prin interpretare sau prin traducere. Dac avem dou limba"e de programare * i i *i>9 ! se poate trece din *i>9 n *i prin interpretare sau prin traducere. Interpretare. $rogramul scris n *i>9 este executat pas cu pas! n sensul c instruciunile din *i>9 se execut pe rnd! fiecare instruciune din *i>9 fiind o dat de intrare pentru * i . Instruciunea din *i>9 are o secven echivalent de instruciuni care se execut n * i . Nu se genereaz un nou program n *i .'raducere. =ntreg programul din *i>9 se nlocuiete cu un v nou program n *i ! generat prin nlocuirea fiecrei instruciuni din *i>9 cu o secven echivalent n *i . 4onsidernd un sistem de calcul cu ? niveluri! &+ se plaseaz ca n schema din figura 9.8.

Nivel @ Nivel < Nivel ; Nivel 8

NIA(*.* *I)B-C.*.I +,I(N'-' $( $,+B*()D 'raducere /compilator0 NIA(*.* *I)B-C.*.I D( -&-)B*-,( 'raducere/asamblor0 NI*E#U# SISTEMU#UI DE OPERARE Interpretare parial NIA(*.* -,5I'(4'.,II &('.*.I D( IN&',.4EI.NI /I&-0 Interpretare/microprogram0 sau executare direct NIA(*.* )I4,+-,5I'(4'.,II 5ard NIA(*.* *+6I4 DI6I'-* Fi .1.". Ni+elele unui !i!te( )e &al&ul.

Nivel 9 Nivel F

Dup 'anenbaum! calculatorul este foarte flexibil iar hardul i softul sunt echivalente sau! aa cum spunea *enz! Ghardul este soft pietrificatH. =n schema de mai sus! numai nivelul F /nivelul circuitelor0 este

Sorin Adrian Ciureanu hard pur. 4elelalte niveluri pot fi implementate hard sau soft n funcie de optimul planificat. +bservm c! n schem! &+ este pe nivelul ;. &+ conine toate instruciunile ISA /Instructions &et -rchitecture0!de pe nivelul 8! plus apelurile sistem (system calls). .n apel sistem invoc un serviciu predefinit al &+! de fapt una din instruciunile acestuia. Noile faciliti /apelurile sistem0 adugate pe nivelul ; sunt realizate de un interpretor care le execut pe nivelul 8 i care! din motive istorice! se numete &+. Instruciunile de pe nivelul ; care sunt identice cu cele de pe nivelul 8 sunt executate direct de microprogram. &punem c nivelul ; este un nivel hibrid deoarece unele instruciuni de pe nivelul ; sunt interpretate de &+ /apelurile sistem0 iar altele sunt interpretate direct de microprogram.

1.,. SARCINI#E SISTEMU#UI DE OPERARE


$ornind de la definiia unui &+! se pot identifica responsabilitile sale! prezentate n continuare.

1.,.1. A!i urarea interfeei &u utili-atorul


'rebuie precizat c interfaa &+ I utilizator este constituit din orice instrument care permite comunicarea ntre un &+ i un operator /utilizator0! indiferent dac este hard sau soft. =n cvasitotalitate! interfeele n &+ sunt soft i pot lua diferite forme. 1.3.1.1. Monitoare .nele calculatoare conin! stocat ntr%o memorie ,+) intern! un program numit monitor care se lanseaz automat la pornirea calculatorului i i permite operatorului s efectueze operaii simple asupra sistemului de calcul! cum ar fi inspectarea i modificarea registrelor procesorului! vizualizarea coninutului memoriei etc. De obicei! monitorul este un complementar al &+! n sensul c pornete cnd nu a putut fi ncrcat &+. (ste specific sistemelor de calcul mai vechi! actualmente existnd puine sisteme de calcul care nglobeaz un monitor. Denumirea de monitor se utilizeaz i pentru un obiect de sincronizare i pentru ecranul calculatorului.

Sisteme de operare 1.3.1.2. Interfee n linie de comand! "interfee te#t$ Interfeele n linie de comand sunt reprezentate! n general! de un program numit interpretor de comenzi, care afieaz pe ecran un prompter! primete comanda introdus de operator i o execut. 4omenzile se scriu folosind tastatura i pot fi nsoite de parametri. -proape toate sistemele de operare includ o interfa n linie de comand! unele foarte bine puse la punct /.NI30 iar altele destul de primitive /)&D+&! 2IND+2&0. 1.3.1.3 Interfee grafice Interfeele grafice sunt cele mai populare. &e prezint sub forma unui set de obiecte grafice /de regul suprafee rectangulare0 prin intermediul crora operatorul poate comunica cu &+! lansnd operaii! setnd diferite opiuni contextuale etc. Aom prezenta! comparativ! caracteristicile celor dou tipuri de interfee cu calculatorul. Interfa n linie de comand. -vanta"e %$ermite scrierea clar i explicit a comenzilor! cu toi parametrii bine definii. %+fer flexibilitate n utilizare. %4omunicarea cu &+ se face mai rapid i eficient. Dezavanta"e %+peratorul trebuie s cunoasc bine comenzile i efectele lor. %(ste mai greu de utilizat de ctre neprofesioniti. Interfa grafic -vanta"e %(ste intuitiv i uor de folosit. %$oate fi utilizat de neprofesioniti. %4reeaz un mediu de lucru ordonat. %$ermite crearea i utilizarea unor aplicaii complexe! precum i integrarea acestora n medii de lucru unitare. Dezavanta"e %-numite operaii legate! de exemplu! de configuraia sistemului pot s nu fie accesibile din meniurile i ferestrele interfeei. %Interfaa ascunde anumite detalii legate de preluarea i execuia comenzilor.

Sorin Adrian Ciureanu %#olosete mai multe resurse i este mai puin flexibil. In general! exist dou componente principale %comenzi, care sunt introduse de utilizator i prelucrate de interpretorul de comenzi nainte de a a"unge la &+1 %apeluri sistem, care sunt folosite direct de ctre programatorii de sistem i indirect de ctre programatorii de aplicaii! apar n programe i se declaneaz n timpul execuiei acestor programe! fiind asemntoare cu procedurile. -pelurile sistem definesc propriu zis arhitectura unui &+! adic aparena sa ctre exterior! aspectul funcional al sistemului. &e poate considera c ele ndeplinesc acelai rol pentru &+ ca i lista de instruciuni pentru procesor. .n aspect care devine tot mai important este acela al standardizrii interfeelor unui &+. -sigurarea unei interfee uniforme / att la nivel de comenzi ct i la apeluri sistem0 ar permite porta ilitatea aplicaiilor! adic posibilitatea de a trece un program de aplicaii de sub un &+ sub altul! fr modificri.

1.,.". .e!tiunea pro&e!elor /i a pro&e!oarelor


.n program n execuie sub controlul unui &+ este un proces. $entru a%i ndeplini sarcinile! procesele au nevoie de resurse! cum ar fi timpul de lucru al .4 /unitatea central0! memorii! fiiere! dispozitive I7+. -pare evident necesitatea ca resursele s fie utilizate n comun. + serie de mecanisme speciale au fost introduse n &+ pentru a servi la gestionarea proceselor la diferite niveluri de detaliu. In practic exist o legtur strns i cu nivelul de ntrerupere al calculatorului. 6estiunea procesorului este privit ca o parte component a gestionrii proceselor.

1.,.,. .e!tionarea (e(oriei


-cest modul controleaz! n primul rnd! utilizarea memoriei interne. =ntotdeauna o poriune a acestei memorii este necesar pentru nsui &+! iar restul este necesar pentru programele utilizator. #recvent! mai multe programe utilizator se afl simultan n memorie! ceea ce presupune rezolvarea unor probleme de protecie a lor! de cooperare intre aceste programe sau ntre programe i &+! precum i a unor probleme de mprire a memoriei disponibile ntre programele solicitante. )emoria extern este implicat n activitatea modulului de gestionare a memoriei. )ecanismele

" Sisteme de operare s!apping i de memorie "irtual folosesc memorie extern pentru a extinde capacitatea memoriei interne.

1.,.0. .e!tionarea periferi&elor


)odul de gestionare a perifericelor cuprinde toate aspectele operaiilor de introducere i extragere a informaiei pregtirea operaiei! lansarea cererilor de transfer de informaie! controlul transferului propriu zis! tratarea erorilor. *a ma"oritatea echipamentelor periferice actuale transferurile de intrare7ieire 1I2O3input2output4 se desfoar indiferent de procesor! rolul &+ fiind acela de a asigura aceste transferuri cu a"utorul sistemului de ntreruperi.

1.,.5. .e!tionarea fi/ierelor


#iierul este entitatea de baz a unui &+! cea care pstreaz informaia. 'oate operaiile legate de fiiere /creare! tergere! atribute! copiere! colecie de fiiere! securitatea informaiei0 sunt coordonate de &+ cruia i revine un rol important n acest caz.

1.,.6. Tratarea erorilor


&istemul de operare este acela care trateaz erorile aprute att la nivel hard ct i la nivel soft. 'ratarea unei erori nseamn mai nti detectarea ei! apoi modul de revenire din eroare pentru continuarea lucrului! mod care depinde de cauza erorii i de complexitatea sistemului de operare.. .nele erori sunt transparente utilizatorului! altele trebuiesc neaprat semnalate. De asemenea unele erori sunt fatale i duc la oprirea sistemului de operare. )ecanismul principal de tratare a erorilor este ca sistemul de operare s repete de un numr definit de ori operaia euat pn la desfurarea ei cu succes sau pn la apariia erorii fatale. *a ora actual sistemele de operare moderne acord un rol foarte important conceptului de siguran n funcionare i de protecie a informaiei.! de unde atenia ce se d operaiilor de detectare i tratare a erorilor.

1#

Sorin Adrian Ciureanu

1.0. CARACTERISTICI#E SISTEME#OR DE OPERARE 1.0.1. Mo)ul )e intro)u&ere a pro ra(elor 7n !i!te(
Din acest punct de vedere sistemele de operare pot fi %&+ seriale! n care se accept introducerea lucrrilor de la un singur dispozitiv de intrare1 %&+ paralele! n care introducerea lucrrilor se face de la mai multe dispozitive de intrare1 %&+ cu introducerea lucrrilor la distan. De exemplu! sistemele .NI3 i 2IND+2& sunt paralele i cu introducere la distan! pe cnd sistemul )&%D+& este serial.

1.0.". Mo)ul )e planifi&are a lu&rrilor pentru e8e&uie


Dup modul de planificare a lucrrilor pentru execuie! sistemele de operare pot fi %&+ orientate pe lucrri, care admit ca unitate de planificare lucrarea! alctuit din unul sau mai multe programe succesive ale aceluiai utilizator1 %&+ orientate pe proces, care admit ca unitate de planificare procesul. &+ moderne sunt orientate pe proces.

1.0.,. Nu(rul )e pro ra(e pre-ente !i(ultan 7n (e(orie


Dup numrul de programe prezente simultan n memorie sistemele de operare pot fi %&+ cu monoprogramare /cu un singur program n memoria principal01 %&+ cu multiprogramare /cu mai multe programe existente! la un moment dat! n memoria principal0. De exemplu! sistemele .NI3 i 2IND+2& sunt cu multiprogramare. &istemul )&%D+& este ceva ntre monoprogramare i multiprogramare.

Sisteme de operare

11

1.0.0. .ra)ul )e &o(uni&are a pro&e!elor 7n (ultipro ra(are


&istemele de operare cu multiprogramare pot fi %&+ monotas#ing, n care programele existente n memorie nu au un obiectiv comun! nu comunic i nu%i pot sincroniza activitile1 &+ multitas#ing, n care programele existente n memorie au un obiectiv comun i i sincronizeaz activitile. .NI3 i 2IN&+2& sunt multitasJing. )&%D+& este un hibrid1 prin operaiile de redirectare i indirectare )&%D+& nu este monotasJing pur /redirectare % sort<date.txt ; indirectare % dir|sort| more 0.

1.0.5. Nu(rul )e utili-atori !i(ultani ai SO


%&+ monouser / cu un singur utilizator0 1 %&+ multiuser /cu mai muli utilizatori0. .NI3 i 2IND+2& sunt multiuser! )&%D+& este monouser.

1.0.6. Mo)ul )e utili-are a re!ur!elor


Dup modul se utilizare a resurselor! sistemele de operare pot fi %&+ cu resurse alocate /resursele alocate proceselor sunt alocate acestora pe toat desfurarea execuiei0 1 %&+ n timp real /permit controlul executrii proceselor n interiorul unui interval de timp specificat01 %&+ cu resurse parta$ate /resursele necesare proceselor sunt afectate acestora periodic! pe durata unor cuante de timp0. Dac resursa parta"at este timpul unitii centrale! &+ devine parta"at. &+ n timp real sunt utilizate pentru conducerea direct! interactiv! a unui proces tehnologic sau a altei aplicaii. $rocesul va transmite ctre &+ n timp real parametrii procesului iar &+ va transmite ctre proces deciziile luate. Informaiile despre proces sunt luate n considerare n momentul comunicrii lor iar rspunsul sistemului trebuie s fie extrem de rapid! deci timpii de execuie a programelor trebuie s fie mici. -ccesul la resursele sistemului poate fi

12

Sorin Adrian Ciureanu %direct /caz particular &+ n timp real! cnd se cere o valoare parta"abil maxim a timpului de rspuns0 1 %multiplu /acces la resursele sistemului pentru un mare numr de utilizatori0 1 %time sharing /alocarea timpului se face pe o cuant de timp0 1 %la distan /prelucrarea se face asupra unor date distribuite i dispersate geografic0.

1.0.9. SO pentru ar'ite&turi paralele


SO paralele! folosite n multiprocesoare. SO distribuite ! folosite n multicalculatoare.

1.5. COMPONENTE#E SISTEME#OR DE OPERARE


)a"oritatea sistemelor de operare! pentru a rspunde rolului de interfa cu utilizatorii! sunt organizate pe dou niveluri %ni"elul fizic! care este mai apropiat de partea hard:are a sistemului de calcul! interfernd cu aceasta printr%un sistem de ntreruperi1 %ni"elul logic! care este mai apropiat de utilizator! interfernd cu acesta prin intermediul unor comenzi! limba"e de programare! utilitare tec. $otrivit acestor dou niveluri! sistemele de operare cuprind n principal dou categorii de programe %programe de control i comand! cu rolul de coordonare i control al tuturor funciilor sistemelor de operare! cum ar fi procese de intrare ieire! execuia ntreruperilor! comunicaia hard:are%utilizator tec.1 %programe de servicii /prelucrri0! care sunt executate sub supravegherea programelor de comand i control! fiind utilizate de programator pentru dezvoltarea programelor sale de aplicaie. In general! putem considera c un &+ este format din dou pri partea de control i partea de ser"iciu.

1.5.1. Partea )e &ontrol


$artea de control realizeaz interfaa direct cu hardul. (a conine proceduri pentru %gestiunea ntreruperilor1

Sisteme de operare %gestiunea proceselor1 %gestiunea memoriei1 %gestiunea operaiilor de intrare7ieire1 %gestiunea fiierelor1 %planificarea lucrrilor i alocarea resurselor.

13

1.5.". Partea )e !er+i&iu


$artea de serviciu conine instrumente de lucru aflate la dispoziia utilizatorului. (a exploateaz partea de control! dar transparent pentru utilizator. $artea de serviciu cuprinde soft aplicativ. Dup destinaia lor! serviciile pot fi de %birotic 1 %baze de date 1 %dezvoltare de aplicaii7programe 1 %reele de calculatoare 1 %produse soft pentru prelucrarea informaiilor din diverse domenii.

1.6.

STRUCTURA SISTEME#OR DE OPERARE

=n sistemele de operare apar! n general! dou aspecte structurale %#ernel /nucleu01 i %user /utilizator0. Nucleul /Jernel0 are urmtoarele principale funcii %asigurarea unui mecanism pentru crearea i distrugerea proceselor1 %realizarea gestionrii proceselor! procesoarelor! memoriei i perifericelor1 %furnizarea unor instrumente pentru mecanismele de sincronizare a proceselor1 %furnizarea unor instrumente de comunicaie care s permit proceselor s i transmit informaii. 'rebuie fcut diferena ntre procesele sistem, care au privilegii mari! i procesele utilizator! cu un grad de privilegii mult mai mic. Dup structura lor! sistemele de operare se clasific n %&+ modulare , formate din entiti cu roluri bine definite 1

14

Sorin Adrian Ciureanu %&+ ierarhizate! n care o entitate poate folosi componente de nivel inferior /de exemplu! partea de serviciu poate folosi partea de control01 %&+ porta ile, pentru care efortul de a trece &+ de pe un calculator pe altul este mic! mai mic dect cel de a%l rescrie . &istemele .NI3 i 2IND+2& sunt portabile. 4ele mai vechi! de exemplu ,&3! nu erau portabile.

Sisteme de operare

15

Capitolul " P#ANIFICAREA PROCESOARE#OR 1UC4


)ultiprogramarea reprezint cel mai important concept folosit n cadrul sistemelor de operare moderne. (xistena n memorie a mai multor procese face posibil ca! printr%un mecanism de planificare a unitii centrale /.40! s se mbunteasc eficiena global a sistemului de calcul! realizndu%se o cantitate mai mare de lucru ntr%un timp mai scurt. (xist procese %limitate .4! cnd procesul are componente cu timp ma"oritar de desfurare n I7+1 %limitate I7+! cnd procesul are componente cu timp ma"oritar de desfurare n .4.

".1. SC:EMA .ENERA#; DE P#ANIFICARE A PROCESOARE#OR


$rocesele stau n memorie grupate ntr%un ir de ateptare n vederea alocrii n .4. Implementarea acestui ir! numit coad de ateptare! se realizeaz de obicei sub forma unei liste nlnuite. %lanificatorul pe termen lung /planificator de "oburi0 stabilete care sunt procesele ce vor fi ncrcate n memorie. (l controleaz gradul de multiprogramare. #recvena sa este mic. &ispecerul realizeaz efectiv transferarea controlului .4 asupra procesului selectat de planificatorul .4. 'rebuie s fie rapid pentru a putea realiza eficient operaiile necesare ncrcarea registrelor! comutarea n mod utilizator etc. %lanificatorul pe termen scurt (planificator 'C) selecteaz unul din procesele gata de execuie! aflate de"a n memoria intern! i l aloc .4. -re o frecven de execuie foarte mare i trebuie proiectat foarte rapid.

16
Plani+iare de perspecti,-

Sorin Adrian Ciureanu

Sir ./012 ../012

Plani+iare imediat-

1ispecer 3nc4eierea execuiei

P1 P2 P3$$$$%Pn

U &

() *

P'1 P'2 P'3$$$%%P'n

Sir de a5teptare ()*

Fi . ".1. S&'e(a eneral )e planifi&are a pro&e!elor.

".". CRITERII DE PERFORMAN; A P#ANIFIC;RII UC


4nd se dorete un algoritm de planificare! se pot lua n considerare mai multe criterii %gradul de utilizare 'C /aproximativ <FK pentru un sistem cu grad de ncrcare redus! LFK pentru un sistem cu grad mare de ncrcare 0 1 %throughput /numrul de procese executate ntr%un interval de timp precizat01 %turnaround time /durata total a execuiei unui proces0 reprezint timpul scurs intre momentul introducerii procesului n memorie i momentul ncheierii execuiei sale1 se exprim ca suma perioadelor de timp de ateptare pentru a intra n memorie! de ateptare n irul ,(-DM! de execuie /n .40 i de realizare a operaiilor I7+ 1 %durata de a(teptare ( algoritmul de ateptare influeneaz numai durata de ateptare n irul ,(-DM i nu afecteaz durata de execuie a procesului sau timpul destinat operaiilor I7+0 1 %durata de rspuns /timpul scurs ntre formularea unei cereri i iniierea rspunsului corespunztor0. $rin alegerea unui algoritm de planificare se urmrete optimizarea criteriului luat n consideraie i anume maximizare pentru primele dou i minimizare pentru ultimele trei.

Sisteme de operare

".,. A#.ORITMI DE P#ANIFICARE UC


=n prezentarea algoritmilor de planificare .4 performanele sunt apreciate cu a"utorul mrimii D)- /durata medie de ateptare0.

".,.1. Al orit(ul FCFS 1Fir!t Co(e Fir!t Ser+e)4


Nirul ,(-DM este de tip #I#+ /#irst Input #irst +utputO $rimul Intrat $rimul Ieit0. (xemplu $roces Durata Durata de .4 ateptare 9 9F F 8 8L 9F ; ; ;L < P <8 @ 98 <L Durata medie de ateptare va fi DMAO/F>9F>;L><8><P07@O9<F7@ O"< Dezavanta"e D)- nu este minimal i poate varia n limite foarte largi n funcie de caracteristicile procesului. =n plus D)- depinde de ordinea proceselor.

".,.". Al orit(ul S=F 1S'orte!t =o> Fir!t4


-a cum arat denumirea! se execut mai nti cel mai scurt "ob. *a egalitate! se aplic regula #4#& /#irst 4ome #irst &erved0. (xemplu $roces Durata $roces Durata Durata .4 .4 de ateptare 9 9F ; ; F 8 8L < P ; ; ; 9 9F 9F < P @ 98 8F @ 98 8 8L ;8

1!

Sorin Adrian Ciureanu Durata medie de ateptare va fi DMA O/;>9F>8F>;807@O?@7@O9; Dac se cunosc cu precizie ciclurile .4 /ca timp0! &C# este optimal. $roblema principal este cunoaterea duratei ciclului .4.

".,.,. Al orit(i >a-ai pe prioritate


=n cadrul unui astfel de algoritm! fiecrui proces i se asociaz o prioritate! .4 fiind alocat procesului cu cea mai mare prioritate din irul ,(-DM. &e poate defini o prioritate intern i o prioritate e)tern. $rioritatea intern se calculeaz pe baza unei entiti msurabile %limita de timp 1 %necesarul de memorie 1 %numrul fiierelor deschise 1 %raportul dintre numrul de cicluri rafal I7+ i numrul de cicluri rafal .4. $entru prioritatea extern! criteriile folosite sunt din afara sistemului de operare %departamentul care sponsorizeaz lucrrile 1 %factori politici 1 %factori financiari. $rincipala problem a algoritmilor bazai pe prioriti este posibilitatea blocrii la infinit / a nfometrii0 proceselor care sunt gata de execuie! dar deoarece au prioritate redus! nu reuesc s obin accesul la .4. + astfel de situaie poate s apar ntr%un sistem cu ncrcare mare! n care se execut un numr considerabil de procese cu prioritate ridicat 1 acestea vor obine accesul la .4 n detrimentul proceselor cu prioritate redus care pot s nu fie executate niciodat. + soluie a acestei probleme este m tr*nirea proceselor, o tehnic prin care se mrete treptat prioritatea proceselor remanente timp ndelungat n sistem.

".,.0. Al orit(i pree(pti+i


.n algoritm preempti" permite ntreruperea execuiei unui proces n momentul cnd n irul ,(-DM apare un alt proces cu drept prioritar de execuie. Dintre algoritmii prezentai anterior %#4#& este prin definiie nepreemptiv 1 %&C# poate fi realizat preemptiv1 dac n irul ,(-DM sosete un proces al crui ciclu rafal .4 urmtor este mai scurt dect ce a mai rmas

1" Sisteme de operare de executat din ciclul curent! se ntrerupe execuia ciclului curent i se aloc .4 noului proces1 %algoritmii bazai pe prioritate! de asemenea! pot fi realizai preemptiv 1 la fel ca la &C#! timpul rmas poate fi nlocuit cu mrimea prioritii. (xemplu $roces )omentul sosirii n Durata ciclului irul ,(-DM rafal 9 F 98 8 ; ; ; < ? =n &C# fr preempie +rdine -teptare $9/980 F $8/;0 L $;/?0 Q>; DMA 3 /L>Q>; 07;O?!?P =n &C# cu preempie +rdine -teptare $9 ; $9 ateapt ;>?OL $8 ; $8 ateapt F $; ? $; ateapt ;%9 $9 L DMA O /L>F>807; O;!?P

".,.5. Al orit(ul Roun)%Ro>in


(ste un algoritm de tip time%sharing. #iecrui proces i se aloc numai o cuant de timp /9Fms R 9FFms0 iar irul ,(-DM se trateaz ca #I#+ circular. (xemplu $roces Durata ciclului rafal 9 9F $9 ateapt 8 8L ; ; < P @ 98 Dac cuanta de timp este de 9F ms! atunci ordinea n .4 este urmtoarea

2#

Sorin Adrian Ciureanu $9/F0 $8/9L0 $;/F0 $</F0 $@/80 $8/L0 $@/F0 $8/F0 =n parantez este dat timpul care a mai rmas. +bservaii %planificatorul aloc .4 fiecrui proces pe durata a cel mult o cuant 1 dac durata procesului este mai mic dect aceast cuant! procesul elibereaz .4 prin comunicarea ncheierii execuiei 1 %mrime cuantei afecteaz performanele algoritmului ,ound% ,obin 1 dac cuanta este foarte mare! comportarea este asemntoare #4#& 1 dac cuanta este foarte mic! frecvena comutrii se mrete foarte mult i performanele scad deoarece se consum mult timp pentru salvare7restaurare registre 1 %se poate spune c algoritmul ,ound%,obin este un algoritm preemptiv care asigur un timp aproape egal de ateptare pentru toate procesele din sistem.

".,.6. Ali al orit(i )e planifi&are


(xist unii algoritmi cu iruri de procese multinivel. Nirul ,(-DM este format din mai multe subiruri. #iecare susbir are propriul algoritm de planificare. =n schema de planificare apar iruri ,(-DM multiple
P1 P2$$$$$$$$$%%Pn P1' P2'$$$$$$$$$%%Pn' U&

P16n7 P2 6n7$$$$$$$$Pn6n7 6 $$$$$$$$$%%Pn

Fi "." S&'e(a )e planifi&are a al orit(ilor &u (ai (ulte /iruri READ?

Sisteme de operare

21

Capitolul , .ESTIUNEA PROCESE#OR


,.1. NOIUNI .ENERA#E DE PROCESE @I T:READURI ,.1.1. Definiia pro&e!ului
=ntr%un sistem de calcul! un pro&e! este un program n execuie1 este deci o entitate activ /dinamic0 a sistemului de operare i constituie unitatea de lucru a sistemului. =nelegerea diferenei ntre un program i un proces este important. -ndre: 'annenbaum! al crui tratat este baza documentrii pentru specialitii n &+! folosete o analogie pentru sesizarea acestei diferene. & considerm un savant care coace un tort pentru aniversarea fiicei sale. -re reeta tortului i o buctrie utilat i aprovizionat cu tot ce trebuie s intre n tort ou! zahr! vanilie etc. =n aceast analogie! savantul este procesorul /4$.O4entral $rocessing .nit0! reeta este programul / ex. un algoritm exprimat ntr%o notaie potrivit0! ingredientele sunt datele de intrare. $rocesul este activitatea savantului de a citi reeta! de a introduce ingredientele ! de a coace tortul. & ne nchipuim acum c fiul savantului vine plngnd c l%a nepat o albin. &avantul ntrerupe coacerea tortului nregistrnd repede unde a a"uns n reet /starea procesului curent este salvat0! caut o carte de prim a"utor /trece la un proces prioritar cu alt program0 i aplic instruciunile gsite n ea. 4nd primul a"utor a fost dat! savantul se ntoarce la coacerea tortului i o continu de unde a ntrerupt%o. Ideea este c un proces este o activitate de un anumit fel! cu un program! intrare! ieire! stare etc. (ste posibil ca un singur procesor s fie mprit la mai multe procese! cu a"utorul unui algoritm care s determine cnd s fie oprit procesul curent i s fie derulat altul.

22

Sorin Adrian Ciureanu .n proces este instana de execuie a unui cod. &e utilizeaz i denumirea englez de tas# /sarcin0. &paiul de adres a unui proces cuprinde %segmentul de cod care conine imaginea executabil a programului i este de tip ,+ /,ead +nlS0 i parta"at de mai multe procese1 %segmentul de date care conine date alocate dinamic sau static de ctre proces1 nu este parta"at i nici accesibil altor procese1 const din %zona de date %zona de rezervri /date neiniializate0 %zona de alocare dinamic1 +segmentul de sti" care nu este parta"at i crete antrenat n momentul epuizrii cantitii de memorie pe care o are la dispoziie. T'rea)ulA nu(it /i fir )e e8e&uieA este o subunitate a procesului! utilizat n unele &+.

,.1.". Starea pro&e!ului


=ntr%un sistem de calcul! un proces poate fi n diferite stri pregtit! rulare! blocat! terminat
=n sistem $lanificatorul pe termen lung

$regtit @ ; Blocat < ? ,ulare 8 $lanificatorul pe termen scurt /.40

'erminat

Fi . ,.1. Dia ra(a !trilor unui pro&e!.

23 Sisteme de operare 4nd procesul este introdus n calculator! este n &I&'() /de obicei fiier sau un grup de fiiere pe un disc0. -poi planificatorul pe termen lung l ia i%l introduce n coada de ateptare ,(-DM i atunci procesul este $,(6D'I'. $lanificatorul pe termen scurt .4! conform unui algoritm de planificare ! l introduce n .4. $rocesul este n ,.*-,(. De aici! exist trei posibiliti %procesul s%a sfrit i! dup rularea n .4! trece n starea '(,)IN-'1 %dac algoritmul folosit este preemptiv /de exemplu time%sharing O cu timp parta"at0! dac dup o cuant de timp el mai are de rulat! este trecut din nou n coada de ateptare ,(-DM n starea $,(6D'I'1 %dac n timpul rulrii are nevoie de o resurs extern /de obicei I7+0! procesul este trecut n starea B*+4-'. Dup ce i s%a alocat resursa! trece din nou n starea $,(6D'I'. Dac un proces este blocat temporar! el va trebui repornit mai trziu din exact aceeai stare n care se gsea cnd a fost oprit. =n acest scop! toate informaiile despre proces trebuiesc salvate. .nui proces i se asociaz de obicei o structur numit B4$ /Bloc 4ontrol $roces0! un descriptor de proces. (denti+icator al procesului 6P(17 Program &ounter
Stac8 Pointer
HARD

.egistri U& Prioritate 9on- pentru sal,area st-rii la prele,area resursei procesor Pointer spre lista procselor a+late :n aceea5i stare

Fi ,.". Stru&tura BCP a unui pro&e!.

24

Sorin Adrian Ciureanu =n mod frecvent! descriptorii tuturor proceselor aflate n aceeai stare sunt nlnuii n cte o list. Aom avea o list de procese n starea $,(6D'I'! una n starea B*+4-' etc.

,.1.,. Co(utarea pro&e!elor


'ranziia ntre dou procese active ntr%un &+ multitasJing se numete comutarea proceselor (proces s!itch) i are loc ca rspuns la un eveniment din sistem. 4omutarea proceselor implic un cost / o"erhead) important datorit frecvenei cu care are loc n sistem i poate influena performanele acestuia.
Spaiu utili-ator (xecuie proces $x (veniment ce duce la comutare

;od de comutare

&alvarea strii hard n B4$x i actualizarea strii procesului $x n B4$x T &4,I(,(- (A(NI)(N'.*.I U $lanificarea urmtorului proces! $S . ,estaurarea strii hard din B4$S .

;od de comutare
(xecuie proces $S

Fi .,., S&'e( )e &o(utare a pro&e!elor. (ficiena operaiei de comutare a proceselor poate fi crescut prin prevederea unor faciliti hard /seturi de registre multiple0 sau printr%o modalitate de structurare a procesului /thread0. .n thread /fir de execuie0 este o subunitate a procesului! o diviziunea a sa. #iecare thread reprezint un flux separat de execuie i este caracterizat prin propria sa stiv i prin stri hard /registre! flaguri0.

25 Sisteme de operare &copul principal al crerii threadului este reducerea costului de comutare a proceselor. De vreme ce toate celelalte resurse! cu excepia procesorului! sunt gestionate de procesul care le nglobeaz! comutarea ntre threadurile care aparin aceluiai proces implic doar salvarea strii hard i restaurarea stivei. Bineneles! comutarea ntre threadurile care aparin unor procese diferite implic acelai cost de comutare. 'hreadurile sunt un mecanism eficient de exploatare a concurenei programelor. .n program poate fi mprit n mai multe pri.

,.1.0. Crearea /i ter(inarea pro&e!elor


=n marea ma"oritate a sistemelor de operare un proces poate fi creat! n mod dinamic! de ctre alt proces. De obicei un proces printe creeaz un proces fiu. =n aceast modalitate de creare! exist mai multe posibiliti n dualitatea printe%fiu %cele dou procese execut! n mod independent! nesincronizat! acelai cod! avnd aceeai stiv i acelai segment de date1 %fiul execut alt segment de cod dect cel al printelui! nesincronizat1 %printele i fiul i sincronizeaz activitatea n sensul ei ori se execut nti printele i apoi fiul sau invers.

,.". PROCESE @I T:READURI $N UNIC ,.".1. Pro&e!e 7n UNIC


=n sistemul de operare .NI3 fiecare proces are un identificator numeric! numit identificator de proces $ID. -cest identificator este folosit atunci cnd se face referire la procesul respectiv! din interiorul programelor sau prin intermediul interpretorului de comenzi. Dou apeluri simple permit aflarea $ID%ului procesului curent i al printelui acestuia getpid(void) pentru procesul curent1 getppid(void) pentru procesul printe. 4rearea unui proces se face prin apelul sistem fork() $rin aceast funcie sistem! procesul apelant! numit printe! creeaz un nou proces! numit fiu! care va fi o copie fidel a printelui. $rocesul fiu va avea

26

Sorin Adrian Ciureanu %propria lui zon de date! %propria lui stiv! %propriul su cod executabil! toate fiind copiate de la printe! n cele mai mici detalii. + modalitate de utilizare a apelului fork() este de a mpri codul unui proces n dou sau mai multe procese care se vor executa n paralel. -cest lucru este utilizat n proiectarea i rularea proceselor i programelor paralele. (xemplul 9. $roces printe i9 i8 i; . . iJ momentul apelului fork() $roces fiu iJ>9 iJ>9 iJ>8 iJ>8 . . . . in in (xemplul 8 &e d urmtoarea secven de program fork();printf(A\n); fork();printf(B\n); fork();printf(C\n); $resupunnd c toate apelurile funciei fork() se execut cu succes! se cere %4te procese sunt create V %& se traseze arborele printe % fiu al proceselor create. %4te linii de text vor fi afiate la ieirea standard V %(ste posibil ca linia cu textul HBH s fie afiat naintea liniei cu textul H-H V &unt create P procese! plus procesul iniial! vor fi Q procese. 4ifrele arat dup al ctelea fork() au fost create. Dup primul fork()se creeaz procesul cu cifra 9. &e va scrie - att n procesul iniial ct i n cel final. Dup al doilea fork(), se creeaz procesul fiu notat cu cifra 8!

2 Sisteme de operare adic fiecare proces creat pn acum va avea cte un fiu! notat cu 8. Dup al treilea fork(), fiecare proces creat pn acum va crea cte un nou fiu! notat cu ;. =n general dup n fork() ,se produc 8n%9 fii.
Proces iniial

A B C B C C
3

A B C
3

B C

C Fi .,.0. Stru&tura ar>ore!&ent a pro&e!elor.

#iecare proces afieaz liniile de text care urmeaz momentului crerii sale linia care scrie G-H este afiat de 89 ori1 linia care scrie GBH este afiat de 88 ori1 linia care scrie G4H este afiat de 8; ori. Numrul total de linii afiate este 89>88>8;O9< =n ceea ce privete ordinea de afiare a celor 9< linii! intervine nedeterminarea provenit din faptul c nu se tie cine va fi executat primul! printele sau noul fiu creat. Aaloarea returnat de fork() este - , eroare! operaia nu s%a putut executa1 !, n codul fiului1 pidf, n codul printelui! unde pidf este identificatorul de proces al fiului nou creat. $n acum am vzut c prin simplul apel al funciei fork() se creeaz un proces identic cu procesul printe. $entru a crea un nou proces care s ruleze un program diferit de cel al printelui! se vor folosi funciile de tipul exe"(), exe"#(), exe"#p(), exe"v(), exe"vp(), exe"##(), exe"v#(). 'oate aceste funcii primesc ca parametru un

2!

Sorin Adrian Ciureanu nume de fiier care reprezint un program executabil i recicleaz lansarea n execuie a programului. $rogramul va fi lansat astfel nct se va suprascrie codul! datele i stiva procesului care apeleaz exe"(), aa ca! imediat dup acest apel! programul iniial s nu mai existe n memorie. $rocesul va rmne! ns! identificat prin acelai $ID i va moteni toate eventualele redirectri fcute n prealabil asupra descriptorilor de fiier. =n concluzie! lansarea ntr%un proces separat a unui program se face apelnd fork()pentru crearea noului proces! dup care! n poriunea de cod executat de fiu! se va apela una din funciile exe"(). =n .NI3 un proces se poate termina n mod normal sau anormal. 'erminarea normal poate fi realizat prin %revenire natural1 %apelul sistem de tip exit(). 'erminarea anormal se produce cnd %se apeleaz a$ort(); %procesul primete un semnal. =n marea ma"oritate a versiunilor .NI3! exist dou apeluri de terminare normal exit(), %exit().$rincipalul rol al apelului exit() este s asigure la terminarea procesului tratarea corespunztoare a operaiilor de introducere 7extragere ! golirea tampoanelor utilizate pentru acest proces i nchiderea tuturor fiierelor deschise. Wexit() produce direct revenirea n nucleu! fr operaiile de la funcia exit(). Din cele prezentate pn acum! nu se poate spune nimic despre sincronizarea printe+fiu! adic despre cine termin primul sau cine se execut primul. -pelurile &ait() 'i &aitpid() vin n ntmpinarea acestui nea"uns. &ait() este folosit pentru ateptarea de ctre printe a fiului! deci se execut mai nti fiul i apoi printele. &aitpid() este folosit pentru ateptarea unui proces oarecare. =n .NI3 procesele au un caracter dinamic. (le se nasc! evolueaz n sistem putnd da natere altor sisteme! i dispar. =n felul acesta se creeaz o ierarhie dinamic de procese n sistem! care ncepe cu procesul F / s!apper)! continu cu procesul 9 (init)! proces ce d natere unor procese fiu. $rocesul cu identificatorul 8! proces sistem! apare la unele implementri sub denumirea de pagedaemon i este responsabil de suportul pentru memorie virtual. 'erminarea forat a execuiei unui proces se realizeaz cu comanda #ill(opiuni)(pid). =n general! n execuia printe Rfiu! exist dou situaii %a0 fiul se termin naintea printelui1 %b0 printele se termin naintea fiului.

2" Sisteme de operare =n primul caz! ntre momentul n care se termin fiul i momentul n care el este distrus! procesul fiu este n starea zom ie. De obicei! dup terminarea execuiei fiului! printele execut un &ait() i scoate fiul din starea zom ie. =n al doilea caz! n momentul terminrii printelui! nucleul &+ este acela care examineaz dac printele a avut copii. Dac da! printele nou al acestor fii va fi procesul init(), nelsnd fiii n starea zombie. ,evenind la strile unui proces! sistemul de operare .NI3 distruge urmtoarele stri de baz %execuie n mod utilizator /.&(,01 %execuie n mod nucleu /X(,N(*01 %gata de execuie /,(-DM01 %n ateptare /B*+4-'0 %zombie.

,.".". T'rea)uri 7n UNIC


=n .NI3%ul tradiional nu sunt definite threadurile. (le au aprut odat cu standardul $+&I3 care asigur portabilitatea ntre platforme hard diferite. Iat o comparaie ntre procesele .NI3 i threadurile $+&I3 /pt(read))
Cara&teri!ti&a portabilitate 4ost de creare 4ost de comutare &paiu de aches )emorie parta"at +biecte de excludere mutual #iiere i stringuri de I7+ Pro&e!e UNIC fork()standard )are )are &eparat $arta"are explicit &emafoare! mutexuri .NI3 'abele de fiiere separate Pt'rea)uri POSIC interfa standard portabilitate ,elativ mic #oarte mic $arta"at $arta"are implicit &emafoare! mutexuri $+&I3 'abele de fiiere unice

.n pthread se creeaz cu a"utorul funciei int pt(read "reate (#ist* de parametri).

,.,. PROCESE @I T:READURI $N DINDODS


=n sistemele 2IND+2&! entitatea de alocare a timpului procesoarelor este threadul. #iecare proces conine cel puin un thread de execuie! numit i threadul principal! i poate crea threaduri noi. .n proces

3#

Sorin Adrian Ciureanu 2IND+2& are o dualitate de identificare i anume are dou entiti de identificare %handle! care este o intrare n tabelul de resurse al sistemului1 %identificator (id), un numr unic atribuit unui proces /asemntor $ID%ului din .NI30. -ceast dualitate de identificare ngreuneaz lucrul cu procesele 2IND+2&! n sensul c unele funcii cer ca parametru handle%ul procesului ! altele identificatorul acestuia.

,.,.1. Pro&e!e 7n DINDODS


-ccesul programatorului la funciile &+ este posibil prin intermediul unei interfee! numit -$I /Aplication %rogramming Interface) care conine definiia tipurilor de date i funciile de apel ale sistemului. .n proces tat creeaz un proces fiu prin intermediul apelului funciei $oo# "reate pro"ess(#ista parametri). &e poate considera c! n mare! aceast funcie are funcionalitatea combinaiei de apeluri fork exe" din .NI3. &e creeaz un proces nou! mpreun cu threadul primar! care execut un segment de cod specificat prin numele fiierului ce conine acest segment. Aaloarea returnat de funcia "reatepro"ess este de tip booleean i nseamn ',.( /succes0 i #-*&( /eroare0. 4rearea threadurilor 2IND+2&. 4rearea unui thread nou ntr%un proces necesit definirea unei funcii pe care threadul s o execute! urmat de apelul unei funcii "reatet(read cu sintaxa (and#e "reate t(read (#ista de parametri). -ceast funcie returneaz handle%ul threadului nou creat.

Capitolul 0

Sisteme de operare

31

COMUNICAIA @I SINCRONIEAREA $NTRE PROCESE


$rocesele dintr%un &+ pot fi %a0 procese independente1 %b0 procese cooperante. a0 Dac execuia unui proces nu poate afecta sau nu este afectat de ctre execuia altor procese din sistem! atunci procesul este independent. $rocesele independente au urmtoarele caracteristici %pot fi oprite i repornite fr a genera efecte nedorite1 %sunt deterministe! adic rezultatele depind numai de starea de intrare1 %nu se afl niciodat n aceeai stare ca i alte procese din sistem1 %nu folosesc date! variabile! n comun cu alte procese1 %sunt reproductibile! rezultatele sunt aceleai pentru aceleai condiii de intrare. b0 =n caz contrar! procesele sunt cooperante1 au toate caracteristicile de mai sus negate.

0.1. PROB#EMA SECIUNII CRITICE @I A ECC#UDERII MUTUA#E


4azul cel mai frecvent n care mai multe procese comunic ntre ele este acela prin intermediul variabilelor parta"ate. Dar accesul nerestricionat a dou sau mai multe procese la resurse parta"ate poate produce erori de execuie. (xemplu .n proces execut o operaie de incrementare a variabilei parta"ate x dup secvena cod +,A- . x /0n"*r"area #1i x 0n registr1# .; 23C . /in"rementarea #1i .; 45,.6 x . /memorarea va#orii 0n 7. $resupunem c arhitectura calculatorului este cea de #oad/store, specific procesoarelor de mare vitez cum sunt i cele din arhitectura ,I&4.

32

Sorin Adrian Ciureanu Aariabila local x! n arhitecturi paralele! se numete temporar inconsistent, ntre variabila local i variabila global corespunztoare. -cest tip de inconsisten temporar este frecvent ntlnit n execuia programelor la arhitecturi secveniale /Neumann0! dar nu prezint nici un pericol pentru execuia programelor secveniale normale ale cror variabile nu sunt parta"ate ntre procese concurente. (ste important de observat c inconsistena temporar ntre o variabil global i copia ei local reprezint una din principalele cauze care produce erori atunci cnd o astfel de variabil este accesat concurent de procese concurente. Din acest exemplu reies dou condiii necesare pentru eliminarea erorilor datorate execuiei concurente a mai multor procese 90 &ecvena de instruciuni din care este alctuit operaia de actualizare a unei variabile parta"ate trebuie s fie executat de un proces ca o operaie atomic! nentreruptibil de ctre alte procese sau chiar de &+. 80 +peraia de actualizare a unei variabile parta"ate executat de un proces trebuie s inhibe execuia unei alte operaii asupra aceleai variabile executate de alt proces. (ste deci necesar serializarea operaiilor asupra variabilelor parta"ate! serializare care se obine prin e)cludere mutual a acceselor la variabila parta"at. =n acest sens actualizarea unei variabile parta"ate poate fi privit ca o seciune critic. + seciune critic este o secven de instruciuni care actualizeaz n siguran una sau mai multe variabile parta"ate. 4nd un proces intr ntr%o seciune critic! el trebuie s execute complet toate instruciunile seciunii critice! nainte ca alt proces s o poat accesa. Numai procesului care execut o seciune critic i este permis accesul la variabila parta"at! n timp ce tuturor celorlalte procese le este interzis accesul. -cest mecanism est denumit e)cludere mutual ! deoarece un proces exclude temporar accesul altor procese la o variabil parta"at. &oluionarea problemei excluderii mutuale trebuie s ndeplineasc urmtoarele cerine %s nu presupun nici o condiie privind viteza de execuie sau prioritatea proceselor care acceseaz resursa parta"at1 %atunci cnd unul sau mai multe procese doresc s intre ntr%o seciune critic! unul din ele trebuie s obin accesul n timp finit. %s asigure c terminarea sau blocarea unui proces n afara seciunii critice nu afecteaz n nici un fel toate celelalte procese care acceseaz resursa parta"at corespunztoare seciunii critice respective1 )ecanismul de baz pe care%l urmrete un proces este %protocol de negociere 7 nvingtorul continu execuia1

33 Sisteme de operare %seciune critic 7 utilizarea exclusiv a resursei1 %protocol de cedare 7 proprietarul se deconecteaz. &oluionarea corect a excluderii mutuale nu este o problem trivial. $rimul care a soluionat aceast problem a fost matematicianul olandez DecJer. &oluia lui! ns! nu este valabil dect pentru dou procese. &oluii de excludere mutual au mai dat $eterson i *ampert! soluii pur soft! dar a cror eficien este discutabil cci nu rezolv n ntregime toate cerinele. Implementarea eficient a excluderii mutuale se poate realiza prin suport hard /validare7invalidare de ntreruperi sau instruciuni ,est and Set). -ceste faciliti hard sunt utilizate pentru implementarea unor mecanisme de sincronizare /obiecte de sincronizare0 ca semafoare! mutexuri! bariere! monitoare etc.

0.1.1. Suportul 'ar)Fare pentru i(ple(entarea e8&lu)erii (utuale


%.1.1.1. In&alidarea ' &alidarea ntrer(perilor Instruciunile de invalidare7validare a ntreruperilor /DI7(I0 sunt disponibile n toate procesoarele. &ecvena care asigur accesul exclusiv al unui singur proces la o resurs este DI 7 invalidare ntreruperi1 &eciune critic1 (I 7 validare ntreruperi. $rin invalidarea ntreruperilor se a"unge la blocarea celorlalte procese. (ste un mecanism prea dur! un model pesimist de control al concurenei! cu urmtoarele dezavanta"e %se blocheaz i activitatea altor procese /numite victime inocente0 care nu au nici o legtur cu seciunea critic respectiv1 %dac se execut de ctre useri! se poate bloca sistemul iar dac sunt executate din Jernel! apare un cost de timp suplimentar /overhead0 de comutare a modului de execuie Jernel7user. %.1.1.2. Instr(ci(nea )est and Set ")S$ =n principiu! instruciunea '& are ca operand adresa unei variabile de control i execut urmtorii pai

34

Sorin Adrian Ciureanu %compar valoarea operandului cu o valoare constant /de exemplu F pentru B.&M0 i seteaz flagurile de condiie ale procesorului1 %seteaz operandul la valoarea B.&M . -ceti pai sunt executai ca o operaiune unic! indivizibil! numit operaie atomic. &ubinstruciunea cod! '&! poate fi scris astfel +,A- ., operand C89 ., B:4; f#ag <6.,= da"* .=B:44; 45,.6 operand,B:4; %.1.1.3. Protocoale de a*teptare n e#cl(derea m(t(al! -vem dou tipuri de protocoale a) ( usy+!ait) ) (sleep+!ait) a0 B.&M%2-I' /ateptare ocupat0 #olosind instruciunea '& acest model are urmtoarea implementare A-.+ 54 (a""es) >< A-.+/a'teptare "?t varia$i#a a""es=B:4; B.&M%2-I' este simplu de implementat dar are dezavanta"ul unei eficiene sczute! datorit faptului c se consum timp de execuie al procesorului de ctre un proces care nu avanseaz. b0 &*(($%2-I' /ateptare dormant0 =n acest tip de protocol! procesul care nu are resurs disponibil este suspendat /adormit0 i introdus ntr%o coad de ateptare. -poi este trezit! cnd resursa devine disponibil. =n sistemul uniprocesor este folosit totdeauna &*(($%2-I'! deoarece nu se consum timp procesor inutil. =n sistemul multiprocesor se folosesc amndou protocoalele i chiar o combinaie ntre ele. %.1.1.%. Mecanisme de sincronizare ntre procese "o+iecte de sincronizare$ a$ Semafoare. &emafoarele sunt obiectele de sincronizare cele mai des folosite. (le au fost introduse de Di"Jstra n 9L?Q. .n semafor este de fapt o variabil parta"at care poate primi numai valori nenegative. -supra unui semafor se pot executa dou operaii de baz %decrementarea variabilei semafor cu 9 /D+2N01

35 Sisteme de operare %incrementarea variabilei semafor cu 9 /.$0. Dac o operaie D+2N este efectuat asupra unui semafor care este mai mare dect zero! semaforul este decrementat cu 9 i procesul care l%a apelat poate continua. Dac! din contra! semaforul este zero! operaia D+2N nu poate fi efectuat i spunem c procesul ateapt la semafor! ntr% o coad de ateptare! pn cnd un alt proces efectueaz operaia .$ asupra semaforului! incrementndu%l. (xemplu. -vem un complex cu terenuri de handbal i 8F echipe care "oac 9F meciuri. 9meci O 9proces. =ntr%un co mare /semafor0 exist P mingi. &emaforul ia valori ntre F%P. #iecare 8 echipe iau cte o minge din co! efectund P operaii D+2N. &emaforul este F / nu mai sunt mingi n co0 i celelalte ? echipe ateapt o minge n co! deci o operaie .$. $entru implementare! operaiile D+2N i .$ vor fi nlocuite cu dou primitive &ait(s) 'i signa#(s) , n felul urmtor &ait(s) ncearc s decrementeze valoarea variabilei semafor s cu 9 i dac variabila este F procesul rmne n ateptare pn cnd s F. signa#(s) incrementeaz cu 9 semaforul s.

Implementarea semafoarelor n protocolul B.&M%2-I' &ait(s) @&(i#e (s==!); s--;A signa#(s) @sBB;A +peraia signa#(s) este atomic /indivizibil0. +peraia &ait(s) are dou regimuri atomic! dac s F1 neatomic! dac sOF. (ste normal ca! dac semaforul este ocupat /sOF0! operaia &ait(s) s nu fie atomic1 n caz contrar ar mpiedica alte operaii! inclusiv signa#(s)! executate de un alt proces care s acceseze variabila s pentru a o elibera. Implementarea cu B.&M%2-I' a semafoarelor are dezavanta"ul unui consum de timp procesor de ctre procesele aflate n ateptare. .n alt dezavanta" este posibilitatea ca un proces s fie amnat un timp nedefinit /indefinit! postponement0 n obinerea unui semafor! datorit faptului c nu

36

Sorin Adrian Ciureanu este nici o ordonare ntre procesele care ateapt la semafor. -stfel exist posibilitatea ca un proces s fie mpiedicat un timp nedefinit de a obine un semafor datorit aglomerrii provocate de alte procese. .n astfel de fenomen de blocare se numete li"eloc# iar procesul afectat este numit stri"it (star"ed). Implementarea semafoarelor n protocolul &*(($%2-I' $rocesele care ateapt la semafor stau ntr%o coad de ateptare /#I#+0. &ait(s) @if(s==!) pro"es1# tre"e Cn starea s1spendat; e#se s--;A signa#(s) @if("oada n1 este goa#*) p#anifi"* 1n pro"es din "oad* ; e#se sBB ;A =n loc s intre n ateptare ocupat! atunci cnd semaforul este ocupat! procesul apelant este suspendat i trecut ntr%o coad de ateptare asociat semaforului apelat. 'rebuie ns ca i procesul dormant /suspendat0 s afle cnd semaforul a devenit liber. -cest lucru se realizeaz prin intermediul operaiei signa#. -ceast operaie ncearc mai nti s trezeasc un proces din coada de ateptare i s%l treac n starea de execuie (suspendat-run). Numai dac coada de ateptare este goal! incrementaz semaforul. +$ M(te#-(ri Denumirea ).'(3 vine de la mutual e)clusion. )utex%ul este un caz particular de semafor i este utilizat pentru accesul mai multor procese la o singur resurs parta"at. +peraiile care se execut asupra unui mutex sunt %operaia de acces i obinere a mutex%ului! notat cu ocupare (mute)) sau loc#(mute)) 1 +operaia de eliberare a mutex%ului! notat cu eli erare (mute)) sau unloc#(mute)). c$ ,&enimente "semnale.$.nul dintre primele mecanisme de comunicare ntre procese este reprezentat de semnale sau e"enimente. =n .NI3 se numesc semnale iar n 2IND+2& se numesc evenimente. (le anun apariia unui eveniment i pot fi trimise de un proces altui proces! de un proces aceluiai proces sau pot fi trimise de Jernel. )omentul apariiei unui semnal este neprecizat! el aprnd asincron. &emnale .NI3

3 Sisteme de operare =n sistemul de operare .NI3! semnalele pot proveni de la nucleu sistemului! prin care se notific evenimente hard:are! sau pot fi generate soft! de unele procese! pentru a notifica un eveniment asincron. .n semnal este reprezentat printr%un numr i un nume. =n .NI3 semnalele dintre procese au denumiri simbolice! &I6.&, 9 i &I6.&, 8. .n proces care primete un semnal poate s acioneze n mai multe moduri %s ignore semnalul1 %s blocheze semnalul1 n acest caz semnalul este trecut ntr%o coad de ateptare pn cnd este deblocat1 %s recepioneze efectiv semnalul. $rocesul stabilete ce semnale sunt blocate! folosind o mas de semnale! n care fiecare bit corespunde unui numr de semnal. =n standardul $+&I3 exist numere ntre ;; i ?<! deci ;9 semnale. .n semnal poate s apar n urmtoarele cazuri %la acionarea unei taste a terminalului1 %la apariia unei ntreruperi hard:are /mprire prin zero! adres inexistent etc01 %atunci cnd un proces trimite un semnal altui proces sau thread! folosind funciile a)sigD1e1e() R se transmite un semnal unui proces1 $)ki##() R se transmite un semnal de terminare a unui proces1 ")pt(read R se transmite semnal de terminare a unui thread.

(venimente 2IND+2& =n &+ 2IND+2&! un eveniment este un obiect de sincronizare care poate fi semnalat sau nesemnalat. (xist dou tipuri de evenimente %evenimente cu resetare manual /evenimente care trecute n stare semnalat rmn n aceast stare pn cnd sunt trecute n mod explicit n starea nesemnalat)1 %evenimente cu autoresetare. =n 2IND+2& un proces poate crea un eveniment folosind funcia C.6A56 6E635. .n proces n ateptarea unui eveniment poate executa una din funciile de ateptare 2-I' #+, &IN6*( +BC(4' sau 2-I' #+, ).*'I$*( +BC(4'. (venimentele sunt utilizate pentru notificarea unui proces sau thread despre apariia unui alt eveniment.

3!

Sorin Adrian Ciureanu (venimentele creeaz puncte de sincronizare ntre procese sau threaduri. d$ Monitoare. )onitoarele sunt mecanisme de sincronizare ntre procese concurente care pot suporta abstractizarea datelor. $rin apariia monitoarelor /5+-,(! 9LP?0! se reuete s se acopere unul din nea"unsurile principale ale celor mai utilizate mecanisme de sincronizare! semafoarele! care nu suport abstractizarea datelor. &intaxa monitorului este asemntoare cu cea a unei clase! cuvntul 4*-&& fiind nlocuit cu )+NI'+,. (ste de remarcat faptul c ntr%un monitor se asigur excluderea mutual! astfel c la un moment dat un singur proces poate fi activ. .n monitor este bazat pe modularitate i ncapsulare.
P1 P2 Pn

1ate accesate :n comun

Proceduri Proc 1 Proc 2 <ariabile parta=ate

4oad de intrare n monitor

Proc n

Fi . 0.1.Stru&tura unui (onitor. &tructura unui monitor const n trei pri %n prima parte se declar numele monitorului i variabilele locale1 %n a doua parte se declar toate procedurile1 %n cea de a treia parte se iniializeaz toate variabilele acestui monitor. =n general! procedurile unui monitor sunt constituite din principalele funcii care se ntlnesc ntr%un sistem de operare. De exemplu! o procedur tipic este intrarea ntr%o seciune critic.

0.". INTERB#OCAREA 1DEAD#OCG4

Sisteme de operare

3"

-lturi de problema seciunii critice! interblocarea reprezint una din principalele probleme ce trebuiesc soluionate n funcionarea unui &+. )ecanismul principal al interbocrii const n faptul c o resurs cerut de un proces este deinut de alt proces. $n cnd procesul care deine resursa o va elibera! apare o situaie tipic de interblocare. Deoarece interblocarea este strns legat de resursele sistemului de operare! vom prezenta! mai nti! cteva noiuni referitoare la aceste resurse.

0.".1. Re!ur!e
%.2.1.1. -lasificarea res(rselor din p(nct de &edere al inter+loc!rii 4ea mai important clasificare din punct de vedere al interblocrii este a0 resurse parta"abile 1 b0 resurse neparta"abile. + resurs parta"abil poate fi utilizat n comun de mai muli utilizatori. .n exemplu clasic n acest sens este citirea unui fiier de ctre mai muli utilizatori. + resurs neparta"abil nu poate fi folosit n acelai timp de ctre mai muli utilizatori. .n exemplu este imprimanta. (vident! mai muli utilizatori nu pot tipri n acelai timp pe aceeai imprimant. Numai resursele neparta"abile conduc la situaii de interblocare1 cele parta"abile nu pun probleme din acest punct de vedere. &istemul de operare! n procesul de control al interblocrii! trebuie s aib o gestiune doar a resurselor neparta"abile. + alt clasificare a resurselor! important pentru interblocare! este a0 resurse cu un singur element1 b0 resurse cu mai multe elemente. $entru situaii diferite de interblocare! aceast clasificare este foarte important! ea ducnd la decizii diferite. .n exemplu tipic unde intervine aceast clasificare este graful de alocare a resurselor. %.2.1.2. ,tapele parc(rse de (n proces pentr( (tilizarea (nei res(rse =n vederea utilizrii unei resurse! un proces trebuie s execute urmtoarele etape

4#

Sorin Adrian Ciureanu a04ererea de acces la resurs. $rocesul formuleaz o cerere de acces la resursa respectiv. Dac nu i este repartizat imediat! intr ntr%o coad de ateptare i va atepta pn cnd poate dobndi resursa. b0.tilizarea resursei. (ste etapa n care procesul a primit permisiunea de utilizare a resursei! iese din coada de ateptare i utilizeaz efectiv resursa. c0(liberarea resursei. &e elibereaz resursa i se ncheie utilizarea resursei de ctre proces. $entru implementarea de ctre &+ a acestei operaii! exist tabele ale &+ n care fiecrei resurse i este asociat procesul ce o utilizeaz i! de asemenea! fiecare resurs are asociat o coad de ateptare cu toate procesele care au fcut cerere de utilizare a resursei. De obicei! sistemele de operare implementeaz! pentru fiecare din etapele de mai sus! apeluri sistem sau semafoare.

0.".". Con)iii ne&e!are pentru apariia inter>lo&rii


=n anul 9LP9! 4ofman a identificat patru condiii necesare care! dac sunt ndeplinite simultan! pot conduce la apariia interblocrii. -ceste condiii sunt a0(xcluderea mutual. (xistena excluderii mutuale presupune c un proces a obinut resursa i exist o coad de ateptare a altor procese la aceeai resurs. b0+cupare i ateptare. (xist cel puin un proces care a obinut resursa dar care ateapt i alte resurse suplimentare care! la rndul lor! sunt ocupate de alte resurse. c0Imposibilitatea achiziionrii forate. .n proces nu poate achiziiona forat o resurs aferent altui proces dect dup eliberarea resursei de ctre acel proces. d0-teptare circular. (xist un ir de procese $9! $8! Y$n! toate n ateptare! n aa fel nct $9 ateapt eliberarea resurse de ctre $8! $8 ateapt eliberarea resursei de ctre $;YY.$n ateapt eliberarea resursei de ctre $9. $9Z$8Z$;ZYYYYYYY$n%9Z$n 0.".,. .raful )e alo&are a re!ur!elor

41 Sisteme de operare $entru descrierea strii de interblocare este folosit un graf orientat! numit graful de alocare a resurselor. Nodurile grafului sunt alctuite din procese i resurse. Aom nota procesele cu $ i resursele cu ,. ,esursa cu indice i
.i

$rocesul cu indice "


P

-rcele grafului sunt orientate i sunt de dou feluri a0 arce cerere, care reprezint faptul c procesul $" fcut o cerere de alocare a resursei ,i i ateapt dobndirea ei1
P
=

.i

c0 arce alocare, care reprezint faptul c procesului $" i%a fost alocat resursa ,i .
P
=

.i

4ea mai important aplicaie a acestui graf este legat de detecia strii de interblocare. $entru un graf alctuit numai din resurse simple! existena unei bucle n graf nseamn c n sistem a aprut o interblocare. De exemplu! n graful urmtor.
P
1

.1

.2

P
2

Fi .0.". .raf )e re!ur!e. 2 =n graful de mai sus! procesului $9 i este alocat resursa ,9 i procesului $8 resursa ,8 . $rocesul $9 a fcut o cerere de alocare a resursei ,8 deinut de $8 iar $8 a fcut o cerere de alocare a resursei , 9 deinut de $9 . (ste o situaie clar de interblocare. =n graful din figura <.8. aceast interblocare este vizibil prin existena buclei.

42

Sorin Adrian Ciureanu De menionat c pentru grafurile cu resurse multiple existena buclei nu nseamn o situaie de interblocare. De exemplu! n cazul din figura <.;.! existena buclei nu nseamn interblocare.
P
1

> .1 >

> > >

.2

P
2 2

2 Fi . 0.,. .raf fr !ituaie )e inter>lo&are.

0.".0. Re-ol+area pro>le(ei inter>lo&rii


(xist dou tipuri de metode pentru rezolvarea interblocrii a0 metod n care nu i se permite niciodat sistemului de operare s intre n interblocare1 se face pre"enirea sau e"itarea interblocrii. b0 metod n care se permite sistemului de operare s intre n interblocare i apoi se ncearc scoaterea sa din aceast stare1 se utilizeaz un mecanism de detecie a interblocrii i re"enire din aceast stare. %.2.%.1. Pre&enirea inter+loc!rii $entru a putea preveni interblocarea este suficient ca una din condiiile de apariie a acesteia s nu fie ndeplinit. & vedem cum poate fi mpiedecat ndeplinirea fiecrei din cele patru condiii. a0 (xcluderea mutual $entru o resurs neparta"abil nu este posibil prevenirea interblocrii prin nendeplinirea condiiei de excludere mutual. b0 +cupare i ateptare $entru nendeplinirea condiiei de ocupare i ateptare sunt posibile dou protocoale %un protocol n care fiecare proces i poate ncepe execuia numai dup ce i%a achiziionat toate resursele necesare1

43 Sisteme de operare %un protocol n care unui proces nu i se permite s achiziioneze dect o resurs! achiziionarea resurselor suplimentare fcndu%se cu eliberarea resurselor de"a anga"ate. Dei prin ambele protocoale se asigur nendeplinirea condiiei de ateptare i ateptare! totui ele prezint dou mari dezavanta"e %utilizarea resurselor este destul de redus! n sensul c timpul ct o resurs este alocat unui proces i neutilizat este foarte mare1 %apare un proces de nfometare! deoarece un proces nu poate s atepte la infinit alocarea unei resurse. c0 Imposibilitatea achiziionrii forate Nendeplinirea acestei condiii nseamn de fapt ca un proces s poat lua o resurs alocat altui proces n orice moment. Desigur! aceast achiziionare forat a resurselor unui alt proces nu trebuie fcut haotic! ci n cadrul unui protocol de achiziionare forat. .n exemplu de astfel de protocol este urmtorul un proces care i achiziioneaz resurse n vederea execuiei va putea lua forat resurse de la alt proces numai dac procesul respectiv este n ateptare. -cest protocol se aplic frecvent n cazul resurselor a cror stare poate fi uor salvat i refcut /ex. registrele procesorului! spaiul de memorie0. d0 -teptare circular .n algoritm simplu pentru eliminarea ateptrii circulare este dat n continuare. &e creeaz o coresponden biunivoc ntre toate resursele neparta"abile ale sistemului i mulimea numerelor naturale! astfel nct fiecare resurs este identificat printr%un numr natural. De exemplu hard disc YYY.9 4D ,+)YYY.8 imprimantYY..; )+D()YYY.< scanerYYYY..@ -poi! un proces poate cere resursa cu numr de ordine J ! cu condiia ca s elibereze toate resursele cu indice mai mare dect J! adic J>9! J>8! YY.n. =n felul acesta se elimin posibilitatea de ateptare circular. =n concluzie! pentru prevenirea interblocrii se utilizeaz algoritmi care impun ca cel puin una din condiiile necesare s nu fie ndeplinite. -ceti algoritmi acioneaz prin stabilirea unor restricii asupra modului n care se pot formula cererile de acces. $rincipalele dezavanta"e ale acestei metode sunt gradul redus de utilizare a resurselor i timpul mare de ateptare a unui proces pentru o resurs.

44

Sorin Adrian Ciureanu %.2.%.2. ,&itarea inter+loc!rii

Dac pentru prevenirea interblocrii se folosesc restricii asupra modurilor de formulare a cererilor pentru resurse! n evitarea interblocrii se utilizeaz informaii suplimentare referitoare la modul n care se face cererea de acces. -lgoritmii de evitare difer prin tipul i cantitatea acestor informaii. &e definesc dou noiuni stare sigur i sec"en sigur. =n cazul acestor algoritmi! fiecare proces trebuie s declare numrul maxim de resurse de fiecare tip de care ar putea avea nevoie. -lgoritmul examineaz mereu starea alocrii resurselor pentru a avea certitudinea c nu va exista ateptare circular. &ecven sigur #ie un ir de procese $ 9 ! $8 ! YY..$n exact n aceast ordine. &punem c aceast secven este sigur dac pentru orice proces $ i cu /9 [ i [ n0 s%ar cere numrul maxim de resurse! declarat iniial! atunci diferena intre numrul maxim de resurse i numrul de resurse al procesului n acel moment nu depete numrul resurselor obinute din nsumarea resurselor disponibile cu resursele eliberate de procesele $" cu " i. Dac nu se ndeplinete aceast condiie! atunci secvena este nesigur. &tare sigur &istemul este ntr%o stare sigur dac conine cel puin o secven sigur. De exemplu! fie secvena de procese $9 $8 $; $< $@ $9 $8 $; $< $@ )axim resurse cerute 9F 9@ 8F 8@ ;F 4erere iniial @ @ 9F 9F 8F 'otal resurse O ?F ,esurse disponibile O ?F%@%@%9F%9F%8F O 9F & analizm secvena $9 $8 $; $< $@ . $9 la cerere maxim de resurse ar avea nevoie de 9F%@ O @ resurse \ 9F resurse disponibile $8 9@%@ O 9F resurse \ @/eliberate de $9 0 > 9F/disponibile0 $; 8F%9FO9F resurse \ @/$9 0 > @/$80 >9F/disponibile0 $< 8@%9FO9@ resurse \ @/$90 > @/$80 > 9F/$;0 > 9F /disponibile0 $@ ;F%8FO9F resurse \ @/$90>@/$80>9F/$;0>9F/$<0>9F/dispon.0 Deci aceast secven este sigur. & analizm secvena $< $@ $9 $8 $; . $< 8@%9F O 9@ ] 9F /resurse disponibile0 secven nesigur. a$ .lgoritm(l +anc/er(l(i

45 Sisteme de operare .n algoritm clasic de evitare a interblocrii! bazat pe noiunea de secven sigur! este algoritmul bancherului. &e numete aa deoarece poate fi folosit n sistemul bancar la plata unor sume ctre diferii clieni ai bncii! plat care trebuie s lase mereu banii ntr%o stare sigur. $entru a putea aplica acest algoritm trebuie s se cunoasc de la nceput numrul maxim de resurse cerute de fiecare proces. -poi! la fiecare cerere a unor resurse noi! se aplic algoritmul pentru a vedea dac aceast cerere duce la o stare sigur sau nesigur. Dac e sigur! cererea este acceptat! dac nu e sigur! cererea nu este acceptat i procesul rmne n ateptare. &tructurile de date folosite de algoritm sunt n % numrul de procese din sistem m % numrul de tipuri resurs -disponi$i#FmC un vector care indic numrul de resurse disponibile pentru fiecare tip n parte1 -maxim FnCFmC R o matrice care arat numrul maxim de cereri ce pot fi formulate de ctre fiecare proces1 -a#o"areFnCFmC% o matrice care arat numrul de resurse din fiecare tip de resurse care este alocat fiecrui proces1 -ne"esarFnCFmC o matrice care arat numrul de resurse care ar mai putea fi necesare fiecrui proces. Dac ne"esarFiCFGC = t ! atunci procesul $i ar mai avea nevoie de t elemente din resursa r" . -vem relaia ne"esarFiCFGC = maximFiCFGC a#o"areFiCFGC

-"erereFnCFmCmatricea cererilor formulate de un proces Dac "erereFiCFGC= t, atunci procesul $i dorete t elemente din resursa r" . -lgoritmul banchetului are urmtorii pai $as 9 $rocesul $i formuleaz o cerere de resurse. Dac linia i din matricea cerere este mai mare dect linia i din matricea necesar! atunci este eroare! deci nu se trece la pasul 8. $recizm c E FnC < EHFnC! dac E FiC < EHFiC pentru oricare i= I.n if "erereFiCFxC<=ne"esarFiCFxC x= 9........m , J $as8 e#se eroare

46

Sorin Adrian Ciureanu

$as 8 if "erereFiCFxC<=disponi$i#FxC se tre"e #a pas K e#se &ait (res1rse#e n1 s1nt disponi$i#e) $as ; &e simuleaz alocarea resurselor cerute de procesul $i ! strile modificndu% se astfel disponi$i#FxC=disponi$i#FxC"erereCiCFxC; a#o"areFiCFxC=a#o"areFiCFxCB"erereFiCFxC; x= I.m ne"esarFiCFxC=ne"esarFiCFxC-"erereFiCFxC; $as < =n acest moment se testeaz dac noua stare este sigur sau nu. =n acest scop se mai utilizeaz doi vectori #1"r1FmC terminatFnC &ubpasul 9 &e iniializeaz aceti vectori astfel #1"r1FiC=disponi$i#FiC; terminatFiC=fa#s pentr1 i= ,H,KII..n &ubpasul 8 &e caut o valoare i astfel nct terminatFiC=fa#s; ne"esarFiCFxC<=#1"r1FxC; Dac nu exist! se trece la subpasul <. &ubpasul ; &e simuleaz ncheierea execuiei procesului! deci se execut #1"r1FxC=#1"r1FxCBa#o"areFiCFxC terminat = tr1e; &e trece la subpasul 8. &ubpasul < Dac terminatFiC=tr1e pentr1 i= IIn , -tunci sistemul este ntr%o stare sigur. -lgoritmul bancherului poate fi utilizat n orice sistem de alocare a resurselor! pentru determinarea strilor sigure! avnd un mare grad de generalitate. $rincipalul su dezavanta" este numrul mare de operaii pe care l cere. +$ 0olosirea graf(l(i de alocare a res(rselor + alt metod pentru determinarea unei stri sigure este folosirea grafului de alocare a resurselor. #a de graful prezentat anterior! elementul

4 Sisteme de operare nou este arcul re"endicare. -cest arc arat c este posibil ca procesul $ i s revendice n viitor resursa ," . 4a mod grafic de reprezentare ! el este trasat cu linie ntrerupt. 4nd procesul $i cere resursa ," ! arcul revendicare /$i,"0 se transform n arc cerere /$i,"0. 4nd resursa ," este eliberat de procesul $" !arcul alocare /$i,"0 este transformat n arc revendicare /$ i,"0. $entru a determina strile nesigure! se caut n graf bucle n care intr arcuri revendicare. + astfel de bucl reprezint o stare nesigur. (xemplu
P1

.1

.2

P2
2

Fi . 0.0. .raf )e alo&are &u ar&uri re+en)i&ati+e. =n graful de mai sus! procesului $9 i este alocat resursa ,9! iar procesului $8 i este alocat resursa ,8 . =n acelai timp procesul $9 poate s cear n viitor resursa ,8 ceea ce n graf se concretizeaz prin arcul revendicare /$9,80. *a fel! $rocesul $8 poate revendica resursa ,9 prin arcul /$8,90. &e observ c exist o bucl /$9,8$8,90! ceea ce face ca aceste revendicri s conduc la o stare nesigur. %.2.%.3.1etectarea inter+loc!rii *i re&enirea din ea -tunci cnd! din diverse motive! nu se pot aplica algoritmii de prevenire i evitare a interblocrii! se intr n aceast stare. =n acest caz trebuie s se execute alte dou tipuri de algoritmi %algoritmi de detecie care s informeze sistemul asupra momentului n care s%a a"uns la aceast stare1 %algoritmi de revenire din starea de interblocare. c$1etecia inter+loc!rii =n acest scop se folosesc doi algoritmi %un algoritm foarte asemntor cu algoritmul bancherului1 %un graf de alocare a resurselor de tip 2-I' #+,. Deoarece algoritmul bancherului a fost discutat n amnunt! ne vom ocupa doar de graful 2-I' #+,. -cest graf se obine din graful de alocare a resurselor prin eliminarea nodurilor de tip resurs /,"0 i contopirea arcelor

4!

Sorin Adrian Ciureanu corespunztoare. =n acest caz! un arc /$i$"0 arat c $i ateapt ca $" s elibereze resursa care i este necesar.

P
1 2

P
2 2

P
3 2

P
4 2

P
5 2

2 . 1

2 . 2

2 . 3

2 . 4

2 . 5

Fi . 0.5..raf )e alo&are a re!ur!elor. =n acest caz! existena buclei nu nseamn interblocare.


P
1 2

P
2 2

P
3 2

P
4 2

P
5 2

Fi .0.6. .raf DAIT FOR.


2 2

-lgoritmul 2-I' #+, se poate aplica numai pentru resurse simple. &e observ c bucla existent n graful de alocare a resurselor este mai bine pus n eviden n graful 2-I' #+,. Dar avanta"ul principal al utilizrii grafului 2-I' #+, const n costurile mai mici pentru detecia unei bucle! deci a interblocrii. Indiferent de tipul algoritmului de detecie a interblocrii! se pune problema ct de des trebuie s fie acesta apelat. (xist! n general! dou modaliti de apelare a0apelarea algoritmului ori de cte ori se formuleaz o cerere de resurse1 b0apelarea algoritmului la intervale regulate de timp. $rima modalitate detecteaz rapid interblocarea dar presupune un substanial consum suplimentar de timp de calcul. =n a doua modalitate ! se alege un interval de timp la care se apeleaz algoritmul de detectare. Desigur! un interval scurt va introduce costuri

4" Sisteme de operare suplimentare iar la un interval lung este posibil ca starea de interblocare s fie detectat foarte trziu! cu consecine nedorite n funcionarea sistemului. d$ 2e&enirea din inter+locare ,evenirea din interblocare se poate face n dou moduri %manual! fcut de ctre operatorul sistemului1 %automat! executat de anumite programe ale sistemului de operare. =n general! exist dou metode de revenire din starea de interblocare 90%$rin dispariia a(teptrii circulare. n acest caz se foreaz terminarea unor procese. 80%$rin negarea achiziiei forate1 n acest caz procesele pot s achiziioneze resurse de la alte procese. 90#olosirea metodei de dispariie a ateptrii circulare are dou forme %=ncheierea forat a tuturor proceselor interblocate1 n acest fel se revine sigur din starea de interblocare dar se pierd toate rezultatele fiecrui proces implicat n interblocare. %=ncheierea forat a cte unui singur proces implicat n interblocare1 n acest caz se ncheie forat un proces i apoi se apeleaz algoritmul de detecie a interblocrii pentru a vedea dac mai persist starea de interblocare1 dac da! se ncheie forat alt proces i se apeleaz din nou algoritmul de detecie! operaia continund pn la dispariia strii de interblocare. -vanta"ul fa de prima metod este c nu se pierd rezultatele de la toate procesele. Dezavanta"ul const n timpul suplimentar! pentru c! dup terminarea forat a unui proces! trebuie apelat algoritmul de detecie. + alt problem a acestei metode este determinarea procesului sau proceselor care trebuiesc terminate forat. $ot intra n discuie mai muli factori %prioritatea procesului1 %numrul resurselor care ar mai fi necesare procesului pentru a%i ncheia normal execuia1 %numrul resurselor care au fost de"a folosite de un proces1 %timpul necesar pn la terminarea normal a procesului. Din enumerarea acestor factori! se observ c este necesar un algoritm pentru alegerea procesului sau proceselor care vor fi terminate forat. De obicei se alege factorul ce necesit un timp minim. 4el mai frecvent se utilizeaz alegerea dup prioritate! cu att mai mult cu ct prioritatea proceselor este de"a calculat din algoritmii de planificare a procesorului.

5#

Sorin Adrian Ciureanu 80$ermiterea achiziionrii forate a resurselor de la procese este a doua metod de revenire din interblocare. $roblemele care apar n acest caz sunt %alegerea GvictimelorH! ceea ce nseamn i selectarea resurselor care vor fi achiziionate forat1 %continuarea procesului cruia i s%au preluat forat resursele1 %prevenirea GnfometriiH! adic evitarea faptului ca un acelai proces s fie ales mereu victim. %.2.%.%. 2ezol&area inter+loc!rii n practic! De obicei! n mod practic! interblocarea poate fi tratat n dou moduri a0%prin ignorarea ei1 b0%printr%o metod mixt de tratare. Ignorarea se aplic! de exemplu! sistemelor de operare instalate pe $4%uri. -tt 2IND+2&%ul ct i .NI3%ul ignor interblocarea! neavnd programe pentru rezolvarea ei. (xist sisteme de operare n care interblocarea ar duce la perturbaii grave n funcionare! de exemplu! n unele sisteme de operare funcionnd n timp real. -cestor sisteme li se aplic metode mixte de tratare a interblocrii. + metod mixt clasic are la baz mprirea resurselor n clase de resurse ordonate ierarhic! aa cum am prezentat la prevenirea interblocrii pentru a mpiedica ateptarea circular. =n acest mod! o eventual interblocare ar putea aprea doar n interiorul unei clase. =n interiorul clasei se pot aplica metodele prezentate de prevenire! evitare! detecie i revenire din interblocare.

0.,. COMUNICAREA $NTRE PROCESE COOPERANTE


=ntre dou sau mai multe procese pot exista dou tipuri de comunicare a0 prin memorie parta"at1 b0 prin sistem de mesa"e. a0 =n sistemele cu memorie parta"at exist o memorie comun pentru toi utilizatorii iar procesele pot comunica ntre ele prin intermediul variabilelor parta"ate din memoria comun. )ecanismul de comunicare este

51 Sisteme de operare simplu un proces actualizeaz o variabil parta"at iar alt proces va citi aceast variabil. -ceast metod este tipic pentru sistemele multicalculatoare! cu memorie parta"at. &istemul de operare nu este responsabil pentru acest tip de comunicare. =ntreaga rspundere revine programatorului de aplicaie. De aceea un sistem de operare pentru multicalculatoare nu difer foarte mult de un sistem de operare pentru un monoprocesor. b0=n acest caz! al comunicrii prin mesa"e! procesele pot comunica ntre ele doar prin dou operaii -send (mesaG); -re"eive (mesaG) Deci! prin aceste dou primitive de transmisie! un proces poate comunica cu altul doar transmind sau recepionnd un mesa". -cest tip de comunicaie este specific multicalculatoarelor. =ntreaga responsabilitate a comunicrii prin mesa"e i revine sistemului de operare. De aceea! aceste sisteme de operare sunt mult mai complicate i greu de proiectat i realizat. (le mai poart numele de sisteme de operare distri uite. =n acest capitol vom analiza modul de transmisie prin mesa"e! acest lucru fiind indiferent dac folosim mono sau multiprocesoare. $entru a exista o comunicare ntre procese trebuie s existe o linie de comunicaie. $roblemele legate de implementarea acestei linii sunt %modul n care se stabilesc liniile de comunicaie ntre procese1 %numrul de procese asociate unei linii de comunicaie1 %numrul de legturi care pot exista ntre o pereche de procese1 %capacitatea unei linii de comunicaie1 %tipul liniei de comunicaie /unidirecional sau bidirecional01 %dimensiunea mesa"elor care poate fi fix sau variabil. )odalitile folosite pentru implementarea logic a liniei de comunicaie i a operaiilor send 'i re"eive sunt %comunicaie direct sau indirect1 %comunicaie simetric sau asimetric1 + uffering implicit sau explicit / prin buffering se nelege stocarea mesa"ului ntr%o zon tampon de unde este preluat ulterior de ctre destinatar01 %trimiterea mesa"ului prin copie sau referin.

0.,.1. Co(uni&aie )ire&t /i in)ire&t

52

Sorin Adrian Ciureanu %.3.1.1. -om(nicaie direct!

=n comunicaia direct! procesele care trimit sau recepioneaz mesa"e trebuie s menioneze numele procesului care trimite! respectiv care recepioneaz mesa"ul. $rimitivele send 'i re"eive au urmtoarea form simetric send(pro"es ,mesaG) /se trimite un mesa" ctre procesul 90 re"eive(pro"esH,mesaG) /se recepioneaz un mesa" de la procesul 80 $ot avea i o form asimetric. =n acest caz cele dou primitive se definesc astfel send(pro"es,mesaG) /se trimite un mesa" ctre proces0 re"eive(identifi"ator,mesaG) / se recepioneaz un mesa" de la un proces0 *inia de comunicaie are urmtoarele caracteristici %linia de comunicaie ntre dou mesa"e este bidirecional1 %ntre procesul care! fie vrea s transmit fie vrea s recepioneze un mesa"! i cellalt proces partener se stabilete o singur legtur de comunicaie. %.3.1.2. -om(nicaie indirect!

=n acest mod de comunicaie mesa"ele sunt trimise i recepionate prin intermediul cutiilor po(tale (mail o)es) care se mai numesc i porturi. $rimitivele de comunicare au urmtoarea form send(port ,mesaG) /se transmite un mesa" portului 90 re"eive(portH,mesaG) /se recepioneaz un mesa" de la portul 80 4utia potal sau portul poate avea doi proprietari a0 procesul1 b0 sistemul de operare. a0 *a un moment dat! o cutie potal are un singur proprietar i astfel se cunoate precis care este numele procesului ce va primi mesa"ele trimise. $entru ca un proces s devin proprietarul unei cutii potale! se poate utiliza una din urmtoarele dou metode %procesul poate declara o variabil de tip cutie potal1

53 Sisteme de operare %se definete mai nti o cutie potal i apoi se declar cine este procesul care o are n proprietate. 4nd procesul proprietar al cutiei potale i ncheie execuia! trebuie s execute dou lucruri distrugerea cutiei potale i anunarea celorlalte procese despre distrugerea cutiei potale. b0 =n cazul n care sistemul de operare este proprietarul cutiei potale! atunci aceasta are o existen de sine stttoare i nu depinde de proces. )ecanismul creat de sistemul de operare cuprinde urmtoarele operaii %crearea unei cutii potale noi1 %trimiterea i recepionarea mesa"elor prin cutia potal1 %distrugerea cutiei potale.

0.,.".

#inii )e &o(uni&aii /i tipuri )e (e!aHe

%.3.2.1. 3inii de com(nicaii 4ea mai important proprietate a liniei de comunicaie este capacitatea care arat dac i n ce fel pot fi stocate mesa"ele. (xist capacitate zero! capacitate limitat i capacitate nelimitat. %4apacitate zero. =n acest caz nu exist modalitate de stocare a mesa"ului. $rocesul emitent va rmne n ateptare pn cnd destinatarul va primi mesa"ul transmis. 'rebuie s existe o sincronizare a proceselor care se mai numete i rendez"ous. %4apacitate limitat. =n acest tip de transmisie exist un buffer care poate stoca n mesa"e. %4apacitate nelimitat. =n acest tip de transmisie exist un buffer de capacitate infinit! teoretic! care nu duce niciodat la situaia ca procesul emitor s atepte. *a fel ca n transmisia de date este necesar i aici! n unele cazuri! ca procesul emitent s tie dac mesa"ul emis a a"uns la destinaie. Dac n transmisia de date exist un pachet de tip -4X! aici exist ceva asemntor! un mesa" GconfirmareH. De exemplu! cnd procesul $9 transmite un mesa" procesului $8 ! atunci urmtoarea secven de mesa"e face ca $9 s tie c mesa"ul su a fost transmis send(pH, mesaG) re"eive(p ,mesaG) send(p ,"onfirmare) re"eive(pH,mesaG) pro"es1# pro"es1# pro"es1# pro"es1# 9 9H 9H 9

54

Sorin Adrian Ciureanu %.3.2.2. )ip(ri de mesa4e

Din punct de vedere al dimensiunii! mesa"ele pot fi %cu dimensiuni fixe1 %cu dimensiuni variabile1 %mesa"e tip. )esa"ele cu dimensiune fix necesit o implementare simpl dar o programare mai dificil. )esa"ele cu dimensiune variabil necesit o implementare fizic dificil dar o programare mai simpl. )esa"ele tip se folosesc numai n comunicaia indirect.

0.,.,. E8&epii 7n &o(uni&area 7ntre pro&e!e


Dac n sistemele cu memorie parta"at apariia unei erori duce la ntreruperea funcionrii sistemului ! n sistemele cu transmisie de mesa"e apariia unei erori nu este aa de grav. (rorile posibile trebuiesc cunoscute pentru a le putea trata corespunztor. 4ele mai frecvente erori sunt terminarea unui proces nainte de primirea mesa"elor! pierderea mesa"elor! alterarea mesa"elor i amestecarea lor. a0'erminarea unui proces nainte de primirea mesa"elor. =n unele cazuri! un proces! emitent sau destinatar! i poate ncheia execuia nainte ca mesa"ul s fi fost prelucrat. -stfel! pot aprea situaii n care unele mesa"e nu vor a"unge niciodat la destinaie sau situaii n care un proces va atepta un mesa" ce nu va mai a"unge niciodat. Dac un proces $ 9! destinatar! ateapt un mesa" de la un proces emitent $8 ! care i%a terminat execuia! atunci $9 va rmne n starea locat. $entru ca $9 s nu se blocheze exist dou posibiliti %sistemul de operare termin forat procesul $9 1 %sistemul de operare comunic procesului $9 c procesul $8 s%a ncheiat. Dac un proces $9 este emitent trimind un mesa" unui proces $8 care i%a ncheiat execuia! exist urmtoarele posibiliti %dac linia de comunicaie este limitat sau nelimitat! nu se ntmpl nimic1 procesul $9 i continu execuia1 %dac linia de comunicaie este de capacitate zero! atunci $ 9 se blocheaz1 pentru ca $9 s nu se blocheze se procedeaz ca n cazul anterior.

55 Sisteme de operare b0$ierderea mesa"elor. $ierderea unui mesa" se poate produce atunci cnd este o defeciune n linia de comunicaie. $entru remedierea acestui lucru se pot folosi urmtoarele metode %detectarea evenimentului i retransmiterea mesa"ului de ctre sistemul de operare1 %detectarea evenimentului i retransmiterea mesa"ului de ctre procesul emitent1 %detectarea evenimentului de ctre sistemul de operare care comunic procesului emitent pierderea mesa"ului1 procesul emitent decide dac retransmite sau nu mesa"ul. c0-lterarea i amestecarea /scrambling0 mesa"elor. (ste situaia n care un mesa" a"unge alterat la receptor! n sensul unei alterri a informaiei din coninutul su. $entru rezolvarea acestei situaii se folosesc metode clasice! din teoria transmiterii informaiei! de detectare i corectare a erorilor %folosirea polinomului de detecie i eventual de corecie a erorilor /aa numitele 4,4%uri sau *,4%uri! folosite !de exemplu! la hard disc01 %folosirea chec#sums%urilor! care sunt sume ale biilor mesa"elor1 exist dou chechsums%uri! unul calculat cnd se transmite mesa"ul i altul care se calculeaz din biii mesa"ului recepionat. *a neegalitatea celor dou chechsums%uri! se consider eroare1 %folosirea paritii n transmiterea i recepionarea mesa"ului.

0.,.0.

Apli&aii ale IPC%urilor 1Inter&o(uni&are $ntre Pro&e!e4

=n sistemul de operare .NI3! ale crui aplicaii vor fi prezentate n capitolele urmtoare! exist urmtoarele aplicaii ale I$4%urilor %pipe%uri1 %cozi de mesa"e /n &SstemA01 %semafoare1 %zone de memorie parta"at /n &Sstem A01 %semnale. De asemenea! n subcapitolul urmtor! de procese clasice! se prezint procesul productor R consumator rezolvat i prin metoda sistemelor de mesa"e /)essage $assing0. 0.0. PROB#EME C#ASICE DE COORDONARE @i SINCRONIEARE A PROCESE#OR

56

Sorin Adrian Ciureanu

(xist o serie de exemple clasice de coordonare i sincronizare a proceselor n care se regsesc principalele probleme ce apar n astfel de situaii. )ulte din aceste probleme se afl n structura oricrui sistem se operare. 'otodat aceste probleme clasice se regsesc i n programarea concurent. *e vom aborda ncercnd s le soluionm cu mi"loacele specifice prezentate anterior.

0.0.1. Pro>le(a pro)u&tor%&on!u(ator


#ie o serie de procese concurente care produc date /procese $,+D.4D'+,0. -ceste date sunt consumate de alte procese /procese 4+N&.)-'+,0. Datele sunt consumate n ordinea n care au fost produse. (ste posibil ca viteza de producere s difere mult de viteza de consum. -ceast problem s%ar rezolva uor dac ar exista un buffer de dimensiuni foarte mari! teoretic infinit! care ar permite operarea la viteze diferite ale productorilor i consumatorilor. 4um o astfel de soluie este practic imposibil! vom considera cazul practic al unui buffer finit. $rincipalele probleme care apar n acest caz sunt %buffer gol /consumatorii nu pot consuma date i trebuie s atepte01 %buffer plin /productorii nu pot nscrie date n buffer i trebuie s atepte0. Indiferent de soluiile alese! vor trebui rezolvate situaiile de citire din buffer%ul gol i de nscriere n buffer%ul plin. %.%.1.1. 2ezol&area pro+lemei prod(c!tor cons(mator c( a4(tor(l semafoarelor. #ie un buffer de dimensiune n organizat dup structura coad circular. Bufferul are n locaii pe care le%am notat cu tamponFnC. Aariabilele cu care se scrie i se citete n buffer au fost notate cu s"riere 'i "itire. (le asigur accesul proceselor la poziia unde se dorete operaia de scriere sau citire! n ordinea n care au venit. &emafoarele sems"riere 'i sem"itire au rolul de a asigura excluderea mutual ntre procesele productor i consumator. &emaforul sems"riere conine numrul de poziii libere din buffer iar semaforul sem"itire conine numrul de poziii pline. sems"riere se iniializeaz cu n i sem"itire cu F. 4nd sems"riere =! sau

5 Sisteme de operare sem"itire=n ! se va semnala situaia de buffer plin respectiv buffer gol i procesele vor fi blocate. &e intr ntr%o excludere mutual cu protocolul bussS%:ait i procesele vor fi deblocate atunci cnd sems"riere n sau sem"itire !. )utexurile m1texs"riere 'i m1tex"itire folosesc pentru excluderea mutual ntre dou procese de acelai tip. m1texs"riere pentru procesele de tip productor i m1tex"itire pentru procesele de tip consumator. $rocesele productor vor citi numere ntregi la tastatur iar procesele consumator vor GconsumaH aceste numere. Iat o implementare a problemei productor7consumator! scris n limba"ul 4

22de"#araLii de varia$i#e, semafoare, m1tex1ri 'i iniLia#iMatori tNpedef int semafor; tNpedef int m1tex; Odefine n !!!; int tamponFnC; int s"riere=!, "itire=!; semafor sems"riere=n, sem"itire=!; m1tex m1texs"riere, m1tex"itire; 229ro"ese prod1"*tor int va#oare, tastat1ra; &(i#e( ) @ va#oare=s"anf(PQd,Rtastat1ra); &ait(sems"riere) ; #o"k(m1texs"riere) ; tamponFs"riereC=va#oare ; s"riere=(s"riereB )Qn ; 1n#o"k(m1texs"riere) ; signa#(sem"itire) ;A 229ro"ese Cons1mator int va#oare; &(i#e( ) @&ait(sem"itire); #o"k(m1tex"itire);

5!

Sorin Adrian Ciureanu va#oare=tamponF"itireC; "itire=("itireB )Qn; 1n#o"k(m1tex"itire); signa#(sems"riere);A

$rocesele productor funcioneaz n felul urmtor &e consider o bucl &(i#e din care practic nu se iese. &e citete un numr ntreg de la tastatur n variabila valoare. $rin &ait(sems"riere) se asigur excluderea mutual a procesului respectiv productor fa de alte eventuale procese consumator. $rin #o"k(m1texs"riere) se asigur excluderea mutual a procesului respectiv productor fa de alte procese productoare. $rin tamponFs"riereC=va#oare se scrie efectiv valoarea n buffer. $rin s"riere=(s"riereB )Qn se actualizeaz poziia de scriere n buffer. $rin 1n#o"k(m1texs"riere) se elibereaz mutexul de scriere! permind altor productori s foloseasc bufferul. $rin signa#(sem"itire) se contorizeaz semaforul de citire cu 9! semnalnd c! dup ce procesul productor a nscris o valoare n buffer! numrul de poziii din buffer pentru procesele consumatoare s%a mrit cu 9. $rocesele consumator funcioneaz n mod asemntor. %.%.1.2. 2ezol&area pro+lemei transmitere de mesa4e prod(c!tor'cons(mator prin

-m studiat n subcapitolul precedent tehnica de transmitere prin mesa"e. $rezentm acum o aplicaie a acestei tehnici la problema productor7consumator. $entru aceasta s considerm o linie de transmisie cu capacitate limitat care folosete un buffer cu n poziii. )odul de comunicaie ales pentru implementare este cel direct! deci fr mailboxuri. -lgoritmul este simplu. 4onsumatorul trimite mai nti mesa"e goale productorului. +ri de cte ori productorul are de dat un produs consumatorului! va lua un mesa" gol si va transmite consumatorului un mesa" plin. $rin aceasta numrul de mesa"e din sistem rmne constant n timp! nedepind capacitatea limitat a bufferului de comunicaie. Bufferul de comunicaie este plin atunci cnd productorul lucreaz mai repede dect consumatorul i toate mesa"ele sunt pline. =n acest moment productorul se blocheaz! ateptnd ca un mesa" gol s se ntoarc.

5" Sisteme de operare Bufferul de comunicaie este gol atunci cnd consumatorul lucreaz mai repede dect productorul. 'oate mesa"ele vor fi golite ateptnd ca productorul s le umple. 4onsumatorul este blocat ateptnd pentru deblocare un mesa" plin. Iat mai "os o implementare a problemei productor7consumator prin transfer de mesa"e.

O define n !!!! @int va#; void prod1"*tor() message m;

/Seste mesaG1# transmis de prod1"*torS/

&(i#e( ) @va#=prod1"e e#ement(); /So f1n"Lie "are prod1"e mesaG1# transmis de prod1"*torS/ re"eive("ons1mator,Rm); /Sa'teapt* 1n mesaG go#S/ "onstr1ieste /So f1n"Lie "are mesaG(Rm,va#); "onstr1ie'te mesaG1# transmisS/ send("ons1mator,Rm);AA /Sse transmite efe"tiv mesaG1# "ons1mator1#1iS/ void "ons1mator() @int i,va#; message m; for(i= ;i<=n;iBB) /Sse transmit spre prod1"*tor "e#e n mesaGe goa#eS/ send(prod1"*tor,Rm); &(i#e( )@ re"eive(prod1"*tor,Rm); /Sse prime'te mesaG1# de #a prod1"*torS/ va#=extrageremesaG(Rm); /Sse extrage mesaG1# pentr1 a p1tea fi pre#1"ratS/ send(prod1"*tor,Rm); /Sse trimite o rep#i"* #a mesaG1# go#S/ "ons1ma e#ement(va#);AA /So f1n"Lie "are are ro#1# de a 1ti#iMa mesaG1# transmis de

6#

Sorin Adrian Ciureanu prod1"*torS/

&e observ n implementarea aleas c parametrul mesa" este un parametru referin.

0.0.".

Pro>le(a >r>ierului !o(noro!

(nun $rvlia unui brbier este format din dou camere! una la strad! folosit ca sal de ateptare! i una n spate! n care se gsete scaunul pe care se aeaz clienii pentru a fi servii. Dac nu are clieni! brbierul somnoros se culc. & se simuleze activitile care se desfoar n prvlia brbierului. ,ezolvare -ceast problem este o reformulare a problemei productor7consumator! n care locul bufferului de obiecte este luat de scaunul brbierului iar consumatorul este brbierul care i servete /consum0 clienii. =n sala de ateptare sunt n scaune pe care se aeaz clienii1 fiecare scaun este pentru un client. Dac nu sunt clieni! brbierul doarme n scaunul de frizerie. 4nd vine primul client l trezete pe brbier i brbierul l servete pe client! aezndu%l n scaunul de frizerie. Dac n acest timp sosesc i ali clieni! ei vor atepta pe cele n scaune. 4nd toate scaunele sunt ocupate i mai vine nc un client! acesta prsete prvlia. $roblema const n a programa aceste activiti n aa fel nct s nu se a"ung la aa numitele condiii de curs. (ste o problem clasic cu multe aplicaii! mai ales n cele de (e#p desk. $entru implementarea soluiei vom utiliza dou semafoare i un mutex "#ienLi R un semafor ce contorizeaz clienii ce ateapt1 $*r$ier R un semafor care arat dac brbierul este ocupat sau nu1 el are dou valori! F dac brbierul este ocupat i 9 dac este liber1 m1tex" R un mutex folosit pentru excludere mutual1 arat dac scaunul de frizerie este ocupat sau nu. De asemenea mai folosim o variabil "#ienLi0na'teptare care! aa cum arat i numele! numr clienii care ateapt. -ceast variabil trebuie introdus deoarece nu exist o cale de a citi valoarea curent a semafoarelor i de aceea un client care intr n prvlie trebuie s numere clienii

61 Sisteme de operare care ateapt. Dac sunt mai puini dect scaunele! se aeaz i el i ateapt1 dac nu! prsete frizeria. & descriem algoritmul . 4nd brbierul intr dimineaa n prvlie! el execut funcia $*r$ier()! blocnd semaforul "#ienLi care este iniial pe zero. -poi se culc i doarme pn vine primul client. 4nd acesta sosete! el execut funcia "#ienLi() i ocup m1tex1# care arat c scaunul de frizerie este ocupat. Dac intr un alt client n acest timp! el nu va putea fi servit deoarece m1tex1# este ocupat. Aa numra clienii care ateapt i! dac numrul lor e mai mic dect numrul scaunelor! va rmne! dac nu! va prsi prvlia. ,mnnd! va incrementa variabila "#ienLi0na'teptare. 4nd clientul care este servit a fost brbierit! el elibereaz mutexul! trezind clienii care ateapt i unul din ei va ocupa m1tex1#, fiind servit la rndul su. Iat mai "os implementarea acestui algoritm.

Odefine s"a1ne H! tNpe def int semafor; tNpe def int m1tex ; semafor "#ienti=!;

/Sse define'te n1m*r1# de s"a1neS/ /Sde"#araLii 'i iniLia#iM*riS/

semafor $*r$ier=!; m1tex"= ; int "#ientiinasteptare=!; void $*r$ier() @&(i#e( )@ &ait("#ienti); &ait(m1tex"); "#ientiinasteptare--; signa#($*r$ier); signa#(m1tex"); t1nde(); A void "#ienti() @&ait(m1tex"); if("#ientiinasteptare<s"a1ne) @"#ientiinasteptareBB; signa#("#ienti); signa#(m1tex");

62

Sorin Adrian Ciureanu "#ientt1ns(); A e#se signa#(m1tex");AA

0.0.,. Pro>le(a &ititori2!&riitori


$roblema a fost enunat de 4outois! 5eSmans i $arnas n 9LP9. .n obiect /care poate fi o resurs! de exemplu un fiier sau o zon de memorie0 este parta"at de mai multe procese concurente. Dintre aceste procese! unele doar vor citi coninutul obiectului parta"at i aceste procese poart numele de cititori iar celelalte vor scrie n coninutul obiectului parta"at! purtnd numele de scriitori. 4erina este ca scriitorii s aib acces exclusiv la obiectul parta"at! n timp ce cititorii s poat accesa obiectul n mod concurent /neexclusiv0. (xist mai multe posibiliti de a soluiona aceast problem. Aom aminti dou variante. *arianta 1 Nici un cititor nu va fi inut n ateptare! dect dac un scriitor a obinut de"a permisiunea de acces la obiectul parta"at. *a un acces simultan la obiectul parta"at! att al scriitorilor ct i al cititorilor! cititorii au prioritate. *arianta " 4nd un scriitor este gata de scriere! el va executa scrierea ct mai curnd posibil. *a un acces simultan! scriitorii sunt prioritari. +ricum! n ambele cazuri! problema principal ce trebuie rezolvat este nfometarea! adic ateptarea la infinit a obinerii dreptului de acces. & implementm un program pentru prima variant! folosind urmtoarele semafoare! mutexuri i variabile s"rie R un semafor cu mai multe roluri1 el asigur excluderea mutual a scriitorilor1 este folosit de ctre primul cititor care intr n propria seciune critic1 de remarcat c acest semafor nu este utilizat de cititorii care intr sau ies din seciunea critic n timp ce ali cititori se afl n propria seciune critic1 "ontor"itire R o variabil care are rolul de a ine evidena numrului de procese existente n cursul citirii1 sem"ontor un semafor care asigur excluderea mutual cnd este actualizat variabila "ontor"itire.

63 Sisteme de operare Dac un scriitor este n seciunea critic i n cititori ateapt! atunci un cititor ateapt la semaforul s"riere iar ceilali n%9 ateapt la sem"ontor. *a signa#(s"rie)! se poate relua fie execuia unui singur scriitor! fie a cititorilor aflai n ateptare! decizia fiind luat de planificator. Iat implementarea programului pentru prima variant tNpedef int semafor; /Sde"#araLii 'i initia#iM*riS/ int "ontor"itire=!; semafor s"rie= ,sem"ontor= ;

void s"riitor() @&ait(s"rie) ; s"riereo$ie"t() ; signa#(s"rie) ;A void "ititor() @&ait(sem"ontor) ; "ontor "itireBB; if("ontor"itire== )&ait(s"rie);/Sprim1# "ititorS/ signa#(sem"ontor); "itireo$ie"t(); &ait(sem"ontor); "ontor "itire--; if("ontor"itire==!)signa#(s"rie);/S1#tim1# "ititorS/ signa#(sem"ontor);A

0.0.0.

Pro>le(a &inei filo-ofilor &'ine-i

4inci filozofi chinezi i petrec viaa gndind i mncnd n "urul unei mese circulare ncon"urat de cinci scaune! fiecare filozof ocupnd un scaun. =n centrul mesei este un platou cu orez i n dreptul fiecrui filozof se afl o farfurie. =n stnga i n dreapta farfuriei cte un beior. Deci! n total! cinci farfurii i cinci beioare. .n filozof poate efectua dou operaii gndete sau mnnc. $entru a putea mnca! un filozof are nevoie de dou beioare! unul din dreapta i unul din stnga. Dar un filozof poate ridica un singur beior odat. $roblema cere o soluie pentru aceast cin.

64

Sorin Adrian Ciureanu 8 9 ; ; @ < < Fi . 0.9. Pro>le(a filo-ofilor &'ine-i.

'rebuie rezolvate dou probleme ma"ore %Interblocarea care poate s apar. De exemplu! dac fiecare filozof ridic beiorul din dreapta sa! nimeni nu mai poate s%l ridice i pe cel din stnga i apare o situaie clar de ateptare circular! deci de interblocare. %$roblema nfometrii unui filozof care nu apuc s ridice niciodat cele dou beioare. -ceast problem a fost enunat i rezolvat de ctre Di"Jstra n 9L?@. (xist multe soluii ale acestei probleme! marea ma"oritate utiliznd excluderea mutual. $entru a nu aprea interblocarea se folosesc! n general! soluii de prevenire a acesteia adic se impun unele restricii n ceea ce privete aciunile filozofilor! cum ar fi %unui filozof i se permite s ia un beior numai atunci cnd ambele beioare! din dreapta i din stnga sa! sunt disponibile1 %se creeaz o coresponden biunivoc ntre mulimea numerelor naturale i filozofi! fiecare filozof avnd un numr natural1 o soluie asimetric impune filozofilor cu numr impar s apuce mai nti beiorul din stnga i apoi pe cel din dreapta! iar filozofilor cu numr par s ia mai nti beiorul din dreapta i apoi pe cel din stnga. Aom prezenta! n continuare! o soluie clasic a acestei probleme! care rezolv i situaia interblocrii i pe cea a nfometrii. =n acest algoritm! se poate generaliza problema pentru n filozofi. &e urmrete n ce stare poate fi un filozof! existnd trei stri posibile mnnc! gndete i este nfometat.

65 Sisteme de operare .nui filozof i se permite s intre n starea GmnncH numai dac cel puin unul din vecinii si nu este n aceast stare. $rin aceast restricie se previne interblocarea. $entru implementare! se utilizeaz urmtoarele structuri stareFnC un vector n%dimensional! n care pe poziia i se gsete starea filozofului la un moment dat1 aceasta poate fi F pentru starea GgndeteH 9 pentru starea GnfometatH 8 pentru starea GmnncH semFnC R un vector n%dimensional! n care semFiC este un semafor pentru filozoful i1 m1texfi# R un mutex pentru excludere mutual1 funcia fi#oMof(i) R este funcia principal care coordoneaz toate celelalte funcii i care se refer la filozoful i1 funcia ridi"*$eLi'or(i) R este funcia care asigur pentru filozoful i ridicarea ambelor beioare1 funcia p1ne$eLi'or i R este funcia care asigur pentru fiecare filozof i punerea ambelor beioare pe mas1 funcia test(i) R este funcia care testeaz n ce stare este filozoful i.

Implementarea este Odefine n T Odefine stang(iBn- )Qn Odefine drept(iB )Qn Odefine gandeste ! Odefineinfometat Odefine manan"a H tNpedef int semafor; tNpedef int m1tex; int stareFnC; m1tex m1texfi#= semafor semFnC; /Sam definit n1m*r1# de fi#oMofiS/ /Sn1m*r1# ve"in1#1i din st?nga fi#oMof1#1i iS/ /Sn1m*r1# ve"in1#1i din st?nga fi#oMof1#1i iS/

66

Sorin Adrian Ciureanu

void fi#oMof(int i) &(i#e(i) @ gandeste(); ridi"a$etisor(i); manan"a(); p1ne$etisor(i);

/Sfi#oMof1# i g?nde'teS/ /Sfi#oMof1# i ridi"* "e#e do1* $eLi'oareS/ /Sfi#oMof1# i m*n?n"*S/ /Sfi#oMof1# i p1ne pe mas* do1* $eLi'oareS/

void ridi"a$etisor(int i) @&ait(m1texfi#); /Sse intr* 0n regi1nea "riti"*S/ stareFiC=infometat; /Sfi#oMof1# i este 0n starea 0nfometatS/ test(i); /S0n"ear"* s* a"apareMe "e#e do1* $eLi'oareS/ signa#(m1texfi#); /Sse iese din regi1nea "riti"*S/ &ait(semFiC);A /Spro"es1# se $#o"(eaM* da"* n1 se pot #1a "e#e do1* $eLi'oareS/ void p1ne$etisor(int i) @&ait(m1texfi#); stare FiC=gandeste; test(stang); /Sse intr* 0n regi1nea "riti"*S/ /Sfi#oMof1# i a terminat de g?nditS/ /Sse testeaM* da"* ve"in1# din st?nga fi#oMof1#1i i m*n?n"*S/ /Sse testeaM* da"* ve"in1# din dreaptafi#oMof1#1i i

test(drept);

6 Sisteme de operare m*n?n"*S/ signa#(m1texfi#); /Sse iese din regi1nea "riti"*S/ A

void test(int i); @if stare FiC== infometatRRstareFstangCU= manan"aRRstareFdreptCU= manan"a) @stareFiC=manan"a; signa#(semFiC);AA

0.0.5.

Pro>le(e propu!e pentru i(ple(entare

%.%.5.1. Pro+lema rezer&!rii +iletelor (nun #iecare terminal al unei reele de calculatoare este plasat ntr%un punct de vnzare a biletelor pentru transportul feroviar. &e cere s se gseasc o modalitate de a simula vnzarea biletelor! fr a vinde dou sau mai multe bilete pentru acelai loc. ,ezolvare (ste cazul n care mai multe procese /vnztoarele de bilete0 ncearc s utilizeze n mod concurent o resurs neparta"abil! care este o resurs critic /locul din tren0. $roblema se rezolv utiliznd excluderea mutual iar pentru implementarea ei cea mai simpl metod este folosirea semafoarelor. %.%.5.2. Pro+lema gr!dinii ornamentale

(nun Intrarea n grdinile ornamentale ale unui ora oriental se face prin n pri. & se in evidena persoanelor care au intrat n grdin. ,ezolvare #iecare poart de intrare n grdin este o resurs care trebuie accesat exclusiv de un proces / o persoan care intr n grdin0 .

6!

Sorin Adrian Ciureanu Dac! la un moment dat! pe una din pori intr o persoan! atunci! n acel moment! pe nici o alt poart nu mai intr vreo persoan n grdin. -ceast problem face parte din problema excluderii reciproce. %.%.5.3. Pro+lema emi!tor-receptor

(nun .n emitor emite succesiv mesa"e! fiecare dintre ele trebuind s fie recepionate de toi receptorii! nainte ca emitorul s emit mesa"ul urmtor. &oluie (ste o aplicaie de tipul client%server. =n acest tip de aplicaii! un proces server este un proces ce ofer servicii altor procese din sistem iar un proces client este unul care solicit servicii de la server i le consum. Dac procesele client i server nu sunt pe acelai calculator! atunci aceast aplicaie este distribuit. Implementarea ei! cel mai adesea utilizat n sistemele multicalculator! se face prin transmisie de mesa"e.

Sisteme de operare

6"

Capitolul 5 .ESTIONAREA MEMORIEI


&istemele de operare actuale folosesc multiprogramarea ceea ce nseamn c! la un moment dat! n memorie se pot afla mai multe programe. $roblema esenial pe care trebuie s o rezolve un sistem de operare este ca un program! pentru a putea fi executat! s aib codul executabil i datele rezidente n memorie. &+ trebuie s partiioneze memoria! ca s permit utilizarea ei simultan de ctre mai multe programe. De asemenea trebuie s asigure mecanisme de protecie pentru ca programele s poat coexista n memorie n bune condiiuni. =ntre hardul pe care l pune la dispoziie un sistem de calcul i sarcinile sistemului de operare exist o grani foarte flexibil n ceea ce privete gestiunea memoriei . De%a lungul anilor! hardul a nglobat n componena sa multe din funciile pe care le avea sistemul de operare. =n capitolul de fa! vom prezenta sarcinile principale ale &+! preciznd totui ce faciliti ofer hardul actual.

5.1. IERAR:II DE MEMORIE


$rincipalele elemente hard care intr ntr%un sistem de memorie sunt %registrele generale ale procesorului1 %memoria 4-45(1 %memoria principal1 %memoria secundar. =n memoria intern a unui computer intr memoria principal i memoria 4-45( iar memoria e)tern este format din memoria secundar / hard disJ! flopS disJ! 4D%,+) etc0. $arametrii principali ai unei memorii sunt % timpul de acces la memorie /timp necesar pentru operaia de citire a memoriei01 % capacitatea memoriei.

Procesor

registre generale

;emorie principal6.0;7

;emorie secundar64ard disc7

;emoria cac4e

Sorin Adrian Ciureanu

Fi .5.1. S&'e(a prin&ipal 'ar) a unui !i!te( )e (e(orie. *a ora actual! exist urmtoarele categorii de memorie % memorii rapide. % memorii lente. % memorii foarte lente. )emoriile rapide au un timp de acces foarte mic1 din punct de vedere tehnologic sunt memorii statice i cu un cost ridicat pe unitatea de memorie. &e utilizeaz pentru registrele generale ale unitii centrale i pentru memoria 4-45(. )emoriile lente au un timp de acces mai mare! din punct de vedere tehnologic sunt realizate ca memorii dinamice i au un cost pe unitatea de memorie mult mai mic dect al memoriilor rapide. &e utilizeaz pentru memoria principal. )emoriile foarte lente au timp de acces foarte mare n comparaie cu celelalte tipuri! i! bineneles! un cost mult mai mic pe unitatea de memorie. (ste cazul hard discurilor. + ierarhie de memorie este un mecanism! transparent pentru utilizator! prin care &+ acioneaz aa fel nct! cu o cantitate ct mai mic de memorie rapid i cu o cantitate ct mai mare de memorie lent i foarte lent! s lucreze ca i cum ar avea o cantitate ct mai mare de memorie rapid. $artea din &+ care gestioneaz ierarhia de memorie are ca sarcin s urmreasc ce pri de memorie sunt n uz i ce pri nu sunt folosite! s aloce memorie proceselor care au nevoie i s o dealoce cnd nu mai este necesar! s coordoneze schimbul ntre memoria principal i disc cnd memoria principal este prea mic pentru a conine toate procesele.

5.". OPTIMIE;RI $N $NC;RCAREA @I ECECUIA UNUI PRO.RAM $N MEMORIE

1 Sisteme de operare (xist unele optimizri ale sistemelor de operare! legate de ncrcarea i execuia unui program n memorie +ncrcarea dinamic. +suprapuneri (o"erlay+uri). +legarea dinamic (.dll n /I0&1/S, .so n '0I2).

5.".1. $n&r&area )ina(i&


=ncrcarea dinamic este ncrcarea rutinelor n memoria principal numai atunci cnd este nevoie de ele. =n acest mod sunt aduse n memorie numai rutinele apelate! rutinele neutilizate nu vor fi ncrcate niciodat. .n astfel de exemplu este un program de dimensiune foarte mare care conine multe rutine de tratare a erorilor! /rutine foarte mari0! erorile tratate fiind foarte rare. Desigur aceste rutine nu vor fi ncrcate n memorie. 'rebuie remarcat c mecanismul de ncrcare dinamic nu este implementat n &+! el fiind o sarcin a utilizatorului.

5.".". O+erlaI%uri
+verlaS%urile furnizeaz un mod de scriere a programelor care necesit mai mult memorie dect memoria fizic! cu alte cuvinte a programelor de mari dimensiuni. *a fel ca i n cazul ncrcrii dinamice! nu este o sarcin a sistemului de operare ci a utilizatorului. -cesta trebuie s partiioneze programul n buci mai mici i s ncarce aceste partiii n memorie aa fel ca programul s nu aib de suferit n execuie. Desigur o astfel de programare este complex! dificil. (a se utiliza n &+ mai vechi.

5.".,. #e area )ina(i&


*egarea dinamic este utilizat n sistemele de operare de tip 2IND+2& sau +&78 ! pentru fiierele cu extensia ^dll sau n .NI3 ! n bibliotecile cu extensia ^so. 4onform acestui mecanism rutinele nu sunt incluse n programul obiect generat de computer! legarea subrutinelor fiind amnat pn n momentul execuiei programelor. 4a tehnic! se folosete un stu care! apelat! este nlocuit cu rutina respectiv ce se i execut. ,olul sistemului de operare este s vad dac rutina este n memorie i dac nu s o ncarce. In acest mod se realizeaz o bun parta"are a codului. 'rebuie menionat c

Sorin Adrian Ciureanu %programul nu funcioneaz dac ^dll%urile necesare nu sunt prezente n sistem1 %programul depinde de versiunea ^dll%urilor.

5.,. A#OCAREA MEMORIEI


-locarea memoriei este efectuat de ctre alocatorul de memorie care ine contabilitatea zonelor libere i ocupate din memorie! satisface cererea pentru noi zone i reutilizeaz zonele eliberate. -locarea memoriei se face ierarhic1 la baza acestei ierarhii se afl sistemul de operare care furnizeaz utilizatorilor poriuni de memorie iar utilizatorul! la rndul su! gestioneaz poriunea primit de la &+ dup necesitile sale.

5.,.1. Alo&area )e (e(orie 7n li(>aHe )e pro ra(are


(xist o clasificare a limba"elor de programare din punctul de vedere al alocrii de memorie 90%*imba"e care nu pot aloca memorie. (ste cazul limba"elor mai vechi /#ortran! 4obol0. In aceste limba"e! utilizatorul nu poate aloca dinamic memorie n momentul execuiei ci naintea execuiei programului. 80%*imba"e cu alocare i delocare explicit. -ceste limba"e permit utilizatorului s cear! pe parcursul execuiei! noi zone de memorie i s returneze memoria utilizat. (ste cazul funciilor ne& 'i free n $-&4-* i ne& 'i de#ete sau ma##o" 'i free din 4 i 4>>. ;0%*imba"e cu colectoare de gunoaie /garbage collection0. In aceste limba"e! utilizatorul nu specific niciodat cnd vrea s elibereze o zon de memorie. 4ompilatorul i o serie de funcii care se execut simultan cu programul deduc singure care dintre zone nu sunt necesare i le recupereaz. -vanta"ele acestui limba" sunt %utilizatorul este scutit de pericolul de a folosi zone de memorie nealocate! prevenind astfel apariia unor ug+uri . %exist sigurana c n orice moment! o zon de memorie utilizat nu este dealocat. Dezavanta"ele limba"ului %alocarea este impredictibil n timp1 %nu se poate ti dac zona de memorie utilizat va fi sau nu utilizat n viitor! deci este posibil ca un program s pstreze alocate zone de memorie care%i sunt inutile. -ceast tehnic de alocare este ntlnit n

3 Sisteme de operare limba"ele *isp i Cava. )enionm c ma"oritatea alocatoarelor din nucleele sistemelor de operare comerciale sunt de tipul 90 i 80. (xist i nuclee ale sistemelor de operare cu alocatoare de tipul ;0! cum ar fi sistemele )ach sau Digital.

5.,.". Cara&teri!ti&i ale alo&atoarelor


Aom prezenta cteva caracteristici ale alocatoarelor dup care se poate evalua calitatea acestora. 90%'imp de operaie. (ste timpul necesar unei operaii de alocare7dealocare. -cest timp depinde de tipul alocatorului! fiecare alocator trebuind s execute un numr de operaii pentru fiecare funcie. 4u ct memoria disponibil este mai mare cu att timpul de execuie a unui apel este mai mare. 80%#ragmentarea. + problem cu care se confrunt alocatoarele este faptul c aproape niciodat ele nu pot folosi ntreaga memorie disponibil! pentru c mici fragmente de memorie rmn neutilizate. -ceste pierderi apar n urma mpririi spaiului disponibil de memorie n fragmente neocupate n totalitate de programe. #ragmentarea poate fi fragmentare extern i fragmentare intern. #ragmentarea extern apare ori de cte ori exist o partiie de memorie disponibil! dar nici un program nu ncape n ea. &e demonstreaz c atunci cnd avem de%a face cu alocri de blocuri de mrimi diferite! fragmentarea extern este inevitabil. &ingurul mod de a reduce fragmentarea extern este compactarea spaiului liber din memorie prin mutarea blocurilor dintr%o zon n alta. #ragmentarea intern este dat de cantitatea de memorie neutilizat ntr%o partiie blocat / ocupat parial de un program0. $entru a nu avea fragmentare intern ideal ar fi ca fiecare program s aib exact dimensiunea partiiei de memorie n care este ncrcat! lucru aproape imposibil. ;0%4oncuren. -ceast caracteristic se refer la gradul de acces concurent la memorie. (ste cazul mai ales la sistemele cu multiprocesor! cu memorie parta"at. .n alocator bine scris va permite un grad mai ridicat de concuren! pentru a exploata mai bine resursele sistemului. <0%6rad de utilizare. $e lng faptul c memoria este fragmentat! alocatorul nsui menine propriile structuri de date pentru gestiune. -ceste structuri ocup un loc n memorie! reducnd utilizarea ei efectiv.

5.,.,. Tipuri )e alo&are a (e(oriei

Sorin Adrian Ciureanu =n sistemul de gestiune a memoriei exist dou tipuri de adrese %adrese fizice1 %adrese logice. -dresele fizice sunt adresele efective ale memoriei fizice. &e tie c pentru a adresa o memorie fizic cu o capacitate de n octei este necesar un numr de adrese egal cu log8n . -dresele logice! sau virtuale! sunt adresele din cadrul programului ncrcat. De obicei! n marea ma"oritate a alocatoarelor! n momentul ncrcrii unui program sau chiar al compilrii lui! adresele fizice coincid cu cele logice. =n momentul execuiei acestea nu mai coincid. 'ranslatarea adreselor logice n adrese fizice este executat de ctre hard:are%ul de mapare al memoriei. -locarea memoriei se poate face n dou feluri %alocare contigu1 %alocare necontigu. -locarea contigu nseamn alocarea! pentru un proces! a unei singure poriuni de memorie fizic! poriune continu1 /elemente contigue nseamn elemente care se ating spaial sau temporal0. -locarea necontigu nseamn alocarea! pentru un proces! a mai multor poriuni separate din memoria fizic. -locarea memoriei se mai face n funcie de cum este privit memoria. (xist dou tipuri de memorie memorie real i memorie "irtual. )emoria real const numai n memoria intern a sistemului i este limitat de capacitatea ei. )emoria virtual vede ca un tot unitar memoria intern i cea extern i permite execuia unui proces chiar dac acesta nu se afl integral n memoria intern.

5.,.0. S&'e(e )e alo&are a (e(oriei


(xist mai multe scheme de alocare de la foarte simple la foarte complexe. =n general! sunt de dou categorii %sisteme care transport procesele! nainte i napoi! ntre memoria principal i disc /s:apping i paging01 % sisteme care nu fac acest lucru / fr s:apping i paging0. a0%$entru sistemele cu alocare contigu! exist schemele %alocare unic. %alocare cu partiii fi)e / alocare static01

Sisteme de operare %alocaii cu partiii "aria ile /alocare dinamic01 %alocare cu s!apping. b0$entru sistemele cu alocare necontigu %alocare paginat /simpl sau la cerere01 %alocare segmentat /simpl sau la cerere01 %alocare segmentat+paginat /simpl sau la cerere0. 5.3.%.1..locare (nic!

a$ .locare (nic! c( o sing(r! partiie (ste un tip de alocare folosit n primele sisteme de operare care lucrau monouser. (ste cea mai simpl schem n care toat memoria intern este destinat sistemului de operare! fr nici o schem de administrare a memoriei. Desigur! ea ine de domeniul istoriei. +$ .locare (nic! c( do(! partiii =n acest tip de alocare exist dou partiii1 %partiie pentru sistemul de operare /nucleul01 %partiie pentru utilizator. (ste cazul sistemului de operare )&%D+&. $rincipalul dezavanta" const n faptul c nu se ofer soluii pentru multiprogramare. 5.3.%.2. .locare c( partiii fi#e "alocare static!$ )emoria este mprit static n mai multe partiii! nu neaprat de dimensiuni egale. =n fiecare partiie poate rula cel mult un proces! gradul de multiprogramare fiind dat de numrul partiiilor. De obicei! mprirea n partiii i dimensionarea acestora se face la nceput de ctre operator. $rogramele sunt ncrcate n memorie prin nite cozi de intrare. (ste posibil ca s existe o singur coad de intrare in memorie sau diferite cozi la diferitele partiii. Din coada de intrare un program intr n cea mai mic partiie destul de mare! ins! pentru a%l primi. &paiul neocupat de program n aceast partiie rmne pierdut i n acest fapt const dezavanta"ul schemei. (xista att fragmentare intern ct i fragmentare extern. -cest tip de alocare a fost utilizat de sistemul de operare &I,I& A! in sistemele de calcul #(*I3 4%8@?79F8<! sisteme care au existat i la noi n ar! n toate centrele de calcul. =n aceast alocare aprea pentru prima dat i un mecanism de protecie a memoriei care era asigurat de sistemul de chei de protecie (i chei de acces.

Sorin Adrian Ciureanu &istemul de memorie era mprit n pagini de 8X+ i fiecare pagin avea o cheie de protecie. -ceasta era pus printr%o instruciune cod%main a calculatorului. $entru ca un program s fie rulat ntr%o zon a memoriei! trebuia s fie prezentate cheile de acces pentru fiecare pagin utilizat. *a identitatea cheii de acces cu cea de protecie! se permitea accesul n pagina respectiv. (xistau i chei de acces care deschideau orice cheie de protecie /de exemplu cheia de acces zero0! precum i chei de protecie deschise de orice cheie de acces. 5.3.%.3. .locare c( partiii &aria+ile =n aceast alocare numrul! locaia i dimensiunea partiiilor variaz dinamic. Ne mai fiind fixat dimensiunea partiiilor! care pot fi ori prea mari ori prea mici fa de program! crete mult gradul de utilizare al memoriei. =n schimb se complic alocarea i dealocarea memoriei i urmrirea acestor operaii. 4nd se ncarc un proces n memorie! i se aloc exact spaiul de memorie necesar! din memoria liber crendu%se dinamic o partiie. 4nd se termin un proces! partiia n care a fost procesul devine memorie liber! ea unificndu%se cu spaiul de memorie liber existent pn atunci. $entru gestionarea unei astfel de alocri! sistemul de operare trebuie s aib dou tabele %tabela partiiilor ocupate1 %tabela partiiilor libere. $rincipala problem este alegerea unui spaiu liber1 aceast alegere trebuie fcut cu minimizarea fragmentrii interne i externe. (xist anumii algoritmi de alegere a spaiului liber. %##- /#irst #it -lgoritm0! prima potrivire. &e parcurge lista spaiilor libere care este ordonat cresctor dup adresa de nceput i se alege primul spaiu de dimensiune suficient. -cest algoritm este folosit n sistemul &+ )INI3! creat de 'annenbaum. %B#- /Best #it -lgoritm0 ! cea mai bun potrivire. &e parcurge lista spaiilor libere i se alege spaiul cu dimensiunea cea mai mic n care ncape programul. =n acest fel se minimizeaz fragmentarea intern. =n cazul n care lista spaiului liber este ordonat cresctor dup dimensiunea spaiilor libere! se alege evident primul spaiu liber. =n acest caz ##- i B#coincid. B#- este utilizat n &+ )&%D+&. %2#- /2orst #it -lgoritm0 ! cea mai proast potrivire. &e parcurge lista spaiilor libere ordonat cresctor dup dimensiune i se alege ultimul

Sisteme de operare spaiu din list. Din punct de vedere al vitezei i al gradului de utilizare al memoriei! ##- i B#- sunt superioare strategiei 2#-. 5.3.%.%. .locarea prin swapping =n acest tip de alocare! un proces! n ma"oritatea cazurilor n stare de ateptare! este evacuat temporar pe disc! elibernd memoria principal. ,eluarea execuiei procesului se face prin rencrcarea sa de pe disc n memoria principal. S!ap nseamn a face schimb i! ntr%adevr! este vorba de o schimbare de pe memoria principal pe una extern i napoi . $roblema principal n s:apping este ce procese sunt evacuate din memorie pe disc V (xist un algoritm bazat pe prioriti! numit ,ollout% ,ollin! conform cruia! la apariia unui proces cu prioritate ridicat! vor fi evacuate procesele sau procesul cu prioritatea cea mai sczut. + alt problem este la ce adres din memorie va fi readus procesul evacuat. De obicei! dac alocarea este static! procesul va fi readus n aceeai partiie din care a plecat. =n cazul alocrii dinamice! procesul va fi adus n orice loc al memoriei. $entru ca alocarea prin s:apping s aib eficien! este necesar ca memoria extern /hard discul0 s aib dou caracteristici o capacitate suficient de mare i un timp de acces foarte mic. 4apacitatea mare este necesar deoarece pe disc trebuie s se evacueze toate imaginile proceselor! numrul lor putnd a"unge! la un moment dat! foarte mare. 'impul de acces trebuie s fie foarte mic. =n caz contrar! costul s:appingului memorie disc poate deveni inconvenabil. + condiie esenial pentru micorarea costului este ca timpul de execuie al procesului s fie mult mai mare dect timpul de s:apping. 4nd un proces necesit date noi n timpul execuiei i! implicit! zone suplimentare de memorie. (ste situaia aa numitelor procese cu dimensiune variabil n timpul execuiei. Dac! datorit cererii suplimentare de memorie! se depete zona de memorie afectat procesului! atunci sistemul de operare trebuie s intervin. (xist urmtoarele posibiliti % s ncheie forat procesul care a formulat cerere de suplimentare a memoriei i s considere aceast cerere ca o eroare de execuie1 %s returneze decizia procesului! n sensul c acesta va decide dac i va ncheia activitatea sau o va continua strict n zona de memorie care i%a fost impus1 %n cazul alocrii dinamice! s evacueze procesul pe disc! i s atepte eliberarea unei zone de memorie satisfctoare pentru proces.

Sorin Adrian Ciureanu 'rebuie menionat c nc suntem n modul de alocare contiguu! deci spaiul de adresare al unui proces nu poate depi capacitatea memoriei interne.
;/;*.(/ P.(?&(P0@A Swapout 6e,acuare7 ;/;*.(/ S/&U?10.A

P1 P2

(maginea lui P /evacuare0 1 (maginea lui

P2

Pn

(maginea lui

Pn

P1 P2

Pn

Fi .5.". Me&ani!(ul !Fappin .

=n concluzie! putem spune c principalul avanta" al alocrii prin s:apping este faptul c se simuleaz o memorie mai mare dect cea fizic existent. $rincipalul dezavanta" este costul s:appingului care uneori poate fi destul de mare. )ecanismul de s:apping este redat n #ig.@.8.

5.0. PA.INAREA MEMORIEI


$aginarea este un tip de alocare necontiguu! aceasta nsemnnd c unui proces i poate fi alocat memorie oriunde! att n memoria intern ct i n cea extern! iar memoria alocat poate fi format din buci de memorie.

5.0.1. Suportul 'ar)Fare


)emoria fizic este mprit n blocuri de lungime fix! numite cadre de pagin /frames0 sau pagini fizice. *ungimea unui cadru este o

" Sisteme de operare putere a lui doi i este constant pentru fiecare arhitectur de sistem n parte. $entru Intel lungimea unui cadru este <X+. )emoria logic a unui proces este mprit n pagini logice sau pagini virtuale care sunt plasate n memoria secundar! pe hard disc. $entru execuia unui proces! paginile sale logice trebuie ncrcate n cadrele libere ale memoriei fizice! intr%un mod necontiguu. (videna cadrelor libere este inut de sistemul de operare. Bineneles! dac procesul are nevoie de n pagini logice! trebuie s se gseasc n cadre libere. -tt adresele fizice ct i cele logice sunt implementate n hard i ele conin %adresa fizicOnumr de cadru/f0>deplasament n cadru/d0 %adresa logicOnumr de pagini logice/l0>deplasament n pagina logic $rin mapare se nelege translatarea adresei logice n adres fizic. -ceast sarcin i revine sistemului de operare prin utilizarea ta elei de pagini. #iecare proces are o tabel de pagini n care n care fiecare pagin logic are adresa de baz a cadrului asociat ei. $entru translatare se folosete numrul de pagin drept index n tabela de pagini. =n schema din figura @.;. se vede corespondena ntre adresa logic i cea fizic prin intermediul tabelei de pagini.
0dresa logic0dresa +izic-

Babel- de pagini

;emoria +izic-

Fi .5.,. Core!pon)ena )intre a)re!a lo i& /i &ea fi-i&.

!#

Sorin Adrian Ciureanu

5.0.". I(ple(entarea ta>elei )e pa ini


$strarea tabelelor de pagini se face n a0%registrele hard1 b0%memoria principal1 c0%memoria hard special! de tip asociat. a0 &oluia de implementare a tabelelor de pagini n registrele unitii centrale este ! desigur ! foarte rapid dar i foarte scump! mai ales pentru un numr foarte mare de tabele. =n plus accesul la registre se face n mod privilegiat ceea ce! la un moment dat! poate constitui un impediment. b0 &oluia de implementare a tabelei de pagini n memoria principal presupune un cost mult mai sczut i de aceea este soluia cea mai des ntlnit. (a impune accese multiple la memorie1 mai nti trebuie accesat tabela de pagini pentru aflarea adresei fizice asociat adresei logice dorite1 apoi se acceseaz memoria fizic la adresa aflat pe baza translatrii. =n acest tip de translatare se folosete un 3egistru de 4az al ,a elei de %agin /,B'$0. -tunci cnd se dorete s se lucreze cu alt tabel de pagin dect cea curent! se ncarc ,B'$ cu noua valoare de pagin! reducndu%se n acest fel timpul de comutare. c0 + alt soluie de implementare este aceea n care se utilizeaz o memorie asociativ hard:are! de mic dimensiune. -ceasta folosete un set de registre asociative. #iecare registru are dou componente %cheie! n care se memoreaz numrul paginii logice1 %"aloare, n care se memoreaz numrul cadrului asociat. 4utarea ntr%o astfel de memorie asociativ se face n felul urmtor un element care trebuie gsit este comparat simultan cu toate cheile i unde se gsete coinciden se extrage cmpul valoare corespunztor. =n scopul utilizrii unei astfel de memorii asociative pentru tabela de pagin! se face urmtoarea coresponden %n cheie se memoreaz numrul paginii logice1 %n "aloare se memoreaz numrul cadrului asociat. -tunci cnd procesorul genereaz o adres logic! dac numrul de pagin logic coincide cu una din chei! numrul de cadru devine imediat disponibil i este utilizat pentru a accesa memoria. Dac numrul de pagin nu coincide cu nici una dintre chei! atunci! pentru aflarea numrului cadrului asociat! se face un acces la tabela de pagini din memoria intern. Informaia astfel obinut este utilizat pentru accesarea memoriei utilizator! ct i pentru a fi adugat n cadrul registrelor asociative! mpreun cu numrul de pagini asociat! ca s poat fi regsit rapid n cadrul unei referiri ulterioare.

!1 Sisteme de operare -lte mbuntiri ale implementrii tabelei de pagini folosesc a0%tabele de pagini pe nivele multiple1 b0%tabele de pagini inverse. a0 $entru un spaiu de adresare foarte mare! tabelele de pagini pot avea dimensiuni mari. De exemplu! pentru o memorie principal de < 6+ /8;8octei0! dac pagina are <X+! atunci o tabel de pagini are 9 milion de intrri. .na din tehnicile de reducere a dimensiunilor tabelei de pagini este utilizarea unei tabele de pagini pe nivele multiple. -ceasta echivaleaz cu mprirea tabelei de pagin n altele care s aib dimensiuni mai mici i unde cutarea s se fac ntr%un timp mai scurt. $ornind de la exemplul precedent! cu memoria principal de 8;8 octei! o adres logic arat astfel num-rul de pagin2# bii deplasament 12 bii

#iecare tabel de pagin are un milion de intrri. Dac partionm tabelul de pagin n < seciuni! fiecare seciune are 8@? X intrri iar o adres logic pentru o seciune arat astfel
num-rul de seciune 2 bii num-rul de pagin1! bii deplasament 12 bii

b0 + alt modalitate de reducere a dimensiunii tabelelor de pagini este folosirea ta elei de pagini in"ers. =n loc de a avea o intrare n tabel pentru fiecare pagin virtual! avem cte o intrare pentru fiecare cadru fizic. Deci n loc s se fac corespondena %pagin virtual Z cadru fizic se face o coresponden invers %cadru fizic Z pagin virtual. 4nd se translateaz o adres logic! se caut n tabela de pagini invers numrul paginii logice i se returneaz cadrul fizic corespunztor. =n acest mod se face o reducere a numrului de intrri n pagin dar cutarea are o vitez mai mic! deoarece trebuie cutat ntreaga tabel.

5.0.,. Con&lu-ii pri+in) pa inarea


$rincipalul avanta" al paginrii este eliminarea complet a fragmentrii externe. Nu dispare ns i fragmentarea intern! deoarece

!2

Sorin Adrian Ciureanu poate rmne un spaiu nefolosit dar alocat proceselor! fiindc dimensiunea proceselor nu este un multiplu exact al lungimii paginilor. .n alt avanta" al paginrii este posibilitatea de parta"are a memoriei. Dou sau mai multe pagini pot vedea aceeai zon de memorie ncrcnd paginile logice n acelai cadru fizic. &ingura soluie este ca n acel cadru fizic s fie memorat cod reentrant, adic un cod care nu se mai poate automodifica n timpul execuiei. Datorit proprietii de reentran ! este posibil ca dou sau mai multe procese s execute simultan acelai cod! fiecare proces pstrnd o copie a registrelor i a datelor proprii. =n memoria fizic este necesar s se pstreze o singur copie a codului comun! fiecare tabel de pagin indic spre acelai cadru! n timp ce paginile corespunztoare datelor proceselor sunt memorate n cadre diferite. .n dezavanta" al paginrii este faptul c fiecare acces la memorie presupune un acces suplimentar la tabela de pagini pentru calculul de adres.

5.0.0.

Se (entarea (e(oriei

&egmentarea reprezint o privire a memoriei din punctul de vedere al utilizatorului care percepe memoria nu ca pe o succesiune de cuvinte! aa cum este n realitate! ci ca pe o mulime de buci de memorie de diverse dimensiuni. -ceste segmente pot cuprinde programul principal! proceduri! funcii! stive! vectori! matrici etc. &egmentarea este o schem de administrare a memoriei n care programul este divizat n mai multe pri funcionale. &paiul logic de adresare al programului este i el mprit n segmente. #iecrui segment de memorie i corespunde o unitate funcional a programului. Program Program principal Cuncia 1 Cuncia 2 Procedura ;atrice 1 ;atrice 2 <ector ;emorie 4egment 4egment H 4egment K 4egment V 4egment T 4egment W 4egment X

Fi . 5.0. Prin&ipiul !e (entrii.

!3 Sisteme de operare #iecare segment are un nume i o dimensiune! deci %un nume %un deplasament. $rogramatorul vede spaiul virtual de adresare al programului ca un spaiu bidimensional! nu un spaiu unidimensional ca la programare.

5.0.5.

Se (entare pa inat

- fost introdus de sistemul de operare ).*'I4& al lui 'annenbaum i ncearc s mbine avanta"ele celor dou metode! de paginare i de segmentare. #iecare segment este mprit n pagini. #iecare proces are o tabel de segmente! iar fiecare segment are o tabel de mapare a paginilor. -dresa virtual se formeaz din segment! pagin i deplasament. -dresa fizic se formeaz din cadru de pagin i deplasament. =n segmentarea paginat se elimin dou dezavanta"e ale segmentrii pure alocarea contigu a segmentului i fragmentarea extern.

5.0.6.

Me(orie +irtual

-locarea prin memorie virtual are capacitatea de a aloca un spaiu de memorie mai mare dect memoria intern disponibil. $entru aceasta se utilizeaz paginarea sau segmentarea combinate cu s:appingul. )emoria virtual este o tehnic ce permite execuia proceselor chiar dac acestea nu se afl integral n memorie. )etoda funcioneaz datorit GlocalitiiH referinelor la memorie. Numai un subset din codul! respectiv datele! unui program sunt necesare la un moment arbitrar de timp. $roblema const n faptul c sistemul de operare trebuie s prevad care este subsetul dintr%un moment urmtor. $entru aceasta se apeleaz la principiul localitii /vecintii0! enunat de C.$.Denning n 9L?Q. -cest principiu are dou componente %localitate temporar R tendina de a accesa n viitor locaii accesate de"a n timp1 %localitate spaial R tendina de a accesa n viitor locaii cu adrese apropiate de cele accesate de"a. -locrile cele mai des utilizate n memoria virtual sunt %alocarea de tip paginare la cerere1 %alocarea de tip segmentare la cerere.

!4

Sorin Adrian Ciureanu 5.%.6.1. Paginare la cerere

$aginarea la cerere mbin tehnica de paginare cu tehnica s:apping. =n acest fel! paginile de pe harddisc sunt aduse n memorie numai cnd sunt referite, cnd este nevoie de ele. In acest mod se elimin restricia ca programul s fie n ntregime n memorie. =n figura @.@. se d o organigram a paginrii la cerere. -a cum se observ din organigram! dac referirea unei pagini este valid! adic dac adresa ei este corect! atunci primul lucru care se testeaz este bitul valid7nevalid. -cesta este implementat n tabelul de mapare a paginilor i dac este 9 nseamn c pagina se afl n memorie! dac este F pagina este pe hard disc i trebuie adus n memorie. Dac este zero! se declaneaz eroare de pagin! se genereaz o ntrerupere de pagin / $#I O $age #ault Interrupt0! de tip sincron! transparent pentru utilizator! cu o prioritate superioar.
.e+erire pagin- memorie

N. re+erin,alid/roare de accesare N./BI' A-*IDOF0

D-

DDit ,alid E1

/roare paginPagin- prezent- :n memorie 5i se acceseaz-

Se execut- PC(E Page Cault (nterrupt

.utin- de tratare a :ntreruperii

Fi . 5.6. Or ani ra(a pa inrii la &erere.

!5 Sisteme de operare =n acest moment se va ntrerupe execuia programului n curs iar sistemul de operare va lansa rutina de tratare a ntreruperii de pagin. -ceasta va cuta un spaiu liber i! dac exist! va plasa pagina n el. Dac nu! va trebui s aleag o rutin! adic un cadru ce va fi nlocuit.

N. /xist- cadru liber Se alege un cadru ,ictim- E cadrux

D-

Se plaseazpagina adus- de pe disc :n cadrul liber din memorie D-

N. Dit tranzitE1

Pagina e :n curs de :nc-rcare 5i se alege alt cadru ,ictim-

DDit dirtF cadruxE 1

N. /bit dirtSOF0

Pagina nu a +ost modi+icat- 5i nu trebuie sal,at- pe 4arddisc

Pagina a +ost modi+icat- 5i trebuie sal,at- pe 4arddisc Se alege un algoritm de :nlocuire a paginilorG @.U(?.UH C(C*

Politica de plasare :n memorieG IC0H CC0H DC0H DuddFJSFstem

Fi .5.9. Rutina )e tratare a 7ntreruperii )e pa in. &e testeaz! n continuare! bitul de tranzit al paginii rutin i dac este 9 se abandoneaz aceast pagin victim i se trece la alt victim. ,egula este ca n alegerea victimei s se evite o pagin n curs de ncrcare. -poi se testeaz bitul dirtS. -cesta este pus la F iniial la ncrcare i este

!6

Sorin Adrian Ciureanu setat la 9 ori de cte ori se face o modificare n pagin. Deci acest bit arat dac pagina a fost modificat sau nu la nivel de memorie. Dac nu a fost modificat! atunci nu are rost salvarea ei pe hard disc! unde exist de"a aceast pagin. Dac a fost modificat! atunci ea trebuie salvat pe hard disc. -legerea victimei se face conform unui algoritm de nlocuire iar plasarea n memorie conform unei anumite politici de plasare .

5.0.9. Al orit(i )e 7nlo&uire a pa inii


-lgoritmii de nlocuire a paginii au drept scop alegerea celei mai GbuneH victime. 4riteriul dup care se face aceast alegere este minimizarea ratei erorilor de pagin. 'eoretic! cel mai bun algoritm ar fi acela care alege victime dintre paginile care vor fi solicitate cel mai trziu. -cest lucru este greu de realizat deoarece evoluia unui program nu este previzibil i de aceea rspunsul nu poate fi prevzut uor. -u existat ncercri de determinare a paginilor care vor fi utilizate cel mai trziu. =n 9L??! *.-.BeladS a creat un algoritm statistic care ncerca! pe baze probabilistice! s rezolve aceast problem dar rezultatul algoritmului nu a fost dintre cele mai bune. =n continuare vom prezenta cei mai cunoscui astfel de algoritmi practici. 5.%.7.1. .lgoritm(l 0I08

(ste unul dintre cei mai simpli algoritmi! att ca idee ct i ca implementare. #iecrei pagini i se asociaz momentul de timp cnd a fost adus n memorie. &e realizeaz o structur de coad la care printr%un capt vor fi aduse noile pagini n memorie! n ordinea strict a sosirii lor! iar cellalt capt va fi pentru paginile victim. & lum un exemplu. #ie o situaie cu numrul de pagini virtuale @. &ecvena de alocare a paginilor @<;8@<9@<;89 ,ata erorilor de pagin este! pentru folosirea a trei cadre! de
r;O

L K = P@K 98 9F = Q;K 98

iar pentru folosirea a patru cadre


r< O

Sisteme de operare
&ecvena ; cadre @ @ % % < < @ % ; ; < @ 8 8 ; < @ @ 8 ; < < @ 8 9 9 < @ @ 9 < @ _ < 9 < @ _ ; ; 9 < 8 8 ; 9 9 8 ; 9 _

r ;OP@K

&ituaii de nenlocuire a paginilor < cadre

@ % % %

< @ % %

; < @ %

8 ; < @

&ituaii de nenlocuire a paginilor

8 ; < @ __

8 ; < @

9 8 ; <

@ 9 8 ;

< @ 9 8

; < @ 9

8 ; < @

9 8 ; <

r<OQ;K

=n aceste dou cazuri se observ c pentru utilizarea a ; cadre rata erorilor de pagin este P@K iar cnd sunt < cadre rata erorilor crete! fiind Q;K. Ne%am fi ateptat ca! odat cu creterea numrului de cadre rata erorilor de pagin s scad nu s creasc. -cest fapt este cunoscut ca anomalia lui BeladS i constituie unul din dezavanta"ele algoritmului #I#+. .n alt dezavanta" al acestui algoritm este faptul c o pagin frecvent utilizat va fi foarte des evacuat pe disc i rencrcat n memorie. 5.%.7.2. .lgoritm(l 32U "3east 2ecentl9 Used$

-lgoritmul *,. alege victima dintre paginile cele mai puin utilizate n ultimul timp. -lgoritmul se bazeaz pe presupunerea c pagina care a fost accesat mai puin ntr%un interval de timp va fi la fel de accesat i n continuare. Ideea este de a folosi localitatea temporar a programului. $entru implementare este necesar s se in evidena utilizatorilor paginilor i s se ordoneze paginile dup timpul celei mai recente referine la ele. 'eoretic! implementarea s%ar putea face cu o coad #I#+ n care o pagin accesat este scoas din coad i mutat la nceputul ei. 'otui aceast implementare este destul de costisitoare. $rincipalul avanta" al algoritmului *,. este faptul c el nu mai prezint anomalia lui BeladS. & lum exemplul anterior! folosit la algoritmul #I#+. &e observ c odat cu creterea numrului de cadre scade rata erorilor de pagin! deci anomalia BeladS nu mai apare. De asemenea este corectat i cellalt dezavanta" al algoritmului #I#+ i anume la *,. sunt avanta"ate paginile frecvent utilizate! care sunt pstrate n memorie! ne mai fiind necesar evacuarea pe disc. (xist mai multe feluri de implementare a algoritmului *,.

!!

Sorin Adrian Ciureanu a0 *,. cu contor de accese b0 *,. cu stiv c0 *,. cu matrice de referine.
&ecvena ; cadre @ @ % % < < @ % ; ; < @ 8 8 ; < @ @ 8 ; < < @ 8 9 9 < @ @ @ 9 < _ < < @ 9 _ ; ; < @ 8 8 ; < 9 9 8 ;

&ituaii de nenlocuire a paginilor < cadre

r;O

9F 98

O Q;K @ % % % < @ % % ; < @ % 8 ; < @ @ 8 ; < _ < @ 8 ; _ 9 < @ 8 @ 9 < 8 _ ; @ 9 < ; < 9 < _ 8 ; @ 9 9 8 ; @ _

r<O

&ituaii de nenlocuire a paginilor

P 98

O @QK

a0 *,. cu contor de accese se implementeaz hard. &e utilizeaz un registru general al unitii centrale pe post de contor. *a fiecare acces la memorie! contorul va fi incrementat. *a fiecare acces la o pagin! contorul este memorat n spaiul corespunztor acelei pagini n tabela de pagini. -legerea GvictimeiH const n cutarea n tabela de pagini o pagin cu cea mai mic valoare a contorului. b0 *,. cu stiv utilizeaz o stiv n care sunt pstrate numerele paginilor virtuale. 4nd este referit o pagin! este trecut n vrful stivei. =n felul acesta vom gsi GvictimaH la baza stivei. c0 *,. cu matrice de referine utilizeaz o matrice ptratic n% dimensional! binar /cu elemente F i 90! unde n este numrul de pagini fizice. Iniial matricea are toate elementele F. =n momentul n care se face o referin la pagina J! se pune 9 peste tot n linia J! apoi F peste tot n coloana J. Numrul de uniti /de 90 de pe o linie arat ordinea de referire a paginii. -legerea GvictimeiH se face n matrice1 indicele liniei cu cele mai puine cifre de 9! este numrul paginii fizice aleas ca GvictimH. 5.%.7.3. .lgoritm(l 30U " 3east 0re:(entl9 Used$ Aictima va fi pagina cel mai puin utilizat. 4a mod de implementare se folosete un contor de accese care se incrementeaz la fiecare acces de pagin dar care nu este resetat periodic ca

!" Sisteme de operare la *,.. GAictimaH va fi pagina cu cel mai mic contor. $rincipalul dezavanta" al acestei metode apare n situaia n care o pagin este utilizat des n faza iniial i apoi nu mai este utilizat de loc1 ea rmne n memorie deoarece are un contor foarte mare.

5.%.7.%..lgoritm(l real Paged 1aemon De obicei! sistemele de operare desemneaz un proces sistem responsabil cu implementarea i realizarea politicii de nlocuire a paginilor pentru memoria virtual. .n astfel de proces autonom care st n fundal i execut periodic o anumit sarcin se numete demon /)ae(on4. Demonul de paginare poart numele de pa e) )ae(on. -cesta pregtete sistemul pentru evacuarea de pagini nainte ca evacuarea s fie necesar. +binuit el este ntr%o stare dormant! fiind trezit de sistemul de operare atunci cnd numrul cadrelor libere devine foarte mic. Dintre principalele sale sarcini amintim %salveaz pe disc paginile cu bitul dirtS pe 9! efectund aa numita operaie de GcurireH a paginilor1 %utiliznd un algoritm sau o combinaie de algoritmi de nlocuire a paginilor! alctuiete o list ordonat pentru paginile ce vor fi GvictimeH1 %decide ct memorie s aloce pentru memoria virtual. 5.%.7.5. 0enomen(l de tras/ing -tunci cnd procesele folosesc mai mult timp pentru activitatea de paginare dect pentru execuia propriu zis se spune c are loc fenomenul de trashing. .n exemplu tipic este acela cnd un proces are alocat un numr mai mic de cadre dect i este necesar. -ceasta este o condiie necesar pentru apariia trashingului. Deoarece toate paginile sunt necesare pentru rularea programului! procesul va ncerca s aduc din memoria extern i restul paginilor necesare. Dac nu sunt cadre libere! este posibil ca victimele s fie chiar pagini ale procesului. $entru acestea se vor genera din nou cereri de aduceri n memorie i astfel se poate intra la un moment dat ntr%un cerc vicios! cnd procesul va face numai cereri de paginare! i nu va mai execut nimic din programul su. -cesta este! de fapt! trashingul. (xist mai multe modaliti de a evita trashingul. &e alege un algoritm de paginare care poate fi glo al sau local. -lgoritmii globali permit procesului s aleag pentru nlocuire orice cadru! chiar dac acesta este alocat altui proces.

"#

Sorin Adrian Ciureanu -lgoritmii locali impun fiecrui proces s foloseasc pentru selecie numai cadre din propriul set! numrul cadrelor asociate procesului rmnnd acelai. Dac se utilizeaz un algoritm local! fenomenul de trashing dispare! deoarece setul de pagini asociat unui proces n memorie este influenat numai de activitatea de paginare a procesului respectiv. 5.%.7.6. -oncl(zii pri&ind paginarea la cerere $rincipalele avanta"e ale paginrii la cerere sunt % programul este prezent doar parial n memorie1 %se execut mai puine operaii de intrare ieire1 %la un moment dat! este necesar o cantitate mai mic de memorie1 %crete mult gradul de multiprogramare1 %n programarea la cerere nu mai este nevoie ca programatorul s scrie overlaSurile! sarcina aceasta revenind sistemului de operare. $rincipalul dezavanta" este c mecanismul de gestiune a memoriei! att hard ct i soft! are o complexitate deosebit.

5.5. A#OCAREA SPAIU#UI #IBER. TIPURI DE A#OCATOARE 5.5.1. Alo&atorul &u 'ri )e re!ur!e
-cest alocator folosete un vector de structuri care descriu fiecare bloc liber. Iat un exemplu ce utilizeaz o hart a resurselor.
:arta re!ur!elor *ungime /baii0 9FF @F 8FF <FF 9FF @F

-dresa de nceput a blocului /hexa0 F ?< L? 9? ( ;#( <Q8

&ituaia blocului +cupat *iber +cupat +cupat *iber +cupat

Fi . 5. <. :arta re!ur!elor 7n alo&atorul &u 'art )e re!ur!e.

Sisteme de operare
:arta (e(oriei F ?< L?

"1

9?(

;#( <Q8

1a4
9?( 1>4 @B< 9FF

Fi . 5.J. :ri )e (e(orie 7n alo&atorul &u 'ri )e re!ur!e. =ntr%un alt mod de reprezentare! fiecare bloc liber conine lungimea blocului liber i adresa urmtorului bloc liber. -stfel! blocurile libere sunt inute ntr%o structur de list simplu nlnuit. 4nd alocatorul vrea s gseasc un bloc liber! pleac de la adresa primului bloc liber i parcurge lista de blocuri libere pn gsete unul de dimensiune corespunztoare. $entru exemplul anterior! harta memoriei arat ca in figura @.L./b0. -cest tip de alocare! cu hri de resurse! este simplu dar destul de ineficient. Din cauza fragmentrii! complexitatea operaiilor este mare. (ste posibil ca! dup un anumit timp! lista de blocuri s conin foarte multe blocuri mici a cror traversare s fie inutil i foarte costisitoare.

5.5.". Alo&atorul &u puteri ale lui "


*a alocatorul prezentat anterior! cel cu hri de resurse! principalul dezavanta" este dat de cutarea unui bloc de dimensiune potrivit printre blocurile libere. $entru a contracara acest lucru! o soluie este de a crea blocuri de dimensiuni diferite! cresctoare ca lungime! care s prezinte o

"2

Sorin Adrian Ciureanu ofert mai bun n cutare. =n acest sens se poate impune ca dimensiunea unui bloc s fie o putere a lui 8! deci ca un bloc s aib 8J octei. 'ehnica de alocare este urmtoarea dac dimensiunea unei cereri de alocare nu este o putere a lui 8! atunci se aloc o zon a crei dimensiune este puterea imediat superioar a lui 8! cu alte cuvinte! dac cererea de alocare are dimensiunea cuprins ntre 8J i 8J>9! se alege zona cu dimensiunea 8J>9. )etoda se mai numete i metoda n"umtirii! pentru c! practic! dac exist o cerere de alocare de dimensiunea 8J i aceasta nu exist! atunci se alege o zon liber de dimensiune 8 J>9! mai mare /dubl0! care este mprit n dou pri egale. Dup un numr finit de astfel de operaii se obine o zon cu dimensiunea dorit i alocarea este satisfcut. Implementarea acestei metode este asemntoare cu cea precedent cu meniunea c pentru alocatorul cu puteri ale lui 8 exist liste separate pentru fiecare dimensiune 8J pentru care exist cel puin o zon liber. )ai trebuie menionat faptul c! atunci cnd dou zone nvecinate de dimensiune 8J devin libere! ele sunt regrupate pentru a forma o singur zon liber de dimensiune 8J>9 . De aici i numele de metoda camarazilor.

5.5.,. Alo&atorul Fi>ona&&i


-cest alocator este asemntor cu alocatorul cu puteri ale lui 8! dar n loc s divizeze o zon liber n dou subzone egale! o mparte n alte dou de dimensiuni diferite. *a fel ca n irul lui #ibonacci! o zon ai este ai 3 ai%1 K ai%" 4nd un proces i termin execuia ntr%o zon ocupat! aceasta devine liber i pot aprea urmtoarele situaii %zona eliberat se afl ntre dou zone libere i atunci cele trei zone se regrupeaz ntr%o singur zon liber1 %zona eliberat se afl ntre o zon liber i una ocupat i atunci se unesc cele dou zone libere1 %zona eliberat se afl ntre dou zone ocupate i atunci zona eliberat este adugat listelor zonelor disponibile.

5.5.0. Alo&atorul Garel! LM&Mu!i&M


-cest alocator a fost construit n 9LQQ i este o variant mbuntit a alocatorului cu puteri ale lui 8. )etoda are avanta"ul c elimin risipa pentru cazul blocurilor care au dimensiuni exact puteri ale lui 8. (xist dou mbuntiri ma"ore.

"3 Sisteme de operare a0 Blocurile ocupate i reprezint lungimea ntr%un vector mare de numere vTJUOt ! ceea ce nseamn c pagina J are blocuri de dimensiunea t! unde t este o putere a lui 8. De exemplu vectorul v 9? 9F8< @98 ;8 9? ?<

=n acest exemplu! pagina ; are blocuri de @98 octei! pagina ? are blocuri de ?< octei etc. b0 + alt mbuntire este modul de calcul al rotun"irii unei puteri a lui 8. &e utilizeaz operatorul condiional din 4 /expresie 91 expresie 81 expresie ;10. Nu se folosesc instruciuni ci numai operatori i n felul acesta crete viteza de execuie. -cest alocator a fost utilizat pentru BD& .NI3.

5.5.5. Alo&atorul N!la>O


-locatorul GslabH este inspirat din limba"ele orientate pe obiecte. -re zone de memorie diferite pentru obiecte diferite! formnd un fel de mozaic! de unde i numele GslabH care n englez nseamn lespede. Iat cteva particulariti ale acestui alocator % alocatorul ncearc! cnd caut zone noi! s nu acceseze prea multe adrese de memorie pentru a nu umple cache%ul microprocesorului cu date inutile1 spunem c alocatorul este de tip !(all foot print 1urm mic0. % alocatorul ncearc s aloce obiecte n memorie astfel nct dou obiecte s nu fie n aceeai linie n cache%ul de date1 %alocatorul ncearc s reduc numrul de operaii de iniializare asupra noilor obiecte alocate. -locatorul GslabH const dintr%o rutin central care creeaz alocatoare pentru fiecare obiect. ,utina primete ca parametri numele obiectului! mrimea obiectului! constrngerile de aliniere i pointere pentru o funcie construit i o funcie destinatar. #iecare alocator are propria lui zon de memorie n care exist numai obiecte de acelai tip. -stfel exist o zon de pagini numai cu fiiere! o zon de pagini numai cu date! etc. 'oate obiectele dintr%o zon au aceeai dimensiune. #iecare alocator are o list de obiecte care au fost de curnd dealocate i le refolosete atunci cnd i se cer noi obiecte. Deoarece obiectele au fost dealocate! nu mai trebuie iniializate din nou. -tunci cnd un alocator nu mai are memorie la dispoziie! el cere o nou pagin n care scrie obiecte noi. $entru c obiectele nu au fost

"4

Sorin Adrian Ciureanu niciodat iniializate ! alocatorul cheam constructorul pentru a iniializa un nou obiect.
0locatorul de +i5iere 0locatorul de noduri

liber

obiect +i5ier alocat

liber

Pagina # cu obiecte +i5ier

liber

liber

Pagina 1 cu obiecte +i5ier

Fi 5.1P. Alo&atorul N!la>O. #iecare obiect are propriul lui alocator care are n paginile sale obiecte alocate i libere. =n fiecare pagin! primul obiect alocat ncepe la alt adres! pentru a ncrca uniform liniile din cache%ul microprocesorului. #iecare pagin mai posed anumite structuri de date! folosite n acest scop! ca !de exemplu! lista dublu nlnuit a tuturor paginilor pentru un anumit obiect. #iecare alocator folosete propriile lui pagini la fel ca alocatorul cu puteri ale lui 8. *a sfritul unei pagini alocatorul rezerv o zon pentru o structur de date care descrie cum este acea pagin ocupat. $rimul obiect din pagin este plasat la o distan aleatoare de marginea paginii1 acest plasament are efectul de a pune obiecte din pagini diferite la adrese diferite. -locatorul GslabH poate returna sistemului de paginare paginile total nefolosite. (l are o urm mic deoarece ma"oritatea cererilor acceseaz o singur pagin. -cest tip de alocator risipete ceva resurse datorit modului de plasare n pagin i pentru c are zone diferite pentru fiecare tip de obiect. -locatorul slab este utilizat n sistemul de operare &olaris 8.<.

5.6.

.ESTIUNEA MEMORIEI $N UNE#E SISTEME DE OPERARE

5.6.1. .e!tiunea (e(oriei 7n #inu8


=n .NI3 gestiunea memoriei a cunoscut diferite variante n funcie de versiunea cu care se lucra. =n primele versiuni! nainte de versiunea

"5 Sisteme de operare ;B&D /BerJeleS &Sstem Distribution0! gestiunea memoriei se baza pe s:apping. 'ransferul din memorie pe hard disc este pornit n momentul n care nucleul rmne fr memorie datorit urmtoarelor evenimente %crearea unui proces prin apelul fork(); %mrirea segmentului de date1 %epuizarea spaiului unei stive. Aictima este aleas dintre procesele n starea blocat sau! dac acestea nu exist! dintre procesele cu un timp rezident n memorie foarte mare. &:apperul intr n funciune la fiecare cteva secunde. (xist dou feluri de schimbri uoare i grele. .n schimb uor este un schimb n care exist suficient memorie liber i nu se evacueaz nici un proces din memorie nspre disc. .n schimb greu este un schimb n care nu exist suficient memorie liber i trebuie evacuate procese. $entru a preveni un s:apping cu o rat prea mare se impune ca un proces s petreac obligatoriu n memorie un timp de cteva secunde. =n ceea ce privete implementarea s:appingului! blocurile libere din memorie sunt inute ntr%o list dublu nlnuit iar algoritmul de cutare este de prim potrivire /first fit0. =ncepnd cu versiunea <B&D! s%a implementat gestiunea de memorie bazat pe paginare. Demonul care se ocup cu paginarea este procesul 8 /procesul F este s:appingul iar procesul 9 este INI'0 i este lansat periodic. $rincipala sa sarcin este de a vedea cte pagini libere exist la un moment dat. Dac acest numr este prea mic! el pornete o aciune de eliberare a paginilor. )emoria este format din trei pri %nucleul! rezident n memorie i niciodat eliminat1 %punerea n coresponden principal, rezident n memorie i niciodat eliminat1 %cadre de pagin, coninnd cod! date! stiv! tabel de pagini! lista paginilor libere etc. $unerea n coresponden principal conine informaii despre coninutul cadrelor de pagini. Intrarea F descrie cadrul de pagin F! intrarea 9 descrie cadrul de pagin 9 .a.m.d. Dac se utilizeaz cadre de 9XB i intrarea de 9? octei atunci se folosesc n "ur de 8K din memorie pentru punerea n coresponden principal. $rimele dou cmpuri /figura @.990 sunt utilizate numai cnd cadrul de pagin corespunztor se afl pe lista cadrelor libere. .rmtoarele trei cmpuri sunt utilizate n momentul n care cadrul de pagin conine

"6

Sorin Adrian Ciureanu informaii. Deoarece fiecare pagin din memorie are o adres de disc unde va fi stocat n momentul n care este eliminat! aceste cmpuri sunt folosite pentru a localiza aceast adres. .rmtoarele trei cmpuri sunt utilizate n tabela de procese! pentru procesul care deine pagina i anume indic n ce segment este i unde este localizat n cadrul acelui segment. .ltimul cmp reprezint civa dintre indicatorii folosii de algoritmul de paginare.
.tilizate pentru cadre libere Bitul de fixare n memorie

)emorie principal 4adru de pagin n bnpagin

=nregistrarea din maparea principal Indexul urmtoarei nregistrri Indexul nregistrrii precedente Numrul blocului pe disc

4adru de pagin " bnpagin 4adru de pagin 1 bnpagin

Numrul dispozitivului disc ,ezumatul blocului Index n tabloul de procese 4od 7 Date 7 &tiv +fset n cadrul segmentului

=n tranzit

Nucleu

*iber

=nregistrri n maparea principal /cte una pentru fiecare cadru de pagin0

Fi . 5.11. Punerea 7n &ore!pon)en prin&ipal la +er!iunea 0 BSD UNIC. 4nd un proces este lansat! dac una din paginile utilizate la proces nu se afl n memorie! se declaneaz rutina de defect de pagin. -ceasta selecteaz primul cadru de pagin din lista de cadre libere. Dac lista de cadre libere este goal! atunci procesul este suspendat pn cnd demonul de pagin elibereaz un cadru. Al orit(ul )e 7nlo&uire a pa inilor este rulat de demonul de pagin la fiecare 8@F ms. Demonul verific dac numrul de cadre libere

Date

" Sisteme de operare este cel puin egal cu un parametru! numit lotsfree, care de obicei este setat la un sfert din capacitatea memoriei. Dac nu sunt suficiente pagini libere! atunci demonul ncepe activitatea de transfer a paginilor pe disc. =n primele versiuni .NI3 se utiliza algoritmul ceasului precum i o variant mbuntit a acestuia! algoritmul ceasului cu dou rae. Algoritmul ceasului funcioneaz scannd cadrele de pagini ca i cum s%ar afla pe circumferina unui ceas. &e fac dou trieri. *a prima triere se seteaz un bit pentru fiecare pagin iar la a doua triere se verific paginile care au fost accesate ntre prima i a doua triere. $aginile ce nu au fost accesate sunt evacuate pe disc. Dac au fost scrise ct au stat n memorie sunt salvate integral iar dac nu! nu sunt salvate! locaia pe disc fiind cunoscut. Algoritmul ceasului cu dou rae. -lgoritmul ceasului! care este de fapt un algoritm al eliminrii paginii celei mai puin utilizate! are dezavanta"ul c! pentru memorii de mari dimensiuni! consum mult timp. De aceea s%a trecut la un algoritm modificat! numit algoritmul ceasului cu dou brae. (xist dou brae care se rotesc n acelai timp! ntre brae existnd un unghi constant. $rimul bra va reseta bitul de acces iar al doilea bra l va citi. -stfel se va micora timpul consumat. =ns dac unghiul dintre cele dou brae este prea mic! se vor elimina multe procese iar dac este prea mare! se a"unge la algoritmul ceasului simplu. De remarcat c algoritmul ceasului este un algoritm global! adic nu se ia n consideraie pagina crui proces este eliminat. Deoarece exist posibilitatea eliminrii paginilor aceluiai proces! numrul de pagini alocate unui proces variaz n timp. -tunci cnd apare fenomenul de trashing sau cnd rata de paginare este foarte ridicat! este trezit demonul pentru a elimina din memorie procese care s concureze la cadre de pagin. =n varianta 54S&! orice proces care a stat inactiv mai mult de 8F secunde este evacuat pe disc. -stfel < procese cu timpul cel mai mare de inactivitate sunt eliminate din memorie. =n varianta System 6 exist dou diferene fa de variantele anterioare %se utilizeaz algoritmul ceasului cu un singur bra dar eliminarea nu se face dup a doua trecere ci cup n treceri consecutive1 %exist dou valori pentru lotsfree! lotsfreemin i lotsfreema) . demonul este pornit atunci cnd numrul de pagini libere este mai mic dect lotsfreemin i i nceteaz activitatea cnd acest numr este mai mare dect lotsfreemax 1 n acest fel se creeaz o rezerv de pagini libere destul de mare! nefiind nevoie ca demonul s ruleze din nou un timp destul de ndelungat.

"!

Sorin Adrian Ciureanu =n ceea ce privete procesele care sunt aduse de pe disc n memorie! se utilizeaz planificatorul de lung durat! cu un algoritm n care fiecrui proces i este asociat o valoare asociat unei funcii. -ceast funcie este construit aa fel nct s fie favorizate procesele care au stat cel mai mult pe disc dar care nu au o dimensiune foarte mare.

5.6.". .e!tiunea (e(oriei 7n #INUC


In *inux se aloc i se elibereaz pagini fizice! grupuri de pagini! blocuri mici de memorie. =n ceea ce privete administrarea memoriei fizice! alocatorul de pagini poate aloca la cerere intervale contigue de pagini fizice. $olitica de alocare este cea bazat pe puteri ale lui 8! metoda camarazilor. $entru administrarea memoriei virtuale! nucleul *inux rezerv o zon de lungime constant din spaiul de adresare al fiecrui proces pentru propriul su uz intern. -ceast zon conine dou seciuni % o seciune static care conine tabela de pagini cu referire la fiecare pagin fiic disponibil n sistem! astfel nct s existe o translaie simpl de la adresele fizice la adresele virtuale atunci cnd se ruleaz codul nucleului1 % o seciune care nu este rezervat pentru ceva anume. *IN.3 R ul utilizeaz un tablou de pagini pe trei nivele. /#igura @.980 -cest model a fost utilizat pentru prima dat n microprocesorul -*$5- creat de firma D(4 /Digital (`uipement 4orporation 0 i a fost preluat n ma"oritatea versiunilor de *IN.3 actuale.
Director global Director de mi"loc de pagin 'abel de pagini

$agini

4uvnt selectat DI,(4'+, -dres virtual )IC*+4 $-6IND +##&('

Fi . 5.1". Mo)el )e pa inare #INUC.

"" Sisteme de operare + adres virtual conine patru cmpuri %director1 %mi"loc1 %pagin1 %offset. 4mpul director este folosit ca index n catalogul global! existnd un catalog global pentru fiecare proces. Aaloarea gsit este un pointer ctre tablourile de pagini de mi"loc. -ici se pointeaz din nou ctre un tabel de pagini. -poi nregistrarea se mai pointeaz odat spre pagina dorit. -locatorul utilizat este alocatorul cu puteri ale lui doi /metoda camarazilor0! descris anterior! care are avanta"ul c se poate oricnd obine o regiune de memorie cu mrime arbitrar. $rincipalul su dezavanta" este o fragmentare intern destul de consistent. $entru a contracara acest dezavanta"! *IN.3 R ul mai utilizeaz alte dou alocatoare! derivate din algoritmul camarazilor. -l doilea alocator preia fragmente de memorie i apoi gestioneaz separat fragmentele mici rezultate n urma algoritmului camarazilor. -l treilea alocator este disponibil ori de cte ori este necesar ca memoria cerut s fie continu /este vorba de memoria virtual nu de cea fizic0. De remarcat c toate aceste alocatoare sunt derivate din &Sstem A. *IN.3 R ul folosete un sistem de paginare la comand cu prepaginare. 4odul i fiierele puse n coresponden sunt pagini pe disc. +rice altceva este stocat n urmtoarele dou forme %partiie de paginare1 %fiier de paginare de lungime fix. $aginarea pe o partiie este mai eficient dect paginarea cu fiier din urmtoarele motive %corespondena dintre blocuri de fiier i blocuri disc nu este necesar1 %scrierea fizic poate fi de orice dimensiune! nu numai de mrimea blocului fizic1 %o pagin este scris continuu pe disc. + pagin nu este alocat pn cnd nu este necesar. (xist un dispozitiv! tip hart de bii! care contorizeaz paginile libere din memorie. 4nd trebuie eliminat o pagin din memorie! se alege fiierul sau partiia cu cea mai mare prioritate care are un spaiu disponibil. =nlocuirea paginilor este gestionat de demonul X&2apd! cel ce gestioneaz memoria n *IN.3. -cesta este pornit de ctre sistemul de operare o dat pe secund. Demonul verific dac sunt suficiente pagini libere. Dac sunt! se inactiveaz o secund. 4odul demonului de paginare este format dintr%u ciclu care se execut de ? ori. =n corpul ciclului se fac

1##

Sorin Adrian Ciureanu apeluri la trei proceduri! fiecare dintre ele ncercnd s recupereze diferite feluri de pagini. .n parametru care exprim urgena este transmis procedurii i arat ct de mare efort trebuie s depun pentru a recupera pagina. -lgoritmul ncearc nti paginile uoare din fiecare categorie i apoi paginile grele. $rima procedur ncearc s recupereze pagina care nu a fost referit recent! folosind un algoritm asemntor cu cel al ceasului. - doua procedur ncearc s recupereze paginile pe care un utilizator nu le%a folosit prea mult. - treia procedur ncearc s utilizeze pagini normale. )ai nti este realizat un ciclu n care se vede care proces are cele mai multe pagini n memorie. 'oate structurile sunt scanate i toate paginile sunt inspectate! n ordinea adreselor virtuale! de unde s%a plecat ultima dat. $agina este srit cnd este invalid! absent din memorie! fixat n memorie sau utilizat de D)- /Direct )emorS -cces0. Dac pagina are bitul de referin setat! de asemenea este srit. Dac acesta este resetat! pagina este eliminat din memorie. -poi se testeaz bitul dirty . Dac e murdar / adic dac pagina a fost scris0 i are un spaiu de stocare pe disc! atunci pagina este programat pentru o scriere pe disc. Dac pagina nu are spaiu de stocare pe disc! este dus n memoria intermediar de paginare. =n *IN.3 mai exist un al doilea demon de paginare! numit dflush! care este trezit periodic cu scopul de a verifica dac exist n memorie un numr mare de pagini murdare. Dac exist! atunci el face scrierea acestora pe disc.

5.6.,. .e!tiunea (e(oriei 7n SO DINDODS


6estiunea memoriei n sistemul de operare 2IND+2& este mai complex dect la .NI3. -dministrarea memoriei este asigurat de o parte a executivului i de ctre ase fire de execuie din nucleu! dedicate. &e utilizeaz paginarea la cerere! cu pagini de dimensiune fix! maximum de ?< Xb /la $entium se utilizeaz o pagin de <Xb0. + pagin din memoria virtual se poate afla n urmtoarele stri %liber1 %rezervat1 %anga"at. + pagin liber un este utilizat momentan iar un acces la ea provoac un defect de pagin. 4nd un proces este lansat n execuie! toate paginile sunt libere pn cnd codul i datele sunt puse n coresponden n propriul spaiu de adrese.

1#1 Sisteme de operare + pagin este anga"at n momentul n care sunt puse ntr%o pagin liber cod i date. + pagin este rezervat atunci cnd nu este disponibil pentru a fi pus n coresponden pn cnd rezervarea nu este explicit nlturat. $aginile libere i cele rezervate au pagini shado: pe disc! iar accesul la ele provoac ntotdeauna eroare de pagin. 4ele ase fire de execuie! /pe post de demoni ca n *IN.30! care gestioneaz memoria n 2IND+2& sunt %gestionarul ncrcrii spaiilor de lucru1 %gestionarul spaiilor de lucru1 %firul de execuie pentru interschimbul de memorie /s:apper thread01 %scriitorul paginilor puse n coresponden1 %scriitorul paginilor modificate1 %firul de execuie pentru iniializarea paginilor cu zerouri. %7estionarul ncrcrii spaiilor de lucru verific dac exist destule pagini libere. Dac nu exist suficiente pagini libere! se pornete thread%ul denumit gestionarul spaiilor de lucru. %7estionarul spaiilor de lucru are dou sarcini %examineaz spaiile de lucru1 %recupereaz alte pagini. &e determin nti ordinea n care se vor examina procesele. $rocesele mari! care sunt inactive de mult timp! sunt examinate naintea proceselor mici i active. $rocesul care rula n acel moment este examinat ultimul. -poi se inspecteaz procesele n ordinea aleas. .n proces este pstrat numai dac spaiul su este mai mic dect minimul su sau dac a cauzat un numr mare de defecte de pagin. =n caz contrar se elimin pagini. %8irul de e)ecuie pentru interschim ul de memorie (s!apper thread) are rolul de a cuta procesele ale cror fire de execuie au fost inactive un anumit timp. =n momentul n care se gsete un asemenea proces! stivele nucleu sunt dealocate iar paginile procesului sunt mutate n lista de pagini n ateptare. %Scriitorul paginilor puse n coresponden i scriitorul paginilor modificate sunt demoni trezii periodic pentru a verifica dac sunt destule pagini nemodificate. Dac nu exist! firele de execuie iau pagini din capul listei de pagini modificate! le scriu pe disc i apoi le mut n lista de pagini n ateptare. $rimul demon scrie n fiierele puse n coresponden! al doilea scrie n fiierele de paginare. )otivul existenei a dou fire de execuie este acela c un fiier pus n coresponden poate fi nevoit s creasc dup o operaie de scriere i

1#2

Sorin Adrian Ciureanu creterea n dimensiune se face prin acces la structurile de date de pe disc! pentru alocarea unui bloc de disc liber. Dac nu exist spaiu n memorie la scrierea paginii! poate aprea interblocare. 4ellalt fir de execuie poate rezolva problema scriind pe disc pagini ntr%un fiier de paginare care nu crete niciodat. %8irul de e)ecuie pentru iniializarea paginilor cu zerouri este un demon ce lucreaz cu prioritate minim i se execut deoarece regulile de securitate cer ca o pagin liber s conin numai zerouri. (l pune pe o pagin liber zerouri ! mutnd n acelai timp pagina de la lista cu pagini libere la lista cu pagini cu zerouri.

Sisteme de operare

1#3

Capitolul 6 .ESTIUNEA SISTEMU#UI DE INTRARE2IE@IRE


6.1. DEFINIREA SISTEMU#UI DE INTRARE2IE@IRE
'oate computerele au dispozitive fizice pentru acceptarea intrrilor i producerea ieirilor. (xist multe astfel de dispozitive monitoare! tastaturi! mausuri! imprimante! scanere! hard discuri! compact discuri! floppS discuri! benzi magnetice! modemuri! ceasuri de timp real etc. (le se numesc dispoziti"e periferice! deoarece sunt exterioare unitii centrale. + funcie important a sistemului de operare este gestionarea dispozitivelor periferice ale unui calculator. #iecare &+ are un subsistem pentru gestionarea lor! sistemul intrare7ieire / I2OA input2output4. $arte din softul I7+ este independent de construcia dispozitivelor! adic se aplic multora dintre ele. -lt parte ! cum ar fi driverele dispozitivelor! sunt specifice fiecruia. $rincipalele funcii pe care trebuie s le genereze &+ n acest scop sunt % generarea comenzilor ctre dispozitivelor periferice1 % tratarea ntreruperilor specifice de intrare7ieire1 % tratarea eventualelor erori de intrare7ieire1 % furnizarea unei interfee utilizator ct mai standardizat i ct mai flexibil. 6estiunea sistemului de intrare7ieire este o sarcin destul de dificil iar generalizrile sunt greu de fcut! din diferite motive printre care % viteze de acces foarte diferite pentru diferitele periferice1 % unitatea de transfer difer de la un periferic la altul ea putnd fi octet! caracter! cuvnt! bloc! nregistrare1 % datele de transfer pot fi codificate n diverse feluri! depinznd de mediul de nregistrare al dispozitivului de intrare7ieire1

1#4

Sorin Adrian Ciureanu % tratarea erorilor se face n mod diferit! n funcie de periferic! deoarece i cauzele erorilor sunt foarte diferite1 % este greu de realizat operaii comune pentru mai multe periferice dat fiind tipul lor diferit dar i datorit operaiilor diferite! specifice fiecrui dispozitiv. -tunci cnd se proiecteaz un &+! pentru gestiunea sistemului de intrare7ieire se pot avea n vedere urmtoarele obiective a0 Independena fa de codul de caractere. =n acest sens! sistemul de I7+ ar trebui s furnizeze utilizatorului date ntr%un format standard i s recunoasc diversele coduri utilizate de periferice. b0 Independena fa de periferice. &e urmrete ca programele pentru periferice s fie comune pentru o gam ct mai larg din aceste dispozitive. De exemplu! o operaie de scriere ntr%un dispozitiv periferic ar trebui s utilizeze un program comun pentru ct mai multe tipuri de periferice. Desigur! apelarea perifericelor ntr%un mod uniform face parte din acest context. -stfel n .NI3 i 2IND+2& aceast problem este rezolvat prin asocierea la fiecare dispozitiv a unui fiier! dispozitivele fiind apelate prin intermediul numelui fiierului. c0 (ficiena operaiilor. $ot aprea deseori aa numitele erori de ritm! datorate vitezei diferite de prelucrare a datelor de ctre unitatea central! pe de o parte! i de ctre periferic! pe de alt parte. ,evine ca sarcin sistemului de operare s GfluidizezeH traficul. .n exemplu de eficientizarea unei operaii de intrare 7ieire este sistemul cache oferit de &+. $rin utilizarea mai multor tampoane cache! &+ reuete s mbunteasc! de multe ori! transferul de date! s%i mreasc viteza.

6.". C#ASIFICAREA DISPOETI*E#OR PERIFERICE


(xist mai multe criterii dup care se pot clasifica perifericele. a0 Din punct de vedere funcional %%eriferice de intrare9ie(ire! utilizate pentru schimbul de informaii cu mediul extern! cum ar fi imprimanta ! tastatura ! monitorul. %%eriferice de stocare! utilizate pentru pstrarea nevolatil a informaiei! cum ar fi hard discul! compact discul! floppS discul! banda magnetic.

1#5 Sisteme de operare $erifericele de stocare! la rndul lor! pot fi clasificate dup variaia timpului de acces! astfel %%eriferice cu acces sec"enial, la care timpul de acces are variaii foarte mari! cazul tipic fiind banda magnetic. %%erifericele cu acces complet direct! la care timpul de acces este constant! exemplul tipic fiind o memorie ,-). %%eriferice cu acces direct, la care timpul de acces are variaii foarte mici! exemplul tipic fiind hard discul. b0 Din punctul de vedere al modului de operare! de servire a cererilor %%eriferice dedicate! care pot deservi un singur proces la un moment dat! de exemplu imprimanta. %%eriferice distri uite, care pot deservi mai multe procese la un moment dat! cum ar fi hard discul. c0 Din punctul de vedere al modului de transfer i de memorare a informaiei %%eriferice loc, care memoreaz informaia n blocuri de lungime fix. Blocul este unitatea de transfer ntre periferic i memorie! fiecare bloc putnd fi citit sau scris independent de celelalte blocuri. &tructura unui bloc este format din partea de date propriu zis i din informaiile de control al corectitudinii datelor / paritate! checJsum! polinom etc0. Din aceast categorie fac parte hard discul! compact discul! banda magnetic. %%eriferice caracter! care utilizeaz iruri de caractere crora nu le confer structur de blocuri. +cteii din aceste iruri nu sunt adresabili i deci nu pot fi accesai prin operaia de cutare. #iecare octet este disponibil ca un caracter curent! pn la apariia urmtorului caracter. Din aceast categorie fac parte imprimanta! monitorul! tastatura. %%eriferice care nu sunt nici loc nici caracter. (xist i periferice care nu pot fi ncadrate n nici una din aceste dou categorii. .n exemplu este ceasul de timp real! cel care are rolul de a genera ntreruperi la intervale de timp bine determinate.

6.,. STRUCTURA :ARD A SISTEME#OR DE INTRARE2IE@IRE


$rile hard componente ale unui sistem de intrare ieire! a crui schem este dat n fig. ?.9.! sunt

1#6

Sorin Adrian Ciureanu

%controllerul. +perifericul propriu zis. 4ontrollerul este alctuit dintr%o serie de registre de comenzi i de date. $entru un periferic simplu! ca tastatura sau imprimanta! exist un singur registru de comenzi i unul de date. $entru hard disc exist mai multe registre de comenzi i unul de date. *ungimea registrelor este funcie de arhitectura calculatorului! obinuit sunt pe 9? bii.
$(,I#(,I4 4+N',+*(,

.4

.egistru comenzi 1 .egistru comenzi 2 1ispoziti, de comand-

.egistru comenzi n

.47 .)

.egistru de date

Fi . 6.1. S&'e(a >lo& a unui !i!te( intrare2ie/ire. &ecvena de lucru pentru o operaie de intrare7ieire este urmtoarea 4nd .4 detecteaz o operaie de intrare7ieire! transmite principalii parametri ai operaiei pe care i depune prin intermediul busului n registrele de comenzi i date. =n continuare! controllerul! pe baza datelor din registre! va sintetiza comenzi pentru echipamentul periferic! comenzi pe care le pune n interfaa controller7periferic. Dac este o operaie de scriere! va pune i informaiile pe liniile de date. $erifericul! pe baza acestor comenzi! execut operaia i returneaz pe interfaa cu controlerul rspunsurile la aceast operaie i eventualele erori . 4ontrolerul le va prelua i le va pune n registrele de comenzi i date i le va transmite la .4. 4el mai simplu registru de comenzi arat astfel 9 ? P 6+ I( ,DM Bitul 9! de obicei bitul de 6+! are rolul de a porni efectiv operaia. Bitul ?! I( /interruption enable0! are rolul de a masca sau nu ntreruperea de

1# Sisteme de operare intrare7ieire. Bitul P! ,DM! este bitul de ,(-DM! care arat dac perifericul este n stare liber de a primi alte comenzi.

6.0. STRUCTURA SOFT A SISTEME#OR DE INTRARE2IE@IRE


$e suportul hard prezentat! sistemul de operare furnizeaz i controleaz programe care s citeasc i s scrie date i comenzi n registrele controllerului i sincronizeaz aceste operaii. &incronizarea se efectueaz! de obicei! cu a"utorul ntreruperilor de intrare ieire. $entru a realiza aceste sarcini! softul sistemului de intrare7ieire are patru componente %rutinele de tratare a ntreruperilor1 %driverele! asociate dispozitivelor periferice1 %programe independente de dispozitivele periferice1 %primitivele utilizator.

6.0.1. Rutine )e tratare a 7ntreruperilor


.n proces! care are ncorporat o operaie intrare7ieire! este blocat n urma unei operaii de !ait la semafor. &e iniiaz operaia de intrare7ieire iar cnd operaia este terminat! procesul este trezit printr%o operaie signal! cu a"utorul rutinei de tratare a ntreruperilor. =n acest fel! procesul va fi deblocat i va trece n starea ready.
proces (niiere operaie ()/ .utina de tratare a :ntreruperilor Peri+eric

readF

wait

signal

Fi .6.". Rutina )e tratare a 7ntreruperilor.

1#!

Sorin Adrian Ciureanu

peri+eric

.utina identi+ic- sursa :ntreruperii%

@inia de :ntrerupere

.einiializeaz- linia de :ntrerupere%

;emoreaz- starea peri+ericului%

Proces readF

signal

Breze5te procesul cKnd operaia de ()/ este gata%

Fi .6.,. Repre-entarea rutinei )e 7ntrerupere. &e observ c sarcinile principale ale rutinei de tratare a ntreruperilor sunt % rutina identific dispozitivul periferic care a generat o ntrerupere1 % rutina reiniializeaz linia de ntrerupere pe care a utilizat%o perifericul1 % memoreaz ntr%o stiv starea dispozitivului periferic1 % are rolul de a GtreziH procesul care a iniiat operaia de I7( printr%o operaie signal. =n acest mod procesul va fi deblocat i trecut n starea ready. =n realitate lucrurile nu sunt aa de simple! &+ avnd o mare cantitate de lucru n acest scop. (tapele parcurse n acest proces n care intervin ntreruperile sunt % salvarea tuturor registrelor /i $&201 % pornirea procedurii de ntreruperi1 % iniializarea stivei1 % pornirea controlorului de ntreruperi1 % copierea din registrele unde au fost salvate ntreruperile n tabelul procesului1 % rularea procedurii de ntrerupere care va citi informaia din registre1 % alegerea procesului care urmeaz1 dac ntreruperea a fost cauzat de un proces de nalt prioritate! acesta va trebui s ruleze din nou1 %ncrcarea registrelor noului proces /inclusiv $&201

Sisteme de operare %pornirea rulrii noului proces.

1#"

6.0.". Dri+ere
Driverul este partea component a &+ care depinde de dispozitivul periferic cruia i este asociat. ,olul su este de a transpune n comenzi la nivelul registrelor controllerului ceea ce primete de la nivelul soft superior. Din punct de vedere structural! driverul este un fiier care conine diferite comenzi specifice unui dispozitiv periferic. + prim problem care se pune este unde ar trebui instalate aceste drivere! n nucleu /Jernel0 sau n spaiul utilizator /user0 V $rezena driverelor n user ar avea avanta"ul unei degrevri a Jernelului de anumite solicitri i al unei mai bune izolri a driverelor ntre ele. De asemenea! la o eroare necontrolat provenit din driver! nu ar mai ceda sistemul de operare aa uor. 'otui! ma"oritatea sistemelor de operare ncarc driverele n Jernel i asta pentru o mai mare flexibilitate i o mai bun comunicare! n special pentru driverele nou instalate. +peraiile efectuate de un driver! a crui schem este dat n figura ?.<! sunt % verificarea parametrilor de intrare dac sunt valizi! n caz contrar semnalarea erorii1 % translaia de la termeni abstraci la termeni concrei! aceasta nsemnnd! de exemplu! la un hard disc
cap numr bloc Z adresa cilindru sec tor

% verificarea strii dispozitivului / readS sau nu01 % lansarea operaiei efective pentru dispozitivul periferic! de exemplu! o citire a unui sector al hard discului1 % blocarea driverului pn cnd operaia lansat s%a terminat /printr% un &ait la semafor01 % GtrezireaH driverului /prin operaia signa#01 % semnalarea ctre nivelul soft superior a disponibilitii datelor /n cazul unei operaii de citire de la periferice0 sau a posibilitii de reutilizare a zonei de memorie implicate n transferul de date /pentru o operaie de scriere ntr%un periferic01 % preluarea unei noi cereri aflate n coada de ateptare.

11#
&1 &2

Sorin Adrian Ciureanu


&nJ1 &n 4oad de ateptare 1es+acerea parametrilor DParame tri ,alizi Branslaie Bermeni abstraciLtermeni concrei eroare N.

N.

.eadF dispoziti , peri+eric

D-

@ansarea operaiei e+ecti,e

Dispozitiv periferic

Dlocare dri,er 6wait7 +peraie terminat Brezire dri,er 6signal7

Dispozitiv periferic

4itire

&itire)scrie re

&criere

1ate disponibile

9ona de memorie disponibil-

Preluarea cererii urm-toare

Fi . 6.0. S&'e(a )e fun&ionare a unui )ri+er.

111 Sisteme de operare &chema de funcionare a unui driver! pentru o comand de citire a unui bloc logic de pe hard discul 4! este dat n figura ?.@.
cerere L citirea blocului 1123 de pe 4ard discul &

adresa num-r bloc operaie

4ard disc & 1123 citire date

translaie bloc 1123L

poziionare pe cap 2H cilindru 4#H sector 2 5i sector 3 citire date

Dispozitiv periferic Dispozitiv periferic

Dlocar e dri,er 6wait7

trezire dri,er 6signal 7

4itire date de pe sect. 8 i ;! cap8! cilindru <F.

memorie

date disponibile

preluarea cererii urm-toare

6.5. S&'e(a fun&ionrii unui )ri+er pentru o &o(an) )e &itire a unui >lo& lo i&.

112

Sorin Adrian Ciureanu

6.0.,. Pro ra(e%!i!te( in)epen)ente )e )i!po-iti+e


&arcinile ce revin acestui nivel soft sunt % asigurarea unei interfee uniforme pentru toate driverele1 % realizarea corespondenei dintre numele simbolice ale perifericelor i driverele respective1 n .NI3! de exemplu! un fiier este asociat unui dispozitiv periferic1 % utilizarea unor tampoane sistem! puse la dispoziie de &+! pentru a prentmpina vitezele diferite ale dispozitivelor periferice1 % raportarea erorilor de intrare7ieire n con"uncie cu aceste operaii de intrare7ieire1 de obicei erorile sunt reperate i generate de drivere! rolul acestui nivel soft fiind acela de a raporta o eroare ce nu a fost raportat.

6.0.0. Pri(iti+e )e ni+el utili-ator


4ea mai mare parte a sistemului de intrare7ieire este nglobat n sistemul de operare dar mai exist nite proceduri! numite primitive de nivel utilizator! ce sunt incluse n anumite biblioteci. -ceste proceduri au rolul de a transfera parametrii apelurilor sistem pe care le iniiaz. -ceste primitive pot lucra n dou moduri sincron (i asincron. + primitiv sincron returneaz parametrii numai dup ce operaia de intrare7ieire a fost realizat efectiv. &e utilizeaz pentru operaii de intrare7ieire cu o durat ce trebuie estimat sau cu o durat foarte mic. + primitiv asincron are rolul numai de iniiere a operaiei de intrare7ieire! procesul putnd continua n paralel cu operaia. $rocesul poate testa mereu evoluia operaiei iar momentul terminrii ei este marcat de o procedur! definit de utilizator! numit notificare. $roblemele primitivelor asincrone sunt legate de utilizarea bufferului de date. $rocesul iniiator trebuie s evite citirea7scrierea n buffer att timp ct operaia nu este terminat! sarcina aceasta revenindu%i programatorului. $rimitivele asincrone sunt utilizate n cazul operaiilor cu o durat mare sau greu de estimat.

6.0.5. Mo)el )e intera&iune &o(ponentelor !oft I2E


=n figura ?.? este dat interaciunea celor < subsisteme soft! cnd se lanseaz o operaie I7(.

Sisteme de operare
$,+6,-)( &I&'() IND($(ND(N'( D( DI&$+aI'IA %Identificare dispozitiv %-samblare $-45(' I7(1 %$lasare $-45(' I7( n lista de cereri asociat dispozitivului1 %signal /cerere n ateptare01 :ait/cerere servit01 $arametrii primitivei de I7( /buf! buffer! fd0 exit

113

$,I)I'IA( D( NIA(* .'I*Ia-'+, +$ I(

D,IA(,( :ait/cerere n ateptare01 %preia $-45('( I7( din coad1 %copiaz date din memorie n bufferul perifericului1 %iniiaz operaia I7(1 :ait /operaie terminat01 signal /cerere servit01 %terge $-45( I7(1

,.'IN( D( ',-'-,( N',(,.$(,I*+, %citire stare dispozitiv1 %reiniializare ntrerupere1 signal /operaie teminat0

Fi . 6.6. Mo)el )e intera&iune a &o(ponentelor !oft I2E. &emnificaiile mrimilor din figura ?.?. sunt +$I( R operaia I7( care se lanseaz1 $-45(' I7( R pachet de intrare7ieire care definete tipul i parametrii operaiei de I7(1 pachetul este de fapt o structur de date creat pe baza parametrilor operaiei de I7(1 4erere de ateptare 4erere servit ; semafoare utilizate pentru sincronizare1 +peraie terminat fd R descriptor de fiier asociat unui periferic1 buffer R dimensiunea /n octei0 a zonei tampon1 buf R adresa din memorie a zonei tampon.

6.5. $MBUN;T;IREA OPERAII#OR DE INTRARE2IE@IRE


$roblema esenial! la ora actual! n ceea ce privete o operaie de intrare7ieire! este timpul de acces la hard disc! principalul dispozitiv periferic de memorare a informaiei. =nc exist o diferen foarte mare ntre timpii n care se desfoar o operaie n unitatea central i o operaie pe hard disc. Desigur ! odat cu noile tehnologii! aceti timpi s%au mbuntit i exist premize de micorare a lor n viitor! totui decala"ul de timp intre

114

Sorin Adrian Ciureanu operaiile din .4 i cele de intrare7ieire este nc foarte mare. ,olul &+ este de ncerca! prin diferii algoritmi! s mbunteasc! adic s micoreze! timpul unei operaii de intrare7ieire. )ulte din soluiile adoptate au fost apoi implementate n hard! n soluiile constructive ale hard discului. Dou exemple sunt edificatoare n acest sens %factorul de ntreesere1 %cache%ul de hard disc.

6.5.1. Fa&torul )e 7ntree!ere.


*a apariia discurilor magnetice! se consuma foarte mult timp pentru citirea continu a sectoarelor! unul dup altul. -stfel pentru un disc cu QF sectoare pe pist! pentru citirea unei piste erau necesare QF rotaii ale platanului. -ceasta deoarece! dup citirea unui sector! era necesar un timp pentru transferul datelor spre memorie iar n acest timp capul respectiv se poziiona pe alt sector. Deci! pentru citirea sector cu sector! era necesar o rotaie pentru citirea unui sector. + idee simpl! venit din partea de &+! a fost de a calcula timpul de transmitere a datelor spre memorie! de a vedea pe ce sector a a"uns capul dup aceast transmisie i de a renumerota sectoarele. (xemplu #ie un disc cu Q sectoare! numerotate n ordine ! ca n figura ?.?.
! 1 2

6 5 4

Fi . 6.6. :ar) )i!& &u < !e&toare. Dac acest disc are un factor de ntreesere egal cu 8! aceasta nseamn c! dup ce capul a mai parcurs dou sectoare! datele au fost transmise n memorie. *a o rotaie se citesc trei sectoare. *a prima rotaie! sectoarele 9!8!;! la a doua rotaie! sectoarele <!@!?! la a treia rotaie sectoarele P i Q. $entru un factor de ntreesere 8 noua numerotare a sectoarelor va fi ca n figura ?.P.

Sisteme de operare
6 3 ! 5 2 1 4

115

Fi . 6.9. :ar) )i!&ul )up trei rotaii. &e observ c! prin introducerea factorului de ntreesere! nu mai sunt necesare Q rotaii pentru citirea unei piste ci numai trei. -ceast soluie a fost introdus nti n &+! mai apoi fiind preluat n hard:are de ctre disc! unde factorul de ntreesere era un parametru lo!le"el al hard discului. Datorit progresului tehnologic! de la factori de ntreesere de ; sau < s%a a"uns la un factor de valoare 9! deci la o rotaie se citete ntreaga pist.

6.5.". Ca&'e%ul )e 'ar) )i!&


#olosirea tampoanelor de date! pentru transferul de date ntre hard disc i memoria sistemului! a fost preluat hard:are de ctre disc. -stfel s%a implementat o memorie cache la nivel de hard disc! memorie alctuita pe acelai principiu ca i memoria cache ,-).

6.5.,. Crearea unui 'ar) )i!& &u perfor(ane !uperioare )e &tre SO


=n general! timpul total de acces pentru un hard disc este dat de urmtoarele componente % timpul de cutare /seeJ time0 care este timpul necesar pentru micarea mecanic a capului de scriere7citire pn la pista specificat1 % latena de rotaie / rotational latencS0 care este timpul de ateptare necesar pentru ca sectorul specificat s a"ung sub capul de scriere7citire1 % timpul de transfer / transfer time0 care este timpul necesar pentru a citi informaia de pe sectorul specificat1 $lanificarea accesului la disc are n vedere dou lucruri % reorganizarea cererilor la disc pentru a minimiza timpul de cutare1 % un mod de plasare a informaiilor pe disc care s minimizeze latena de rotaie.

116

Sorin Adrian Ciureanu (xist algoritmi de plasare n care ideea principal este de a schimba ordinea de servire a cererilor venite de la procese! astfel nct s se pstreze ordinea cererilor fiecrui proces. Dintre algoritmii care minimizeaz timpii de acces amintim a0 b0 c0 d0 #4#& /#irst 4ome #irst &erved0 1 &&'# / &hortest &eeJ 'ime #irs01 &4-N! 4 &4-N 1 *++X! 4 *++X.

a0 #4#& / #irst 4ome #irst &erved Oprimul venit ! primul servit0. 4ererile sunt servite n ordinea sosirii. b0 &&'# /&hortest &eeJ 'ime #irstOcel cu cel mai scurt timp de cutare! primul0 . 4onform acestui algoritm! capul de scriere7citire se va deplasa de la cilindrul unde este pozionat spre cilindrul cel mai apropiat. (ste mai eficient dect #4#&! dar poate duce la ntrzierea unor cereri i la nfometare. c0 &4-N i 4 &4-N. =n &4-N! capul de scriere 7citire se deplaseaz de pe primul cilindru spre unul din capete i apoi baleiaz discul pn la capt i napoi! deservind cererile. =n 4 &4-N ! se ncepe de la cilindrul F iar cnd se a"unge la sfrit! se reia baleierea tot de la cilindrul F. $ractic! n &4-N baleierea se face n ambele sensuri! n timp ce n 4 &4-N ntr%un singur sens! de la cilindrul F la ultimul. $rin analogie! algoritmul &4-N poate fi reprezentat de o list dublu nlnuit! iar 4 &4-N de o list simplu nlnuit. d0 *++X! 4 *++X. =n acest algoritm! capul de scriere7citire se deplaseaz pn la ultima cerere! dup care inverseaz sensul de micare! imediat! fr s mearg pn la captul discului. =n continuare! s lum un exemplu i s vedem care este timpul de cutare pentru fiecare algoritm. #ie un hard disc cu 8@F cilindri! cu braul cu capete poziionat iniial pe cilindrul @F. #ie urmtoarea coad a cererilor se acces @F! 8FF! 9FF! 8@! 8@F! 9@F! 9<<! 9<; & calculm! pentru exemplul dat! timpii de cutare pentru fiecare algoritm! timpi exprimai n numrul cilindrilor parcuri. FCFS%+rdinea deservirii /n ordinea cererii de acces0 @F!8FF!9FF!8@!8@F!9@F!9<<!9<;. %Numrul cilindrilor parcuri /8FF%@F0>/8FF%9FF0>/9FF%8@0>/8@F%8@0>/8@F%9@F0>/9@F% <<0>/9<<%9<;0OO9@F>9FF>P@>88@>9FF>?>9O659

11 Sisteme de operare SSTF%+rdinea deservirii /ctre cel mai apropiat cilindru0 @F!8@!9FF!9<;!9<<!9@F!8FF!8@F. %Numrul cilindrilor parcuri O/@F%8@0>/9FF%8@0>/9<;%9FF0>/9<<% 9<;0>/9@F%9<<0>/8FF%9@F0>/8@F%8FF0O 8@>P@><;>9>?>@F>@FO"5P SCAN%+rdinea deservirii @F!F!8@!9FF!9<;!9<<!9@F!8FF!8@F %Numrul cilindrilor parcuri O @F>8@>P@><;>9>?>@F>@FO,PP C SCAN%+rdinea deservirii @F!9FF!9<;!9<<!9@F!8FF!8@F!F!8@. % Numrul cilindrilor parcuri O @F><;>9>@?>@F>@F>8@F>8@O095
140 spaiul parcurs (uniti c n!eni nale) 120 100 80 60 40 20 0 0 25 50 75 100 125 150 175 200 225 250 timpul de cutare (numr de cilindri parcuri) (a)

120 spaiul parcurs (uniti c n!eni nale) 100 80 60 40 20 0 0 25 50 75 100 125 150 175 200 225 250 timpul de cutare (numr de cilindri parcuri) (")

11!

Sorin Adrian Ciureanu


spaul parcurs (uniti c n!eni nale)

120 100 80 60 40 20 0 0 25 50 75 100 125 150 175 200 225 250 timpul de cutare (numr de cilindri parcuri) (c)

250 spaiul parcurs (uniti c n!eni nale) 200 150 100 50 0 0 25 50 75 100 125 150 175 200 225 250 timpul de cutare (numr de cilindri parcuri) (d)

Fi .6.<. Repre-entarea (i/&rii &apului (a neti& 7n )iferii al orit(i /a0#4#&On ordinea sosirii 1 /b0 &&'#Ospre cel mai apropiat cilindru 1 /c0 &4-N 1 /d0 4 &4-N &e constat c cel mai scurt timp de cutare ofer algoritmul &&'#! aa cum se observ i din graficul /b0. (ste frecvent utilizat! n ciuda faptului c poate duce la nfometare. -lgoritmii &4-N i 4 &4-N se comport mai bine pentru sistemele care au ncrcare mare a discului! adic multe operaii de intrare7ieire.

11" Sisteme de operare *a algoritmul &&'#! cei mai favorizai din punct de vedere al timpului de acces! sunt cilindrii aflai la mi"loc. De aceea! n aceti cilindri sunt alocate fiiere cu frecvena ridicat de utilizare! cum ar fi structura de directoare. (xist i algoritmi mai pretenioi n care se urmrete i minimizarea latenei de rotaie.

6.5.0. Con!truirea unui 'ar) )i!& prin te'ni&a RAID 1Re)un)ant ArraI! of In)epen)ent Di!&M!4
Ideea ,-ID este de a folosi mai multe discuri simultan la aceeai magistral i de a scrie informaiile n felii /stripes0care acoper toate discurile. -ceste felii sunt de fapt blocuri. Discul este vzut ca un ntreg dar blocurile alterneaz n toate discurile. $entru un ansamblu de trei discuri! blocul 9 va fi pe discul 9! blocul 8 pe discul 8! blocul ; pe discul ; i apoi blocul < pe discul 9! blocul @ pe discul 8 s.a.m.d. $entru un subansamblu de n discuri! blocul ( va fi pe discul ( (o)ulo n. =n ,aid! aceast tehnic a stripingului se combin cu ideea de redundanA de unde i denumirea 3edundant Arrays of Independent &isc#s adic o mulime redundant de discuri independente. ,edundana const n alocarea! n caz de defect! a unui disc pentru refacerea informaiei pe celelalte discuri. 'ehnica de refacere cea mai des utilizat este paritatea dar se pot utiliza i checJsum%uri sau! mai rar! polinoame de control. 4ea mai simpl schem ,-ID este cea cu dou discuri! care menin informaii identice! tehnic care se mai numete mirrored disc#s. =n tehnica actual ,-ID! exist P nivele %nivelul F striping fr redundan1 %nivelul 9 discuri oglindite /mirrored discJs01 %nivelul 8 coduri 5amning detectoare de erori %nivelul ; un disc de paritate la fiecare grup! bit%interleaved1 %nivelul < scrieri7citiri independente! blocJ%interleaved1 %nivelul @ informaia de paritate este mprtiat pe toate discurile1 %nivelul ? nivelul n care de detecteaz i se corecteaz mai mult de o eroare pe disc. $rincipalul dezavanta" al discurilor ,-ID const n aa numitele Gscrieri miciH. -cest lucru se produce atunci cnd se face o scriere ntr%un singur disc i toate celelalte discuri trebuie accesate pentru a se recalcula paritatea! generndu%se astfel un trafic destul de mare. -cest dezavanta"

12#

Sorin Adrian Ciureanu poate fi contracarat prin implementarea unei cache de disc! cu o capacitate foarte mare! ceea ce face ca ocul scrierilor mici s fie absorbit de cache! utilizatorii netrebuind s atepte calculul paritii.

6.6.

.ESTIUNEA SISTEMU#UI I2E $N UNE#E SISTEME DE OPERARE 6.6.1. .e!tiunea !i!te(ului I2E 7n UNIC

&istemul I7( n .NI3 are un principiu simplu fiecare dispozitiv de I7( are ataat un fiier. -ccesul la dispozitiv se face prin apeluri sau funcii specifice de fiiere! cum ar fi apelurile rea) i Frite. #iierele ataate unui dispozitiv de intrare7ieire sunt fiiere speciale i sunt de dou categorii %fiier special de tip bloc1 %fiier special de tip caracter. .n fiier special de tip loc este format dintr%un ir de blocuri numerotate! la fiecare bloc existnd un acces secvenial. .n fiier special de tip caracter este utilizat pentru dispozitive periferice care utilizeaz fluxuri de caractere. #iecrui fiier special i este asociat un driver de dispozitiv pentru a crui identificare se utilizeaz un numr ma$or de dispoziti" i un numr minor de dispoziti". 4u a"utorul unui numr ma"or de dispozitiv se identific un periferic simplu /tastatura! imprimanta0. 4u a"utorul unui numr minor de dispozitiv se identific un dispozitiv dintr%un periferic multiplu /discuri dure! 4D%,+) R uri 0. ,olul unui driver de dispozitiv este s izoleze sistemul de nesincronizrile hardului. 4nd un utilizator acceseaz un fiier special! sistemul de fiiere determin numerele ma"or i minor ale dispozitivului. Numrul ma"or este utilizat ca index ntr%unul din cele dou tablouri de structuri! numite >)e!F! pentru fiiere speciale bloc i &)e!F ! pentru fiiere speciale caracter. &tructura astfel gsit conine pointeri pentru operaii cu dispozitivul. Numrul minor de dispozitiv este transmis ca parametru. =n .NI3! a aduga un periferic nseamn de fapt a aduga un element ntr%unul din tablouri i a pune la dispoziie funciile corespunztoare care s se ocupe de diversele operaii asupra dispozitivului. #iecare driver are dou componente

121 Sisteme de operare %partea superioar! care ruleaz n contextul apelantului i are interfee cu restul sistemului de operare1 %partea inferioar! care ruleaz n contextul nucleului i interacioneaz cu perifericul. Driverele apeleaz proceduri ale nucleului aflate n Driver Xernel Interface.

6.6.1.1.0i*iere speciale de tip +loc &copul acestor fiiere este de a micora efectiv numrul de transferuri. $entru acesta se utilizeaz o memorie tampon soft situat ntre driver i sistemul de fiiere. )emoria tampon este de obicei organizat ca o list simplu nlnuit de blocuri. ,egula de gestionare a blocurilor din list este %un bloc accesat trece n capul listei1 %se elimin un bloc de pe ultima poziie a listei! dup regula blocului celui mai puin renet utilizat. Blocurile murdare sunt scrise pe disc la un interval de ;F secunde. 6.6.1.2. 0i*iere speciale de tip caracter =n aceste fiiere se lucreaz cu fluxuri de caractere. (xist dou soluii pentru a structura i modulariza driverele de tip caracter. Soluie 4S&, bazat pe structuri de date numite C+list. -cestea sunt blocuri de pn la ?< caractere! un contor i un pointer la blocul urmtor. $e msur ce caracterele a"ung de la dispozitivul periferic tip caracter sunt puse ntr%un lan de astfel de blocuri. 4aracterele pot a"unge la procesor n dou moduri mod prelucrat sau mod neprelucrat. =n modul prelucrat! atunci cnd sunt citite caractere! ele nu sunt transmise direct din 4%list procesului ci trec printr%o seciune cod a nucleului! numit line discipline. -ceasta se comport ca un filtru. (a primete fluxul de caractere neprelucrate de la driverul terminal! l prelucreaz i apoi produce i trimite spre proces aa numitul flu) de caractere pregtit (coo#ed character stream). $regtirea unui flux nseamn eliminarea caracterelor i liniilor terse i transformarea lui carriage return n line feed. =n modul neprelucrat nu se mai trece prin line discipline. )odul neprelucrat este util n mod special atunci cnd se trimit date binare ctre alt calculator! pe o linie scurt! unde nu este nevoie de conversie.

122

Sorin Adrian Ciureanu Soluie System 6, bazat pe nirarea modulelor de procesare n flux! n mod dinamic! n timpul execuiei. $n la un anumit punct! un flux este analogul din nucleu al liniilor de conducte din spaiul utilizator.
&istem de calcul )od utilizator

$,+4(&

-N'(' D( #*.3

'4$

)od nucleu

I$

D,IA(, ('5(,N('

4+N',+*(, ('5(,N('

Fi . 6.J. E8e(plu )e flu8uri 7n SI!te( *. .n flux are ntotdeauna un antet de flux deasupra i se conecteaz la un driver dedesubt. =ntre acestea pot fi introduse module! cte sunt necesare. $rocesarea poate fi bidirecional! deci fiecare modul poate avea un flux de scriere i unul de citire. -tunci cnd un proces utilizator scrie ntr%un flux de caractere! codul din antet interpreteaz apelul de sistem i pune datele n zonele tampon ale fluxului care sunt transmise din modul n modul! n "os! fiecare modul opernd transformarea dorit. #iecare modul are o coad de scriere i una de citire! tampoanele fiind procesate n ordinea corect. )odulele au interfee bine definite iar modulele fr legtur pot fi legate ntre ele. =n exemplul din figur s%a utilizat un protocol IN'(,N(' '4$ pe reaea local ('5(,N('. =n figur apare un aspect important al fluxurilor i anume multiplexarea. .n modul multiplexat poate prelua un flux! l poate despri n mai multe fluxuri i le poate uni ntr%un singur flux. )odulul I$ realizeaz ambele lucruri.

Sisteme de operare

123

6.6.". .e!tiunea !i!te(ului I2E 7n #INUC


4eea ce aduce nou *inux R ul este noiunea de module ncrca ile. .n modul ncrcabil este o poriune de cod ce poate fi ncrcat n nucleu n timp ce sistemul funcioneaz. =n mod normal acestea sunt drivere dispozitiv tip bloc sau caracter dar pot fi i fiiere! protocoale de reea! programe de monitorizare a performanelor etc. 4nd un modul este ncrcat se petrec urmtoarele operaii %modulul este realocat dinamic n timpul ncrcrii1 %sistemul verific dac resursele de care are nevoie sunt disponibile1 %se seteaz toi vectorii de ntrerupere afereni1 %se actualizeaz tabloul de drivere pentru a putea trata un nou dispozitiv ma"or1 %se ruleaz driverul pentru a putea realiza orice iniializare specific dispozitivului1 %n final! dup toate aceste operaii! driverul este instalat ca orice driver ncrcat static. $rin acest procedeu de ncrcare dinamic a driverului! *IN.3 R ul se deosebete fundamental de toate variantele .NI3 clasice care ncarc driverele n mod static i care la orice ncrcare a unui driver nou trebuie s recompileze nucleul.

6.6.,. .e!tiunea !i!te(ului I2E 7n DINDODS


$rincipalul scop urmrit n gestiunea I7( de &+ 2IND+2& este acela de a avea un cadru! n care s opereze diferitele dispozitive de I7(! constnd dintr%un set de proceduri independente de dispozitive care se ocup de anumite aspecte legate de evenimentele de I7(. *a acestea se adaug un set de drivere de dispozitiv! ncrcate! care se ocup de comunicarea cu dispozitivele. 6.6.3.1. Str(ct(ra general! a sistem(l(i de I', n S8 ;I<18;S =ncepnd cu &+ 2IND+2& N'! sistemul de I7( este de tipul pac#et dri"er. -ceasta nseamn c pentru fiecare cerere de I7( sistemul asambleaz un pachet numit I'8 2e:(est Pac=et "I2P$ care descrie complet operaia de I7(. I$, este utilizat de diferitele componente ale sistemului de I7( n decursul operaiei.

124

Sorin Adrian Ciureanu

&(,AI4II &I&'() )odul de gestiune I7(

IRP

IRP

D,IA(,

3 4 4ontroler > $eriferic &istemul de tratare a ntreruperilor

Fi .6.1P. Co(ponente ale !i!te(ului I2E 7n SO DINDODS NT. #igura ?.9F arat schematic interaciunea dintre diferitele componente ale sistemului de I7( i operaiile aferente. 9 R .n proces care dorete s iniieze o operaie de I7( apeleaz o funcie de bibliotec care genereaz un apel sistem. -cest apel va fi preluat de ctre nucleu! component ser"icii sistem! transfernd controlul unui modul ce realizeaz o gestiune de resurse n funcie de natura operaiei de I7(. 8 R )odulul de gestiune I7( trimite ctre driver pachetul I,$ care conine informaii despre codul operaiei! parametrii specifici operaiei i contextului de execuie. ; R Driverul pornete I,$ R ul i apoi genereaz comenzile ctre periferic. < R 4nd se termin operaia de I7(! controlerul genereaz o ntrerupere care va fi tratat n dou etape %n prima etap se execut numai operaiile ce necesit utilizarea unui nivel de privilegiu ridicat1 acestea sunt executate de I&, /Interrupt &ervice ,outine0! o rutin care ia n considerare numai acele ntreruperi de I7(.

125 Sisteme de operare %n a doua etap se execut de ctre driver o rutin! denumit D$4 /Deferred $rocedure 4all0. -ceast rutin ruleaz n modul super"izor i ndeplinete diferite funcii sistem. 4uvntul deferred /amnat0 se refer la faptul c execuia este amnat pn cnd ntreruperea coboar la un nivel destul de sczut. -cest tip de rutin este utilizat de nucleu pentru procesarea ntreruperilor de I7( dar i pentru evenimente legate de ceasul de timp real. @ R Driverul iniiaz o finalizare a cererii de I7(! operaie executat de modulul de gestiune I9: prin intermediul unei rutine -$4 /-sSnchronous $rocedure 4all0. -ceasta transfer datele din zona sistem n spaiul de adresare asociat firului de execuie care a iniiat cererea de I7(. ? R &e terge I$, i se returneaz controlul.

6.6.3.2. 1ri&ere n ;I<18;S Driverele din 2IND+2& ar trebui s ndeplineasc un standard e cuprinde urmtoarele cerine %s trateze cererile de I7( primite care respect un anumit format standard1 %driverul s fie scris ntr%un limba" orientat pe obiecte! aa cum este n totalitate &+ 2IND+2& /ncepnd de la 2IND+2& 8FFF01 %s permit dispozitivelor Gplug%and%plaSH s fie adugate sau nlturate dinamic1 aceasta nseamn c dac un dispozitiv gestionat de un driver este adugat sau eliminat din sistem! driverul trebuie s fie pregtit s primeasc aceast informaie i s acioneze corespunztor1 %s prezinte gestiunea consumului de putere unde este cazul1 %driverul s fie configurabil! cu privire la resursele utilizate1 nu trebuie s se fac nici o presupunere prealabil despre liniile de ntrerupere sau porturile de I7( pe care dispozitivele le utilizeaz1 %driverul s fie reentrant pentru a putea fi utilizat pe un sistem multiprocesor1 aceasta nseamn c toate structurile de date ale driverului s fie accesibile numai din interiorul regiunilor critice1 % s fie compatibil cu versiunile mai vechi! ncepnd cu 2IND+2& LQ1 s%ar putea s fie necesar recompilarea driverului pentru fiecare sistem i utilizarea directivelor de preprocesare din 4! care sunt permise.

126

Sorin Adrian Ciureanu

Capitolul 9 .ESTIUNEA RESURSE#OR #O.ICE. SISTEMU# DE FI@IERE


9.1. NOIUNI INTRODUCTI*E
$entru aplicaiile soft sunt necesare dou condiii eseniale % stocarea informaiei1 % regsirea informaiei. $n acum! singura entitate pe care am studiat%o a fost procesul. -cesta! ns! nu beneficiaz de aceste dou condiii! un proces neputnd fi stocat ntr%un mediu de memorare extern i! implicit! nu se poate apela la informaiile deinute de el dup o anumit perioad. De aceea se impunea introducerea unei noi entiti care s satisfac cele dou condiii. -ceast entitate a fost denumit fi(ier iar sistemul ce gestioneaz fiierele se numete sistemul de fi(iere. #iierul este o resurs logic a sistemului de operare i este memorat ntr%un mediu extern de memorare. $rin definiie! fiierul este %unitatea logic de stocare a informaiei1 %o colecie de informaii definit de creatorul ei1 %o colecie de informaii mapate pe perifericile fizice. $entru a furniza un mod de pstrare a fiierelor! multe sisteme de operare au i conceptul de director ca o cale de a grupa mai multe fiiere. &istemul de fiiere dintr%un &+ trebuie s realizeze urmtoarele operaii %4rearea i tergerea fiierelor7directoarelor. %Denumirea i manipularea fiierelor1 fiecare fiier ar trebui s aib un nume care s fie reprezentativ pentru coninutul su1 manipularea fiierelor const n operaiile ce se pot efectua cu ele! ca scriere ! citire! cutare. %-sigurarea persistenei datelor. -cest lucru nseamn satisfacerea condiiei de regsire a datelor stocate! chiar i dup perioade de timp foarte

12 Sisteme de operare mari. De asemenea trebuie s existe posibilitatea de refacere a coninutului unui fiier n caz de accident! posibilitate pe care sistemul de fiiere trebuie s o pun la dispoziie. %-sigurarea mecanismelor de acces concurent al proceselor din sistem la informaiile stocate n fiier.

9.". C#ASIFICAREA FI@IERE#OR 9.".1. Cla!ifi&area fi/ierelor )up !tru&tur


7.2.1.1. Sec&ene de octei #iierul este alctuit dintr%un ir de octei. Interpretarea lor este fcut de ctre programele utilizator! conferindu%se astfel acestui tip de structur o maxim flexibilitate. )area ma"oritatea a sistemelor de operare actuale! printre care .NI3 i 2IND+2&! prezint acest tip de structur. 7.2.1.2. Sec&ene de nregistr!ri .n fiier este alctuit dintr%o secven de nregistrri! de obicei specific unui anumit dispozitiv periferic. -stfel! pentru imprimant! era linia de tiprit format din 9;8 de caractere! pentru lectorul de cartele era o coloan .a.m.d. -cest tip de structur ine de"a de domeniul istoriei. 7.2.1.3. Str(ct(r! ar+orescent! &tructura intern a unui fiier este organizat ca un arbore de cutare. .n arbore de cutare este un arbore binar ale crui noduri au o cheie de identificare. 4heia asociat unui anumit no este mai mare dect cheia asociat unui nod din sub%arborele drept. 4heia asociat unui anumit nod este mai mic dect cheia asociat uni nod din sub%arborele stng. + astfel de structur este utilizat n calculatoarele de mare capacitate.

9.".". Cla!ifi&area fi/ierelor )up tip


7.2.2.1. 0i*iere normale -ceste fiiere conin informaie utilizator i pot fi de dou feluri %fiiere text1

12!

Sorin Adrian Ciureanu

%fiiere binare. #iierul text este format din linii de text1 fiecare linie este terminat cu caracterele 4, /carriage return0 sau *# /line feed0. #iierul binar este organizat ca secvene de octei dar sistemul de operare i poate asocia o anumit structur intern! cazul tipic fiind al fiierelor executabile. 7.2.2.2. 1irectoare "-ataloage$ &unt nite fiiere sistem destinate gestionrii structurii sistemului de fiiere. )odul obinuit de organizare a fiierelor on%line la un sistem de operare modern este gruparea lor n directoare /cataloage0. #iecare catalog este tot un fiier i poate fi inclus n alt catalog! ceea ce duce la apariia unui arbore de cataloage. 7.2.2.3. 0i*iere speciale de tip caracter'+loc &unt destinate utilizrii n con"uncie cu dispozitivele periferice. .n fiier special de tip loc este format dintr%un ir de blocuri numerotate! la fiecare bloc existnd un acces secvenial. .n fiier special de tip caracter este utilizat pentru dispozitive periferice care utilizeaz fluxuri de caractere.

9.".,. Cla!ifi&area fi/ierelor )up !uportul pe &are !unt re-i)ente


Din acest punct de vedere fiierele pot fi %fiiere pe disc magnetic1 %fiiere pe band magnetic1 %fiiere pe imprimant1 %fiiere pe ecran1 %fiiere pe tastatur.

9.".0. Cla!ifi&area fi/ierelor )up a&&e!


7.2.%.1. 0i*iere c( acces sec&enial =n aceste fiiere! pentru a a"unge la informaie! trebuie mai nti s se parcurg nite structuri. (ste cazul tipic al benzii magnetice. =n accesul secvenial nu se pot face citiri i scrieri n acelai timp.

Sisteme de operare 7.2.%.2. 0i*iere c( acces direct

12"

-ccesul se face direct ntr%o structur dat! existnd posibiliti de a se face citiri i scrieri n acelai timp. (ste cazul tipic al hard discului. 7.2.%.3. 0i*iere c( acces inde#at &e face acces direct prin coninut! folosind o serie de tehnici ca fiiere de index! fiiere multi list! arbori binari! hashing etc.

9.,. ATRIBUTE @I OPERAII CU FI@IERE 9.,.1. Atri>ute


Nume % numele fiierului este! pentru toate sistemele de operaii! pstrat n form uman inteligibil. 'ip % acest atribut este absolut necesar deoarece &+ cuprinde mai multe tipuri de fiiere/binar! text..0. *ocaie R este un pointer la locaia fiierului pe perifericul de stocare. $rotecie R n legtur cu protecia fiierului! cele mai multe atribute se refer la posesorul su i la drepturile de acces ale utilizatorilor si. 'imp! data i identificatorul de utilizator R informaii pentru protecia! securitatea i monitorizarea utilizrii.

9.,.". Operaii &u fi/iere


$rezentm! n continuare! principalele operaii cu fiiere . %4rearea unui fiier! "reat(). %4itirea unui fiier1 read();se citesc din fiier un numr specificat de octei de la o poziie curent. %&crierea ntr%un fiier! &rite()1 se scrie ntr%un fiier un numr specificat de octei! ncepnd de la poziia curent. %Deschiderea unui fiier! open()1 cutarea n structura de directoare de pe disc a intrrii fiierului i copierea coninutului intrrii n memorie.

13#

Sorin Adrian Ciureanu %Descriptorul de fiier! fd1 n urma operaiei de deschidere a unui fiier! se returneaz un ntreg! numit descriptor de fiier! care va fi utilizat de procesul care a iniiat operaia open() pentru toate operaiile ulterioare asupra fiierului respectiv. Descriptorul de fiier este folosit de &+ ca un index ntr%o tabel de descriptori asociat fiecrui proces! n care se regsesc i ali descriptori asociai altor fiiere folosite de procesul respectiv. %Ntergerea unui fiier! de#ete(), 1n#ink(). %'runchierea unui fiier! tr1n"(), nseamn tergerea unei zone contigue! de obicei la nceputul sau sfritul fiierului. %=nchiderea unui fiier! "#ose(), este mutarea coninutului unui fiier din memorie n structura de directoare de pe disc. %-dugarea de date la sfritul unui fiier! append(). %&etarea poziiei n fiier! seek(). %,epoziioanrea n fiier, #seek(). %,edenumirea unui fiier, rename(). %+peraia de setare i citire a atributelor unui fiier,setattri$1tes(). -ceste operaii prezentate au echivalent n funciile bibliotec pe care utilizatorul le poate apela din program. *a rndul lor! aceste funcii iniiaz apeluri sistem. =n sistemele de operare actuale accesarea unui fiier se face aleatoriu i nu secvenial ca n sistemele mai vechi. -ceasta nseamn c se pot face operaii de scriere7citire n orice poziie din cadrul fiierului! adic orice octet din fiier este adresabil.
)arJer de accesare a uui octet +ctet 9 +ctet 8 +ctet ; +ctet J +ctet n

Fi . 9.1. Fi/ier &u !e&+en )e o&tei.

9.0. IMP#EMENTAREA SISTEMU#UI DE FI@IERE 9.0.1. Alo&area fi/ierelor pe )i!&


.n &+ lucreaz la nivel logic cu blocuri. .n bloc este format din dou sau mai multe sectoare fizice. .na din problemele eseniale ale implementrii sistemului de fiiere este modul n care blocurile din disc sunt alocate pentru fiiere. (xist! la ora actual! trei posibiliti de alocare

Sisteme de operare %alocare contigu1 %alocare nlnuit1 %alocare secvenial. 7.%.1.1. .locare contig(!

131

=n acest mod de alocare fiecare fiier ocup o mulime contigu de blocuri pe disc! adic o mulime n care elementele se ating. -vanta"ele acestei alocri sunt % simplicitatea! fiind necesare doar numrul blocului de nceput i numrul de blocuri ale fiierului1 de exemplu! un fiier cu Q blocuri ! cu adresa blocului de nceput 98;<! va fi reprezentat pe disc astfel Bloc 98;< 98;@ 98;? 98;P 98;Q 98;L 98<F 98<9

Fi . 9.". Repre-entarea unui fi/ier &u < >lo&uri. % faptul c sunt permise accese directe. Dezavanta"e %exist o risip de spaiu foarte mare! adic o mare fragmentare a discului datorat condiiei de contiguitate a blocurilor din fiier1 %fiierele nu pot crete n dimensiune ceea ce constituie un impediment important. -locarea contigu a fost folosit n primele sisteme de operare! n prezent aproape nu mai este utilizat. 7.%.1.2. .locarea nl!n(it! #iecare fiier este o list liniar nlnuit de blocuri pe disc. #iecare bloc conine partea de informaie! care este blocul propriu zis! i o legtur spre blocul urmtor! de tip pointer. =n figura P.;. este dat o astfel de reprezentare pentru un fiier format din < blocuri. -vanta"e %blocurile unui fiier pot fi mprtiate oriunde n disc cci nu mai exist condiia de contiguitate1 %fiierul poate crete n dimensiuni pentru c oricnd i se pot aloca blocuri libere de pe disc1 %accesul secvenial se face relativ uor.

132

Sorin Adrian Ciureanu

Dezavanta"e % accesul direct se face destul de greu! datorit numeroaselor legturi ce pot s apar la un moment dat1 % o corupere a lanului de pointere! duce la distrugerea fiierului sau chiar a ntregului sistem de fiiere. -cest tip de alocare este specific sistemelor de operare ce folosesc tabela #-' /#ile -location 'able0. =n tabela #-' un fiier este reprezentat ca n exemplul din figura P.<.
aon date Dloc 2" $ointer Dloc # aon date Dloc 2" $ointer Dloc 2## aon date Dloc 2## $ointer Dloc 1234 aon date Dloc 1234 $ointer

Fi . 9.,. Repre-entarea unui fi/ier &u 0 >lo&uri. Alo&are 7nlnuit. Nume fiier test Nr. bloc nceput 8L Nr. bloc sfrit 98;<

Fi . 9.0. Repre-entarea unui fi/ier 7n ta>ele FAT. &isteme de operare ce utilizeaz alocarea nlnuit! deci tabela #-'! sunt )& D+&! 2IND+2& L@! 2IND+2& LQ! +&78/versiunea 9 i 80. 7.%.1.3. .locarea inde#at! =n acest tip de alocare se pun la un loc toi pointerii! ntr%un bloc de index. -locarea indexat grupeaz referinele i le asociaz cu un fiier particular. -vanta"e %se realizeaz un acces direct1 %aproape dispare fragmentarea extern %este o situaie avanta"oas n cazul n care sistemul de operare are multe fiiere de dimensiune mic. Dezavanta"e %implic un cost suplimentar prin accesul la blocul de index.

133 Sisteme de operare -locarea indexat este utilizat n sistemele .NI3! n sistemul cu i%

noduri. .n i%nod /index nod0 conine un cmp de date n care sunt stocate atributele fiierului respectiv i o legtur spre alt bloc. #iecrui fiier i corespunde un i%nod. &tructura unui nod de indexare este dat n figura P.<.
atribute 1 2 3 bloc 4 5 6 Bloc de indirectare dublu ! " " 1# 11 12 13 Bloc de indirectare triplu Bloc de indirectare simplu

Fi . 9.0. Stru&tura unui i%no) 1no) )e in)e8are4. -ceast implementare permite o indirectare pn la nivel de trei blocuri. -dresa indexat unde se gsesc informaiile din fiier poate fi %blocul iniial! dac adresa este mai mic dect 9F blocuri1 %blocul urmtor indexat! pentru bloc de indirectare simpl1 %al doilea bloc! dat de blocul urmtor! pentru bloc de indirectare dubl1

134

Sorin Adrian Ciureanu %al treilea bloc! dup indirectarea dat de primele 8 blocuri! pentru bloc de indirectare tripl.

9.0.". E+i)ena >lo&urilor li>ere


+peraiile de creare! tergere! scriere ! efectuate asupra fiierelor! sunt operaii dinamice! ceea ce necesit! n orice moment! alocare7dealocare de blocuri pentru fiiere. 4um se aloc! firesc! blocuri libere n acel moment! este necesar ca sistemul de fiiere s aib o eviden a blocurilor libere n orice moment. 4ele mai utilizate metode de eviden sunt %metoda listei nlnuite1 %metoda hrii de bii1 %gruparea. =n prima metod! blocurile libere din disc sunt organizate ntr%o structur de list simplu nlnuit. +peraiile efectuate asupra acestei liste sunt inserarea de noi noduri! pentru blocurile libere nou aprute! i tergerea de noduri pentru blocurile ce au fost ocupate. -ceast list este implementat la o adres dintr%un bloc dinainte stabilit. Implementare permite o indirectare pn la nivel de trei blocuri.

Bloc liber

Bloc liber

Bloc liber

Bloc liber

Fi . 9.5. #i!ta !i(plu 7nlnuit a >lo&urilor li>ere )in )i!&. -dresa indexat unde se gsesc informaiile din fiier poate fi %blocul iniial! dac adresa este mai mic dect 9F blocuri1 %blocul urmtor indexat! pentru bloc de indirectare simpl1 %al doilea bloc! dat de blocul urmtor! pentru bloc de indirectare dubl1 %al treilea bloc! dup indirectarea dat de primele 8 blocuri! pentru bloc de indirectare tripl.

135 Sisteme de operare =n metoda hrilor de bii! se utilizeaz o structur de hart de bii n care fiecare bit corespunde unui bloc de pe disc. .n bit F nseamn c blocul este liber iar un bit 9 nseamn c blocul este ocupat. -ceast metod are avanta"ul! fa de prima! c harta de bii are o dimensiune constant! relativ mic. =n plus! localizarea unei zone libere de blocuri cu dimensiune prestabilit se face uor! prin cutarea n hart a unei secvene de bii F.
Bl. 1
9

"
F

,
F

0
F

5
F

6
9

9
9

<
9

J
9

1P
F

11
F

1"
9

1,
F

10
F

15
F

aon de < blocuri libere Fi . 9.6.:art )e >ii pentru e+i)ena >lo&urilor li>ere pe )i!&. =n metoda gruprii se folosete o structur care memoreaz zonele libere din disc! fiecare zon fiind caracterizat prin adresa primului bloc din zona liber i prin numrul de blocuri.

9.0.,. Efi&iena /i perfor(ana !i!te(ului )e fi/iere


(ficiena unui sistem de fiiere depinde n primul rnd de doi factori %de algoritmii de alocare a discului! discutai anterior1 % de tipurile de date pstrate n intrarea fiierului din director. $erformana unui sistem de fiiere poate fi mbuntit prin trei factori %disc cache1 aceasta nseamn o seciune bine determinat a memoriei principale! utilizat ca memorie cache a blocurilor de disc cele mai des utilizate1 %free+ ehind (i read ahead care sunt tehnici de optimizare a accesului secvenial1 %,-) disc care nseamn declararea unei poriuni de memorie principal ca un disc virtual.

9.0.0. Fia>ilitatea !i!te(elor )e fi/iere


(ste necesar ca sistemele de fiiere s ofere instrumente care s permit urmtoarele lucruri a0%(vitarea distrugerii informaiei pe disc. b0%,ecuperarea informaiilor n urma unor erori hard sau soft.

136

Sorin Adrian Ciureanu c0%-sigurarea consistenei sistemului de fiiere. 7.%.%.1. ,&itarea distr(gerii informaiei pe disc

=n acest context! una dintre cele mai importante probleme este evidena blocurilor defecte /bad blocJs0. -ceast problem este rezolvat att la nivel hard ct i la nivel soft. *a nivel hard! pn n anul 9LL;! era permis unui productor de hard discuri ca acestea s aib un numr limitat de sectoare defecte! sectoare ce erau stanate pe hard disc. Dup 9LL;! standardele internaionale nu au mai permis productorilor s scoat pe poarta fabricii discuri cu sectoare defecte. *a nivel soft! sistemul de operare! prin intermediul sistemului de fiiere! are ncorporat un fiier ad loc n care sunt trecute toate blocurile defecte ale hard discului. .n bloc situat n acest fiier nu va fi utilizat de sistemul de fiiere! fiind ignorat. (xist dou tipuri de metode pentru a determina dac un bloc este defect i pentru a%l trece n fiierul de bad%bloc %metode offline1 %metode online. )etodele offline constau n a rula programe fr ca sistemul de operare s fie ncrcat! deci a efectua teste independent de sistemul de operare. *a sistemele mai noi acest lucru se face! de obicei! prin formatarea lo!le"el! cnd se determin blocurile defecte! se trec ntr%o memorie local a discului i apoi ! la ncrcarea &+! ele vor fi trecute n fiierul ad loc#. *a sistemele mai vechi! cnd nu exista noiunea de formatare a discului! se treceau teste! se determinau sectoarele defecte i se derutau aceste sectoare! n sensul c se treceau pe pista de rezerv a discului i nu mai erau considerate blocuri defecte. )etodele online se desfoar att timp ct sistemul de operare este activ. De obicei! sistemul de fiiere are nglobat un program care testeaz blocurile unui disc i le declar defecte dac este cazul. 7.%.%.2. 2ec(perarea informaiei n (rma (nor erori soft sa( /ard ,ecuperarea unui fiier poate fi fcut prin urmtoarele metode %prin mecanisme de ac#+up1 %prin sisteme "urnalizate. .n mecanism de bacJ%up nseamn copierea ntregului sistem de fiiere pe alt periferic dect discul! adic pe band magnetic sau! mai

13 Sisteme de operare adesea! pe streamer. -ceast operaie de salvare se face periodic! perioada fiind hotrt de inginerul de sistem! i se numete massi"e dump sau periodic dump. $rincipalul ei dezavanta" const n timpul lung ce necesit. (xist i o variant ce necesit timp mai scurt! numit incremental dump, care const n salvarea pe band sau pe streamer numai a fiierelor ce au fost modificate de la ultima operaie de salvare. &istemele "urnalizate nregistreaz fiecare actualizare a sistemului de fiiere ca pe o tranzacie. 'oate tranzaciile sunt scrise ntr%un "urnal. + tranzacie este considerat comis atunci cnd este scris n "urnal. 'ranzaciile din "urnal sunt operate asincron n sistemul de fiiere. Dup ce sistemul de fiiere este modificat! tranzacie este tears din "urnal. =n momentul n care sistemul de fiiere a czut dintr%o eroare de hard sau soft! se repornete sistemul de operare i tranzaciile din "urnal vor fi! toate! actualizate.

7.%.%.3> .sig(rarea consistenei sistem(l(i de fi*iere $robleme de consisten a sistemului de fiiere apar n cazul n care unele modificri fcute sistemului de fiiere nu au fost actualizate pe disc. Aerificarea consistenei sistemului de fiiere se face! att la nivel de bloc ct i la nivel de fiiere! cu a"utorul unor programe utilitare. .n exemplu de program care verific consistena la nivel de bloc! din sistemul .NI3! este cel dat n continuare. 49% indic numrul de apariii ale blocului respectiv n toate i% nodurile. 48% indic numrul apariiilor blocului n lista de blocuri libere. =n mod normal trebuie s avem 49>48O9 Ta>elul 9.1. Situaiile anor(ale &are pot ! apar 7n a!i urarea &on!i!tenei !i!te(ului )e fi/iere. 48 &ituaie aprut 4orecie F &e irosete un bloc ce nu va putea fi &e face 48 O 9 alocat 9 (xist riscul ca blocul s fie alocat &e face 48OF mai multor fiiere1 pot aprea suprancrcri de date ]9 Bloc alocat mai multor fiiere &e face 48O9 F Blocul este ters ntr%unul din fiiere1 &e aloc 49%9

49 F 9 F ]9

13!

Sorin Adrian Ciureanu el va fi trecut n lista de noduri libere i! eventual! alocat altui fiier. 4elelalte 49%9 referine la blocul respectiv vor adresa o informaie invalid ntruct e posibil ca el s fie alocat unui fiier nou creat. blocuri libere n care se copiaz coninutul blocului incorect adresat.49%9 dintre referinele ctre blocul respectiv vor fi nlocuite ctre copiile acestuia.

$entru verificarea consistenei la nivel de fiier se folosesc dou contoare! 4#9 i 4#8. 4#9 contorizeaz apariiile fiierului n directorul de sistem i 4#8 contorizeaz numrul de legturi stocat n i%nodul asociat fiierului respectiv. =n mod normal 4#9O4#8. &ituaiile anormale sunt 4#9\ 4#8! fiierul va figura ca fiind adresat chiar dac el a fost ters din toate directoarele unde figura i irosete un i%nod1 4#9]4#8! se aloc acelai i%nod pentru dou fiiere diferite.

9.0.5. Prote&ia fi/ierelor


(ste foarte important ca fiecare utilizator s%i defineasc drepturile de acces asupra propriilor fiiere! preciznd cine le poate accesa i ce operaie poate efectua asupra lor. &istemul .NI3 are unul din cele mai eficiente sisteme de protecie a fiierelor. In acest sistem sunt trei tipuri de utilizatori i proprietari proprietarul fiierului! utilizatori membri ai grupului din care face parte posesorul fiierului! ali utilizatori. &e efectueaz trei tipuri de operaii citire! scriere i execuie.
Proprietarul fi/ierului 9 9 9 Utili-atoriA (e(>ri ai rupului 9 F 9 9 Ali utili-atori F F

4itire scriere execuie 4itire scriere execuie 4itire scriere execuie

Fi . 9.9. I(ple(entarea !i!te(ului )e prote&ie 7n UNIC.

13" Sisteme de operare Implementarea se face cu un grup de L bii! ; bii de fiecare operaie! pentru fiecare tip de utilizator. -cest grup de L bii este coninut n unul dintre atributele care se gsesc n i%nodul asociat. =n acest caz proprietarul are toate drepturile asupra sistemului! utilizatorii membri ai grupului au drept de citire i execuie iar ceilali utilizatori au doar dreptul de citire. )etoda utilizat n sistemul 2IND+2& este cea a listelor de acces. #iecrui fiier i este asociat o list de control de acces /acces control list; AC<). *ista conine mai multe intrri de control al accesului / acces control entries O-4(0. #iecare -4( specific drepturile de acces pentru un utilizator sau grup de utilizatori! coninnd un identificator al acestora! o descriere a drepturilor i drepturile pe care le confer asupra fiierului! precum i alte opiuni cum ar fi cea legat de posibilitatea ca un fiier creat n cadrul unui director s moteneasc drepturile de acces ale acestuia. =n momentul n care un utilizator ncearc s acceseze fiierul! se verific automat n cadrul listei de control asociate /-4*0 dac este vorba de un acces permis sau nepermis.

9.0.6. Or ani-area fi/ierelor pe )i!&


7.%.6.1. 8rganizarea fi*ierelor n S8 ce folosesc 0.) =n &+ care utilizeaz mecanisme de tip #-'! structura unei intrri de director este Numrul primului bloc $rincipalul dezavanta" al mecanismelor #-' este absena mecanismului de crearea legturilor la fiiere. $entru realizarea unor legturi ar fi necesar ca o aceeai intrare s figureze n dou sau mai multe directoare! avnd drept consecin duplicarea unor date legate de poziionarea pe disc! de timpul i dimensiunea fiierului respectiv! ceea ce poate genera inconsistene. 7.%.6.2. 8rganizarea n HP0S "Hig/ Performance 0ile S9stem$ -ceast organizare utilizeaz pentru descrierea localizrii pe disc a fiierelor structuri de date de tip arbori B care au principala proprietate de a avea performane ridicate pentru operaiile de cutare. Nume fiier (xtensie -tribute ,ezervat 'imp Data

14#

Sorin Adrian Ciureanu =n aceast organizare discul arat astfel %$rimele 9Q sectoare conin blocul de boot! superblocul! blocul de rezerv. -ceste blocuri conin informaii despre iniializarea sistemului de fiiere ! gestiunea sistemului i refacerea sistemului dup producerea de erori. %Benzi de Q)B! fiecare band avnd asociat o hart de bii de dimensiunea 8JB n care un bit corespunde unui bloc de <XB din cadrul benzii1 dac bitul e zero bitul este liber! dac bitul e 9 blocul este alocat. 5rile de bii sunt situate n mod alternativ la sfritul i la nceputul benzilor aa nct s se poat face alocri contigue de pn la 9?)B. &e las spaiu ntre fiierele existente i cele nou create n ideea obinerii unor alocri de blocuri contigue. Bloc de boot &uperbloc Bloc rezerv Banda 9 Bitmap 9 Bitmap 8 Banda 8 Banda; Bitmap ; YYYYYYYY Fi . 9.<. Or ani-area >en-ilor &u 'ri )e >ii 7n !i!te(ul :PFS. Dire&tor
Intrare n director

F%no)
-ntet Nume fiier -tribute -rbore de alocare (xtensie P (xtensie Q (xtensie 9

Fi . 9.J. De!&rierea fi/ierelor &u F%no)uri.

141 Sisteme de operare $entru descrierea fiierelor se utilizeaz #%noduri. #%nodurile sunt structuri de date care conin atributele i informaiile legate de localizarea pe disc a fiierelor. #iecare #%nod are cel mult Q extensii. (xtensiile sunt entiti distincte! fiecare din ele putnd adresa blocuri de maxim 9?)B.

9.5.6.,. Or ani-area 7n NTFS 1NeF Te&'nolo I File SI!te(4 #iecare volum N'#& conine un )#' /)aster #ile &Sstem0 care este un fiier cu informaii despre fiierele i directoarele de pe volumul respectiv. )#' este organizat ca o succesiune de nregistrri dintre care primele 9? sunt utilizate pentru descrierea )#'%ului nsui i pentru furnizarea informaiei necesare dup situaii de avarie. .rmtoarele nregistrri din )#' descriu fiierele i directoarele.

9.5. FI@IERE $N DIFERITE SISTEME 9.5.1. Si!te(e )e fi/iere pentru CD%ROM%uri


&istemele de fiiere pentru 4D%,+) sunt simple! fiind concepute pentru medii ce pot fi scrise o singur dat. (xist mai puine funcii dect la sistemele normale! deoarece! fiierele pe 4D%,+) neputnd fi terse sau adugate! nu exist nici mecanismul pentru evidena blocurilor libere. (xist un sistem de fiiere principal care respect I&FL??F i dou extensii ,ocJ ,idge i Coiliet. 7.5.1.1. Sistem(l de fi*iere IS?@66? (ste un standard adoptat n 9LQQ i aproape toate 4D%,+)%urile actuale sunt compatibile cu acest standard. -cest standard a urmrit dou lucruri eseniale % s nu depind de sistemul de operare utilizat1 % s nu depind de ordinea din memorie a octeilor. 4D%,+)%urile nu au cilindru ca la hard discuri ci organizat sub forma unei spirale continue. &pirala este mprit n blocuri de cte 8;@8 octei. &unt dou tipuri de blocuri %blocuri funcionale /bloc de preambul! bloc de corecie erori etc.01 %blocuri de date /un bloc de date are 8F<Q octei0. .n 4D%,+)! ca suport de muzic! este organizat astfel %lead+in /informaii scrise la nceputul compact%discului0

142

Sorin Adrian Ciureanu

%piste cu muzic1 %spaii neutilizate ntre piste1 %lead+aut /informaii scrise la sfritul compact%discului0. -desea poziia unui bloc n lungul spiralei este exprimat n minute i secunde. 4onversia ntr%un numr de bloc se face innd cont c 9secundOP@blocuri. &tructura soft a informaiei n I&+L??F este urmtoarea %primele 9? blocuri! cu o structur nedefinit! unde productorul poate s pun orice! de exemplu un program de iniializare1 %un bloc numit descriptorul de volum principal! care conine informaii generale despre 4D %identificatorul de sistem /;8bii01 %identificatorul de volum /;8 octei01 %identificatorul distribuitorului /98Q octei01 %identificatorul preparatorului datelor /98Q octei01 %; fiiere cu %dimensiunea blocului logic / 8F<Q0 %numrul de blocuri de pe 4D%,+) %datele de creare i expirare a 4D%,+)%ului. %adresa blocului unde ncepe catalogul rdcin1 %descriptor de volum secundar. 4atalogul rdcin este format dintr%un numr variabil de intrri! de lungime variabil. #iecare intrare n catalog este format 9F%98 cmpuri! unele n format -&4II iar altele n cod binar. 4ele n cod binar au 8 codificri format little = endian /primul bit! cel mai semnificativ bit0! specific procesoarelor $entium i format ig + endian /ultimul bit! cel mai semnificativ0! specific procesoarelor &parc. #ormatul unei intrri n catalog este urmtorul 9 9 Q Q P 9 8 < 9 <%9@ 9 &istem 9%lungimea intrrii n catalog 9%lungime nregistrrii de atribute extinse Q%poziia fiierului Q%dimensiunea fiierului P%data i ora 9% indicator 8%ntreesere <%numrul compact% discului 9%nume de baz <%9@%nume fiier 9%extensie %sistem

Sisteme de operare 7.5.1.2. ,#tensia 28-A 2I1B,.

143

'oate extensiile utilizeaz cmpul sistem pentru citirea 4D%,+)% urilor. 4elelalte cmpuri rmn la fel ca n I&+L??F. -ceast extensie a aprut pentru a citi fiierele .NI3 pe 4D%,+)%uri. (xtensiile sunt formate din urmtoarele cmpuri $3 % atribute $+&I3 $N % numere ma"or i minor pentru dispozitive &* % legturi simbolice N) R nume alternativ 4* R locaia copilului $* R locaia printelui ,( R relocare '# R indicator de timp 7.5.1.3. ,#tensia C83I,). (ste extensia I&+L??F venit din partea )icrosoft%ului i aduce urmtoarele nouti %nume lungi de fiiere1 %setul de caractere .NI4+D(1 %cataloage pe Q niveluri1 %cataloage cu extensii.

9.5.". Si!te(ul )e fi/iere UNIC


=n .NI3 structura discului este urmtoarea Blocul de B++' &uperblocul *ista de i%noduri Blocuri de date

Blocul de boot conine proceduri i funcii pentru iniializarea sistemului. &uperblocul conine informaii despre starea sistemului de fiiere dimensiunea! numrul de fiiere ce pot fi create! adresa spaiului liber de pe disc! numrul de i%noduri! numrul de blocuri. *ista de i%noduri este lista tuturor nodurilor index coninute n sistem! o list linear n care un nod este identificat printr%un indice. Dintre

144

Sorin Adrian Ciureanu i%noduri! primul din list este destinat gestiunii blocurilor diferite iar al doilea are directorul de rdcini. Blocurile de date conin att date utilizator ct i date folosite de sistemul de fiiere. 7.5.2.1. Sistem(l de fi*iere rapid Der=le9 -cest sistem a adus urmtoarele mbuntiri %extinderea numelor fiierelor de la 9< caractere la 8@? caractere1 %discul este mprit n grupuri de cilindri! fiecare cu superblocul! i% nodurile i blocurile proprii1 n acest fel se evit cutrile lungi prin gruprile locale1 ori de cte ori este posibil blocurile sunt alocate n grupul de cilindri ce conine i%nodul1 %s%au introdus dou tipuri de blocuri de lungime mare i de lungime mic1 n felul acesta fiierele mai mari i mpart aceste blocuri ntr%un mod mai eficient1 desigur! exist o complicare ma"or a codului. 7.5.2.2. Sisteme de fi*iere 3I<UE =n *inux exist mai multe sisteme de fiiere %ext 8 %ext ; %,eiser #& %3#& %C#& a$Sistem(l de fi*iere e#t 2 nu mai mparte discul n grupuri de cilindri! ca sistemul BerJeleS! ci n grupuri de blocuri! fr a se ine cont unde cad marginile cilindrilor. &e ncearc mprtierea cataloagelor n mod egal pe disc. &tructura lui ext 8 este dat n figura P.9F.
B++' 6rup F de blocuri 6rup 9 de blocuri 6rup 8 de blocuri 6rup ; de blocuri

&.$(, B*+4

Descriptor de bloc

5art de bii pe blocuri

5art de bii de i%noduri

I%noduri

Blocuri de date

Fi . 9 1P Stru&tura unui !i!te( E8t ". +$ Sistem(l de fi*iere e#t 3 este de fapt versiunea "urnalizat a sistemului ext 8! oferind informaii de "urnalizare de tip metadat! pentru

145 Sisteme de operare recuperri rapide. =n plus este o "urnalizare complet i ordonat a datelor. De asemenea! sistemul ext ; conine o indexare adiional! 4%tree, opiune de indexare ce ofer o performan bun n aproape toate situaiile. c$ Sistem(l 2eisert 0S este un sistem de fiiere 4+tree ce depete sistemele ext 8 i ext;! pentru fiierele mici /mai mici de <X+0. +fer o stabilitate foarte bun i conine "urnalizare de tip metadat. d$Sistem(l E0S este un sistem de fiiere cu "urnalizare metadatat care are un set de funcionabiliti robuste i este optimizat pentru stabilitate. -cest sistem este recomandat pentru sistemele de operare *inux care conin discuri &4&I i sisteme de stocare pe pe fibr optic! i care conin o surs de alimentare nentreruptibil. Deoarece 3#& utilizeaz ntr% un mod agresiv pstrarea datelor tranzitate n ,-)! programele ce nu sunt proiectate corect pot pierde multe date dac sistemul se oprete n mod neateptat. e$ Sistem(l C0S este sistemul de fiiere cu "urnalizare de nalt performan al IB). - devenit gata pentru producie i nu exist prea multe nregistrri pentru a se putea comenta pozitiv sau negativ asupra stabilitii acestuia n acest moment.

7.5.2.3. Sistem(l de fi*iere de reea <0S "<etwor= 0ile S9stem$ Aom studia sistemul N#& de la &un care este utilizat de ma"oritatea sistemelor .NI3. 4ele trei aspecte prezentate sunt %arhitectura N#&1 %protocoalele N#&1 %implementarea N#&. a$.r/itect(ra <0S. 4eea ce trebuie s realizeze un astfel de sistem este s permit unei mulimi de clieni i servere s parta"eze un sistem de fiiere comun. #iecare server de N#& export cataloage spre a fi exploatate de ctre clieni! la distan. &e export de fapt arborele ntreg de catalog. *ista cataloagelor exportate se gsete ntr%un fiier! cel mai adesea 9etc9e)ports , n aa fel nct aceste cataloage s fie exportate automat atunci cnd este pornit serverul. 4lienii acceseaz cataloagele exportate! montndu%le. -tunci cnd un client monteaz un catalog! acesta devine parte component a ierarhiei de cataloage. .n fiier poate avea nume diferite pentru clieni diferii! datorit faptului c poate fi montat n locuri diferite n arborii respectivi. $unctul de montare este n ntregime local pentru clieni. &erverul nu tie locaia de montare pentru nici unul dintre clieni.

146

Sorin Adrian Ciureanu +$Protocoale <0S. N#& utilizeaz dou protocoale client%server. $rimul protocol trateaz montarea. .n client poate trimite o cale la un server i are permisiunea de a monta catalogul n ierarhia sa de cataloage. &erverul returneaz clientului un identificator de fiier (file handle). Identificatorul de fiier conine cmpuri care identific unic tipul sistemului de fiiere! discul! numrul catalogului i informaia de securitate. .rmtoarele apeluri! ca &rite 'i reed, asupra fiierului din catalogul montat folosesc identificatorul de fiier. *a pornirea sistemului de operare! exist dou posibiliti de montare a fiierelor manual i automontare. )ontarea manual se face rulnd fiierul 9etc9rc, nainte de a intra n modul utilizator. -utomontarea permite ca o mulime de cataloage de la distan s fie asociate cu un catalog local. Nici unul dintre acestea nu este montat la pornirea clientului. $rima oar cnd este deschis un fiier la distan! &+ trimite un mesa" fiecrui server i primul care rspunde ctig i catalogul su este montat. -utomontarea are dou avanta"e principale %dac unul din serverele din 9etc9rc este inactiv! atunci este imposibil s se porneasc clientul fr mari dificulti1 %se obine un grad de toleran la defecte! permindu%se clientului s monteze o mulime de servere n paralel. -utomontarea este utilizat cel mai des pentru sistemele de fiiere numai cu citire! care conin fiierele binare ale sistemului. -l doilea protocol N#& este pentru accesul la fiiere i cataloage. =n general! aproape toate apelurilesistem sunt suportate de N#&! cu excepia lui open 'i "#ose ! deoarece nu este necesar s se deschid un fiier nainte de a fi citit i nici s se nchid cnd s%a terminat. =n acest tip de protocol! fiecare mesa" este independent. -vanta"ul protocolului const n faptul c serverul nu reine nimic despre conexiunile deschise ntre apeluri. Dac un server devine nefuncionabil i apoi i revine! nu se pierde nici o informaie despre fiierele deschise! pentru c nu exist o astfel de informaie. .n astfel de server care nu reine informaii despre starea fiierelor se numete fr stare (stateless). .n dezavanta" al acestui tip de servere este obinerea dificil a semanticii exacte privind fiierele. -stfel! un fiier poate fi deschis i nchis n aa fel ca celelalte procese s nu l poat accesa. -tunci cnd un fiier este nchis! bloca"ele sunt eliberate. Bloca"ele nu pot fi asociate cu fiierele deschise i de aceea N#& necesit un mecanism adiional pentru a trata blocarea fiierelor.

14 Sisteme de operare =n ceea ce privete protecia fiierelor! N#& utilizeaz mecanismul standard al .NI3%ului cu biii r&x. Deoareceacest mecanism este depit! se ncearc utilizarea criptografiei cu chei publice. c$Implementarea <0S-(l(i. &e utilizeaz o implementare pe trei straturi. $rimul strat este stratul apelurilor sistem pentru fiiere! de genul open, read, &rite. &e analizeaz apelurile! se verific parametrii i apoi se apeleaz al doilea strat. -l doilea strat este stratul sistemului virtual de fiier /A#&0. ,olul su este s menin un tablou cu o intrare pentru fiecare fiier deschis! analog cu structura i%nodurilor din .NI3. -cestr strat are pentru fiecare fiier deschis o nregistrare numit A%nod! format din perechea "irtual i+ node (i i+nod "irtual. A%nodurile sunt utilizate pentru a determina dac fiierul este local sau la distan. $entru fiierele de la distan sunt puse la dispoziie suficiente informaii pentru a putea fi accesate iar penttru fiierele locale sunt reinute sistemul de fiiere i i%nodul. -l treilea strat este constituit din memorii tampon i din discuri. &everul utilizeaz memorii tampon pentru date iar clienii utilizeaz dou memorii tampon una pentru atributele fiierelor i una pentru datele fiierelor. aona tampon a clienilor a"ut considerabil la mrirea vitezei! ca orice memorie cache. Din pcate ea este o memorie de tip incoerent. $entru a corecta acest inconvenient sau! cel puin! pentru a%l atenua! se folosesc diferite metode. .na este metoda cronometrului. =n fiecare bloc din zona tampon exist un cronometru care este setat la ; secunde! pentru blocuri de date! i la ;F secunde ! pentru blocuri catalog. Dup expirarea acestui timp! toate blocurile murdare /modificate! scrise0 din zona tampon sunt trimise la server! fiind salvate.

9.5.,. Si!te(ul )e fi/iere DINDODS


=n prima variant 2IND+2& s%au utilizat sisteme de fiiere #-'%9? i #-'%;8 /2IND+2& L@! L?0. =ncepnd cu 2IND+2& N'! s%a trecut la alt sistem de fiiere! N'#& /N' #ile &Sstem0! dat n continuare. 7.5.3.1. Sistem(l se fi*iere <)0S Din punct de vedere structural! un fiier N'#& const n fluxuri de octei! fiecare flux reprezentnd un atribut. -ceste fluxuri pot fi

14!

Sorin Adrian Ciureanu %fluxuri mici de octei /numele fiierului! identificatorul fiierului01 %fluxuri mari de octei /datele fiierului0. -ceast idee! de fiiere cu fluxuri multiple! a fost implementat la -pple )ac Intosh! unde fiierele aveau dou fluxuri de date i de resurse. =n continuare sunt date cteva exemple de de utilizare a fluxurilor multiple n N'#& %un program de editare de imagini ar putea avea fluxul fr nume pentru imaginea principal i un flux cu nume pentru o versiune miniaturizat1 %n editarea de text! dac se construiesc dou versiuni! versiunea temporar este folosit pentru fluxul cu nume i cea final pentru fluxul fr nume. =n general! fiecare flux de octei are un nume compus din numele fiierului! dou puncte! un nume de flux! fiecare flux avnd propria dimensiune i propriul zvor independent de celelalte fluxuri. Implementarea sistem(l(i de fi*iere <)0S. N'#& este un sistem de fiiere foarte complex! el fiind creat de la zero! nu ca celelalte siteme care au fost create pe baza )&%D+&%ului. 4ele mai importante caracteristici ale N'#&%ului sunt %structura sistemului de fiiere1 %cutarea fiierelor1 %compresia fiierelor1 %criptarea fiierelor. &tructura sistemului de fiiere N'#&. .n volum N'#&! care poate fi de exemplu o partiie a unui disc! este alctuit din %fiiere1 %cataloage1 %fiiere de tip hri de bii1 %alte structuri de date. #iecare volum este organizat ca o secven liniar de blocuri! cu dimensiune fixat! lungimea unui bloc variind ntre @98 octei i ?< XB! depinznd de dimensiunea volumului. =n general! se utilizeaz blocuri de <XB! deci de dimensiune medie! ntre blocurile mari /eficiente la transferuri0 i blocurile mici /eficiente pentru fragmentarea intern0. &tructura de date principal! din fiecare volum! este )#' /)aster #ile 'able0! tabela principal de fiiere. (a sete o secven liniar de nregistrri cu lungime fix de 9 XB. #iecare nregistrare din )#' este de fapt un fiier sau un catalog. + nregistrare conine atributele fiierului /numele! lista adreselor blocurilor etc0.

14" Sisteme de operare .n fiier foarte mare are mai multe nregistrri! prima! numit nregistrare de baz! cuprinde indirectrile ctre celelalte nregistrri. )#' este i el un fiier! putnd fi plasat oriund n volum. Ta>. 9. 1 Stru&tura MFT.
Nu(r 7nre i!trare Nu(e De!&riere

F 9 8 ; < @ ? P Q L 9F 99 98 9; 9< 9@ 9?

b)ft b)ft)ir r b*og#ile bAolume b-ttrDef b bBit)ap bBoot bBadelus b&ecure b.pcase b(xtend

'abel principal de fiiere 4opie )#' #iierul "urnal #iierele de tip volum Definiie atribute Directorul rdcin 5arta de bii a blocurilor utilizate =ncrcarea sistemului de operare *ista blocurilor diferite Descriptorul de securitate pentru toate fiierele 'abele de conversie a literelor mari (xtensii ,ezervate pentru utilizri ulterioare

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9XB%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
$rimele 9? nregistrri sunt rezervate pentru fiierele de metadate. #iecare nregistrare descrie un fiier care are atribute i blocuri de date. #iecare fiier are un nume care ncepe cu semnul b pentru a indica faptul c este un fiier de metadate. =nregistrarea F descrie fiierul )#'! indicnd unde sunt blocurile fiierului. =nregistrarea 9 este un duplicat al nregistrrii F! util dac unul din primele blocuri )#' se defecteaz. =nregistrarea 8 este fiierul "urnal. 'oate schimbrile sunt trecute n "urnal! cu excepia celor care modific datele utilizator. =nregistrarea ; conine informaii despre volum! cum ar fi dimensiunea! eticheta! versiunea. =nregistrarea < conine atributele fiierelor.

15#

=nregistrarea =nregistrarea =nregistrarea =nregistrarea diferite. =nregistrarea L conine informaia despre securitate. =nregistrarea 9F este utilizat pentru punerea n coresponden a literelor mari /evident pentru alfabetul latin! dar i mai util pentru alfabetele mai puin cunoscute ca armean! georgian! grecesc 0. =nregistrarea 99 este un catalog care conine diverse fiiere pentru cote de disc! identificatori de obiecte! puni de reY #iecare nregistrare )#' este compus dintrcun antet i o secven de perechi /antet atribut! valoare0. -ntetul nregistrrii conine un numr magic utilizat pentru verificri de validitate! o secven de numere actualizate de fiecare dat cnd o nregistrare )#' este realizat pentru un fiier mare! un contor al referinelor la fiier! numrul de octei utilizai din nregistrare! indicatorul nregistrrii de baz. N'#& definete 9; atribute care pot prea n nregistrrile )#'. -ceste atribute sunt 9.Informaia standard % indicator pe bii! momente de timp. 8.Numele fiierului R numele fiierului n .NI 4+D(. ;.Descriptorul de securitate R practic ne mai utilizat1 informaiile de securitate sunt n b(xtendb&ecure. <.*ista de atribute R locaia nregistrrilor )#'. @.Identificatorul obiectului R un identificator de fiier! pe ?< bii! unic n volum. ?.$unct de reanalizare R utilizat pentru montare i legturi simbolice. P.Aolume R numele volumului. Q.Informaii despre volum R versiunea volumului. L.Indexul rdcinii R utilizat pentru cataloage. 9F. Indexul de alocare R utilizat pentru cataloage foarte mari. 99.5ri de bii R utilizate pentru cataloage foarte mari. 98.#lux de "urnalizare R controleaz scrierea de b*og#ile. 9;.Date R fluxul de date. 4ompresia fiierelor. =n N'#& compresia fiierelor se face transparent. Dac fiierul este creat n modul arhivat! atunci se ncearc o compresie a blocurilor la scrierea fiierului i o decompresie la citire. -cest lucru! n modul arhivat! se face automat. 'ehnica de compresie este urmtoarea se ncearc mai nti compresia primelor 9? blocuri din fiier. Dac rezult 9@ sau mai puin!

Sorin Adrian Ciureanu @ conine fiierul rdcin. ? conine harta de bii a blocurilor alocate. P conine informaii despre ncrcarea &+ n memorie. Q este utilizat pentru nlnuirea i evidena blocurilor

151 Sisteme de operare compresia a reuit! dac rezult tot 9?! nu are loc compresie. $rocedeul continu cu urmtoarele 9? blocuri i se termin odat cu ultimele blocuri din fiier. *a decomprimare N'#& trebuie s tie care blocuri din fiier au fost comprimate i care nu. -cest lucru se realizeaz pe baza adreselor de disc.+ adres de disc F nseamn c acea adres a fost partea final a unui grup de 9? blocuri comprimate. 4riptarea fiierelor. &+ 2IND+2& 8FFF marcheaz cataloagele care vor fi criptate! ceea ce implic ca toate fiiereloe din catalog s fie criptate. 4riptarea i decriptarea nu sunt fcute de N'#& ci de un driver numit (#& /(ncrSpting #ile &Sstem0 situat ntre 5'#& i programele utilizator. =n felul acesta programele aplicaie nu sunt contiente de criptare iar N'#& este doar parial implicat n ea. -lgoritmul utilizat este o variant a lui D(& /Data (ncrSption &tandard0 dar arhitectura (#& permite adugarea de algoritmi noi n viitor.

152

Sorin Adrian Ciureanu

Sisteme de operare

153

Capitolul < SISTEME DE OPERARE PENTRU CA#CU#ATOARE PARA#E#E


<.1. NOIUNI INTRODUCTI*E
$latformele hard:are pentru programare paralel sunt %tablouri de procesoare1 %multiprocesoare1 %multicalculatoare1 %reele de calculatoare /staie de lucru n *-N0. =n funcie de platformele hard:are exist urmtoarele tipuri de sisteme de operare %sisteme de operare n reea, pentru platforme hard:are de tip multicalculatoare1 %sisteme de operare cu multiprocesoare, pentru platforme hard:are de tip multiprocesoare1 %sisteme de operare distri uite! pentru platforme hard:are de tip multicalculatoare. Denumirea de sisteme de operare distri uite se gsete n literatura de specialitate! n unele cazuri! pentru toate calculatoarele paralele. =n ultimul timp! ns! s%a impus termenul de distri uit numai pentru multicalculatoare! astfel nct termenul sisteme de operare distri uite nseamn sisteme de operare numai pentru multicalculatoare. + alt problem esenial ntr%un calculator paralel este distribuia sarcinilor ntre sisteme de operare! programe! compilatoare! problem neclarificat.. #i(>aHele )e pro ra(are n calculatoarele paralele pot fi la rndul lor clasificate n %limba"e de programare paralel! pentru programarea prin variabile parta"ate! pe multiprocesoare1 %limba"e de programare distri uit, pentru programarea prin transfer de mesa"e.

154

Sorin Adrian Ciureanu =n prezent exist un mare numr de limba"e de programare paralel i distribuit. -ceste limba"e sunt de dou categorii %limba"e paralele i distribuite dezvoltate din limba"e secveniale uzuale ca #ortran! $ascal! 41 astfel de limba"e sunt limba"ele $o:er #ortran! $o:er 4! 4_. %limba"e paralele i distribuite noi! scrise special pentru multiprocesoare i multicalculatoare1 astfel de limba"e sunt limba"ele +ccam! +rca! -da! $arlog! &,! (merald. + alt clasificare a limba"elor de programare paralele! legat de tipul compilatoarelor! este %limba"e de programare paralel e)plicite. %limba"e de programare paralel implicite. =n limba"ele de programare paralel explicite! programatorul este acela cruia i revine sarcina de a descrie algoritmul paralel n mod explicit! specificnd activitile paralele precum i modul de comunicare i sincronizare a proceselor sau threadurilor. =n limba"ele de programare paralel implicite! compilatorul este acela care detecteaz paralelismul algoritmului prezentat ca un program secvenial i genereaz codul corespunztor pentru execuia activitilor paralele pe procesoarele componente ale calculatorului. -stfel de compilatoare se mai numesc compilatoare cu paralelizare cci au sarcina de a paraleliza programul. Dezvoltarea acestor compilatoare este limitat de dificultatea de a detecta i analiza dependenele n programele complexe. $aralelizarea automat a programelor este mai uor de executat pentru paralelismul la nivel de instruciune! n care se distribuie instruciunile unei bucle! i este mai greu de fcut pentru programele cu o structur neregulat! care prezint apeluri multiple de funcii! proceduri! ramificaii sau bucle imperfect imbricate. .n exemplu de astfel de compilatoare este cel al multiprocesoarelor &ilicon 6raphics n care se ruleaz $o:er 4 i care includ un analizor de surs ce realizeaz paralelizarea automat a programelor. Din punct de vedere al sistemelor de operare intereseaz aspectele de cuplare ale hardului i softului. Din punct de vedere al hardului! multiprocesoarele sunt puternic cuplate iar multicalculatoarele sunt sla cuplate. Din punct de vedere al softului! un sistem slab cuplat permite calculatoarelor i utilizatorilor unui sistem de operare o oarecare independen i! n acelai timp! o interacionare de grad limitat. =ntr%un sistem soft:are slab cuplat! ntr%un grup de calculatoare fiecare are memorie proprie! hard:are propriu i un sistem de operare propriu. Deci

155 Sisteme de operare calculatoarele sunt aproape independente n funcionarea lor. .n defect n reeaua de interconectare nu va afecta mult funcionarea calculatoarelor! dei unele funcionaliti vor fi pierdute. .n sistem soft puternic cuplat are n componen programe de aplicaii care interacioneaz mult ntre ele dar i cu sistemul de operare. 4orespunztor celor dou categorii de hard:are /slab i puternic cuplat0 i celor dou categorii de soft:are /slab i puternic cuplat0! exist patru categorii de sisteme de operare! dintre care trei au corespondent n implementrile reale.

<.". SISTEME DE OPERARE $N REEA


&istemele de operare din aceast categorie au %hard:are sla cuplat1 %soft:are sla cuplat. #iecare utilizator are propriul su !or#station! cu un sistem de operare propriu care execut comenzi locale. Interaciunile care apar nu sunt puternice. 4el mai des apar urmtoarele interaciuni %conectarea ca user ntr%o alt staie! ceea ce are ca efect transformarea staiei proprii ntr%un terminal la distan al staiei la care s%a fcut conectarea1 %utilizarea unui sistem de fiiere global! accesat de toate staiile din reea! plasat intr%una din staii! denumit ser"er de fi(iere. &istemele de operare din aceast categorie au sarcina de a administra staiile individuale i serverele de fiiere i de a asigura comunicaiile dintre acestea. Nu este necesar ca pe toate staiile s ruleze acelai sistem de operare. 4nd pe staii ruleaz sisteme de operaii diferite! staiile trebuie s accepte toate acelai format al mesa"elor de comunicaie. =n sistemele de operare de tip reea nu exist o coordonare n execuia proceselor din reea! singura coordonare fiind dat de faptul c accesul la fiierele nelocale trebuie s respecte protocoalele de comunicaie ale sistemului.

<.,. SISTEME DE OPERARE CU MU#TIPROCESOARE


-ceste sisteme de operare au %hard:are puternic cuplat. %soft:are puternic cuplat. =ntr%un astfel de sistem hardul este mai dificil de realizat dect sistemul de operare.

156

Sorin Adrian Ciureanu .n sistem de operare pentru sisteme cu multiprocesoare nu difer mult de fa de un sistem de operare uniprocesor. =n ceea ce privete gestiunea proceselor! faptul c exist mai multe procesoare hard nu schimb structura sistemului de operare. Aa exista o coad de ateptare unic a proceselor pentru a fi rulate! organizat exact dup aceleai principii ca la sisteme uniprocesor. *a fel! gestiunea sistemului de intrare7ieire i gestiunea fiierelor rmn practic neschimbate. 4teva modificri sunt aduse gestiunii memoriei. -ccesul la memoria parta"at a sistemului trebuie fcut ntr%o seciune critic! pentru prevenirea situaiei n care dou procesoare ar putea s aleag acelai proces pe care s%l planifice n execuie simultan. 'otui! de cele mai multe ori! accesul la memoria parta"at trebuie s fie fcut de programator! adic de cel care proiecteaz aplicaia. &istemul de operare pune la dispoziie mi"loacele standard /semafoare! mutexuri! monitoare0 pentru implementarea realizrii seciunii critice! mi"loace care sunt aceleai ca la sistemele uniprocesor. De aceea! sistemele de operare pentru multiprocesoare nu trebuie fundamental tratate altfel dect sistemele de operare pentru uniprocesoare.

<.,.1. Pro ra(area paralel


=n programarea paralel! mai multe procese sau threaduri sunt executate concurent! pe procesoare diferite! i comunic ntre ele prin intermediul variabilelor parta"ate memorate n memoria comun. -vanta"ele programrii paralele sunt % o vitez de comunicare ntre procese relativ ridicat1 % o distribuie dinamic a datelor1 % o simplitate de partiionare. F.3.1.1. Memoria parta4at! ntre procese Deoarece n programarea paralel memoria parta"at "oac un rol important! s prezentm cteva caracteristici ale acesteia. -m vzut! n capitolele anterioare! c fiecare proces are un spaiu virtual de procese alctuit din %cod1 %date1 %stiv. .n proces nu poate adresa dect n acest spaiu iar alte procese nu au acces la spaiul de memorie al procesului respectiv.

15 Sisteme de operare =n memoria parta"at! modalitatea prin care dou sau mai multe procese pot accesa o zon de memorie comun este crearea unui segment de memorie parta$at. .n proces creeaz un segment de memorie parta"at definindu%i dimensiunea i drepturile de acces. -poi amplaseaz acest segment n propriul spaiu de adrese. Dup creare! alte procese pot s%l ataeze i s%l amplaseze n spaiul lor de adrese. (senial este ca segmentul de memorie s fie creat n memoria principal comun i nu ntr%una din memoriile locale.

F.3.1.2. ,#emple de programare paralel! Mo)elul PRAM )odelul PRAM /$arallel ,andom -cces )achines0 a fost dezvoltat de #ortane i 2illie pentru modelarea unui calculator paralel cu cost suplimentar de sincronizare i acces la memorie nul. (l conine procesoare care acceseaz o memorie parta"at. +peraiile procesoarelor la memoria parta"at sunt % citirea exclusiv /(xclusive ,ead !(,0 1 se permite ca un singur procesor s citeasc dintr%o locaie de memorie! la un moment dat1 % scriere exclusiv / (xclusive 2rite! (201 un singur procesor va scrie ntr%o locaie de memorie! la un moment dat1 % citire concurent /4oncurrent ,ead! 4,01 mai multe procesoare pot s citeasc o locaie de memorie la un moment dat1 % scriere concurent /4oncurent 2rite! 4201 mai multe procesoare pot s scrie ntr%o locaie de memorie la un moment dat. 4ombinnd aceste operaii! rezult urmtoarele modele (,(2! cu citire i scriere concurent1 este modelul cel mai restrictiv n care numai un singur procesor poate s scrie sau s citeasc o locaie de memorie la un moment dat1 4,(2! cu citire concurent i scriere exclusiv1 sunt permise accese concurente doar n citire! scrierea rmnnd exclusiv1 (,42! cu citire exclusiv i scriere concurent1 sunt permise accese concurente n scriere! citirea rmnnd exclusiv1 4,42! cu citire i scriere exclusiv1 sunt permise accese concurente de scriere i citire la aceiai locaie de memorie. &crierea concurent /420 se rezolv n urmtoarele moduri 4+))+N $,-)! operaiile de scriere memoreaz aceiai valoare la locaia accesat simultan.

15!

Sorin Adrian Ciureanu )INI).) $,-)! se memoreaz valoarea scris de procesorul cu indicele cel mai mic. -,BI',-,M $,-)! se memoreaz numai una din valori! aleas arbitrar. $,I+,I'M $,-)! se memoreaz o valoare obinut prin aplicarea unei funcii asociative / cel mai adesea nsumarea0 tuturor valorilor cu care se acceseaz locaia de memorie. -lgoritmi $,-) $entru algoritmii paraleli se folosete un limba" de nivel nalt /de exemplu C0 la care se adaog dou instruciuni paralele 90 fora##<#ista de pro"esareYdo <#ista instr1"Li1niY endfor &e execut! n paralel! de ctre mai multe procesoare /specificate n lista de procesoare0 unele operaii /specificate n lista de instruciuni0. 80 par$egin <#ista de instr1"Li1niY parend &e execut! n paralel! mai multe instruciuni /specificate n lista de instruciuni0. Pro ra( paralel )e )ifu-iune +peraia de difuziune /broadcast0 const din transmiterea unei date ctre toate procesele din sistem. Dac exist o dat ntr%o locaie din memoria parta"at! ea va trebui transmis ctre celelalte n procesoare. )odelul ales este (,(2. Dac procesoarele ar citi fiecare valoare din locaie! pentru n procesoare! ar rezulta o funcie de tip 1(n),deci un timp liniar care este mare i nu exploateaz posibilitatea de execuie concurent a mai multor procesoare.
P1 P2 ; P

$9 acceseaz x $8 acceseaz x $n acceseaz 3x rezult o funcie 8"n$

M Pn

x3 locaie de memorie Fi . <.1. Pro ra( paralel )e )ifu-iune 1(o)el ERED4.

15" Sisteme de operare &oluia de difuziune presupune urmtorii pai. % &e alege un vector aTnT! n fiind numrul de procesoare n memorie parta"at. % Data de difuzat este aTFU i n memoria local a procesorului $F . %=n primul pas ! la iteraia "OF! procesorul $ 9 citete data din aTFU! o nscrie n memoria local i n vectorul parta"at n poziia aT9U. % =n al doilea pas! la iteraia "O9! procesoarele $ 8 i $; citesc data din aTFU i aT9U! o nscriu n memoria local i n locaiile aT8U i aT;U. % =n general! n iteraia "! procesoarele i! cu condiia 8 "[i\8">9 ! citesc data de difuzat de la locaiile aTi%8 "U! o memorizeaz n memoria local i o nscriu n vector n locaiile aTiU. Iat un exemplu pentru nOQ procesoare. Data de difuzat iniial este 9FF. Iniial aTFU aT9U aT8U aT;U aT<U aT@U aT?U aTPU
9FF 9FF

$F

$9

$8

$;

$<

$@

$?

$P

$rimul pas /iteraia "OF0 aTFU aT9U


9FF 9FF 9FF 9FF

aT8U

aT;U

aT<U

aT@U

aT?U

aTPU

$F

$9

$8

$;

$<

$@

$?

$P

-l doilea pas /iteraia "O90 aTFU aT9U


9FF 9FF 9FF 9FF

aT8U
9FF 9FF

aT;U
9FF 9FF

aT<U

aT@U

aT?U

aTPU

$F

$9

$8

$;

$<

$@

$?

$P

-l treilea pas /iteraia "O80 aTFU aT9U


9FF 9FF 9FF 9FF

aT8U
9FF 9FF

aT;U
9FF 9FF

aT<U
9FF 9FF

aT@U
9FF 9FF

aT?U
9FF 9FF

aTPU
9FF 9FF

$F

$9

$8

$;

$<

$@

$?

$P

16#

Sorin Adrian Ciureanu Deoarece la fiecare iteraie se dubleaz numrul de procesoare care au recepionat data de difuzat! sunt necesare log 8n iteraii. =ntr%o iteraie "! sunt active 8" procesoare! cele cu indice i avnd 8"[i\8">9 . 'impul de execuie este estimat de 1(log n)! deci un timp sublinear. Iat o implementare a difuziunii ntr%un limba" formal $,-)! n (,(2 -2Z:<2:36A) int n, aFnC; fora##(![i<n)do for(G=!; G<#og n; GBB) if(HG<=i<HGB ) @"ite'te va#oarea din aFi-HGC; memoreaM* va#oarea 0n memoria #o"a#* a #1i 9i 'i 0n aFiC;A endfor Pro ra( paralel )e re)u&ere #iind date n valori ca elemente ale unui vector i operaia de adunare !>! reducerea este operaia aF CBaFHCBaFKCBI.BaFnC Implementarea secvenial a reducerii este for(i= ;i<n;iBB) aF!CB=aFiC &e observ c rezultatul reducerii se gsete n prima component a vectorului aTFU. *a fel ca i la difuziune! implementarea secvenial duce la un timp 1(n). -lgoritmul paralel de reducere este unul de tip (,(2! utiliznd m78 procesoare. &e consider iniial datele ntr%un vector aTnU! pentru simplificare lundu%se n ca multiplu de doi. $aii sunt urmtorii % n primul pas! iteraia "OF! toate procesoarele $i/F[i\n780 sunt active i fiecare adun dou valori aT8iU i aT8i>9U ! rezultatul fiind aT8iU 1 % n al doilea pas! iteraia "O9! sunt active procesoarele $i ! cu iO9 i iO8! care adun aT8iU cu aT8i>8U! rezultatul fiind aT8iU 1 % n general! n iteraia "! sunt active procesoarele cu indice i! multiplu de 81 fiecare actualizeaz locaia aT8iU! deci execut aT8iUOaT8iU >aT8i>8U. &e observ c numrul de iteraii " este log 8n ! deci avem un timp de execuie de tip 1(log n)! un algoritm sublinear.

Sisteme de operare Dm mai "os un exemplu de implementare pentru nOQ .


$F Iter. aTFU aT9U aT8U $9 aT;U aT<U $8 aT@U aT?U $;

161

aTPU

COF

aTFU

aT8U

aT<U

aT?U

CO9

aTFU

aT<U

CO8

aTFU

Fi . <.". Pro ra( paralel re)u&ere 1(o)el ERED4 .6-:C6.6 int n, aFnC; fora##(![i<n/H)do for(G=!;G<#og n;GBB) if(i mod1#o HGB ==!) aFHiC=aFHiBHGC; endfor

<.0. SISTEME DE OPERARE DISTRIBUITE


-ceste sisteme fac parte din categoria a. hard:are slab cuplat /multicalculatoare0 b. soft:are puternic cuplat. Din punct de vedere hard:are! un astfel de sistem! tip multicalculator! este uor de realizat. .n multicalculator este format din mai multe procesoare! fiecare procesor avnd propria unitate de control i o memorie local. $rocesoarele sunt legate ntre ele printr%o reea de comutaie foarte rapid. + astfel de arhitectur hard:are prezint o serie de avanta"e % adugarea de noi procesoare nu conduce la degradarea performanelor1 % un astfel de sistem multicalculator permite folosirea mai eficient a procesoarelor1 n general! un utilizator solicit inegal n timp un calculator!

162

Sorin Adrian Ciureanu existnd perioade n care unitatea central nu este ncrcat i perioade n care este foarte solicitat /la programe cu calcule foarte multe! de exemplu la un sistem liniar cu multe ecuaii i necunoscute01 ntr%un sistem distribuit ncrcarea procesoarelor se face mult mai bine! mrindu%se mult viteza de calcul1 % sistemul poate fi modificat dinamic! n sensul c se pot nlocui procesoare vechi cu unele noi i se pot aduga unele noi! cu investiii mici! fr s fie nevoie de reinstalare de soft sau reconfigurare de resurse. Din punct de vedere al sistemului de operare! ns! lucrurile se complic. (ste foarte dificil de implementat un sistem de operare distribuit. &unt de rezolvat multe probleme legate de comunicaie! sincronizare ! consistena informaiei etc. &copul acestor sisteme de operare distribuite este de a crea impresia utilizatorului c tot multicalculatorul este un singur sistem multitasJing i nu o colecie de calculatoare distincte. De fapt! un multicalculator ar trebui s aib o comportare de uniprocesor "irtual. Ideea este ca un utilizator s nu fie preocupat de existena mai multor calculatoare n sistem. .n sistem de operare distribuit trebuie s prezinte anumite caracteristici % s existe un singur mecanism de comunicare ntre procese! astfel nct fiecare proces s poat comunica cu altul! indiferent dac acesta este local sau nelocal1 mulimea apelurilor sistem trebuie s fie aceeai i tratarea lor identic1 % sistemul de fiiere trebuie s fie acelai pentru toate staiile componente! fr restricii de lungime a numelor fiierelor i cu aceleai mecanisme de protecie i securitate1 % pe fiecare procesor trebuie s ruleze acelai Jernel. $roblema esenial care se pune acum n sistemele distribuite este mprirea sarcinilor ntre sistemul de operare! programatorul de operaii i compilator. *a ora actual nu exist sarcini precise pentru fiecare dintre ele! lucrurile n acest domeniu fiind noi sau n curs de formare. =n ceea ce privete sigurana n funcionare a unui sistem distribuit! se poate spune c acesta este mai sigur dect un sistem de operare centralizat. =ntr%adevr! cderea unui procesor dintr%un sistem centralizat duce la cderea ntregului sistem! pe cnd ntr%un sistem distribuit procesoarele care dispar pot fi suplinite de celelalte procesoare. $unctul critic al siguranei de funcionare n sistemele distribuite este sigurana reelei de interconectare. &e pot pierde mesa"e i! n cazul suprancrcrii reelei de interconectare! performanele scad foarte mult.

Sisteme de operare

163

<.0.1. Stru&tura unui SO )i!tri>uit


=n sistemele de operare distribuite se folosesc transferuri de mesa"e prin intermediul celor dou primitive de transfer de mesa"e send i re"eive , primitive care au fost studiate n capitolul G4omunicare ntre proceseH. .n sistem de operare distribuit /&+D0 trebuie s foloseasc numai aceste primitive. ,evine ca sarcin principal gsirea unor modele de comunicare cu a"utorul crora s se poat implementa un &+D. $rincipalele modele de comunicare utilizate n prezent sunt a0 comunicarea client server1 b0 apelul de procedur la distan! ,$4/,emote $rocedure 4all01 c0 comunicaia de grup. F.%.1.1. -om(nicarea client-ser&er (ste un model foarte des aplicat n multe domenii. =n sistemele de operare distribuite exist dou tipuri de grupuri de procese cooperante %ser"ere! grup de procese ce ofer servicii unor utilizatori1 %clieni, grup de procese care consum serviciile oferite de servere.
clieni

cerere rspuns

ser,ere

Nernel S*

Nernel S*

Fi . <.,. Mo)elul )e &o(uni&are &lient2!er+er. -tt procesele ser"er ct i cele client execut acelai Jernel al sistemului de operare! n timp ce procesele ser"er i client sunt executate n spaiul utilizator. (xist procese servere specializate n diferite servicii de lucru cu fiiere! compilatoare! printare etc. .n proces care face o cerere ctre un server pentru a solicita un anumit serviciu devine un proces client. De remarcat c acelai proces sau grup de procese pot s fie! n diferite momente! att server ct i client. -vanta"ul principal al acestui tip de comunicaie este dat de eficiena i simplitatea execuiei. 4omunicaia are loc fr s se stabileasc mai

164

Sorin Adrian Ciureanu nainte o conexiune ntre client i server! clientul trimind o cerere iar serverul rspunznd cu datele solicitate. $rincipalul dezavanta" al acestui model este dat de dificultatea de programare! deoarece programatorul trebuie s apeleze explicit funciile de transfer de mesa"e. Co(uni&area prin !o&luri 1!oMet!4 7n reelele UNIC &e fun&ionea- pe !i!te(ul &lient%!er+er &oclurile /&ocJets0 sunt un mecanism de comunicaie ntre procese n reelele .NI3 introdus de <.; B&D ca o extensie sau generalizare a comunicaiei prin Gpipes%uriH. $ipes%urile faciliteaz comunicaiile ntre procesele de pe acelai sistem n timp ce socJeturile faciliteaz comunicarea ntre procese de pe sisteme diferite sau de pe acelai sistem. Pro&e! &lient Ni+elul !o&lurilor Ni+elul proto&oalelor TCP /i IP Ni+elul )ri+erelor Pro&e! !er+er Ni+elul !o&lurilor Ni+elul proto&oalelor TCP /i IP Ni+elul )ri+erelor

Reea Fi . <.0. I(ple(entarea &o(uni&aiei prin !o&luri. -cest subsistem conine trei pri %nivelul soclurilor! care furnizeaz interfaa dintre apelurile sistem i nivelurile inferioare1 %nivelul protocoalelor! care conine modulele utilizate pentru comunicaie /'4$ i I$01 %nivelul driverelor! care conine dispozitivele pentru conectare n reea. 4omunicarea ntre procese prin socluri utilizeaz modelul client server. .n proces server /GlistenerH0 ascult pe un soclu /un capt al liniei de comunicaie ntre procese0 iar un proces client comunic cu serverul la cellalt capt al liniei de comunicaie ! pe un alt soclu care poate fi situat i pe alt nod.

165 Sisteme de operare Nucleul sistemului de operare memoreaz date despre linia de comunicaie deschis ntre cele dou procese. E8e(plu )e !i!te( )i!tri>uit >a-at pe (o)elul &lient%!er+er &istemul din acest exemplu /fig. Q.@.0 are un client! care este procesul aplicaie! i cteva servere care ofer diferite servicii. NOD 1 NOD " Pro&e! apli&aii Pro&e! apli&aii
&erver de tranzacii &erver de nume &erver de recuperare &erver de obiecte &erver de comunicaie &erver de comunicaie &erver de tranzacii &erver de nume &erver de recuperare &erver de obiecte

Fi . <.5. E8e(plu )e !tru&tur a unui !i!te( )e operare )i!tri>uit. -cest sistem distribuit bazat pe modelul client%server are ase componente dintre care dou sunt programabile de ctre utilizatori. 90 &erverul de comunicaie este un singur proces n fiecare nod! rolul su fiind de a asigura comunicarea aplicaiilor de pe acel nod cu restul sistemului. (l asigur independena aplicaiilor fa de localizarea serverelor de obiecte. $entru a determina localizarea unui obiect n reea! serverul de comunicaie interogheaz serverul de nume local. 80 &erverul de nume are rolul de a memora i determina plasarea managerilor de obiecte din reea. (xist un singur server de nume n fiecare nod. ;0 &erverul tranzaciilor are rolul de a recepiona i trata toate apelurile de Inceputtranzacie , Sf*r(ittranzacie (i ,erminareanormaltranzacie. -cest server coordoneaz protocolul pentru tranzaciile distribuite. (xist un singur server de acest fel n fiecare nod. <0 &erverul de obiecte conine module programabile de utilizator! pe baza unor funcii de baz livrate de biblioteca de funcii. -re rolul de a implementa operaiile asupra obiectelor parta"ate i de a rezolva concurena la nivelul obiectelor. $ot exista oricte servere de obiecte n fiecare nod. @0&erverele de recuperare asigur! recuperarea tranzaciilor cu ,erminareanormal! Sa otate"oluntar de procesul de aplicaii sau involuntar la cderea unui nod. (xist cte un server pentru fiecare obiect.

166

Sorin Adrian Ciureanu ?0 $rocesele aplicaii sunt scrise de utilizator. F.%.1.2. .pel(l de proced(ri la distan! 2P- "2emote Proced(re -all$

Ideea acestui mecanism de comunicaie este ca un program s apeleze proceduri care i au locul n alte calculatoare. &e ncearc ca apelul unei proceduri la distan s semene foarte mult cu apelul unei proceduri locale! la fel ca n limba"ele de nivel nalt studiate. =n momentul n care un proces aflat n procesorul 9 apeleaz o procedur din procesorul 8! procesul apelant este suspendat din procesorul 9 i execuia sa continu n procesorul 8. Informaia este transferat de la procesul apelant la procedura apelat prin intermediul parametrilor de apel iar procedura va returna procesului apelant rezultatul execuiei! la fel ca n cazul unei proceduri locale. =n tot acest mecanism! transferurile de mesa"e nu sunt vizibile pentru programator. =ntr% un astfel de mecanism nu pot fi folosii dect parametri de valoare! parametrii de referin neputnd fi utilizai datorit acheselor diferite ale memoriei locale! aici neexistnd o memorie comun. ,$4 este o tehnic destul de des utilizat n sistemele de operare distribuite! chiar dac mai exist probleme atunci cnd un calculator se blocheaz sau cnd exist modaliti diferite de reprezentare a datelor pe diferite calculatoare.
Nernel client de apeluri
&0@@ 3mpac4etarea parametrilor

Nernel ser,er de apeluri


1espac4etarea parametrilor &0@@

&@(/?B

S/.</.

./BU.?

1espac4etarea rezultatului

3mpac4etarea rezultatutlui

./BU.?

N/.?/@ S* &@(/?B

N/.?/@ S* S/.</.

Fi . <.6. S&'e(a )e prin&ipiu a fun&ionrii RPC.

16 Sisteme de operare $aii executai la apelul unei proceduri la distan pot fi prezentai

astfel a0 $rocedura client apeleaz local Jernelul client de apeluri! transferndu%i parametrii. b0 Xernelul client de apeluri mpacheteaz parametrii primii! construiete un mesa" pe care l pred Jernelului &+ client. c0 Xernelul &+ client transmite mesa"ul ctre Jernelul &+ server i de aici spre Jernelul server de apeluri. d0 Xernelul server de apeluri despacheteaz parametrii i apeleaz procedura server. e0 &erverul execut funcia i returneaz rezultatul Jernelului server de apeluri. f0 Xernelul server de apeluri mpacheteaz rezultatul! construiete mesa"ul pe care l pred Jernelului &+ server. g0 Xernelul &+ server transmite mesa"ul Jernelului client de apeluri. h0 Xernelul client de apeluri despacheteaz rezultatul i%l returneaz procedurii client apelante. In comunicarea ,$4! aa cum am prezentat%o mai sus! se leag un singur client de un singur server. -ceast comunicare este de tip sincron. =n ultima vreme se utilizeaz protocoale de tip ,$4 asincron n care se poate ca un client s comunice cu mai multe servere simultan. )ecanismele ,$4 au fost standardizate de +&# /+pen &oft:are #oundation0. (xist dou mecanisme ,$4 mai cunoscute NCS! dezvoltat de firma 5e:lett $acJard i ONC/+pen Net:orJ 4omputing0dezvolat de firma &can. 4onsoriul D(4 /Distributed (nvironement 4orporation0 a lansat de asemenea un ,$4 pe platforma )icrosoft. ,)I /,emote )ethod Invocation0 este un apel la distan de tip ,$4 dar folosind obiectele n sistemele Cava. +&# D4( este un pachet de specificaii /-pplication (nvironement &pecification! -(&0 ale serviciilor utilizabile de ctre o aplicaie client%server ntr%un mediu distribuit i eterogen. +dat cu specificaiile D4(! +&# a realizat i un set de produse program care implementeaz aceste servicii! faciliteaz administrarea lor i simplific elaborarea! testarea i instalarea aplicaiilor care le utilizeaz. #iecare productor are libertatea de a utiliza i adapta produse +&# sau de a ine la propria sa implementare. F.%.1.3. -om(nicaia de gr(p

$rincipalul dezavanta" al mecanismului de comunicare ,$4 este c implic o comunicaie unu la unu! adic un singur client cu un singur server.

16!

Sorin Adrian Ciureanu $entru ca mai muli clieni s comunice cu un server! s%a introdus un nou tip de mecanism de comunicaie numit comunicaie de grup. .n grup de comunicaie nseamn o mulime de procese care se execut ntr%un sistem distribuit! care au proprietatea ca! atunci cnd se transmite un mesa" grupului! toate procesele din grup le recepioneaz. (ste un tip de comunicaie unu la muli. 6rupurile pot fi clasificate dup mai multe criterii . a0 =n funcie de procesele care au dreptul de a transmite un mesa" n interiorul grupului! pot fi %grupuri nchise, n care numai procesele membre ale grupului pot transmite un mesa"1 %grupuri deschise, n care orice proces poate transmite un mesa" membrilor grupului. b0=n funcie de drepturile de coordonare a operaiilor n grup! sunt %grupuri omogene, n care toate procesele au drepturi egale! nici unul dintre ele nu are drepturi suplimentare i toate deciziile se iau n comun1 %grupuri ierarhice! n care unul sau mai multe procese au rolul de coordonator! iar celelalte sunt procese executante. c0 =n funcie de admiterea de noi membri n grup! exist %grupuri statice, care i pstreaz neschimbate dimensiunea i componenii de la creare i pn la dispariie1 dup crearea unui grup static nici un proces membru nu poate s prseasc grupul1 %grupuri dinamice! la care se pot ataa procese membre noi sau altele pot prsi grupul. d0=n funcie de modul de gestionare! pot exista %grupuri centralizate, n care un proces! numit server! execut toate operaiile referitoare la crearea grupurilor! ataarea de noi procese! prsirea grupului de unele procese etc.1 serverul de grup menine o baz de date a grupurilor! cu membrii fiecrui grup1 dezavanta"ul este c dac serverul se distruge! toate grupurile i nceteaz activitile1 %grupuri distri uite, n care fiecare proces este rspunztor pentru ataarea sau prsirea unui grup1 cnd un proces se distruge! el nu mai poate anuna grupul de prsirea sa i trebuie ca celelalte procese s descopere acest lucru. $entru implementarea comunicaiei ntre grupuri! sistemele de operare pun la dispoziie primitive de gestionare a grupurilor. + posibilitate mult mai des folosit este aceea de a utiliza biblioteci de comunicaie care suport comunicaia de grup. Dou dintre cele mai cunoscute astfel de biblioteci sunt %$A)/$arallel Airtual )achine01

16" Sisteme de operare %)$I/)essage $assing Interface0. Bi>liote&a P*M $A) /$arallel Airtual )achine0 este un pachet de programe dezvoltat de +aJ ,idge National *aboratorS! .niversitatea &tatului 'enessee i de .niversitatea (morS. $roiectul $)A a fost conceput de AaidS &underam i -l. 6eert de la +aJ ,idge National *aboratorS. $A) asigur un mediu de lucru unitar n care programele paralele pot fi dezvoltate eficient utiliznd un mediu hard:are de"a existent. &e asigur o transparen n rutarea mesa"elor prin reea! n conversia datelor i n planificarea tasJurilor. =n $A)! utilizatorul va scrie aplicaiile ca o colecie de tasJuri care coopereaz. -ceste tasJuri vor accesa resursele $A) cu a"utorul unor biblioteci de rutine de interfa. ,utinele din cadrul bibliotecilor asigur iniierea i terminarea tasJurilor! comunicarea i sincronizarea lor. =n orice punct al execuiei unei aplicaii concurente! orice tasJ n execuie poate iniia sau termina alte tasJuri! poate aduga sau elimina calculatoare din maina virtual. .tilizatorii pot scrie programe n #ortran sau 4! folosind rutine din $A). )odelul de programe utilizat este cel cu transfer de mesa"e. &unt incluse faciliti de asigurare a toleranei la defecte. Descrierea sistemului $A) &istemul $A) are dou componente %demonul p"md. %biblioteca de rutine %6>. Demonul pvmd trebuie s existe pe toate mainile care alctuiesc maina virtual. -cest demon a fost proiectat astfel nct orice utilizator s%l poat instala pe orice main dac dispune de un #ogin valid. 4nd un utilizator dorete s ruleze o aplicaie $A)! va trebui s creeze maina i apoi s o porneasc. + aplicaie $A) poate fi pornit de pe orice calculator. )ai muli utilizatori pot configura maini virtuale care se pot suprapune i fiecare utilizator poate executa cteva aplicaii $A) simultan. Biblioteca de rutine $A) conine un set complet de primitive care sunt necesare pentru cooperare ntre tastaturi. (xist urmtoarele tipuri de rutine %rutine de trimitere i recepionare a mesa"elor1 %rutine de iniiere a tastaturilor1 %rutine de coordonare a tastaturilor1 %rutine de coordonare a mainii virtuale. )odelul de calcul utilizat se bazeaz pe faptul c o aplicaie este alctuit din mai multe tasJuri! fiecare tasJ fiind responsabil pentru calculul unei pri a problemei.

1 #

Sorin Adrian Ciureanu + aplicaie poate accesa resursele de calcul n trei moduri diferite %modul transparent! n care tasJurile sunt plasate n sistem prin maina cea mai potrivit1 %modul dependent de arhitectur! n care utilizatorul poate indica o arhitectur specific pe care un tasJ poate fi executat1 %modul cu specificare a ma(inii! n care utilizatorul poate indica o anume main pe care s se execute un tasJ. 'oate tasJurile sunt identificate cu un ntreg numit tas# identifier /'ID0! echivalent $ID%ului din sistemele de operare. -ceste 'ID%uri trebuie s fie unice n cadrul mainii virtuale i sunt asigurate de demonul pvmd local. $A) conine rutine care returneaz valoarea 'ID astfel nct aplicaiile pot identifica tasJurile din sistem. $entru a programa o aplicaie! un programator va scrie unul sau mai multe programe secveniale n 4! 4>>! #ortran>>! cu apeluri la rutinele din bibliotecile $A). $entru a executa o aplicaie! un utilizator iniiaz o copie a unui tasJ! numit tas# master iar acesta va iniia tasJuri $A) care pot fi rulate pe alte maini sau pe aceeai main cu tasJ masterul. -cesta este cazul cel mai des ntlnit! dar exist situaii n care mai multe tasJuri sunt iniiate de utilizator i ele pot iniia la rndul lor alte tasJuri. 4onsola $A) 4onsola $A) este un tasJ de sine stttor care permite utilizatorului s porneasc! s interogheze i s modifice maina virtual. 4onsola poate fi pornit i oprit de mai multe ori pe orice gazd din $A)! fr a afecta rularea $A) sau a altor aplicaii. *a pornire! consola $A) determin dac aceasta ruleaz 1 dac nu! se execut pvmd pe aceast gazd. $rompterul consolei este pvmY . 4omenzile ce se pot aplica pe acest prompter sunt add ! adaug gazde la maina virtual1 "onf ! afieaz configuraia mainii virtuale1 /numele gazdei! pvmd tid! tipul arhitecturii i viteza relativ01 de#et ! elimin gazde din maina virtual1 e (a#t ! termin toate procesele $A)! inclusiv consola i oprete maina virtual1 id ! afieaz identificatorul de tasJ al consolei1 Go$s ! afieaz lista tasJurilor n execuie1 ki## ! termin un tasJ $A)1 mstat ! afieaz starea gazdelor specificate1

1 1 Sisteme de operare pstat ! afieaz starea unui tasJ specificat1 D1it ! prsete consola lsnd demonii i tasJurile n execuie1 reset ! termin toate procesele $A) exceptnd consola1 spa&n ! pornete o aplicaie $A). $A) permite utilizarea mai multor console. (ste posibil s se ruleze o consol pe orice gazd din maina virtual i chiar mai multe console n cadrul aceleiai maini. Implementarea $)A $entru implementarea $A) s%a inut cont de trei obiective %maina virtual s cuprind sute de gazde i mii de tasJuri1 %sistemul s fie portabil pe orice maini .NI31 %sistemul s permit construirea aplicaiilor tolerante la defecte. &%a presupus c sunt disponibile socluri pentru comunicaie ntre procese i c fiecare gazd din maina virtual se poate conecta direct la celelalte gazde! utiliznd protocoale I$/'4B .D$0. .n pachet trimis de un p"md a"unge ntr%un singur pas la alt p"md. #iecare tasJ al mainii virtuale este marcat printr%un identificator de tasJ /'ID0 unic. Demonul p"md asigur un punct de contact cu exteriorul pentru fiecare gazd. p"md este de fapt un router care asigur controlul proceselor i detecia erorilor. $rimul p"md! pornit de utilizator! este denumit p"md master! ceilali! creai de master! sunt denumii sla"e. =n timpul operrii normale! toi p"md sunt considerai egali. 'olerana la defecte este asigurat n felul urmtor %dac masterul a pierdut contactul cu un slave! l va marca i l va elimina din maina virtual1 %dac un slave pierde contactul cu masterul! atunci el se elimin singur din main. &tructurile de date importante pentru p"md sunt tabele de gazde care descriu configuraia mainii virtuale i tasJurile care ruleaz n cadrul acesteia. (xist urmtoarele biblioteci % i lioteca %6> /li p"m)1 %comunicaiile %6>. Biblioteca $A) conine o colecie de funcii care asigur interfaarea tasJurilor cu p"md i cu alte tasJuri! funcii pentru mpachetarea i despachetarea mesa"elor i unele funcii $A) de sistem. -ceast bibliotec este scris n 4 i este dependent de sistemul de operare i de main.

1 2

Sorin Adrian Ciureanu 4omunicaiile $A) se bazeaz pe protocoalele de Internet I$ /'4$ i .D$0 pentru a se asigura de portabilitatea sistemului. $rotocoalele I$ faciliteaz rutarea prin maini tip poart intermediar. ,olul su este de a permite transmiterea datelor la maini ce nu sunt conectate direct la aceiai reea fizic. .nitatea de transport se numete datagram I$. *a acest nivel se folosesc adrese I$ care sunt formate din dou pri % prima parte identific o reea i este folosit pentru rutarea datagramei1 % a doua parte identific o conexiune la un anumit dat n interiorul reelei respective. &erviciul de livrare asigurat de I$ este de tipul fr cone)iune, fiecare datagram fiind rutat prin reea independent de celelalte datagrame. .NI3 folosete dou protocoale de transport %.D$ /.ser Datagram $rotocol0! un protocol fr conexiune1 %'4$ /'ransmission 4ontrol $rotocol0! orientat pe conexiune1 caracteristicile '4$%ului constau n transmiterea adresei destinaiei o singur dat la stabilirea conexiunii! garantarea odinei datelor transmise i bidirecionalitatea. =n sistemele $A) sunt posibile trei tipuri de comunicaii %ntre demonii pvmd1 %ntre pvmd i tasJurile asociate1 %ntre tasJuri. a0 4omunicaia pvmd%pvmd Demonii pvmd comunic ntre ei prin socluri .D$. $achetele vor avea nevoie de mecanisme de confirmare i directare .D$. &e impun! de asemenea! limitri n ceea ce privete lungimea pachetelor! a"ungndu%se la fragmentarea mesa"elor lungi. Nu s%a utilizat '4$ din trei motive % o main virtual compus din n maini necesit n/n%9078 conexiuni! un numr care ar fi greu de stabilit1 %protocolul '4$ nu poate sesiza cderea unei gazde pvmd1 %protocolul '4$ limiteaz numrul fiierelor deschise. b0 4omunicaia pvmd%tasJ .n tasJ comunic cu un pvmd cruia i este asociat prin intermediul conexiunilor. 'asJul i pvmd menin o structur #I#+ de pachete! comutnd ntre citire i scriere pe conexiuni '4$. .n dezavanta" al acestui tip de conectare este numrul crescut de apeluri sistem necesare pentru a transfera un pachet ntre un tasJ i un pvmd. c0 4omunicaie tasJ%tasJ

1 3 Sisteme de operare 4omunicaiile ntre tasJurile locale se realizeaz ca i comunicaiile pvmd%tasJ. =n mod normal! un pvmd nu comunic cu tasJurile de pe alte gazde. -stfel! comunicaiile ce trebuie realizate ntre tasJuri de pe gazde diferite vor folosi ca suport comunicaiile pvmd. *imitri ale resurselor *imitrile resurselor impuse de sistemul de operare i de hardul disponibil se vor reflecta n aplicaiile $A). 4teva din limitri sunt afectate dinamic datorit competiiei dintre utilizatorii de pe aceiai gazd sau din reea. Numrul de tasJuri pe care un pvmd le poate deservi este limitat de doi factori % numrul permis unui utilizator de ctre sistemul de operare1 % numrul de descriptori de fiiere disponibili pentru pvmd. )rimea maxim a mesa"elor $A) este limitat de mrimea memoriei disponibile pentru un tasJ. -ceste probleme vor fi evitate prin revizuirea codului aplicaiei! de exemplu prin utilizarea mesa"elor ct mai scurte! eliminarea strangulrilor i procesarea mesa"elor n ordinea n care au fost generate. $rogramarea n $A) *ansarea mainii virtuale $A) se face prin lansarea n execuie a procesului server master! folosind funcia pvm-start-pvmd . -poi se lanseaz funcia pvm-setopt n care se seteaz diferitele opiuni de comunicaie. $e procesorul server master trebuie s fie un fiier de descriere a configuraiei mainii i anume fiierul (.stfi#e . -cesta conine numele staiilor pe care se configureaz maina virtual! cile unde se afl fiierele executabile! cile unde se afl procesele server /demonii0 de pe fiecare staie! codul utilizatorului i parola. 4onfiguraia mainii virtuale este dinamic1 staii noi n reea pot fi adugate prin apelul funciei pvm-add(.sts -lte staii pot fi excluse prin funcia pvm-de#(.sts #uncionarea mainii se oprete prin pvm-(a#t 4ontrolul proceselor. $entru ataarea unui proces la maina virtual $A) se apeleaz funcia

1 4

Sorin Adrian Ciureanu

pvm-mNtid $rin aceast funcie se nroleaz procesul i se returneaz identificatorul de tasJ 'ID. 4rearea dinamic de procese noi n maina virtual se face prin apelul funciei pvm-spa&n *a apelul funciei de mai sus se specific adresa staiei unde vor fi create procesele noi! chiar $A)%ul putnd selecta staiile unde vor fi create i lansate procesele noi. De exemplu n1mt=pvm-spa&n(\mN-task,3:++,pvmtaskdefa1#t,!,ntask,tids); &e solicit crearea a n-task procese care s execute programul mN-task pe staiile din $A). Numrul real de procese create este returnat de funcia n1mt. Identificatorul fiecrui tasJ creat este depus ntr%un element al vectorului tids. .n proces membru al mainii $A) poate prsi configuraia prin apelul pvm-exit sau poate fi terminat de ctre un alt proces care apeleaz funcia pvm-ki##(tid) Interfaa $A) suport dou modele de programare diferite i pentru fiecare din acestea se stabilesc condiiile de mediu de execuie . -ceste modele sunt &$)D/&ingle $rogram )ultiple Data0 i )$)D /)ultiple $rogram )ultiple Data0. =n modelul &$)D! n instane ale aceluiai program sunt lansate cu n tasJuri ale unei aplicaii paralel! folosind comanda sp&an de la consola $A)! sau! normal! n cele n staii simultan. Nici un alt tasJ nu este creat dinamic de ctre tasJurile aflate n execuie! adic nu se apeleaz funcia pvm-sp&an. =n acest model iniializarea mediului de programare const n specificarea staiilor pe care se execut cele n tasJuri. =n modelul )$)D! unul sau mai multe tasJuri distincte sunt lansate n diferitele staii i acestea creeaz dinamic alte tasJuri. 4omunicaiile n maina virtual $A) =n maina virtual $A) exist dou tipuri de mesa"e ntre procesele componente % comunicaie punct la punct! adic transferul de mesa"e ntre dou procese1 %comunicaie colectiv! adic difuziunea sau acumulare de mesa"e ntr%un grup de procese. 4omunicaia punct la punct.

1 5 Sisteme de operare $entru transmiterea unui mesa" de ctre un proces - la un mesa" B! procesul transmitor - iniializeaz mai nti bufferul de transmisie prin apelul funciei de iniializare int pvm-init send(int en"ode); -rgumentul (en"ode) stabilete tipul de codare al datelor n buffer. Aaloarea returnat este un identificator al bufferului curent de transmisie n care se depun datele mpachetate! folosind funcia pvm-pa"k Dup ce datele au fost depuse n bufferul de transmisie! mesa"ul este transmis prin apelul funciei int pvm-send(int tid,int msgtag); #uncia de transmisie este blocant. (a returneaz controlul procesului apelant numai dup ce a terminat de transmis mesa"ul. -rgumentul tid este identificatorul procesului receptor iar flagul msgtag este folosit pentru a comunica receptorului o informaie de tip mesa" pe baza creia receptorul ia decizia acceptrii mesa"ului i a tipului de prelucrri pe care trebuie s le fac asupra datelor din mesa". Aaloarea returnat de funcia pvm-send este !, transmisie "ore"t* - , 0n "aM1# apariLiei 1nei erori. $entru recepia unui mesa"! procesul receptor apeleaz funcia int pvm-re"v(int tid,int msgtag); -ceast funcie este blocant. (a returneaz controlul procesului apelant numai dup terminarea execuiei! deci dup recepia mesa"ului. -rgumentul tid specific identificatorul procesului de la care se ateapt mesa"ul iar argumentul msgtag specific ce tip de mesa" este ateptat. ,ecepia se efectueaz numai pentru mesa"ele care corespund celor dou argumente sau pentru orice transmitor! dac tid=- , i orice tip de mesa"! dac msgtag=- .Aaloarea returnat este identificatorul bufferului de recepie n care au fost depuse datele recepionate. Din acest buffer datele sunt extrase folosind funcia de despachetare a datelor pvm-1npa"k =n biblioteca $A) exist i o funcie de recepie neblocant pvm-nre"v -ceasta returneaz controlul procesului apelant imediat! fr ca acesta s atepte dac mesa"ul a fost recepionat. 4omunicaia colectiv n $A) =n sistemul $A) se pot crea grupuri dinamice de procese care execut sarcini corelate! comunic i se sincronizeaz intre ele. .n proces se

1 6

Sorin Adrian Ciureanu poate ataa unui grup! definit printr%un nume unic n maina virtual $A)! prin apelul funciei int pvm-Goingr1p("(erSgro1p-name); Dac grupul cu numele gro1p-name nu exist! el este creat. Aaloarea returnat este un identificator al instanei procesului n grupul respectiv! care se adaug identificatorului procesului. -cest identificator este F pentru procesul care creeaz grupul i are cea mai mic valoare disponibil n grup pentru fiecare proces care apeleaz funcia pvmGoingro1p. .n proces poate aparine simultan unuia sau mai multor grupuri din maina virtual. (l poate prsi un grup prin apelul funciei int pvm-#vgro1p("(erSgro1p.name); Dac un proces prsete un grup! fr ca un altul s%l nlocuiasc ! pot aprea goluri n identificatorii de instan de grup ai proceselor rmase. .n proces poate obine diferite informaii de grup. #unciile pvmgetinst, pvm-gettid, pvm-gsiMe returneaz identificatorul procesului n grup. 4omunicaia colectiv n maina virtual $A) se desfoar ntre procesele membre ale unui grup. #unciile de comunicaie colectiv sunt %#uncii de difuziune int pvm-$"ast("(erSgro1p-name, int msgtag); &e difuzeaz asincron mesa"ul aflat n bufferul de transmisie curent al procesului apelant cu flagul de identificare msgtag , ctre toate procesele membre ale grupului cu nume gro1p-name. $rocesul apelant poate fi sau nu membru al grupului. Dac este membru! nu se mai transmite msg lui nsui. %#uncia de distribuire int pvm-s"atter(voidSmN arraN,voidSs-arraN, int dim, int tNpe,int msgtag, "(erSgro1p-name,int root); .n vector de date de tipul tNpe! cu multe s-arraN i de dimensiune dim! aflat n spaiul de adres al procesului rdcin! este distribuit uniform tuturor proceselor din grupul cu numele gro1p-name. #iecare proces din grup trebuie s apeleze funcia pvm-s"atter i fiecare recepioneaz o partiie a datelor din vectorul s-arraN din procesul rdcin /cu identificatorul root), n vectorul local sarraN. #uncia de colectare int pvm-gat(er(voidSg-arraN,voidSmNarraN,

1 Sisteme de operare int dim,int tNpe,"(erSgro1p-name, int root); &e colecteaz toate mesa"ele cu flagul de identificare msgtag de la toate procesele membre ale grupului cu nume gro1p-name n procesul rdcin cu identificatorul root. 4olectarea are loc n vectorul de date garraN! a datelor aflate n fiecare proces n vectorii cu numele gro1pname n procesul rdcin /definit de utilizator0 cu identificatorul root. #uncia de reducere int pvm red1"e(int operation,voidSmNro#s,int dim, int tNpe,int msgtag,"(erSgro1pe-name, int root); &e efectueaz operaia de reducere paralel ntre toate procesele membre ale unui grup. -rgumentul operation definete operaia de reducere. #iecare proces efectueaz mai nti operaia de reducere a datelor din vectorul local de date! de tipul tNpe ! cu numele mNro#s, de dimensiune dim. Aaloarea rezultat este transferat procesului rdcin root n care se va afla valoarea de reducere final. #uncia de sincronizare ntre procesele membre int pvm-$arrier("(erSgro1p name, int ntasks); *a apelul acestei funcii procesul este blocat pn cnd un numr ntasks procese din grupul cu numele gro1p-name au apelat funcia pvm-$arrier. E8e(ple )e pro ra(are 7n P*M $rogram de reducere paralel -m vzut n programarea paralel /pe multiprocesoare0 cum se realizeaz operaia de reducere cnd avem la dispoziie o memorie comun. & vedem acum cum se face aceast operaie prin transfer de mesa"e n pvm.

Oin"#1depvmK.( Odefine 35A4]4 V int main() @int mNtid,tids(35A4]4- ),gro1pid,s1m,info; /Sse "reeaM* gr1p1# de "om1ni"aLieS/ mNtid=pvm-mNtid(); gro1pid=pvm-Goingro1p(\s1mex); s1m=gro1pid; /S9rim1# pro"es "reaM* "e#e#a#te 35A4]4pro"eseS/ if(gro1pid==!) @info=pvm-spa&n(\s1mmex,3:++,pvmtasksdefa1#t,

1 !

Sorin Adrian Ciureanu SR,35A4]4- ,tids); printf(\gro1pid=Qd spa&nedQd tasks\n, gro1pid,info(;AA /Sse introd1"e o $arier* p?n* "e 35A4]4 pro"ese s-a1 a#*t1rat gr1p1#1iS/ pvm-feeMe gro1p(\s1mmex,35A4]4); /SApe#1# f1n"Liei de "om1ni"aLie "o#e"tiv* pentr1 "a#"1#1# s1mei 1n1i gr1pS/ pvm-red1"e(pvm s1m,Rs1m, , pvm-235, ,s1mmex,!); /S9ro"es1# ! tip*re'te reM1#tat1# operaLiei de red1"ereS/ if(gro1pid==!) print(\s1m=Qd\n,s1m); /S4in"roniMare pentr1 "a toate pro"ese#e s* exe"1te operaLia 0nainte de p*r*sirea gr1p1#1i 'i terminarea program1#1iS/ pvm-$arrier(\s1mmex,35A4]4)) pvm-evgro1p(\s1mmex); pvm exit(); ,educerea paralel se execut pe un numr de procese /tasJuri0 definit prin constanta N'-&X& care se alege n funcie de numrul de staii din reea. #iecare proces ncepe execuia prin obinerea propriului identificator de tasJ $A) (mNtid). -poi procesul se ataeaz grupului cu numele \s1mmex i obine la ataare identificatorul de instan de grup (gro1pid). $rocesul master are gro1pid=! i creeaz 35A4]4procese. Deoarece operaia de reducere paralel nu poate ncepe pn cnd grupul nu este complet creat! se introduce un punct de sincronizare prin funcia pvm-freeMe gro1p. -ceast funcie oprete creterea numrului de procese din grupul cu numele gro1p-name la valoarea siMe, transformnd grupul ntr%un grup static. (a are i rolul de sincronizare i trebuie s fie apelat nainte de execuia unor operaii colective ntr%un grup.! deoarece o astfel de operaie! odat nceput! poate fi perturbat de apariia unui nou membru n grup. =n fiecare proces se execut reducerea ntr%un vector cu lungimea 9. =n variabila s1m fiecare proces memoreaz identificatorul su (mNtid) .Dup execuia reducerii paralele! suma tuturor identificatorilor tasJurilor din grup este afiat la consol de ctre procesul master. $entru ca ici un proces s nu poat prsi grupul nainte ca toate procesele grupului s fi terminat operaiile! se introduce un nou punct de sincronizare! prin apelul funciei pvm-$arrier, dup care

1 " Sisteme de operare programul poate fi terminat prin desfiinarea grupului. 'oate procesele sunt detaate din grup prin funcia pvm-#v gro1p i prsesc maina virtual prin pvm-exit. Bi>liote&a MPI 1Ma!!a e Pa!!in Interfa&e4 )$I este o bibliotec standard pentru construirea programelor paralele! portabile n aplicaii 4 i #ortran>>! care poate fi utilizat n situaii n care programul poate fi pariionat static ntr%un numr fix de procese. 4ea mai mare diferen ntre biblioteca )$I i cea $A) este faptul c grupurile de comunicaie )$I sunt grupuri statice. Dimensiunea grupului este static i este stabilit la cererea grupului. =n acest fel proiectarea i implementarea algoritmilor paraleli se face mai simplu i cu un cost redus. #unciile din )$I sunt asemntoare cu cele din $A). Dei )$I are peste 9LF de funcii! cele mai des folosite sunt

/SiniLia#iMeaM* $i$#iote"a 892S/ /S0n"(ide $i$#iote"a 892S/ /Sdetermin* n1m*r1# pro"ese#or 0n "om1ni"atorS/ 892-Comm-rank() /Sdetermin* rang1# pro"es1#1i 0n "adr1# gr1p1#1iS/ 892-send() /Strimite 1n mesaGS/ 892-re"v() /Sprime'te 1n mesaGS/ Iat mai "os programul de reducere! pe care l%am prezentat n $A)! implementat n )$I. Oin"#1de<mpi.(Y Oin"#1de<sNs/tNpes.(Y Oin"#1de<stdio.(Y int main() @int mNtid,ntasks,s1m; 892-2nit; /SCrearea "ontext1#1i de "om1ni"aLie imp#i"it 'i o$Linerea rang1#1i pro"es1#1i 0n a"est "ontextS/ 892-Comm-rank(892-C,88-^,.+-,RmNtid=; /SAf#are dimensi1nii gr1p1#1i de pro"eseS/ 892-Comm-42<6(892-C,88-^,.+-,Rntasks); if(mNtid==!) printf(mNtid=Qd,ntasks=Qd\n,mNtid,ntasks); /SCa#"1#1i #o"a# a# s1mei parLia#e;s1ma parLia#* este ega#* "1 identifi"ator1# pro"es1#1iS/

892-2nit() 982-Zina#iMe 892-Comm-42<6

1!#

Sorin Adrian Ciureanu

s1m=mNtid; /S4in"roniMarea "1 toate pro"ese#e s* fie #ansat*S/ 892-$arrier(892-C,88-^,.+-); 892-red1"e(892-4:8,Rs1m, ,892-235, ,892^,.+-,!); /S.eM1#tat1# red1"erii se af#* 0n pro"esor =S/ if(mNtid==!)printf(\s1m=Qd\n,s1m); 892-Zina#iMe(); exit(); A Definirea mediului de programare paralel n sistemul )$I se face prin execuia unui program de iniializare care stabilete procesoarele ce vor rula n )$I. =n )$I toate procesele unei aplicaii se creeaz la iniializarea acesteia. =n cursul execuiei unei aplicaii nu pot fi create procese dinamice i nu poate fi modificat configuraia hard:are utilizat. 4omunicaii! grupuri i contexte n )$I 4omunicatorul specific un grup de procese care vor coordona operaii de comunicare! fr s afecteze sau s fie afectat de operaiile din alte grupuri de comunicare. 7rupul reprezint o colecie de procese. #iecare proces are un rang n grup! rangul lund valori de la F la n%9. .n proces poate aparine mai multor grupuri! caz n care rangul dintr%un grup poate fi total diferit de rangul n alt grup. Conte)tul reprezint un mecanism intern prin care comunicatorul garanteaz grupului un spaiu sigur de comunicare. *a pornirea unui program! sunt definii doi comunicatori implicii %892-C,88-^,.+- ! care are ca grup de procese toate procesele din "ob1 %892-C,88-46+Z, care se creeaz pentru fiecare proces! fiecare avnd rangul F n propriul comunicator. 4omunicatorii sunt de dou feluri %intracomunicatori! care coordoneaz operaii n interiorul unui grup1 %extracomunicatori! care coordoneaz operaii ntre dou grupuri de procese. <ansarea n execuie se poate face n dou medii 4,( /4luster 'ools ,untime (nvironement0 *&# /*ood &haring #acilitS0 =n mediul 4,( exist patru comenzi care realizeaz funcii de baz. mpr1n /Sexe"1t* programe 892S/

mpki## mpps mpinfo

1!1 Sisteme de operare /Stermin* programe#eS/ /Safi'eaM* informaLii despre programe#e #ansateS/ /Safi'eaM* informaLii despre nod1riS/

<.0.". E8e(ple )e !i!te(e )e operare )i!tri>uite


F.%.2.1. Sistem(l de operare .M8,D. &istemul de operare -)+(B- a fost creat de profesorul -ndre: 'anenbaum la Ari"e .niversiteit -msterdam. &%au urmrit dou scopuri %crearea unui sistem de operare distribuit care s gestioneze mai multe calculatoare interconectate ntr%un mod transparent pentru utilizator! astfel nct s existe iluzia utilizrii unui singur calculator1 %crearea unei platforme pentru dezvoltarea limba"ului de programare distribuit +,4-. -)+(B- ofer programatorilor dou mecanisme de comunicaie %comunicaie ,$4 /,emote $rocedure 4all01 %comunicaie de grup. 4omunicaia de tip ,$4 utilizeaz trei primitive /S1n "#ient transmite o "erere spre serverS/ get-reD1est /Ssever1# 0'i an1nL* disponi$i#itateaS/ p1t-rep#N /Sserver1# "om1ni"* reM1#tat1# 1nei "ereriS/ 4omunicaia de grup asigur ca toate procesele din grup s primeasc aceleai mesa"e i n aceeai ordine. =n -)+(B- exist un proces sec"eniator care are dou roluri % acord numere de ordine mesa"elor care circul n grup1 % pstreaz o istorie a mesa"elor i realizeaz! atunci cnd este cazul! o retransmisie a mesa"elor care nu au fost transmise. 'ransmiterea unui mesa" ctre grup se face n dou moduri! funcie de lungime mesa"ului %se transmite mesa"ul ctre secveniator! acesta ataeaz mesa"ului un numr de secvene dup care secveniatorul difuzeaz mesa"ul ctre toate procesele1 fiecare mesa" trece de dou ori prin reea1 %se anun prin difuzare c se dorete transmiterea unui mesa" iar secveniatorul rspunde prin acordarea unui numr de secvene dup care trans

1!2

Sorin Adrian Ciureanu procesul care a dorit s transmit mesa"ul face difuzarea acestuia1 n acest caz se difuzeaz mai multe mesa"e! fiecare procesor fiind ntrerupt odat pentru mesa"ul care solicit numrul de secvene i a doua oar pentru mesa"ul propriu zis. $rocesul care transmite mesa"ul se blocheaz pn primete i el mesa"ul! ca orice proces din grup. &ecveniatorul pstreaz o istorie a mesa"elor transmise. $rocesul anun secveniatorului numrul de secven al ultimului mesa" recepionat. &ecveniatorul poate! la rndul su! s cear situaia mesa"elor de la un proces care nu a mai transmis de mult vreme nimic. .tiliznd aceste informaii! secveniatorul poate s i gestioneze n mod corespunztor istoria. &tructura sistemului de operare -)+(B-)+(B- este bazat pe un microJernel care ruleaz pe fiecare procesor n parte! deasupra cruia ruleaz servere ce furnizeaz servicii. )icroJernelul asigur gestiunea principalelor resurse ale sistemului ce pot fi grupate n patru categorii. 906estiunea proceselor i threadurilor. 806estiunea de nivel "os a memoriei. ;06estiunea pentru comunicaie. <06estiunea operaiilor de intrare7ieire de nivel "os. 90 $rocesele reprezint mecanismul care asigur execuia n -)+(B-. .n proces conine un singur spaiu de adrese. 'hreadurile /firele de execuie0 sunt interne unui proces i au acces la spaiul de adrese al procesului. =n -)+(B- un procesor nu are proprietar i de aceea utilizatorul nu are nici un fel de control asupra procesoarelor pe care ruleaz aplicaiile. &istemul de operare ia deciziile plasrii unui proces pe un anumit procesor! n funcie de diferii factori ca ncrcarea procesorului! memoria disponibil! puterea de calcul etc. -numite procesoare pot fi dedicate rulrii unor servere care cer multe resurse! de exemplu serverul de fiiere. 806estiunea memoriei se face prin segmente de lungime variabil. -cestea sunt pstrate n totalitate n memorie i sunt rezidente n memorie! adic sunt pstrate tot timpul n memorie. Nu se face s:apping cu aceste segmente. Din aceast cauz dimensiunea memoriei trebuie s fie foarte mare! 'annenbaum considernd resursa memorie ca una ieftin. &egmentele de memorie pot s fie mapate n spaiul de adres al mai multor procese care se execut pe acelai procesor. =n felul acesta se creeaz memorie parta"at.

1!3 Sisteme de operare ;06estiunea comunicaiei se face! aa cum a fost prezentat! prin ,$4 i comunicaie de grup. <0+peraiile de intrare7ieire se efectueaz prin intermediul driverelor. $entru fiecare dispozitiv exist un driver. -cestea aparin microJernelului i nu pot fi adugate sau terse dinamic. 4omunicaia driverelor cu restul sistemului se face prin ,$4. Deoarece s%a ales o soluie cu microJernel! serverele sunt acelea care au preluat sarcina vechiului Jernel. (xemple de servere sunt %servere de fiiere1 %serverul de boat1 %serverul de execuie1 %serverul de '4$7I$1 %serverul de generare a numerelor aleatorii1 %serverul de erori1 %serverul de mail. $entru principalele servere exist apeluri de biblioteci cu a"utorul crora un utilizator poate accesa obiecte. (xist un compilator special cu a"utorul cruia se pot crea funcii de bibliotec pentru serverele nou create. =n -)+(B- toate resursele sunt vzute ca nite o iecte. -cestea sunt entiti ce apar ntr%o nou paradigm de programare. $rin definiie! un obiect este o colecie de variabile care sunt legate mpreun de un set de proceduri de acces numite metode. $roceselor nu li se permite accesul direct la aceste variabile ci li se cere s invoce metode. .n obiect const dintr%un numr de cuvinte consecutive n memorie /de exemplu n spaiul de adres virtual din Jernel0 i este deci o structur de date n ,-). &istemele de operare care utilizeaz obiectele! le construiesc aa fel ca s furnizeze o interfa uniform i consistent cu toate resursele i structurile de date ca procese! threaduri! smafoare etc. .niformitatea const n numirea i accesarea n acelai mod al obiectelor! gestionarea uniform a parta"rii obiectelor ntre procese! punerea n comun a controlorilor de securitate! gestionarea corect a cotelor de resurse etc. +biectele au o structur i pot fi tipizate. &tructurarea se face prin dou pri principale %o parte /header) care conine o anumit informaie comun tuturor obiectelor de toate tipurile 1 %o parte cu date specifice obiectului. +biectele sunt gestionate de servere prin intermediul capa ilitilor. *a crearea unui obiect! serverul construiete o capabilitate prote"at criptografic pe care o asociaz obiectului. 4lientul primete aceast capabilitate prin care va accesa obiectul respectiv.

1!4

Sorin Adrian Ciureanu $rincipala deficien a sistemului de operare -)+(B- este c nu s% a creat o variant comercial a lui! din mai multe motive %fiind un produs al unui mediu universitar! nu a avut fora economic s se impun pe piaa I'1 %dei a fost unul dintre primele sisteme de operare distribuite /proiectarea a nceput n anii optzeci0 i dei a introdus multe concepte moderne! preluate astzi n ma"oritatea sistemelor de operare distribuite /microJernelul! obiecte pentru abstractizarea resurselor! ,$4! comunicaii de grup0! alte firme au introdus rapid alte sisteme de operare. F.%.2.2. Sistem(l de operare B38D, =n prezent! profesorul 'anenbaum lucreaz la un nou sistem de operare distribuit! denumit 6*+B(! ale crui prime versiuni au aprut de"a. (ste un sistem de operare! creat pentru aplicaii distribuite pe o arie larg! care utilizeaz obiecte locale sau distribuite. =n 6*+B(! un obiect este o entitate format din %o colecie de valori ce definesc starea obiectului1 %o colecie de metode ce permit inspectarea i modificarea strii obiectului1 %o colecie de interfee. .n obiect local este coninut n ntregime /stare! metode! interfa0 ntr%un singur spaiu de adres. .n obiect distribuit este o colecie de obiecte locale care aparin unor spaii de adrese diferite. +biectele locale comunic ntre ele pentru a menine o stare global consistent. 6*+B( are la baz modelul memoriei distribuite parta"at! D&)/ Distributed &hared )emorS 0. -cest model utilizeaz !in mod paradoxal! tehnica de memorie parta"at! utilizat cu precdere la multiprocesoare ! n sistemele distribuite ce folosesc ca mi"loc de comunicare transmisiile de mesa"e. -ceasta! deoarece tehnica memoriei distribuite este mult mai bine pus la punct ! mult mai eficient si mai bine folosit. =n D&) fiecare main are propria memorie virtual i propria tabel de pagini. 4nd un procesor execut o instruciune *+-D sau &'+,( pe o pagin care nu este n posesia lui! se execut o ntrerupere n sistemul de operare. -cesta localizeaz pagina i cere procesorului care o deine s

1!5 Sisteme de operare anuleze punerea n coresponden a paginii n memorie i s o trimit pe reeaua de interconectare. 4nd pagina sosete din reea ea este pus n coresponden din nou. 4a efect! sistemul de operare trateaz numai erorile de pagin din memoria de la distan! in loc s utilizeze discul. 6*+B( utilizeaz noiunea de o iect parta$at distri uit (distri uted shared o $ect ). -cesta este un obiect replicat! in sensul c exist o mulime de copii ale obiectului rspndite n ntreg sistemul. .n obiect este alctuit din clase. + clas conine mai multe metode! metodele conin interfee ale obiectului. (xist un mecanism in acest sistem de operare ce utilizeaz un sec"eniator al crui rol este de a asigura numere consecutive de secven n momentul cnd i se cere acest lucru. D( exemplu! pentru metoda scrie trebuie mai nti s se obin un numr de secven iar apoi s transmit un mesa" coninnd numrul de secven! numele operaiei! ctre toate celelalte procese ce au legtur cu obiectul. Dac dou procese apeleaz metoda simultan! ele au dou numere de secven diferite. 'oate procesele apeleaz metodele n ordinea numerelor de secven primite i nu n ordinea sosirii mesa"elor. -cest secveniator asigur faptul c toate operaiile de scriere sunt fcute n aceeai ordine n toate replicile obiectului ! garantnd consistena secvenial. 'otui nu toate obiectele necesit consisten secvenial i de aceea nu este nevoie de un secveniator global! la nivelul tuturor obiectelor. Ideea de baz a acestui model este ca fiecare obiect s aib toate copiile egale i orice copie s aib dreptul s iniieze actualizri dup ce a obinuit un numr de secven. -cest protocol se numete replicare activ. )ai exist i alte protocoale de replicare. % =n al doilea protocol! exist o copie principal numit master i copii secundare numit sla"e. 'oate actualizrile se fac asupra copiei principale! urmnd ca aceasta s actualizeze copiile secundare % -l treilea protocol de replicare const n o singur copie care conine starea obiectului! toate celelalte fiind simpli intermediari fr stare/stateless proxS0. 4nd este apelat o metod cererea respectiv este transmis copiei care menine starea obiectului i executat de ctre aceasta. $rincipala calitate a sistemului 6*+B( este faptul c fiecare obiect poate avea propria politic de replicare. De asemenea ! fiecare obiect poate avea propria politic n ceea ce privete consistena! crearea! tergerea i securitatea replicilor. -ceste lucruri sunt posibile deoarece aceste politici sunt manevrate n cadrul obiectului! independent de utilizatori i administratorii de sistem.

1!6

Sorin Adrian Ciureanu Implementarea unui obiect 6*+B( necesit nite subobiecte din care este compus obiectul iniial. -ceste subobiecte sunt c. &ubobiectul responsabil de control d. &ubobiectul responsabil cu replicarea e. &ubobiectul responsabil cu securitatea f. &ubobiectul care se ocup cu semantica g. &ubobiectul responsabil cu comunicarea Su o iectul responsa il de control accept invocri ale metodelor sale i folosete subobiectele pentru a le efectua. Su o iectul responsa il cu replicarea coordoneaz replicarea ! avnd rolul de a comuta ntre diferite protocoale de replicare. Su o iectul responsa il cu securitatea are rolul de alege politica de securitate adecvat/ capabiliti!liste de acces0. Su o iectul care se ocup cu semantica are rolul de a efectua toate cererile ctre interfaa obiectului. Su o iectul responsa il cu comunicarea are rolul de a schimba protocoalele de reea! de exemplu I$v@ cu I$v?. 4nd o metod a obiectului este apelat! codul indicat de interfa se afl n subobiectul de control! acesta apelnd subobiectul de replicare. Dac este replicarea activ ! subobiectul de replicare anun toate replicile s execute efectiv cererea prin subobiectul de semantic. Dac obiectul este n replicare master%slave! se trimite un mesa" la master. Aerificrile de securitate sunt executate de subobiectul de securitate! la anumite momente de timp! fcndu%se diferite verificri specifice. .n element cheie n 6*+B( este serviciul de localizare care permite obiectelor s fie gsite oriunde n lume.! acest serviciu fiind organizat ca un arbore.

Sisteme de operare

1!

Capitolul J SECURITATEA SISTEME#OR DE OPERARE


J.1. NOIUNI INTRODUCTI*E
'ermenul de securitate! ntr%un sistem de operare! implic noiuni multiple i complexe legate de foarte multe aspecte. (ste greu de limitat partea din aciunea de securitate ce revine sistemului de operare! deoarece aceasta este o chintesen a hardului! programrii! tehnicilor de programare! structurilor de date! reelelor de calculatoare etc. De aceea vom ncerca s tratm n general problemele de securitate! insistnd asupra celor legate strict de sistemul de operare. Din punctul de vedere al sistemului de calcul i! implicit! al sistemului de operare! exist trei concepte fundamentale de securitate care reprezint n acelai timp i obiective generale de securitate %confidenialitatea1 %integritatea1 %disponibilitatea. 4onfidenialitatea se refer la accesul datelor! adic la faptul c anumite date! considerate secrete! nu trebuie s fie accesate de utilizatori neautorizai. $roprietarii datelor au dreptul s specifice cine are acces la ele iar sistemul de operare trebuie s impun aceste specificaii. $rincipala ameninare este expunerea datelor iar n momentul n care datele sunt accesate de persoane neautorizate are loc o pierdere a confidenialitii. Integritatea se refer la faptul c datele pot fi modificate numai de utilizatori autorizai1 n caz contrar! adic atunci cnd un utilizator neautorizat modific nite date! are loc o pierdere de integritate. $rincipala ameninare! n acest caz! este coruperea datelor.

1!!

Sorin Adrian Ciureanu Disponibilitatea se refer la faptul c datele sunt accesibile pentru utilizatorii autorizai la un moment dat. -tunci cnd datele nu sunt disponibile! este vorba de refuzul serviciilor /denial of service0. -lte dou concepte din securitatea sistemelor de calcul sunt legate de dreptul unor utilizatori la accesul de date %autentificarea1 %autorizarea. -utentificarea nseamn operaiunea de demonstrare c un utilizator are identitatea declarat de acesta! operaiune ce presupune solicitarea unor informaii suplimentare de la utilizatorul respectiv. -utorizarea reprezint constatarea dreptului unui utilizator de a efectua anumite operaii. 4ele mai rspndite forme de autentificare sunt %autentificarea prin parole1 %autentificarea provocare%rspuns1 %autentificarea ce folosete un obiect fizic1 %autentificarea ce folosete date biometrice. -utentificarea prin parole este una dintre cele mai rspndite forme de autentificare n care utilizatorul trebuie s tasteze un nume de conectare i o parol. (ste o form de autentificare uor de implementat. 4ea mai simpl implementare const dintr%o list n care sunt stocate perechi de nume%parol. -ceast list este pstrat de sistemul de operare ntr%un fiier de parole stocat pe disc. &tocarea poate fi %necriptat1 %criptat. &oluia necriptat este din ce n ce mai puin utilizat! deoarece ofer un grad de securitate redus! prea muli utilizatori avnd acces la acest fiier. &oluia criptat utilizeaz parola drept o cheie pentru criptarea unui bloc fix de date. -poi programul de conectare citete fiierul cu parole! care este de fapt o sum de linii scrise n alfabetul -&4II! fiecare linie corespunznd unui utilizator. Dac parola criptat coninut n acea linie se potrivete cu parola introdus de utilizator! criptat i ea! atunci este permis accesul. + mbuntire a acestei soluii este utilizarea parolelor de unic folosin! cnd utilizatorul primete un caiet ce conine o list de parole. *a fiecare conectare se folosete urmtoarea parol din list. Dac un intrus descoper vreodat o parol! o poate folosi doar o singur dat! la urmtoarea conectare trebuind alt parol. + schem elegant de generare a unor parole de unic folosin este schema lui *amport! elaborat n 9LQ9. Dac n este numrul de parole de

1!" Sisteme de operare unic folosin! atunci se alege o funcie unidirecional f/x0! cu SOf/x0 i proprietatea c fiind dat x este uor de gsit S dar fiind dat S este foarte greu de gsit x. Dac prima parol secret este p! atunci prima parol de unic folosin este dat de legea $arola9O$9Of/f/f/YYYYf/s000 YYYY0 d n ori Z d n ori Z $arola8O$8Of/f/f/YYYYf/s000 YYYY0 d n%9 ori Z d n%9 ori Z . . . $arolanO$nOf/s0 Dac $i /cu 9[ i [n0 este o parol de unic folosin la a HiH%a alegere! atunci $i%9Of/$i0 4u alte cuvinte! se poate calcula uor parola anterioar dar nu este nici o posibilitate de a calcula parola urmtoare. -utentificarea provocare%rspuns const ntr%o serie de ntrebri puse utilizatorului! fiecare ntrebare avnd un rspuns. 'oate rspunsurile la ntrebri sunt stocate n sistemul de operare. Dup compararea rspunsurilor se permite sau nu conectarea utilizatorilor. + alt variant este folosirea unui algoritm care s stea la baza acestui rspuns. .tilizatorul alege o cheie secret! c! pe care o instaleaz pe server. =n momentul conectrii! serverul trimite un numr aleatoriu! a! spre utilizator. -cesta calculeaz o funcie f/a!c0 unde f este o funcie cunoscut! pe care o retrimite serverului. &erverul verific dac rezultatul primit napoi se potrivete cu cel calculat. -vanta"ul acestei metode este acela c! chiar dac tot traficul dintre server i utilizator este interceptat de un intrus! acest lucru nu i va permite intrusului s se conecteze data viitoare. #uncia f trebuie s fie suficient se complex! astfel nct c s nu poat fi dedus! avnd un numr foarte mare de eantioane de trafic. -utentificarea ce folosete un obiect fizic. Dac n autentificarea provocare%rspuns se verific ceea ce utilizatorii tiu! n autentificarea ce folosete obiecte fizice se verific nite caracteristici fizice ale utilizatorilor. +biectele fizice cele mai folosite sunt cartelele care pot fi de mai multe feluri %cartele magnetice1 %cartele electronice1

1"#

Sorin Adrian Ciureanu

%cartele inteligente. 4artelele magnetice stocheaz informaiile sub form magnetic! existnd senzori magnetici care au rolul de citire7scriere. &enzorii magnetici sunt foarte diferii magnetostrictivi! cu efect 5all! cu magnetoimpedan etc. De obicei! n aceste cartele sunt stocate parole. Din punct de vedere al securitii! cartelele magnetice sunt destul de riscante deoarece senzorii magnetici utilizai sunt ieftini i foarte rspndii. 4artelele electronice au la baz senzori electronici care nseamn toi senzorii electrici afar de cei magnetici. 4artelele inteligente au la baz un microprocesor! de obicei simplu! pe Q bii. (le utilizeaz un protocol criptografic! bazat pe principii criptografice pe care le vom studia n capitolul urmtor. -utentificarea ce folosete date biometrice se bazeaz pe folosirea unor caracteristici fizice ale utilizatorilor! numite date biometrice! i care! de obicei! sunt unice pentru fiecare persoan. -stfel de date biometrice pot fi amprentele digitale! amprentele vocale! tiparul retinei etc. .n astfel de sistem de autentificare are dou pri %nrolarea1 %identificarea. =nrolarea const din msurarea caracteristicilor utilizatorului! din digitizarea rezultatelor i din stocarea lor prin nregistrare ntr%o baz de date asociat utilizatorului i aflat n sistemul de operare. Identificarea const din msurarea! nc odat! a caracteristicilor utilizatorului care vrea s se conecteze i din compararea lor cu rezultatele culese la nrolare. $roblema esenial n acest tip de autentificare este alegerea caracteristicilor biometrice! caracteristici care trebuie s aib suficient variabilitate! nct sistemul s poat distinge fr eroare dintre mai multe persoane. + caracteristic nu trebuie s varieze mult n timp. Aocea unei persoane poate s se schimbe n timp! mai ales la persoanele instabile psihic! deci aceast caracteristic nu ofer o stabilitate temporal. + caracteristic biometric din ce n ce mai mult utilizat n ultimul timp! tocmai datorit unei bune stabiliti temporale! este tiparul retinei. #iecare persoan are un diferit tipar de vase de snge retinale! chiar i gemenii. -ceste tipare pot fi fotografiate cu acuratee.

J.".ATACURI ASUPRA SISTEMU#UI DE OPERARE @I M;SURI DE PROTECIE $MPOTRI*A #OR

Sisteme de operare

1"1

(xist numeroase tipuri de atacuri asupra unui sistem de operare i! implicit! mai multe clasificri. + clasificare a atacurilor const n %atacuri din interiorul sistemului1 %atacuri din exteriorul sistemului. -tacurile din interior sunt svrite de utilizatori de"a autorizai iar atacurile din exterior sunt executate! de cele mai multe ori! prin intermediul unei reele de calculatoare. Aom prezenta! n continuare! principalele atacuri ce se pot executa asupra unui sistem de operare.

J.".1. Dep/irea -onei )e (e(orie ta(pon 1Buffer O+erfloF4


De multe ori! spaiul de memorie alocat unui program se dovedete a fi insuficient i se depete acest spaiu! informaiile fiind stocate la o alt adres. -cest tip de atac este un atac din interiorul sistemului i poate fi intenionat sau nu. .n caz tipic de atac neintenionat este cel al programatorului n limba"ul 4! care lucreaz cu vectori n memorie i care nu face! prin program! verificarea limitelor de vectori. *imba"ul 4 este unul flexibil! chiar prea flexibil! iar compilatorul de 4 nu face verificarea limitelor vectorilor! lsnd acest lucru n seama programatorilor. )odul de combatere a acestui atac se face prin utilizarea de tehnici de programare corecte care s verifice eventualele depiri ale dimensiunilor zonelor de memorie alocate dar i prin instalarea de versiuni actualizate ale pachetelor de programe.

J.".". .'i&irea parolelor 1Pa!!For) ue!!in 4


-cest atac nseamn ncercarea de aflare a unor parole. De obicei se utilizeaz un program creat de ctre 4,-4X(,I /sprgtori de parole0! program care! printr%o analiz comparativ! poate determina o coresponden ntre variantele presupuse criptate. 4el mai simplu program de spargere a parolelor este generarea de cuvinte pn se gsete unul care s se potriveasc. 4uvintele sunt generate fie prin permutri de componente fie prin utilizarea cuvintelor unui dicionar. Dac parolele sunt criptate atunci mecanismele de decriptare sunt mai diferite.

1"2

Sorin Adrian Ciureanu )odalitile de protecie mpotriva atacului de ghicire a parolelor

sunt %utilizarea sistemului shado! ! pentru ca fiierul de parole s nu poat fi accesat de utilizatori1 %impunerea pentru utilizatori a unor reguli stricte la schimbarea parolelor1 %educarea utilizatorilor ! n sensul c acetia trebuie s respecte nite reguli fixe de stabilirea parolelor1 %folosirea periodic a unui program sprgtor de parole! pentru a verifica complexitatea acestora! i atenionarea utilizatorilor respectivi.

J.".,. Inter&eptarea reelei 1IP !niffin 4


-cest atac const n monitorizarea informaiilor care circul printr%o interfa de reea! pentru detectarea eventualelor parole necriptate. $rogramele care efectueaz interceptarea traficului din reea se numesc sniffere. &e utilizeaz un interceptor de reea i apoi se face captarea traficului ntr%un fiier. Deoarece viteza reelelor a crescut mult n ultimul timp! fiierul n care se intercepteaz reeaua devine foarte mare n scurt timp! putnd umple ntreg hard discul. Din aceast cauz se obinuiete s se capteze primele sute de octei ai pachetelor! unde! cu mare probabilitate! se va afla numele i parola utilizatorului. (ste un atac din interior i se efectueaz asupra parolei. De aceea mi"locul de combatere cel mai obinuit trebuie s fie criptarea parolelor. + alt metod de protecie este segmentarea reelei n mai multe subreele! utilizarea s:itch%urilor fiind indicat.

J.".0. Ata&ul )e refu- al !er+i&iului 1Denial Of Ser+i&e4


$rin aceste atacuri se degradeaz sau se dezafecteaz anumite servicii ale sistemului de operare. =n reelele de calculatoare! de exemplu! exist bombardamentul cu pachete! cunoscut ca $-4X(' #*++D care const n transmiterea ctre un calculator int un numr foarte mare de pachete de date! avnd ca rezultat ncrcarea traficului n reea. .neori se poate a"unge chiar la blocarea reelei. -tacul poate proveni de la singur surs /D+&O Denial +f &ervice0 sau de la mai multe surse /DD+&ODistributed Denial +f &ervice0! caz mai rar ntlnit. (xist trei tipuri de bombardamente cu pachete

1"3 Sisteme de operare a0 '4$ % Bombardamentul se face n protocolul '4$ /'ransmission 4ontrol $rotocol0! iar un flux de pachete '4$ sunt trimise spre int. b0 I4)$ % -cest atac se mai numete $IN6 #*++D i utilizeaz pachete I4)$. c0.D$ R Bombardamentul se realizeaz! cu un flux de pachete .D$ /.ser Datagram $rotocol0 trimise spre int. $entru a deruta filtrele de pachete existente n interiorul fiecrei reele! n bombardarea cu pachete exist programe speciale care modific atributele pachetelor trimise. (xemple %se modific adresa I$%surs! /I$%&poofing O falsificarea adresei I$0! pentru a ascunde identitatea real a pachetelor1 %se modific portul sursei sau destinaiei1 %se modific alte valori ale atributelor din antetul pachetelor I$. (xemple de bombardamente cu pachete! pentru ncrcarea traficului. %-tacul S?N%floo). &e trimit pachete care au numai bitul de &MN setat. =n felul acesta se deschid multe conexiuni care sunt incomplete. Deoarece fiecare conexiune trebuie prelucrat pn la starea final! se va depi timpul admis! se va declara time+aut i sistemul se va bloca. % -tacul !(arf. (ste un atac de tipul I4)# mpotriva unei inte care este adresa broadcast a reelei. -tacul se face cu adres surs I$ modificat i va duce la generare de trafic suplimentar. % -tacul fra le. (ste un atac cu pachete .D$ avnd ca int portul P al adresei broadcast al reelei. =n felul acesta un singur pachet va fi transmis ntregului segment al reelei. (xemple de bombardamente cu pachete! n vederea unor vulnerabiliti ale serviciilor reelei. % -tacul tear%)rop. -cest atac exploateaz protocolul '4$ pentru fragmentele I$ suprapuse ce nu sunt gestionate corect! adic cele care nu verific corectitudinea lungimii fragmentelor. % -tacuri lan) &raft. &e trimit pachete &MN ce au adresa sursei identic cu adresa destinaie! deschiznd astfel o conexiune vid. % -tacuri pin of )eat'. &e trimit pachete I4$) de dimensiuni foarte mari! ce depesc lungimea standard de ?< JB! ct permite I4$)! depirea acestei valori ducnd la disfuncii ale stivei de comunicaie. % -tacuri napt'a. -cest atac const n deschiderea unui numr mare de conexiuni i abandonarea lor n diferite stri. *a un moment dat se a"unge la refuzul serviciilor de reea a calculatorului int. )odalitile de prevenire a atacurilor de tip D+& sunt % utilizarea unor versiuni ct mai recente ale sistemului de operare1

1"4

Sorin Adrian Ciureanu %implementarea mecanismului &MN4++XI(& care const n alegerea particular ale numerelor iniiale de secven '4$! n aa fel ca numrul iniial de secven din server s creasc puin mai repede dect numrul iniial de secven de pe client1 %separarea serviciilor publice de cele private! utilizate n interiorul reelei1 %utilizarea de I$ separate pentru fiecare serviciu n parte /5''$! &)'$!DN&Y..01 %instalarea unei conexiuni de siguran care s preia traficul extern n cazul unui atac $-4X(' #*++D1 %instalarea de fire!all+uri la nivel de pachet! pentru serviciile care nu se utilizeaz n mod curent1 %dezactivarea serviciilor ce nu sunt necesare1 %separarea Intranetului de Internet.

J.".5.

Ata&uri &u >o(>a e%(ail

-cest atac const din trimiterea repetat a unui mesa" ctre aceeai int. $rincipala metod de protecie este refuzul mesa"ului primit de la utilizatorul respectiv. .n alt atac de tip e%mail este atacul SPAM 1e%(ail !pa((in 4. -cest atac este un atac mai nou n care se trimit mesa"e nesolicitate! de cele mai multe ori de tip reclam! de ctre un expeditor care utilizeaz o adres fals.

J.".6. Fal!ifi&area a)re!ei e8pe)itorului 1e%(ail !poofin 4


(ste un atac care const din recepionarea de ctre utilizator a unui e% mail care are adresa expeditorului diferit de cea original. (ste utilizat! n general! pentru a ascunde adresa atacatorului. -ceast modificare a adresei expeditorului este favorizat de faptul c protocolul de transport al mesa"elor! utilizat n reele! /&)'$O&imple )ail 'ransfer $rotocol0! nu prevede nici un sistem de autentificare. $revenirea acestui tip de atac poate fi fcut prin diferite metode %utilizarea criptografiei pentru autentificare1 %configurarea serverului de e%mail pentru a refuza conectarea direct la portul &)'$ sau limitarea accesului la el1

1"5 Sisteme de operare %stabilirea unui singur punct de intrare pentru e%mail%ul primit de reea! permindu%se astfel concentrarea securitii ntr%un singur punct precum i instalarea unui fire:all.

J.".9. Cai troieni 1TroHan 'or!e!4


4aii troieni informatici sunt programe care se ascund sub forma unor fiiere executabile obinuite. +dat ptruni ntr%un fiier! gazda poate efectua orice operaie. (xemple %aplicaiile denumite Hvduva neagrH /blacJ :ido:0 de pe ::: care acioneaz asupra bro:serelor :eb! blocndu%le sau deteriorndu%le1 %caii troieni instalai n scriptul 46I ! care deterioreaz scriptul. 4a mi"loace de lupt mpotriva cailor troieni se recomand realizarea periodic de copii de siguran a sistemelor de fiiere! pentru a putea restaura fiierele executabile originale n cazul alterrii acestora.

J.".<. U/i a!&un!e 1Ba&M )or! an) trap!4


&unt cazuri particulare de cai troieni. &e creeaz o H.H care de fapt este un utilizator nou i care permite acordare de privilegii speciale unui anumit utilizator.

J.".J. *iru/i
.n virus este o secven de cod care se autoinsereaz ntr%o gazd! inclusiv n sistemul de operare! pentru a se propaga. -ceast secven de cod! neputnd rula independent! apeleaz la execuia programului gazd pentru a se putea activa. 4rearea virusului a pornit de la o idee a profesorului 4ohen! la nceputul anilor QF! care! ntr%un articol! explica c s%ar putea crea secvene de cod%program care s provoace anumite daune. $rimii virui sunt consemnai n istoria informaticii n 9LQP! n $aJistan. De atunci i pn n prezent viruii au cunoscut o dezvoltare spectaculoas! fiind principalii actori ai atacurilor din afara sistemului. Dac n anii QF o eroare a unui sistem de calcul avea cauza principal n redusa fiabilitate hard! astzi ma"oritatea erorilor sunt cauzate de virui.

1"6

Sorin Adrian Ciureanu 'rebuie remarcat c! la ora actual! exist o larg rspndire a viruilor n sistemul de operare 2IND+2& i o rspndire foarte mic! chiar nul! n sistemele de operare de tip .NI3. #aptul c sistemele de operare .NI3 nu sunt vulnerabile la virui se datoreaz gestiunii stricte a memoriei i a proceselor ce se execut. 4hiar dac un virus reuete s ptrund n sistemul .NI3! posibilitatea lui de replicare este extrem de redus. *upta contra viruilor este astzi una dintre cele mai importante probleme. 4a i n cazul virusului biologic! ideal ar fi ca virusul informatic s fie evitat. $entru aceasta ar trebui respectate anumite reguli importante cum ar fi %alegerea unui sistem de operare cu un nalt grad de securitate1 %instalarea de aplicaii sigure i evitarea copiilor a cror provenien este dubioas1 %achiziionarea unui program antivirus bun i upgardarea sa ct mai des posibil1 %evitarea ataamentelor de pe e%mail1 %crearea frecvent a copiilor de siguran pentru fiierele cele mai importante i salvarea lor pe medii de stocare externe /4D%uri! streamere etc.0. $rogramele antivirus create pn n prezent folosesc diferite tehnici antivirus cu ar fi %scanarea de virui1 %verificarea de integritate n care programul antivirus utilizeaz tehnica checJsum%ului1 %verificarea de comportament n care programul antivirus st tot timpul n memorie i capteaz el nsui toate apelurile sistem.

J.".1P. *ier(i 1Dor(!4


Aiermii sunt nite virui care nu se reproduc local ci pe alte calculatoare! de obicei prin Internet. .n vierme este un program care poate rula independent! consumnd resursele gazdei pentru a se executa i care poate propaga o versiune funcional proprie ctre alte calculatoare. Aiermele funcioneaz dup principiul Hcaut i distrugeH. .n vierme se rspndete n mod automat! instalndu%se n calculatoarele ce prezint vulnerabiliti. Din pcate! la ora actual factorului de multiplicare al viermilor este exponenial. $e lng aciunile

1" Sisteme de operare distructive! un vierme creeaz un trafic uria n reea ducnd la un refuz al serviciilor. (xemple de viermi %viermele )+,,I& este primul vierme din istorie! creat de un student de la .niversitate 4ornell1 %viermele 4+D( ,(D care exploateaz un bug din 2(B numit II&.

J.,. MECANISME DE PROTECIE


=n acest subcapitol vom prezenta principalele mecanisme de protecie folosite n sistemele de operare. Ne vom ocupa de dou mecanisme de protecie curente ! criptografia (i sistemele fire!all, precum i de dou concepte de securitate! monitorul de referin (i sistemele de ncredere.

J.,.1. Cripto rafia


4riptografia are ca scop transformarea unui mesa" sau a unui fiier! denumit te)t n clar (plainte)t)! ntr%un te)t cifrat! denumit cipherte)t. -cest lucru se poate realiza n dou moduri %criptarea cu cheie secret /criptografia simetric01 %criptarea cu chei publice /criptografia asimetric0. @.3.1.1. -riptografia c( c/ei secrete "criptografia simetric!$ =n acest sistem este folosit o singur cheie! att pentru criptarea ct i pentru decriptarea informaiei. =ntre expeditor i destinatar se negociaz un protocol comun! de maxim siguran! care are rolul de a transmite de la expeditor la destinatar o cheie de criptare secret. =n cadrul criptografiei cu chei secrete exist mai multe tehnici a0%cifrurile bloc /blocJ ciphers01 b0%cifrurile flux /stream ciphers01 c0%codurile de autentificare a mesa"elor/)-400. a0%4ifrul bloc transform un bloc de text de lungime fix ntr%un bloc de text criptat! de aceeai lungime! cu a"utorul unei chei secrete. $utem spune c n acest tip de criptare! deoarece nu se modific numrul de caractere al textului iniial! are loc o permutare a caracterelor din setul iniial. (xist mai multe tehnici de criptare %cifrul bloc iterativ1

1"!

Sorin Adrian Ciureanu %modul carte de coduri /(4BO(lectronic 4ode BlocJ01 %modul cu nlnuire /4B4O4ipher BlocJ 4haining01 %modul cu reacie /4#BO4ipher #eed BacJ01 %modul cu reacie la ieire /+#BO+utput #eed BacJ0. %4ifrul bloc iterativ. &e aplic la fiecare iteraie o aceeai transformare! utiliznd o subcheie. &etul de subchei este derivat din cheia secret de criptare! prin intermediul unei funcii speciale. Numrul de cicluri dintr%un cifru iterativ depinde de nivelul de securitate dorit. =n general! un numr ridicat de cicluri va mbunti performana! totui! n unele cazuri! numrul de iteraii poate fi foarte mare. 4ifrurile #eistel reprezint o clas special de cifruri bloc iterative n care textul criptat este generat prin aplicarea repetat a aceleiai transformri sau a funciei iterative. &e mai numesc i cifruri D(& /Data (nscrSption &tandard0. =ntr%un cifru #eistel! textul original este desprit n dou pri! funcia iterativ fiind aplicat unei "umti folosind o subcheie iar ieirea acestei funcii este calculat &-.%(34*.&IA cu cealalt "umtate. 4ele dou "umti sunt apoi interschimbate. %)odul carte de coduri. #iecare text original /de fapt bloc de text0 este criptat independent! cu alte cuvinte fiecrui bloc de text original i corespunde un bloc de text cifrat. %)odul cu nlnuire. #iecare bloc de text original este calculat &-.% (34*.&IA cu blocul criptat precedent i apoi este criptat. (ste utilizat un vector de iniializare! de preferin pseudo aleatoriu. %)odul cu reacie. Blocul cifrat precedent este criptat iar ieirea este combinat cu blocul original printr%o operaie &-.%(34*.&IA. b0%4ifrurile flux seamn cu cifrurile bloc dar au avanta"ul c sunt mult mai rapide. Dac cifrurile bloc lucreaz cu blocuri mari de informaie! cifrurile flux lucreaz cu buci mici de text! de cele mai multe ori la nivel de bit. c0%4oduri de autentificare a mesa"elor /)-4O)essage -uthentification 4ode0. .n asemenea cod este o etichet de autentificare numit i sum de control /checJsume0 i deriv din aplicarea unei scheme de autentificare! mpreun cu o cheie secret! unui mesa". &pre deosebire de semnturile digitale! )ac%urile sunt calculate i verificate utiliznd aceeai cheie! astfel nct ele pot fi verificate doar de ctre destinatar. (xist patru tipuri de )-4%uri %&igure necondiionat. &unt bazate pe criptarea unui drum unic. 'extul cifrat al mesa"ului se autentific pe sine nsui i nimeni altcineva la

1"" Sisteme de operare drumul unic. .n )-4 sigur condiionat poate fi obinut prin utilizarea unei chei secrete folosite doar odat. %Bazate pe funcia de dispersie /5)-40. + funcie de dispersie 5 reprezint o transformare ce primete la intrare valoarea m i returneaz un ir de lungime fix! h. &e utilizeaz una sau mai multe chei mpreun cu o funcie de dispersie! pentru a produce o sum de control care este adugat mesa"ului. %Bazate pe cifruri flux. .n cifru flux sigur este utilizat pentru a descompune un mesa" n mai multe fluxuri. %Bazate pe cifruri bloc. &e cripteaz blocuri de mesa" utiliznd D(& i 4B4! furnizndu%se la ieire blocul final al textului cifrat ca sum de control. &istemul D(& /Data (ncrSption &tandard0 este o aplicaie a cheilor secrete. &e utilizeaz n acest sistem chei de @? bii. &istemul D(& este destul de vulnerabil i de aceea el se utilizeaz mpreun cu un sistem sigur de gestionare a cheilor de criptare. Aariante mai performante ale D(&%ului sunt %triple D(&! unde se cripteaz datele de trei ori consecutiv1 %D(&3! unde se utilizeaz o cheie de criptare de ?< bii! de tip &-.% (34*.&IA! nainte de criptarea cu D(& iar dup D(& se mai utilizeaz nc o dat o cheie de criptare.

@.3.1.2. -riptarea c( c/ei p(+lice "-riptografia asimetric!$ #iecare persoan deine cte dou perechi de chei! una public Rce poate fi chiar disponibil pe Internet% i una privat. -vanta"ul acestui sistem de criptare este c nu este necesar asigurarea securitii transmisiei informaiei. +ricine poate transmite o informaie utiliznd cheia public dar informaia nu poate fi decriptat dect prin intermediul cheii private! deinut doar de destinatar. 4heia privat este ntr%o legtur matematic cu cea public. $rote"area mpotriva unor atacuri care se fac prin derivarea cheii private din cheia public se realizeaz fcnd aceast derivare ct mai dificil! aproape imposibil. 4riptografia cu chei secrete este utilizat de sistemele tradiionale. (ste un mod mult mai rapid dar are dezavanta"ul c modul de transmisie a cheilor trebuie s fie foarte sigur. Si!te(ul RSA 1Ri+er! S'a(ir A)le(an4. -cest sistem utilizeaz chei publice i ofer mecanisme de criptare a datelor i semnturi digitale. -lgoritmul de funcionare al sistemului ,&- este urmtorul

2##

Sorin Adrian Ciureanu %se aleg dou numere prime mari p i ` %se calculeaz nOp` %se alege un numr e! e\n ! e fiind prim cu /p%90/`%90 %se calculeaz un numr d! astfel nct /ed%90 s fie divizibil prin /p%

90/`%90 %cheia public este /n!e0 %cheia privat este /n!d0 +binerea cheii private d pornind de la cheia public /n!e0 este dificil. &e poate determina cheia privat d prin favorizarea lui n n p i `. &ecuritatea sistemului ,&- se bazeaz pe faptul c aceast determinare este foarte dificil. 4riptarea prin intermediul ,&- se realizeaz astfel %expeditorul mesa"ului m creeaz textul cifrat cOme mod n! unde /e!n0 reprezint cheia public a destinatarului1 %la decriptare! destinatarul calculeaz mOcd mod n . ,elaia dintre e i d asigur faptul c destinatarul decripteaz corect mesa"ul. Deoarece numai destinatarul cunoate valoarea lui d! doar el poate decripta mesa"ul. &igurana ,&- se bazeaz n primul rnd pe gestionarea cheilor private! mecanism dependent de implementarea algoritmului ,&-. De asemenea! este important alegerea unei perechi puternice de numere prime p i `. Numerele prime puternice au diferite proprieti care le face greu de fabricat. Dimensiunea cheii utilizate ntr%un algoritm ,&- se refer la dimensiunea lui n. 4u ct n este mai mare cu att securitatea algoritmului este mai mare dar i funcionarea acestuia este mai lent. )rimea uzual a cheii este de 9F8< bii. &istemul ,&- este utilizat mpreun cu un sistem criptografic cu chei scurte! cum ar fi D(&.

J.,.". Di!po-iti+e fireFall


.n fire:all este un sistem care separ o reea prote"at de una neprote"at! reeaua neprote"at fiind n ma"oritatea cazurilor IN'(,N('. .n astfel de sistem monitorizeaz i filtreaz traficul dintre cele dou reele! conform unei politici predefinite de control al accesului. Internet exterior #ire:all interior ,eea intern

Sisteme de operare Fi . J.1. #o&ul unui fireFall

2#1

'ermenul fire:all nseamn Hperete de focH i arat capacitatea de a segmenta o reea mai mare n subreele. .n fire:all are dou interfee %una ctre exterior! de cele mai multe ori ctre Internet1 %una direcionat ctre reeaua intern pe care o prote"eaz. #iltrarea traficului dintre aceste dou reele se face dup anumite criterii i vizeaz %adresele I$ surs i destinaie ale pachetelor de informaie vehiculate /address filtering01 %anumite porturi i protocoale /5''$! #'$! '(*N('0 /protocol filtering0. .n fire:all de reea nu poate administra transferul de date efectuat de ctre un utilizator care folosete o legtura la Internet de tip deal%up! ocolind procedurile de securitate i implicit fire:all%ul n sine. @.3.2.1. )ip(ri de firewall $utem considera patru tipuri 90 #ire:all%uri cu filtrare de pachete /$acJet #iltering #ire:alls0. #uncioneaz la nivelul I$ al modelului +&I i respectiv la nivelul I$ al modelul '4$7I$. &e analizeaz sursa de provenien i destinaie a fiecrui pachet n parte! acceptnd sau blocnd traficul derulat de acestea. De obicei! acest tip de fire:all este implementat la nivel de router! ceea ce implic un cost minim. $rincipalul su dezavanta" const n incapacitatea de a furniza o securitate! prin reguli complexe de identificare i validare a I$%urilor! motiv pentru care este indicat utilizarea mpreun cu un al doilea fire:all extern care s ofere protecie suplimentar. 80 $ortie de circuit /4ircuit *evel 6ate:aSs0. ,uleaz la nivelul @ al modelului +&I i respectiv nivelul < al modelului '4$7I$. &e monitorizeaz sesiunile '4$ dintre reeaua intern i reeaua Internet. &e utilizeaz un server intermediar care mascheaz datele de pe calculatoarele reelei private. $unctul slab al porilor de curent este faptul c nu se verific pachetele ce constituie obiectul traficului cu reeaua public ci doar filtreaz n funcie titlu. ;0 $roxi%uri de aplicaie /$roxies0. &unt cele mai complexe soluii de tip fire:all dar i cele mai scumpe. #uncioneaz la nivel de aplicaie al modelului +&I. &e verific pachetele de date i se blocheaz accesul

2#2

Sorin Adrian Ciureanu pachetului care nu respect regulile stabilite de proxi. $entru un proxi de :eb! de exemplu! acesta nu va permite niciodat accesul unui trafic de protocol #'$ sau '(*N('. &erverul local vede aceast soluie ca pe un simplu client! n timp ce reeaua public l va recepta ca fiind nsui serverul. $roxi%urile de aplicaie pot crea fiiere de tip log cu activitatea utilizatorilor din reea sau pot monitoriza autentificrile acestora! oferind i o verificare de baz a pachetelor transferate cu a"utorul antivirusului ncorporat. <0 #ire:all%uri cu inspecii multistrat /&tateful )ultilaSer Inspections0. (ste o combinaie ntre cele trei tipuri descrise anterior. -cest tip se bazeaz pe algoritmi proprii de recunoatere i aplicare a politicilor de securitate! spre deosebire de o aplicaie proxi standard. Inspecia multinivel ofer un nalt grad de securitate! performane foarte bune i o transparen oferit end%user%urilor. (ste cea mai scump dar! fiind foarte complex! se poate transforma ntr%o arm mpotriva reelei pe care o prote"eaz dac nu este administrat de personal competent. @.3.2.2. 0(nciile (n(i firewall .n fire:all are urmtoarele posibiliti %monitorizeaz cile de acces n reeaua privat! permind n acest fel o mai bun monitorizare a traficului i o mai uoar detectare a ncercrilor de infiltrare1 %blocheaz traficul nspre i dinspre Internet1 %selecteaz accesul n spaiul privat pe baza informaiilor coninute n pachete1 %permite sau interzice accesul la reeaua public de pe anumite spaii specificate1 %poate izola spaiul privat de cel public i realiza interfaa dintre cele dou. .n fire:all nu poate s execute urmtoarele %s interzic importul7exportul de informaie duntoare vehiculat ca urmare a aciuni rutcioase a unor utilizatori aparinnd spaiului privat! cum ar fi csua potal i ataamentele1 %s interzic scurgerea de informaie de pe alte ci care ocolesc fire:all%ul /acces prin deal%up ce nu trece prin router01 %s apere reeaua privat de userii ce folosesc sisteme fizice mobile de introducere a datelor n reea /.&B &ticJ! 4D! dischete01

2#3 Sisteme de operare %s previn manifestarea erorilor de proiectare ale aplicaiilor ce realizeaz diverse servicii! precum i punctele slabe ce decurg din exploatarea acestor greeli.

@.3.2.3. 0irewall-(ri n sistemele de operare ;indows Aom exemplifica instalarea i configurarea unui fire:all n 2indo:s. -m ales versiunea trial a programului Eone Alar( Pro. $entru nceput! programul se instaleaz n mod standard! urmnd ca setrile s se fac ulterior. $rogramul ofer! pe lng protecia fire:all! prote"area programelor aflate pe hard disc! protecia e%mail i posibilitatea blocrilor cooJies%urilor! pop%urilor i bariere%lor nedorite. &etrile se pot face pe trei nivele diferite %5igh! nivel ce ofer o prote"are cvasitotal! strict monitorizat! dar care mpiedic opiunile de sharing1 %)edium! nivel ce ofer o setare cu posibilitatea vizionrii resurselor proprii din exterior dar fr posibilitatea modificrii acestora1 %*o:! nivel la care fire:all%ul este inactiv iar resursele sunt expuse la atacuri. $entru pota electronic programul se comport ca o adevrat barier n faa unor eventuale supraaglomerri a csuei potale! avnd posibilitatea blocrii e%mail%urilor ce vin consecutiv. =n default exist opiunea de acceptare a maximum @ e%mail%uri ce vin ntr%un interval de 8 secunde. (xist i opiunea refuzrii e%mail%urilor nsoite de diverse ataamente sau a acceptrii lor doar pentru cele ce nu au un numr de recipiente ataate care depete totalul admis de utilizator. @.3.2.%. 0irewall-(ri n sistem(l de operare 3in(# =n sistemul de operare *inux a fost implementat la nivel de Jernel un fire:all numit ipta>le!. -cest sistem ofer posibilitatea de a filtra sau redireciona pachetele de date! precum i de a modifica informaiile despre sursa i destinaia pachetelor! procedur numit N-' /Net:orJ -ddress 'ranslation0. .na dintre aplicaiile sistemului N-' este posibilitatea deghizrii pachetelor /mas`uerading0. Deghizarea nseamn c pachetele trimise de ctre sistemele aflate n reea! care au stabilite ca gate:aS o anumit main! s par transmis de maina respectiv i nu de cea originar. )aina! configurat ca fire:all! retrimite pachetele venite! dinspre reea spre exterior! fcnd s par c provin tot de la ea. -cest mecanism

2#4

Sorin Adrian Ciureanu este foarte util atunci cnd exist o main care realizeaz legtura la Internet! o singur adres I$ alocat i mai multe calculatoare n reea care au definit maina respectiv ca gate:aS. &ituaia este des ntlnit n cadrul companiilor mici i mi"locii dotate cu o legtur Internet permanent! mai ales ca urmare a crizei de adrese I$ manifestat n ultimii ani. Nucleul *inux definete dou tabele de reguli %filterA utilizat pentru filtrul de pachete1 %natA utilizat pentru sistemul N-'. (xist @ lanuri predefinite care nseamn o succesiune de reguli utilizate pentru verificarea pachetelor de date ce tranziteaz sistemul. -cestea sunt %lanul IN$.'! disponibil pentru tabela filter1 %lanul #+,2-,D! disponibil pentru tabela filter1 %lanul $,(,+.'IN6! disponibil pentru tabela nat1 %lanul $+&,+.'IN6! disponibil pentru tabela nat %lanul +.'$.'! disponibil pentru ambele tabele. -tunci cnd pachetul intr n sistem printr%o interfa de reea! nucleul decide dac el este destinat mainii locale /lanul IN$.'0 sau altui calculator /lanul #+,2-,D0. =n mod similar! pachetele care ies din maina local trec prin lanul +.'$.'. #iecare lan conine mai multe reguli ce vor fi aplicate pachetelor de date care le tranziteaz. =n general! regulile identific adresele surs i destinaie a pachetelor! nsoite de porturile surs i destinaie! precum i protocolul asociat. 4nd un pachet corespunde unei reguli! adic parametrii menionai mai sus coincid! asupra pachetelor se va aplica o anumit aciune care nseamn direcionarea ctre o anumit int. Dac o regul specific aciunea accept! pachetul nu mai este verificat folosind celelalte reguli ci este direcionat ctre destinaie. Dac regula specific aciunea D,+$! pachetul este HaruncatH! adic nu i se permite s a"ung la destinaie. Dac regula specific aciunea ,(C(('! pachetului tot nu i se permite s a"ung la destinaie dar este trimis un mesa" de eroare expeditorului. (ste important ca fiecrui lan s%i fie atribuit o aciune implicit care va reprezenta destinaia pachetului dac nici una din regulile stabilite nu corespunde. -stfel lanul IN$.' trebuie s aib D,+$ sau ,(C(4' ca aciune implicit pentru orice pachet care se dorete a fi filtrat. Dac dorim s implementm un fire:all ntr%o main care realizeaz conexiunea Internet ntr%o companie privat! vom permite accesul din exterior la serviciile :eb! precum i la serviciile de e%mail. 4onexiunea la reeaua local este realizat prin interfaa et'o ! iar cea pe Internet prin interfaa pppo.

2#5 Sisteme de operare (xist mai multe interfee grafice pentru generarea de fire:all%uri pentru sistemul ipta>le!A cum ar fi #ire:all Bulder! #irestarter etc. *a sfritul implementrii se verific funcionarea fire:all%ului! testarea fiind mai greu de realizat dac acesta conine multe reguli. 'estarea se face din afara reelei! utiliznd un scanner /&-'-N sau N)-$0 i din interior. Dup ce s%au stabilit regulile de filtrare i s%a testat funcionarea fire:all%ului este recomandabil s se salveze configuraia curent a sistemului iptables.

J.,.,. Si!te(e )e 7n&re)ere


&istemele de ncredere sunt un concept mai nou i sunt capabile s ofere securitate la nivel de sistem. $entru aceste sisteme s%au formulat clar cerine de securitate care s%au i ndeplinit. #iecare sistem de ncredere conine o Baz de 4alcul de =ncredere /'4BO 'rusted 4omputing Base0 care const n hardul i softul ce conin toate regulile de securitate. Dac aceast '4B funcioneaz conform specificaiilor! sistemul de securitate nu poate fi compromis. '4B%ul const dintr%o parte a Jernelului sistemului de operare i din programele utilitare ce au putere de superutilizator. #unciile sistemului de operare care fac parte din '4B sunt separate de restul &+! pentru a le minimaliza dimensiunea i a le verifica corectitudinea. Aom prezenta n continuare cteva modele de sisteme de ncredere. @.3.3.1. Monitor(l de referine )onitorul de referine este o parte important a '4B%ului care accept toate apelurile sistem ce implic securitatea! cum ar fi deschiderea de fiiere! i decide dac ar trebui s fie procesate sau nu. -stfel! monitorul de referin permite amplasarea tuturor deciziilor de securitate ntr%un singur loc! fr posibilitatea de a%l ocoli.
Proces utilizator Boate apelurile sistem trec prin monitorul de re+erineH pentru ,eri+icare de securitate%

.&(,

;*?(B*. 1/ ./C/.(?O/

X(,N(*

B&D B&D

2#6

Sorin Adrian Ciureanu

Fi . J.". S&'e(a unui (onitor )e referine Model(l c( 3iste de -ontrol al .cces(l(i ".-3$ .n sistem de calcul conine multe obiecte care necesit a fi prote"ate. -ceste obiecte pot fi componente hard /uniti de disc! segmente de memorie! imprimante etc.0 sau componente soft /procese! fiiere! semafoare etc.0. #iecare obiect are un nume unic prin care este referit i un set finit de operaii permise! de exemplu scriere7citire pentru fiiere! up7do:n pentru semafoare etc. (ste necesar o modalitate de a interzice proceselor de a accesa obiecte pe care nu sunt autorizate s le acceseze. 'rebuie creat un mecanism pentru restricionarea proceselor la un subset al operaiilor legale! cnd este necesar. &e introduce noiunea de domeniu de protecie care nseamn un set de perechi /obiecte! drepturi0. #iecare pereche specific un obiect i un subset al operaiilor permise asupra lui. .n drept! n acest context! nseamn permisiunea de a executa una din aceste operaii. + implementare a domeniilor de protecie este matricea de protecie n care coloanele sunt obiecte iar liniile sunt domenii sau drepturi. .n exemplu de matrice de protecie este cel de mai "os o>ie &te )o(enii 1 " , Fi/ier 1 Fi/ier " Fi/ier , I(pri(anta 1 &itire &itire !&riere &itire !&riere !&riere Fi .J.,. Matri&e )e prote&ie. !&riere I(pri(anta " @.3.3.2.

2# Sisteme de operare $ractic! o astfel de matrice are dimensiuni foarte mari iar mprtierea n cadrul matricei este i ea foarte mare. De aceea matricea se pstreaz pe rnduri sau pe coloane! cu elemente nevide. Dac matricea se pstreaz pe coloane! structura de date este *ista de 4ontrol al -ccesului /-4* O -cces 4ontrol *ist0. Dac se pstreaz pe linii! se numete lista de capabiliti /4apabilitS *ist0 sau lista 4 /4%*ist0 iar intrrile individuale se numesc capabiliti. *iste de 4ontrol al -ccesului. #iecare obiect are asociat o -4* n care sunt trecute drepturile respective. $entru exemplul dat! -4*%urile obiectelor sunt Fi/ier 1 Q1R&R"R,R Fi/ier " Q1R&!R"R,R Fi/ier , Q 1R"R&!eR,R I(pri(ant 1Q1R"R,R!R I(pri(ant "Q1R"R!R,R $roprietarul fiierului poate s modifice -4*%urile.

4apabiliti. &e reine matricea pe linii. *istele 9!8!; de capabiliti ale obiectelor sunt! pentru exemplul de mai sus! urmtoarele Fi/ier 1 Fi/ier " Fi/ier , I(pri(ant 1 I(pri(ant " @.3.3.3. 9 Fi/ier 1S& Fi/ier "S&! 8 ; Fi/ier ,S&!e I(pri(ant 1S! I(pri(ant"S!

Model(l Dell-3a Pad(la

4ele mai multe sisteme de operare permit utilizatorilor individuali s decid cine poate s citeasc i s scrie fiierele sau alte obiecte proprii. -ceast politic se numete control discreionar al accesului. =n unele medii modelul funcioneaz bine dar exist i medii n care se cere o securitate superioar! de exemplu armata! spitalele etc. $entru aceste medii sunt necesare o serie de reguli mult mai stricte. &e folosete! n aceste cazuri! un control obligatoriu al accesului. &e regularizeaz fluxul informaiei pentru a se asigura c nu sunt scpri n mod nebnuit. .n astfel de model este i Bell%*a $adula! folosit des i n armat.

2#!

Sorin Adrian Ciureanu =n acest model oamenilor din armat le sunt atribuite nivele n funcie de natura documentelor permise lor spre vizualizare. .n proces ce ruleaz din partea unui utilizator primete nivelul de securitate al utilizatorului. Din moment ce exist mai multe nivele de securitate! aceast schem se numete sistem de securitate multinivel. )odelul Bell%*a $adula aparine acestui sistem! el avnd reguli despre cum poate circula informaia. %$roprietatea simpl de securitate un proces rulnd la nivelul de securitate J poate citi doar obiecte la nivelul su sau mai "os. %$roprietatea asterisc /_0 un proces rulnd la nivelul de securitate J poate scrie doar obiecte la nivelul su sau mai sus. Deci! conform acestui model! procesele pot citi n "os i scrie n sus. Dac sistemul impune cu strictee aceste dou proprieti! se poate arta c nu se poate scurge nici o informaie de la un nivel mai nalt la un nivel mai cobort. =n acest model! ilustrat grafic n fig.L.<.! procesele citesc i scriu obiecte dar nu comunic ntre ele.
? (< / @ 1 / S / & U . (B 0 B /

4 $ 2

&

& itir e

S c r ie r e

P ro c e s

* b ie c t

P ro c e s

* b ie c t

Sisteme de operare Fi . J.0. S&'e( )e !e&uritate (ultini+el.

2#"

$roprietatea simpl de securitate afirm c toate sgeile continue /de citire0 merg n lateral sau n sus iar sgeile ntrerupte /de scriere0 merg n lateral sau n sus. Din moment ce toat informaia circul doar orizontal sau n sus! orice informaie ce pornete de la nivelul J nu poate s apar la un nivel inferior. Deci nu exist nici o cale care s mite informaia n "os! garantndu%se astfel securitatea modelului. Dac transpunem aceste lucruri n termeni militari! un locotenent poate s cear unui soldat s%i dezvluie tot ce tie ca apoi s copieze aceast informaie n fiierul unui general! fr a nclca securitatea. =n concluzie! modelul Bell%*a $adula a fost conceput s pstreze secrete dar nu s garanteze integritatea datelor. @.3.3.%. Model(l Di+a

$entru a se garanta integritatea datelor ar trebui inversate proprietile din modelul Bell%*a $adula! adic 90 .n proces rulnd la nivelul de securitate J poate scrie doar obiecte la nivelul su sau mai "os. 80 .n proces rulnd la nivelul de securitate J poate citi doar obiecte la nivelul su sau mai sus. -ceste proprieti stau la baza modelului Biba care asigur integritatea datelor dar nu i secretizarea lor. Bineneles c modelul Biba i modelul Bell%*a $adula nu pot fi realizate simultan. @.3.3.5. Model(l sec(rit!ii -!rii Portocalii

=n 9LQ@ Departamentul -prrii &tatelor .nite ale -mericii a publicat un document cunoscut sub denumirea de Cartea %ortocalie , un document care mparte sistemele de operare n cteva categorii bazate pe criteriul de securitate. Iat mai "os criteriile de securitate ale 4rii $ortocalii. Nivelele de securitate sunt notate cu D! 49! 48! B9! B8! B;! -9! n ordinea n care securitatea crete spre dreapta. & analizm categoriile de securitate i s subliniem cteva dintre aspectele importante. Nivelul D de conformitate este uor de atins! neavnd nici un fel de cerine de securitate. -dun toate sisteme ce au euat s treac chiar i testele de securitate minim. )&%D+& i 2indo:s LQ sunt de nivel D.

21#

Sorin Adrian Ciureanu Nivelul 4 este intenionat pentru medii cu utilizatori cooperativi. 49 necesit un mod prote"at al sistemului de operare! conectarea utilizatorilor prin autentificare i capacitatea pentru utilizatori de a specifica ce fiiere pot fi fcute disponibile altor utilizatori i cum. &e cere o minim testare de securitate i documentare. Nivelul 48 adaug cerina ca i controlul discretizabil al accesului s fie cobort la nivelul utilizatorului individual. 'rebuie ca obiectele date utilizatorului s fie iniializate i este necesar o minim cantitate de auditare. $rotecia r:h din .nix este de tipul 49 dar nu de tipul 48. CRITERIU Politi&a )e !e&uritate 4ontrol discretizabil al accesului ,efolosirea obiectului (tichete Integritatea catalogrii (xportare a informaiei catalogate 4atalogarea ieirii lizibile 4ontrol obligatoriu al accesului 4atalogri ale senzitivitii subiectului (tichete ale dispozitivelor Po!i>ilitatea )e &onta>ili-are Identificare i autentificare -udit 4ale de ncredere A!i urare -rhitectura sistemului Integritatea sistemului 'estarea securitii &pecificrile i verificarea modelului -naliza canalului camuflat -dministrarea caracterului de ncredere -dministrarea configuraiei ,ecuperarea de ncredere Distribuire de ncredere Do&u(entare 6hid pentru aspecte de securitate )anual al caracteristicilor de ncredere D C 1 x C " x x B 1 Z Z x x x x x B " Z Z x Z Z Z x x x x x x B , x Z Z Z Z Z Z Z Z x x x A 1 Z Z Z Z Z Z Z Z Z Z Z Z

x x

x x

x x x

x x x x Z Z Z Z Z Z x x x x x x x x x x x x x x Z x Z x x Z x Z Z Z Z Z x x x x Z

x x

Sisteme de operare

211

Documentaie de testare x Z Z x Z x Documentaie de proiectare x Z x x x x *egend x % sunt noi cerine1 Z % cerinele pentru urmtoarea categorie inferioar se aplic i aici. Nivelele B i - necesit ca tuturor utilizatorilor i obiectelor controlate s le fie asociat o catalogare de securitate de genul neclasificat! secret! strict secret. &istemul trebuie s fie capabil a impune modelul Bell% *a $adula. B8 adaug la aceast cerin ca sistemul s fi fost modelat de sus n "os ntr%o manier modular. B; conine toate caracteristicile lui B8! n plus trebuie s fie -4*%uri cu utilizatori i grupuri! trebuie s existe un '4B formal! trebuie s fie prezent o auditare adecvat de securitate i trebuie s fie incus o recuperare sigur dup blocare. -9 cere un model formal al sistemului de protecie i o dovad c sistemul este corect. )ai cere i o demonstraie c implementarea este conform cu modelul. @.3.%. Sec(ritatea n sistemele de operare ;indows

2indo:s N' satisface cerinele de securitate 48 n timp ce 2indo:s LQ nu satisface aceste cerine. 4erinele de securitate! de tip 48! ale versiunii 2indo:s N' sunt %nregistrarea sigur ! cu msuri de protecie mpotriva atacurilor de tip spoofing1 %mi"loace de control al accesului nengrdit1 %mi"loace de control ale acceselor privilegiate1 %protecia spaiului de adrese al unui proces1 %paginile noi trebuie umplute cu zerouri1 %nregistrri de securitate. =nregistrare sigur nseamn c administratorul de sistem poate cere utilizatorilor o parol pentru a se nregistra. -tacul de spoofing se manifest atunci cnd un utilizator scrie un program ruvoitor care afieaz caseta de nregistrare i apoi dispare. 4nd un alt utilizator va introduce un nume i o parol! acestea sunt scrise pe disc iar utilizatorului i se va rspunde c procesul nregistrare a euat. -cest tip de atac este prevenit de 2indou:s N' prin indicaia ca utilizatorul s tasteze combinaia 4',*>-*'>D(*! nainte de a se nregistra utilizatorul. -ceast secven este capturat de driverul de tastaturi care apeleaz un program al sistemului de operare ce afieaz caseta de nregistrare real. $rocedeul funcioneaz deoarece

212

Sorin Adrian Ciureanu procesele utilizator nu pot dezactiva procesarea combinaiei de taste 4',*>-*'>D(* din driverul de tastatur. )i"loacele de control al accesului permit proprietarului unui fiier sau obiect s spun cine l poate utiliza i n ce mod. )i"loacele de control al accesului privilegiat permit administratoruluis treac de aceste restricii cnd este necesar. $aginile noi trebuie umplute cu zerouri pentru ca procesul curent s nu poat gsi informaii vechi puse acolo de proprietarul anterior. $rotecia spaiului de adrese nseamn c fiecare proces utilizator are propriul su spaiu virtual de adrese prote"at i inaccesibil pentru alte procese neautorizate. =nregistrrile de securitate permit administratorului de sistem s produc un "urnal cu anumite evenimente legate de securitate. @.3.%.1. -oncepte f(ndamentale de sec(ritate n sistemele ;indows #iecare utilizator este identificat de un &ID /&ecuritS ID0. -cestea sunt numere binare cu antet scurt urmat de o component aleatoare mare. 4nd un utilizator lanseaz un proces n execuie! procesul i firele sale de execuie ruleaz cu &ID%ul utilizatorului. 4ea mai mare parte a securitii sistemului este proiectat pentru a se asigura c fiecare obiect este accesat doar de firele de execuie cu &ID%urile autorizate. #iecare proces are un Heton )e a&&e! care specific &ID%ul propriu i alte caracteristici. (ste valid i asigurat n momentul nregistrrii de !inlogon.
antet Ti(p )e e8pirare .rupuri DA.# i(pli&it SID utili-ator SID rup SID%uri re!tri&ionate Pri+ile ii

Fi . J.5. Stru&tura unui Heton )e a&&e! Din)oF!. 'impul de expirare indic momentul n care "etonul nu mai este valid dar actualmente nu este utilizat. 6rupuri specific grupurile de care aparine procesul /DiscretionarS -cces 4ontrol *ist0. D-6* implicit este lista de control al accesului! discret! asigurat! pentru obiectele create de proces. &ID utilizator indic proprietarul procesului. &ID grup reprezint grupul din care face parte utilizatorul.

213 Sisteme de operare &ID%uri restricionate este constituit dintr%un cmp care permite proceselor ce nu prezint ncredere s participe la lucrri cu alte procese demne de ncredere! dar mai puin distructive. *ista de privilegii ofer procesului mputerniciri speciale cum ar fi dreptul de a opri calculatorul sau de a accesa fiiere pe care n mod normal nu ar putea s le acceseze. =n concluzie "etonul de acces indic proprietarul procesului i ce setri implicite i mputerniciri sunt asociate cu el. 4nd un utilizator se nregistreaz! :inlogon ofer procesului iniial un "eton de acces. De obicei! procesele ulterioare motenesc acest "eton de%a lungul ierarhiei. Cetonul de acces al unui proces se aplic iniial tuturor firelor de execuie ale procesului. 'otui un fir de execuie poate obine un "eton de acces de%a lungul execuiei. .n fir de execuie client poate s%i paseze "etonul de acces unui fir de execuie server pentru a%i permite serverului s%i acceseze fiierele prote"ate i alte obiecte . .n astfel de mecanism se numete impersonalizare. De!&riptorul )e !e&uritate este un alt concept utilizat de 2indo:s. #iecare obiect are un descriptor de securitate care indic cine poate efectua operaii asupra lui. Antet Re/u-
ACE

Dan
ACE

111111 0ermite )rina Antet 'iier ()D pr prietar ()D *rup DA%+ (A%+
DESCRIPTOR DE SECURITATE
ACE

ACE

110000 0ermite Andrei 111111 0ermite R 1ana 100000


ACE ACE

ACE

Antet ,nre*istrea- .e r*e 111111


DESCRIPTOR DE SECURITATE

214

Sorin Adrian Ciureanu


ACE

Fi . J.6. De!&riptoare )e !e&uritate Din)oF!. .n descriptor de securitate este format din %antet1 %D-4* /DiscretionarS -cces 4ontrol *ist0 %unul sau mai multe -4( /-cces 4ontrol (lements0. 4ele dou tipuri principale de elemente sunt %ermite (i 3efuz. .n element $ermite specific un &ID i o hart de bii care specific ce operaii pot face procesele cu respectivul &ID asupra obiectului. .n element ,efuz funcioneaz dup acelai principiu! doar c o potrivire nseamn c apelantul nu poate efectua operaia respectiv. =n structura unui descriptor de securitate mai exist i &-4* /&Sstem -cces 4ontrol *ist0 care este asemntoare cu D-4* numai c nu specific cine poate utiliza obiectul ci specific operaiile asupra obiectului pstrate n "urnalul de securitate al ntregului sistem. =n exemplul nostru fiecare operaie executat de 6eorge asupra fiierului va fi nregistrat. @.3.%.2. Implementarea sec(rit!ii

$entru a implementa descriptorul de securitate prezentat anterior! se folosesc multe din funciile pe care 2indo:s N' le are din 2in;8-$I! legate de securitate! marea ma"oritate gestionnd descriptorii. Iat etapele utilizate n gestionarea acestor descriptori %se aloc spaiul descriptorului1 %se iniializeaz descriptorul cu funcia 2nitia#iMe 4e"1ritN -es"riptor, funcie care scrie i antetul1 %se caut apoi proprietarul &ID%ului i al grupului i dac ei nu exist se utilizeaz funcia +ook A""o1nt 4id 1 %se iniializeaz D-4*%ul sau &-4*%ul descriptorului de securitate cu a"utorul funciei Add A""ess -enied A"e; aceste funcii se execut de attea ori cte funcii trebuiesc ncrcate1 %se ataeaz -4*%ul creat la descriptorul de securitate1

215 Sisteme de operare %dup crearea descriptorului de securitate el poate fi pasat ca parametru pentru a fi adugat la obiect.

J.,.5.

Se&uritatea 7n #inu8

@.3.5.1. 8pen so(rce (xist dou modaliti n ceea ce privete optica productorilor de produse soft %una! nchis! n care codul surs este secret i! n general! orice informaie este deinut numai de proprietar1 %una! deschis! n care codul surs este disponibil pentru toi utilizatorii i n care informaia circul deschis. Din cea de%a doua categorie face parte i comunitatea Open !our&e. *inux este un sistem de operare free care face parte din comunitatea Open !our&e. & vedem ce avanta"e! din punct de vedere al securitii! ar oferi apartenena la aceast comunitate. & ncercm s argumentm acest lucru prin prizma bug%urilor care exist n cadrul programelor i provin din erori de programare sau proiectare! introduse intenionat sau nu. -ceste buguri pot fi %depirea capacitilor tampon! care pot duce la obinerea de privilegii neautorizate de ctre utilizator1 %gestiunea necorespunztoare a fiierelor! care poate permite eventualelor persoane ruvoitoare s modifice sau s deterioreze fiiere importante1 %algoritmi de autentificare sau de criptare prost proiectai! care pot conduce la accesul neautorizat al unor persoane sau decriptarea cu uurin a unor date confideniale! cum ar fi parolele utilizatorilor1 %caii troieni. &ecuritatea sporit a programelor open source provine chiar din disponibilitatea codului surs. Deoarece codul surs este la dispoziia multor utilizatori se a"unge la depistarea bug%urilor cu o probabilitate mult mai mare dect la sistemele nchise. Iat cteva din aceste avanta"e %oricine poate corecta codul surs! aceste corecii fiind fcute publice n cel mai scurt timp i incluse n urmtoarea sesiune1 %atunci cnd sunt descoperite! bug%urile sunt reparate foarte rapid1 de exemplu! cnd a aprut bug%ul $ing + Death! n .nix crearea unui path de corecie a durat doar cteva ore! n timp ce n 2indo:s rspunsul a venit doar dup o sptmn1

216

Sorin Adrian Ciureanu %sistemele solide de comunicaie dintre membrii comunitii! precum listele de discuii i resursele localizate on%line! a"ut la eficientizarea procesului de dezvoltare i depanare! reducnd i distribuind efortul. @.3.5.2 Programe ce depisteaz! *i corecteaz! &(lnera+ilit!i Pro ra(ul NESSUS. (ste un program de scanare evoluat! n sensul c! dup scanarea propriuzis stabilete versiunile serviciilor care ruleaz pe maina int! putnd determina vulnerabilitatea acesteia. N(&&.& const din dou pri %partea de server! care efectueaz practic scanrile1 %partea de client care reprezint o interfa grafic x:indo:s cu utilizatorul. &erverul Nessus folosete protocolul '4$ pentru a atepta cererile de la clieni! clieni autentificai printr%un sistem de chei publice (l 6amal. 'raficul este criptat cu a"utorul unui cifru flux. Pro ra(ul Titan poate depista i corecta n mod automat vulnerabilitile unui sistem .nix1 este scris n B-&5. (xist trei moduri de rulare a acestui utilitar %modul verificare! recomandat a se folosi prima dat! cu rol de a testa sistemul fr s fac nici o modificare asupra sa1 %modul informal! care testeaz sistemul i afieaz modificrile pe care le%ar efectua n mod normal1 %modul reparare ! care va modifica fiierele de configurare a sistemului n vederea securizrii lui. 'itan "urnalizeaz problemele descoperite i aciunile produse ntr%un director. Iat cteva vulnerabiliti pe care 'itan le poate depista i corecta %bug%urile din protocolul '4$! avnd protecie mpotriva atacurilor de tip &MN flood! $IN6 flood i N#& bind1 %serviciile considerate periculoase! de exemplu automount! sunt dezactivate1 %drepturile de acces ale fiierelor i cataloagelor %conturile utilizatorilor speciali care sunt terse sau dezactivate. @.3.5.3. .(ditarea sistem(l(i -uditarea unui sistem const n operaiunile de certificare c acel sistem nu a fost compromis i c se afl ntr%o stare sigur. .n program destinat certificrii sistemului de fiiere este

Sisteme de operare

21

Pro ra(ul TripFire. -cest program este un sistem de monitorizare a fiierelor care poate fi utilizat pentru a asigura integritatea acestora. &istemul este realizat de compania 'rip:ire!Inc. $rima etap a programului const din analiza sistemului de fiiere i crearea unei baze de date a fiierelor importante! intr%un moment n care acestea sunt considerate sigure. &e stabilesc acum fiierele i directoarele ce vor fi monitorizate. +dat creat baza de date! integritatea fiierelor importante poate fi oricnd verificat. &e detecteaz fiierele noi! cele terse i cele modificate. Dac aceste modificri sunt valide! baza de date va fi actualizat1 n caz contrar! ele vor fi raportate administratorului sistemului. #iierele importante! cum ar fi baza de date i fiierele de configuraie! sunt criptate cu a"utorul algoritmului (l 6amal. &e utilizeaz dou fiiere de chei care memoreaz cte o pereche de chei! una public i una privat. #iierul global este utilizat pentru a prote"a fiierele de configurare iar fiierul local de chei este folosit pentru protecia bazelor de date i fiierelor raport.

21!

Sorin Adrian Ciureanu

Sisteme de operare

21"

Capitolul 1P STRUCTURA SISTEME#OR DE OPERARE


Dup structura lor! sistemele de operare se clasific n %&isteme de operare monolitice. %&isteme de operare structurate pe nivele. %)aini virtuale. %)icroJerneluri. %(xoJerneluri. %NanoJerneluri.

1P.1. SISTEME DE OPERARE MONO#ITICE


=n acest tip! sistemul de operare este scris ca o colecie de proceduri! fiecare procedur putnd s apeleze oricare alt procedur! ori de cte ori este nevoie. (xist totui o oarecare structurare! ca n modelul din figura 9F.9. $rocedur principal $roceduri de servicii

22#

Sorin Adrian Ciureanu $roceduri utilitare Fi . 1P.1. Stru&tura unui !i!te( )e operare (onoliti&. =n acest model exist urmtoarele structuri %un program principal care apeleaz procedura de serviciu dorit1 %un set de proceduri de serviciu care se ocup cu tratarea apelurilor

sistem1 %un set de proceduri utilitare care a"ut procedurile de serviciu. $entru fiecare apel sistem exist o singur procedur de sistem care rspunde de el. $rocedurile utilitare ndeplinesc funcii de care au nevoie anumite proceduri de serviciu.

1P.".

SISTEME DE OPERARE STRUCTURATE PE NI*E#URI

&istemul este organizat ca o ierarhie de niveluri. 2. Di"Jstra a construit primul sistem de operare n acest mod! sistemul '5(. -cest sistem are ? niveluri organizate ca n fig.9F.8.
?i,elul 6 ?i,elul 4 ?i,elul 3 ?i,elul 2 ?i,elul 1 ?i,elul #
20&RA32R4+ 0R2.RA5& 43)+)6A32R AD5)7)(3RAR&A )73R8R) 9 )&:)R) %2547)%AR&A 20&RA32R 9 0R2%&(& .&(3)47&A 5&52R)&) )73&R7& 9 &;3&R7& A+2%AR&A 0R2%&(2R4+4) :) 54+3)0R2.RA5AR&

Fi . 1P.". Stru&tura !i!te(ului )e operare T:E. Nivelul F asigur alocarea procesorului i comutarea ntre procese la apariia de ntreruperi sau expirarea ceasurilor. Nivelul zero ofer funcia de

221 Sisteme de operare multiprogramare de baz a procesorului! n sensul c! deasupra acestui nivel! exist procese secveniale! fiecare dintre acestea putnd fi programat fr a se lua n considerare faptul c mai mute procese ruleaz pe acelai procesor. Nivelul 9 se ocup de gestiunea memoriei. &e aloc spaiu pentru procese att n memoria principal ct i ntr%o rol magnetic de @98 h folosit pentru a pstra pri de procese organizate n pagini! pentru care nu este loc n memoria principal. (xist un soft pe nivelul 9 care rspunde de procedeul de s!itch /mutare0 ntre memoria principal i memoria de pe rol! cu alte cuvinte de aducerea paginilor din rola magnetic n memoria principal! ori de cte ori este nevoie de ele pentru orice proces situat deasupra nivelului 9. Nivelul 8 asigur comunicarea dintre fiecare proces i consola operatorului. Deasupra acestui nivel fiecare proces are propria sa consol operator. Nivelul ; gestioneaz dispozitivele de intrare ieire. Nivelul < gestioneaz programele utilizator. Nivelul @ asigur procesul operator. .n alt sistem de operare organizat pe niveluri este sistemul ).*'I4& creat de profesorul 'anenbaum la .niversitatea Ari"ie din -msterdam! sistem de operare aflat la baza sistemului *inux. =n locul nivelurilor ).*'I3 utilizeaz inele concentrice! cele interioare avnd privilegii mai mari dect cele mai exterioare. 4nd o procedur dintr%un nivel exterior apeleaz o instruciune dintr%un nivel interior! atunci se apeleaz o instruciune de tip ',-$! ai crei parametri! dup ce au fost verificai i declarai valizi! permit nceperea unui apel sistem. -vanta"ul mecanismului inelelor fa de cel al nivelurilor este acela c poate fi uor extins pentru o structur de subsisteme utilizator.

1P.,.

MA@INI *IRTUA#E

-ceast organizare a pornit de la ideea iniial de a se separa complet cele dou funcii de baz care sunt %multiprogramarea i %divizarea de timp /time sharing0. Instruciuni I7(
;a5in,irtual&;S ;a5in,irtual&;S ;a5in,irtual&;S ;a5in,irtual&;S

-peluri sistem ',-$

<H ) 3 # Hardware 3 #

222

Sorin Adrian Ciureanu ',-$

Fi . 1P.,. Stru&tura !i!te(ului *M 2,9P &u CMS $rimul sistem care a utilizat mainile virtuale a fost denumit iniial 4$74)& i redenumit mai trziu A)7;PF de ctre &ea:right i )acJannde n 9LPL. &chema bloc a sistemului este dat n figura 9F.;. $artea principal a sistemului este denumit monitorul mainii virtuale care ruleaz direct pe hard. (l realizeaz practic multiprogramarea! oferind mai multe maini virtuale nivelului imediat superior. -ceste maini virtuale nu sunt de fapt nite maini extinse! ci sunt copii exacte ale hardului! incluznd modurile Jernel 7 user! intrare 7 ieire! ntreruperi i toate celelalte elemente ale mainii reale. Deoarece fiecare main virtual este o copie identic a adevratului hard:are! fiecare poate rula orice sistem de operare care ar rula pe hard. $e nivelul imediat inferior mainii virtuale ruleaz 4)& /4onversational )onitor &Sstem0! un sistem de monitorizare conversaional pentru utilizatori interactivi ce beneficiaz de rulare cu divizare de timp. 4nd un program 4)& execut un apel de sistem! acesta este transmis ctre sistemul de operare de pe propria sa main virtual. -poi! 4)& genereaz instruciuni de intrare 7 ieire hard:are normale pentru citirea discului sau virtuale pentru a executa apelul. -ceste instruciuni de Intrare 7 ieire sunt captate de A)7;PF care le execut ca fcnd parte din simularea hardului real. $rin separarea complet a funciilor de multiprogramare! fiecare dintre cele dou pri poate fi mult mai simpl! mai flexibil i mai uor de ntreinut. Ideea mainii virtuale este utilizat foarte mult i n prezent! mai ales cnd exist cereri de a rula soft vechi pe hard nou. 9% .n prim exemplu este rularea unui program vechi! scris sub )&% D+&! pe un hard actual! cu un procesor $(N'I.)! sub un sistem de operare 2IND+2&. -ceste programe se pornesc n modul QoQ? virtual. -tta timp ct execut instruciuni normale! ele ruleaz direct pe hard. -tunci cnd sistemul ncearc s execute o derut /',-$0 ctre sistemul de operare! pentru a face un apel sistem! sau ncearc s execute direct operaii de intrare7ieire prote"ate1 se execut un trap ctre monitorul mainii virtuale. &unt posibile dou variante a0% &e ncarc )&%D+& n spaiul de adrese al procesorului QFQ? virtual iar monitorul mainii virtuale reflect o derut ctre )&%D+&! aa cum s%ar ntmpla pe un QFQ? real. 4nd )&%D+& va ncerca ulterior s

223 Sisteme de operare realizeze el nsui operaia de intrare7ieire! aceast operaie va fi executat pe monitorul mainii virtuale. b0%)onitorul mainii virtuale execut el nsui operaia de intrare7ieire! deoarece tie care sunt toate apelurile sistem )&%D+&. =n timp ce prima variant emuleaz toate sistemele de operare! a doua poate emula numai varianta )&%D+&. =n schimb! a doua variant este mult mai rapid! deoarece evit pornirea )&%D+& pentru operaiile de intrare7ieire. De menionat c n nici o variant prezentat emularea nu se face ca la A)7;PF! unde este posibil s se ruleze chiar A)7;PF peste maina virtual. *a $(N'I.) nu se poate relua! de exemplu! 2IND+2& peste procesorul QFQ? virtual pentru c nici o versiune 2IND+2& nu ruleaz pe QFQ?. 8%.n alt exemplu de utilizare a mainilor virtuale este aa numita main virtual Cava . 4ompilatorul pentru Cava produce cod pentru CA) /Cava Airtual )achine0! cod ce este executat n mod normal de un interpretor soft CA). -vanta"ul acestei abordri este acela c programele pentru CA) pot fi transportate prin IN'(,N(' ctre orice calculator care are interpretor CA) i ruleaz acolo. Dac compilatorul ar fi produs programe binare pentru &$-,4 sau $(N'I.)! acestea nu ar fi putut fi portate i rulate peste tot la fel de uor. .n alt avanta" al CA) este acela c! dac interpretorul este corect implementat! programele CA) care sunt aduse pot fi verificate din punct de vedere al securitii i apoi executate ntr%un mediu prote"at. ;%.n al treilea exemplu! utilizat de data aceasta n prezent! este programul A)2-,(! care poate instala! pe post de main virtual! un sistem de operare. *a nceput! programul A)2-,( lucra sub 2IND+2& i crea ca main virtual sistemul de operare *IN.3. -cum exist i versiunea sub *IN.3 care emuleaz sistemul de operare 2IND+2&.

1P.0.

SISTEME DE OPERARE CU MICRONUC#EU 1MICROGERNE#4

Ideea care st la baza microJernelului este modularizarea. + mare parte din serviciile sistemuluide operare! cum ar fi memoria virtual i sistemul de fiiere! a fost scoas i implementat ca produse separate n afara Jernelului. 4eea ce a rmas a primit denumirea de micro#ernel. =n principiu! microJernelul implementeaz mecanismele de %alocare a procesului! %schimbare de context!

224

Sorin Adrian Ciureanu %protecia resurselor. -ceast modularizare are anumite avanta"e1 ea face mai uoar modificarea politicilor i mecanismelor implementate n exteriorul microJernelului. &pre deosebire de sistemele monolitice! n acest caz este suficient numai modificarea modului respectiv i nu a ntregului sistem. $e lng faptul c se uureaz semnificativ sarcina programatorului! noile modificri pot fi mult mai uor distribuite! preul pltit pentru aceasta fiind eficiena. +rice decizie de politic care se face n afara microJernelului! presupune schimbri de context adiionale. De exemplu! n cazul alocrii unei pagini din memoria fizic! microJernelul trebuie s invoce procesul care implementeaz memoria virtual pentru a obine identificatorul acestuia. =n acest fel! fa de un sistem de operare monolitic n care serviciul este implementat n Jernel! sunt executate dou schimbri de context n plus. =n ceea ce privete implementarea microJernelului! cea mai des utilizat este implementarea pe principiul client 7server! prin intermediul mesa"elor. De exemplu! dac un proces vrea s citeasc un fiier! el va trimite un mesa" cu a"utorul micronucleului ctre o alt aplicaie care ruleaz n spaiul utilizator i care acioneaz ca un server de fiiere. -ceast aplicaie va efectua comanda iar rezultatul ei va a"unge napoi la procesul apelant! tot prin intermediul unor mesa"e. =n acest fel se poate crea o interfa bine definit pentru fiecare serviciu! adic un set de mesa"e pe care serverul le nelege. &e pot instala uor noi servicii n sistem! servicii care pot fi pornite fr a fi necesar reformarea nucleului. &e pot crea n mod simplu servicii de ctre utilizatori. =n concluzie! sistemele de operare cu micronucleu au avanta"ul unei viteze mai mari! obinut prin eliberarea unei pri de memorie! i dezavanta"ul unui timp pierdut cu schimbul de mesa"e. &e pare! ns! c viteza mare va duce la nlocuirea sistemelor clasice cu sisteme cu micronucleu. =n &+ .NI3! un exemplu de micronucleu este +N3 al firmei euantum &oft:are. +N3 respect standardele $+&I3 9FF;.9.! care se refer la interfaa dintre aplicaiile 4 i serviciile nucleului! $+&I3 9FF;.8.! care se refer la interfaa la nivel &5(** i $+&I3 9FF;.<.! care se refer la &+ n timp real. +N3 conine un micronucleu de QX+ n care sunt implementate planificarea i interschimbarea proceselor! tratarea ntreruperilor i servicii de reea la nivel sczut. .n sistem minimal +N3 adaug la acest micronucleu un controlor de procese care creeaz i controleaz procesele n memorie. )icronucleul conine 9< apeluri sistem.

Sisteme de operare

225

1P.5.

SISTEME DE OPERARE CU ECOGERNE#

(xoJernelul este un microJernel redus la extrem! n sensul c elimin aproape complet nucleul! mutndu%se absolut toate funciile acestuia n biblioteci ntregi din spaiul utilizator. =n Jernel ar rmne o singur funcie! de arbitrare a accesului la resurse de nivel foarte "os. Ideea este foarte tentant deoarece toate operaiile se pot executa la ntreaga vitez a microprocesorului! evitndu%se costisitoarele apeluri de sistem. 'oate mecanismele de gestiune a resurselor sunt implementate sub form de biblioteci n spaiul utilizator! ceea ce ofer o flexibilitate maxim utilizatorilor n ceea ce privete adugarea de noi mecanisme sau modificarea celor existente. #uncia de baz a exoJernelului este protecia. &pre deosebire de alte ncercri de abstractizare a hardului! exoJernelul nu ncearc s ofere o abstracie independent. )otivul este c o astfel de independen ar sacrifica unele faciliti hard avansate pe care maina le%ar putea oferi. Deci preul pltit este portabilitatea. Deoarece bibliotecile sistemului de operare sunt dependente de abstracia hard:are exportat! n cazul portrii este nevoie ca o bun parte din acestea s fie rescrise. (vident! o soluie este ca partea dependent de main s fie implementat la un nivel separat! deasupra exoJernelului! n spaiul utilizator. (ste interesant faptul c implementarea sistemului de operare sub form de biblioteci face posibil rularea simultan a mai multor sisteme de operare diferite. -ceasta ridic ns problema interaciunii dintre politicile i mecanismele de gestionare ale aceleiai resurse! implementate de sisteme de operare diferite. (ste necesar proiectarea unui arbitru sau a unei politici globale care s gestioneze resursa respectiv. &e adaug ns un cost suplimentar i se mrete complexitatea sistemului. )ai trebuie subliniat faptul c exist posibilitatea de extindere a exoJernelului! securitatea fiind garantat de utilizarea mecanismului de izolare soft.

1P.6.

SISTEME DE OPERARE CU NANOGERNE#

NanoJernelul ofer o abstractizare a resurselor hard pentru nivelele superioare ale sistemului de operare. (l este la baza unui sistem de operare numit >icro+Choise ! acesta reprezentnd o rescriere a &+ orientat pe obiecte. (xtensibilitatea acestui sistem se face prin ncrcare de ageni soft scrii de obicei n Cava. Deoarece agenii sunt interpretai! problema

226

Sorin Adrian Ciureanu proteciei este rezolvat. 4odul interpretat este mult mai lent dect cel nativ i desigur eficiena este mai sczut. Din acest motiv sunt relativ puine mecanisme ce pot fi implementate folosind aceast metod. + posibil soluie pentru mbuntirea performanelor este folosirea de noi tehnologii! cum ar fi G"ust in time compilationH! adic! la ncrcare! agenii sunt automat compilai n cod nativ. #olosirea limba"ului Cava pentru scrierea agenilor soft constituie un avanta" al )icro%4hoise%ului.

1P.9.

STRUCTURA SISTEMU#UI DE OPERARE UNIC2#INUC

.n sistem .NI3 poate fi privit ca un fel de piramid! ca n figura 9F.<.


Interfee utilizator Utilizatori Interfee cu bibliotecile Interfee cu apeluri sistem Programe utilitare standard )odul 6consoleH editoareH compilatoare Diblioteca standard 6openH +or8H readH write7 m Sistemul modul de operare U?(M 6gestionare proceseH memorieH +i5iereH intrare)ie5ire7 modul nucleu modul utilizator

HARD Fi . 1P.0. Ni+elurile 7ntr%un !i!te( )e operare UNIC $rogramele fac apelurile sistem! punnd parametrii n registre sau pe stiv i genernd instruciuni pentru a se trece din modul utilizator n modul nucleu i pentru a porni .NI3%ul. $rocedurile sunt scrise de obicei n limba" de asamblare dar pot fi apelate i din limba"ul 4. #iecare procedur plaseaz parametrii i apoi execut instruciunea capcan. Interfaa din bibliotec este cea specificat de $+&I3 i nu interfaa apelului sistem. 4u alte cuvinte! $+&I3 este acela care indic ce proceduri din bibliotec trebuie furnizate! care sunt parametrii! ce trebuie s fac acetia i ce rezultate trebuie s ntoarc. $e lng sistemul de operare i biblioteca apelurilor sistem! toate versiunile .NI3 furnizeaz un numr mare de programe standard dintre care unele sunt specificate de standardul $+&I3 9FF;8! iar altele difer de

22 Sisteme de operare la o versiune la alta. -cestea includ interpretor de comenzi! compilatoare! editoare! programe pentru procesare de texte i utilitare pentru manipularea fiierelor. Deci! n .NI3! se disting trei interfee diferite %interfaa cu apelurile sistem1 %interfaa cu bibliotecile1 %interfaa format din setul standard de programe utilitare.

1P.9.1. Stru&tura nu&leului UNIC


Nivelul de "os al nucleului const in drivere de dispozitiv plus schimbarea proceselor.
Bratarea semnalelor

(ntrare nemodi+icat-

3ntrebuinarea consolei (ntrare prelucrat1iscipline de linie 1ispoziti,e tip caracter

Socluri

?umirea +i5ierelor

Punere in corespon den-

1e+ecte de pagin-

0peluri sistem

(ntreruperi 5i capcane

&rearea 5i terminarea proceselor

Proto coale de reea 1iri=are

Sisteme de +i5iere ;emorie (nternascuns-

;emorie ,irtual;emoria intermediarde pagini

Plani+icarea proceselor

1ri,ere de reea

1ri,ere pentru disc

Sc4imbarea proceselor

HARD Fi .1P.5. Stru&tura nu&leului 0.0BSD. 'oate driverele din .NI3 sunt clasificate n drivere pentru dispozitive de tip caracter i drivere pentru dispozitive de tip bloc! cu principala diferen c pe dispozitivele de tip bloc sunt permise cutrile i pe dispozitivele de tip caracter nu sunt permise. Dispozitivele de reea! dei sunt de tip caracter! sunt tratate special. &chimbarea proceselor are loc atunci cnd apare o ntrerupere. Din codul de nivel "os se oprete procesul care se execut! i se salveaz starea n tabela de procese din nucleu i se pornete driverul corespunztor. &chimbarea proceselor se ntmpl i

22!

Sorin Adrian Ciureanu atunci cnd nucleul i%a terminat execuia i este timpul s se porneasc din nou un proces utilizator. 4odul de schimbare este n asamblare i este foarte diferit de planificare. Deasupra nivelului de "os! codul este diferit n fiecare din cele patru coloane din figur. =n stnga exist dispozitive de tip caracter. -cestea sunt utilizate n dou moduri %unele programe! cum ar fi editoarele +i i e(a&!! vor fiecare apsare de tast imediat ce aceasta a fost lovit1 %alte programe! cum ar fi interpretorul de comenzi !' ! sunt orientate pe linie de comand i permit utilizatorului s editeze linia curent nainte de a apsa pe (nter pentru a o trimite n program. -cest tip de soft utilizeaz modul prelucrat i disciplina de linie. &oftul de reea este modulat! suportnd diferite dispozitive i protocoale. Nivelul de deasupra driverelor de reea se ocup cu funciile de diri"are! asigurndu%se c pachetul potrivit se duce la dispozitivul sau la programul de protocol potrivit. 4ele mai multe sisteme .NI3 conin n nucleu ntreaga funcionalitate a unui ruter. Deasupra codului de diri"are este stiva de protocoale! incluznd totdeauna I$ i '4$! precum i alte protocoale adiionale. $este ntreaga reea se afl interfaa de socluri /&ocJets0 care permite programelor s creeze socluri n comunicarea ntre procese. Deasupra driverului de disc exist dou componente %memoria ascuns tampon /tampoane cache01 %memoria de pagini a sistemului. Dac la primele versiuni .NI3 memoria ascuns tampon era o bucat strict limitat de memorie! n sistemele moderne actuale nu exist nici o limit fix i orice pagin de memorie poate fi luat pentru oricare dintre funcii. Deasupra memoriei ascunse tampon exist sistemul de fiiere. )a"oritatea sistemelor .NI3 suport mai multe sisteme de fiiere! inclusiv sistemul de fiiere system 6. 'oate acestea parta"eaz aceiai memorie ascuns tampon. Deasupra sistemului de fiiere se situeaz numirea fiierelor /file naming0! gestiunea cataloagelor! gestiunea legturilor tari! a legturilor simbolice i alte proprieti ale sistemelor de fiiere. Deasupra memoriei intermediare de pagini este sistemul de memorie virtual. 'oat paginarea logic se afl aici! ca! de exemplu! algoritmul de nlocuire a paginilor. Deasupra sa se situeaz codul pentru punerea n coresponden a fiierelor n memoria virtual i codul pentru gestiunea la

22" Sisteme de operare nivel nalt a defectelor de pagini. -cesta este codul care i d seama ce s fac atunci cnd apare o eroare de pagin. )ai nti verific dac referina la memorie este valid i! dac este! unde este pagina necesar i cum poate fi obinut. .ltima coloan conine gestiunea proceselor. Deasupra dispecerului se afl programatorul proceselor care alege procesul care se va executa n continuare. Dac firele de execuie sunt gestionate n nucleu! atunci aici sunt gestionate! dei pe unele sisteme .NI3 sunt tratate n spaiul utilizator. &uperior programatorului este codul pentru procesarea semnalelor i pentru trimiterea lor la destinaia corect! la fel ca i crearea proceselor i codul lor de terminare. Nivelul de sus este interfaa cu sistemul. =n stnga este interfaa cu apelurile sistem. 'oate apelurile de sistem vin aici i sunt direcionate ctre unele din modulele de mai "os! n funcie de natura apelului. =n partea dreapt a nivelului de sus se situeaz intrarea pentru capcane i ntreruperi! incluznd semnalele! erorile de pagin! excepiile de procesor i ntreruperile intrare7ieire.

1P.<.

STRUCTURA SISTEMU#UI DE OPERARE DINDODS

$rogram $+&I3 $roces de serviciu &ubsistem $+&I3

$rogram 2IN ;8

$rogram F@78

&ubsistem 2IN ;8

&ubsistem F@78

)anager de I7(

)anager al $a$

)anager *$4

&istem de fiiere

&ervicii sistem

(xec Nu&leu nu&leu Driver de dispozitiv N.4*(. Nivelul de abstractizare a hardului /5-*0 5-,D Driver video n nu n

2in ;8 6DC

Interfaa sistemului /N' D**%D**0

)anager de configurare

)od utiliza tor

)anager de obiecte

)anager de alimentare

)anager de securitate

)anager de memorie

)anager de memorie intermediar

)anager de procese

)od nucleu

23#

Sorin Adrian Ciureanu

Fi .1P.6. Stru&tura !i!te(ului )e operare DINDODS "PPP. Dintre toate versiunile! alegem prezentarea structurii sistemului de operare din 2IND+2& 8FFF. -ceast structur are dou pri semnificative %nucleul propriuzis1 %subsistemele de mediu care lucreaz n mod utilizator. Dup cum se vede din figur! structura acestui sistem de operare este modular ceea ce mbuntete mult portabilitatea. 2IND+2& 8FFF este organizat pe niveluri! fiecare nivel utiliznd serviciile nivelelor din nivelul inferior. #iecare modul ndeplinete o funcie particular i are o interfa bine definit fa de celelalte module. Nivelele cele mai de "os 5-* i nucleul sunt scrise n limba" 4 i limba" de asamblare i sunt dependente de main. Nivelele superioare sunt scrise n 4 sau 4>>. Aom examina n continuare diferitele componente ale sistemului! ncepnd de la nivelurile inferioare pn la cele superioare. Ni+elul )e a>!tra&ti-are a 'ar)ului 1:A#4 5-* nseamn 5ard:are -bstraction *aSer. Denumirea a fost inspirat i de filmul lui &tanleS XubricJ G+diseea spaial 8FF9H n care exist un computer numit 5-*. Numele acestuia se obine prin scderea unui 9 din fiecare liter de la IB). &copul nivelului 5al este de a prezenta celorlalte nivele ale &+ dispozitive hard abstracte! sub forma unor servicii independente de maini! cum ar fi apelurile de proceduri sau macro%urile. =n general! serviciile alese pentru a fi incluse n 5-* sunt servicii legate de cipul de pe placa de baz! care pot varia de la o main la alta. 5al este proiectat pentru a ascunde diferenele dintre diferite plci de baz! nu ns i diferenele dintre procesoare. &erviciile oferite de 5al sunt %accesul la registrele dispozitivelor1 %adresarea dispozitivelor independent de magistral1 %tratarea ntreruperilor1 %transferul D)-1 %controlul cronometrelor i a ceasului de timp real! a zvoarelor de spin de nivel "os1 %sincronizarea procesoarelor multiple1 %interfaa cu memoriile BI+& i 4)+&.

231 Sisteme de operare =n ceea ce privete scrierea n registrele dispozitivelor i adresarea dispozitivelor independent de magistral! 5al ofer trei proceduri pentru citire i trei proceduri de scriere $roceduri de citire din registrele dispozitivelor :C=.6A--9,.5-:C_A.(port); :4=.6A--9,.5-:4_,.(port); :#=.6A--9,.5-:+,3`(port); $roceduri de scriere n registrele dispozitivelor ^.256-9,.5-:C_A.(port,:C); ^.256-9,.5-:4_,.5(port,:C); 5al furnizeaz un serviciu pentru identificarea dispozitivelor prin punerea n coresponden a adreselor relative la magistral cu adresele logice ale sistemului. =n acest fel driverele nu trebuie s urmreasc pe ce magistral este un dispozitiv. -ceste adrese logice sunt asemntoare cu referinele pe care sistemul de operare le d programelor utilizator pentru referirea fiierelor i a altor resurse de sistem. De asemenea! acest mecanism prote"eaz nivelele de mai sus de proprietile structurilor alternative de magistrale i de conveniile de adresare. =ntreruperile sunt dependente de magistral. 5-* pune la dispoziie servicii pentru denumirea ntreruperilor! n general! n tot sistemul! i servicii ce permit driverelor s ataeze o ntrerupere! n mod portabil! fr a trebui s cunoasc nimic despre ce anume vector de ntrerupere este pentru o anumit magistral. 4onfigurarea i administrarea transferului D)- ntr%un mod independent de dispozitiv se face n mod comandat! utiliznd mecanismele specifice ale D)- i ale plcilor de I7(. De asemenea scrierea i citireaYY. cache este fcut tot de 5-*. 'ot 5al administreaz ceasurile i cronometrele ntr%un mod portabil. 5-* asigur unele primitive pentru administrarea acestei sincronizri ! cum ar fi zvoarele de spin n care un proces ateapt ca o resurs deinut de alt proces s fie eliberat! n special n cazul n care resursa este meninut foarte puin! numai cteva instruciuni main. 5-* discut cu BI+&%ul i examineaz memoria 4)+&! pentru a vedea ce magistrale i ce dispozitive de I7( conine sistemul i cum au fost ele configurate. Deoarece 5-* este dependent de main! este normal s existe o diversitate de 5-*%uri disponibile pe Jitul de instalare de pe 2IND+2& 8FFF. =n momentul instalrii sistemului! este selectat cel potrivit i copiat n catalogul sistem f :inJitfsSstem ;8f cu hal.dll. 'oate pornirile ulterioare

232

Sorin Adrian Ciureanu folosesc aceeai versiune de 5-* iar tergerea ei face ca sistemul s nu mai porneasc. Ni+elul nu&leu .Deasupra nivelului de abstractizare a hardului se afl nucleul i driverele dispozitiv. $rincipalele obiective ale nucleului sunt a0%asigurarea unei abstractizri a hardului! de nivel mai nalt1 b0%comutarea firelor de execuie1 c0%suportul de nivel "os pentru obiecte de control1 d0%suportul de nivel "os pentru obiecte dispecer1 a0%+biectivul nucleului este de a face ca restul sistemului de operare s fie complet independent de hard i astfel foarte portabil. (l continu de acolo de unde se oprete 5-* i construiete peste serviciile 5-*! la un nivel extrem de "os! pentru a crea abstraciuni de un nivel mai nalt. *a nivelul nucleu! operaiile curente care se fac sunt %salvarea tuturor registrelor procesorului1 %modificarea tabelelor de pagini1 %managementul tampoanelor cache. b0%4omutarea firelor de execuie se face de ctre nucleu prin salvarea vechiului fir n tabelele de memorie! prin setarea hrii de memorie i ncrcarea registrelor pentru noul fir de execuie. 4odul pentru planificarea firelor de execuie se afl tot n nivelul nucleu! acesta selectnd din coada de ateptare noul fir de execuie. c0%+biectele de control /4ontrol +b"ects0! cele care controleaz sistemul! sunt %obiecte primitive de proces1 %obiecte de ntreruperi1 %D$4 /Defererred $rocedure 4all0 sau -peluri de $roceduri =ntrziate1 %-$4 / -sSnchronous $roceure 4all0 sau -peluri de $roceduri -sincrone. .n obiect D$4 este utilizat! ntr%o procedur de tratare a ntreruperilor! pentru a separa partea critic! din punct de vedere al timpului! de partea necritic. .n obiect -$4 este asemntor cu obiectul D$4! cu excepia faptului c el se execut n &onte8tul unui proces specific. d0%+biectele dispecer constau n mutex%uri! semafoare! evenimente! cronometre de ateptare! obiecte utilizate la planificarea firelor de execuie! planificare care este o sarcin a nucleului. Drivere de dispozitiv. =n general rolul driverelor este foarte clar ele asigur buna funcionare a dispozitivelor I7(. $ot avea !ns! i alte roluri! cum ar fi

233 Sisteme de operare criptarea unui flux de date sau asigurarea accesului la anumite structuri de date ale nucleului. +rganizarea driverelor n 2IND+2& este urmtoarea %drivere vizibile macroscopic! pentru dispozitive I7( foarte utilizate! cum ar fi discurile i imprimantele1 %drivere foarte puin utilizate! pentru dispozitive interne i cipuri1 %driverele 2IN ;8 4DI i driverele video care sunt cele mai mari drivere de dispozitiv i care sunt cele maides utilizate drivere de ctre sistemul de operare! ele rezolvnd multe apeluri sistem i o mare parte din grafic. E8e&uti+ul Deasupra nivelului nucleu i a driverelor de dispozitiv! se afl partea superioar a sistemului de operare! denumit executiv. (xecutivul este scris n limba" 4! este independent de arhitectur i poate fi portat cu un efort relativ mic. &tructura executivului const n 99 componente! fiecare dintre ele fiind doar o colecie de proceduri care conlucreaz pentru realizarea unui obiectiv. Nu exist bariere ferme ntre pri iar componentele de pe acelai nivel pot s se apeleze una pe cealalt n mod extensiv. 4ele 99 componente sunt %)anagerul de obiecte /+b"ect manager0 gestioneaz toate obiectele cunoscute sistemului de operare. +biectivul su este de a ine evidena tuturor obiectelor. *a crearea unui nou obiect! managerul de obiecte i aloc un bloc de memorie virtual din spaiul de adrese al nucleului pe care l returneaz n lista de blocuri libere atunci cnd obiectul este dealocat. %)anagerul de I7( /I7+manager0 ofer servicii de generare de I7( i gestioneaz dispozitivele I7(! apelnd driverele. %)anagerul de procese /$rocess manager0 controleaz procesele i firele de execuie! asigurnd principalele operaii cu procese precum crearea i terminarea lor. (le se ocup de mecanismele de gestionare a proceselor i nu de politicile respective! aceste mecanisme constituind cheia multiprogramrii n sistemul de operare 2IND+2&. %)anagerul de memorie /)emorS manager0 asigur serviciile pentru memoria virtual! implementat prin paginare la cerere. %)anagerul de securitate /&ecuritS manager0 asigur mecanismul de securitate care const n implementarea cerinelor crii aurii. %)anagerul memoriei intermediare /4ache manager0 menine ultimele blocuri de disc folosite n memorie pentru a accelera accesul la ele cnd sunt cerute. #uncioneaz dup principiile memoriei cache. %)anagerul de configurare automat a dispozitivelor /$lug and $laS /$a$00 este utilizat pentru dispozitivele periferice cel mai recent ataate

234

Sorin Adrian Ciureanu sistemului de operare. $entru unele dispozitive I7( se face o verificare la pornire! pentru altele nu se face. .nele dispozitive! ca .&B! pot fi ataate n orice moment i ataarea lor va declana un mesa" ctre managerul $a$ care va localiza i ncrca driverul respectiv. %)anagerul de alimentare /$o:er manager0 ine sub supraveghere folosirea energiei de alimentare ceea ce nseamn ntreruperea alimentrii monitorului /displaSului0 i a discurilor! dac acestea nu au fost accesate o anumit perioad de timp. $e calculatoarele portabile! managerul de alimentare monitorizeaz folosirea bateriei. %)anagerul de configurare /4onfiguration manager 0 rspunde de adugarea unei noi nregistrri n registre i caut o cheie cnd i se cere. %)anagerul de apeluri de proceduri locale /*ocal $rocedure 4all )anager%,$40 =ntreine o comunicaie ntre procese cu un nivel ridicat de eficien. (ste utilizat ntre procese i subsistemele lor. %)odulul 2in ;8 6DI manipuleaz anumite apeluri sistem. Iniial el a fost plasat n spaiul utilizator. -poi a fost mutat n spaiul nucleu! n 2IND+2& N' <.F. pentru mbuntirea performanelor. 6DI trateaz gestionarea imaginilor pentru monitor i imprimante. (l furnizeaz apeluri sistem care permit programelor utilizator s scrie pe un monitor sau imprimant ntr%un mod independent de dispozitiv. De asemenea el conine i managerul de ferestre i drivere de afiare. Ser+i&ii )e !i!te( /&Sstem services0 #uncia sa este s furnizeze o interfa ctre executiv. (l primete apeluri sistem 2IND+2& 8FFF i apeleaz alte pri ale executivului pentru rezolvarea acestora. *a pornire! 2IND+2& 8FFF este ncrcat n memorie sub forma unei colecii de fiiere. $artea principal a sistemului de operare! care const din nivelele nucleu i executiv! se afl n fiierul ntosJml.exe.. 5-* este o biblioteca parta"at aflat ntr%un fiier denumit hal.dll. :in;8 6DI i interfaa dispozitivelor grafice se afl n fiierul :in;8 J.sSs. Ni+elul utili-ator 4omponentele nivelului utilizator sunt %D**%urile /DSnamic *inJ *ibrairS O Bibliotec cu legare dinamic01 %subsistemele de mediu1 %procese de serviciu. -ceste componente conlucreaz pentru a furniza fiecrui proces utilizator o interfa! alta dect interfaa apelurilor sistem. 2IND+2& 8FFF suport trei -$I%uri diferite %2IN ;8

Sisteme de operare

235

%$+&I3 %+&78 #iecare dintre aceste interfee are o list de apeluri de bibliotec publicate care pot fi folosite de programatori. 'reaba D**%urilor i a subsistemelor de mediu este s implementeze funcionalitatea interfeei! ascunznd n acest fel programelor de aplicaii adevrata fa a apelurilor de sistem. =n particular! interfaa 2in ;8 este interfaa oficial a mai multor versiuni 2indo:s printre care i 2IND+2& 8FFF. $rin utilizarea D**% urilor i a subsistemului de mediu 2in;8! se poate scrie unprogram folosind specificaiile 2in ;8! program care s ruleze pe toate versiunile 2indo:s care au interfa 2in ;8 /2IND+2& 8FFF! 2IND+2& N'! 2IND+2& L@7LQ0! cu toate c apelurile sistem nu sunt aceleai pe sisteme diferite. .n program 2in ;8 conine apeluri ctre funciile 2in ;8 cum ar fi 4reate 2indo:! Dra: )enuBar! +pen &emaphore. (xist mii de astfel de apeluri! iar ma"oritatea programelor folosesc o parte substanial din ele. + implementare posibil ar fi legarea static a fiecrui program 2in ;8 cu toate procedurile din bibliotec pe care le utilizeaz. Dac s%ar face acest lucru! fiecare program binar ar conine n interiorul executabilului su o copie a fiecrei proceduri folosite. -ceasta ar nsemna o risip mare de memorie! mai ales n situaia n care utilizatorul are mai multe programe deschise n acelai timp i multe dintre ele utilizeaz aceleai proceduri de bibliotec. $entru a evita aceast problem! se utilizeaz biblioteci parta"ate numite D**%uri. #iecare D** adun n acelai fiier! cu extensie. dll! o serie de proceduri de biblioteci nrudite i structurile lor de date. -tunci cnd o aplicaie este legat! editorul de legturi i d seama c unele proceduri de bibliotec aparin D**%urilor i nregistreaz aceast informaie n antetul executabilului. -pelurile ctre procedurile din D** sunt fcute indirect! printr%un vector de transfer din spaiul de adrese al apelantului. Iniial acest vector este umplut cu zerouri deoarece adresele procedurilor ce vor fi apelate nu sunt nc cunoscute. 4nd procesul aplicaie este pornit! D**%urile care sunt necesare sunt localizate pe disc sau chiar n memorie i puse n coresponden cu spaiul virtual de adrese al procesorului. Aectorul de transfer este apoi completat cu adrese corecte! n aa fel ca procedurile s fie apelate prin intermediul lui! cu o pierdere mic de eficien. 4tigul este aici faptul c! dei sunt mai multe programe de aplicaie cu acelai D**! pus n coresponden n interior! numai o singur copie a textului D** este necesar n memoria fizic.

236

Sorin Adrian Ciureanu =n figura 9F.Q. sunt date diferite moduri de implementare a apelurilor din 2in ;8 -$I. #iecare proces utilizator este legat de obicei cu un numr de D**%uri care mpreun implementeaz interfaa 2in ;8. $entru a efectua un apel -$I! trebuie apelat o procedur dintr%un D**! n figur acesta fiind pasul 9. =n unele cazuri! D**%ul apeleaz un alt D**! n figur fiind ntdll.dll! care la rndul su este captat n sistemul de operare! n figur 8a i;a. De asemenea este posibil ca D**%ul s fac ntreaga operaie fr s fac nici un apel sistem. $entru alte apeluri 2in ;8 -$I este aleas alt cale. )ai nti este trimis un mesa" ctre procesul csrss.exl al subsistemului 2in ;8! care face unele prelucrri! i apoi un apel de sistem /paii 8b! ;b! <b.0
-pel -pel -pel 9 Jernel ;8.dll 8b &ubsistem 2in ;8 8a

gdi ;8.dll

user ;8.dll

$roces utilizator

$roces al subsistemului de mediu /csrss.exl0

;b Interfaa sistemului /nt dl.dll0 ;b

Sistem de <b ;a
<b ;a

operare

Fi . 1P.<. Mo)uri )e i(ple(entare a apelurilor !i!te( Din ," API =n prima versiune de 2IND+2& N' ! toate apelurile 2IN ;8 -$I foloseau ruta 8b!;b!<b! meninnd o mare parte din sistemul de operare n spaiul utilizator /de exemplu grafica0. =ncepnd cu 2IND+2& N' <.F ! o mare parte din cod a fost trecut n modul nucleu /de fapt n driverul 2in ;8 6DI0.

23 Sisteme de operare =n 2IND+2& 8FFF numai un mic numr din apelurile 2in ;8 -$I! cum ar fi crearea proceselor i a firelor de execuie! aleg ruta cea mai lung. 4elelalte aleg ruta prin ocolirea subsistemului 2in ;8. =n ultimele variante ale sistemului 2IND+2& 8FFF! exist QFF D**%uri diferite n catalogul 72in nt7sSstem ;8. totaliznd 9;FF )B! numrul apelurilor -$I coninute n ele fiind aproximativ9;F?F1 numrul de operaii exportate din prima lansare public a ntdll.dll din 2IND+2& 8FFF este de 99PL. -far de interfaa de proces 2in ;8! care este cea mai important i cel mai des utilizat! mai exist dou interfee! $+&I3 i F@78. $+&I3 /$ortable +perating &Sstem Interface0furnizeaz un suport minim pentru aplicaiile .NI3. Dei ar fi trebuit ca prin mediul $+&I3 s se porteze programe .NI3 pe 2IND+2& 8FFF! acest lucru este practic imposibil. )ediul $+&I3 a fost inclus doar la cerina guvernului &.- care cere ca sistemele de operare utilizate de guvern s fie compatibile cu $9FF;.9! iar mediul $+&I3 suport acest lucru. $ractic! pentru a permite utilizatorilor .NI3 s migreze ctre 2IND+2& 8FFF! )icrosoft a pus la dispoziie un produs! numit Inferix! care ofer un grad mai mare de compatibilitate dect subsistemul $+&I3. &ubsistemul F@78 este limitat n funcionalitate i nu suport nici o aplicaie grafic! practic fiind nefolositor. Deci! ideea de a avea mai multe interfee de sistem de operare implementate de diferite procese din spaiul utilizator este! n esen! pierdut! singura interfa rmnnd 2in ;8.

1P.<.1.I(ple(entarea o>ie&telor 7n SO DINDODS "PPP


+biectele sunt probabil conceptul cel mai important din 2IND+2& 8FFF. (le asigur o interfa uniform i consistent ctre toate resursele sistemului i ctre structurile de date. .n obiect este o colecie de variabile legate ntre ele printr%un set de proceduri numite metode! care in loc de fiiere sau documente. Iat cteva din aspectele cele mai importante ale utilizrii obiectelor n 2IND+2& 8FFF %toate obiectele sunt denumite i accesate n acelai fel1 %prezint o securitate mult mai bun! din moment ce toate accesele la obiecte trec obligatoriu prin acelai loc managerul de obiecte1 n consecin toate verificrile de securitate sunt puse ntr%un singur loc! pe care nici un proces nu poate s%l ocoleasc1

23!

Sorin Adrian Ciureanu %parta"area obiectelor ntre procese funcioneaz ntr%un mod uniform1 %tergerea obiectelor se face n siguran! tot datorit managerului de obiecte. =n figura 9F.L. este prezentat structura unui obiect.

-ntetul obiectului

Numele obiectului Directorul n care se afl obiectul Informaie de securitate 4ostul folosirii obiectului *ista proceselor! cu referine 4ontoare de referin

Datele obiectului obiectului

Indicator ctre obiectul de tip

Numele tipului 'ipuri de acces

Date specifice obiectului

Drepturi de acces 4ostul de folosire a obiectului &incronizabil $aginabil )etoda de deschidere )etoda de nchidere )etoda de tergere

)etoda de cerere nume Fi . 1P.J. Stru&tura unui o>ie&t. )etoda de audibilitate

#iecare obiect conine un antet cu anumite informaii comune tuturor obiectelor de toate tipurile. 4mpurile din acest antet includ numele obiectului! catalogul n care se afl! informaia de securitate i o list de procese cu referine deschise ctre obiect. -ntetul de obiect conine un cmp de ncrcare a cotei! care reprezint cota perceput proceselor pentru deschiderea obiectului. Dac un

)etoda de securitate

23" Sisteme de operare obiect fiier cost 9 punct i un proces aparine unui "ob care are o cot de ;F de puncte! procesele din acel "ob pot deschide n total numai ;F de fiiere. =n acest el se pot fixa limite de resurse pentru fiecare tip de obiect separat. 4nd un obiect trebuie ters! spaiul su de adrese trebuie recuperat. )ecanismul de recuperare const ntr%un contor de referine n antetul fiecrui obiect. 4ontorul este incrementat de fiecare dat cnd un obiect este deschis i decrementat de fiecare dat cnd este nchis. 4nd a"unge la valoarea F! nici un utilizator nu mai deine o referin ctre obiect. 4nd un obiect este nsuit sau eliberat de o component executiv! un al doilea contor este incrementat sau decrementat.! cu toate c nu este emis efectiv nici o referin. 4nd amndou contoarele a"ung la F! nici un proces utilizator i nici un proces executiv nu mai folosete obiectul! aa c acesta poate fi ters i memoria sa eliberat. +biectele sunt tipizate! fiecare obiect avnd proprietile tuturor obiectelor de acelai tip. Informaia obiectului de tip include elemente cum ar fi denumirea tipului! ateptarea unui obiect la mutex%uri sau semafoare etc. #oarte importante n coninutul unui obiect sunt referinele la codul pentru anumite operaii standard ca open! close! delete.

24#

Sorin Adrian Ciureanu

Sisteme de operare

241

Capitolul 11 SISTEMU# DE OPERARE #INUC. AP#ICAII


11.1. SCURT ISTORIC
-nul 9L?@ poate fi considerat ca punct de pornire pentru sistemul de operare .NI3. -tunci a fost lansat la )I' /)assachusets Institute of 'echnologS0 un proiect de cercetare pentru crearea unui sistem de operare multiutilizator! interactiv! punndu%se la dispoziie putere de calcul i spaiu de memorie n cantitate mare. -cest sistem s%a numit ).*'I4&. Din el! Xen 'hompson a creat n 9LP9 prima versiune .NI3. De atunci .NI3%ul a cunoscut o dezvoltare puternic n noi versiuni. In 9LQP! profesorul -ndre: 'anenbaum creeaz! la Ari"e .niversiteit din -msterdam! un sistem de operare ! asemntor cu .NI3%ul! cu scop didactic! pentru dezvoltare de aplicaii! numit )INI3. $ornind de la )INI3! un tnr student finlandez! *inus 'orvalds! a realizat n anul 9LL9 un sistem de operare mai complex! numit *IN.3. Datorit faptului c a fost nc de la nceput GfreeH ! *IN.3%ul a cunoscut o puternic dezvoltare! fiind spri"init da ma"oritatea firmelor mari! cu excepia! bineneles! a )I4,+&+#'%ului. =n anul 9LLQ s%a format #ree &tandars 6roup n cadrul cruia exist iniiative de standardizare pentru a ncura"a dezvoltarea de programe i aplicaii n *IN.3. 4eea ce a lipsit mult vreme *IN.3%ului a fost un standard pentru ierarhia din sistemul de fiiere al programelor i aplicaiilor dar mai ales al bibliotecilor.

242

Sorin Adrian Ciureanu *ucrul cel mai important n *IN.3 este faptul c ntregul sistem de operare i o serie ntreag de operaii sunt puse la dispoziie! inclusiv sursele. )ulte universiti i faculti de specialitate i dezvolt propriile aplicaii n *IN.3.

11.". DISTRIBUII $N #INUC


*IN.3%ul este un sistem distribuit. Dintre cele trei specii de sisteme cu procesoare multiple i anume multiprocesoare! multicomputere i sisteme distribuite! sistemele distribuite sunt sisteme slab cuplate! fiecare din noduri fiind un computer complet! cu un set complet de periferice i propriul sistem de operare. (xist la ora actual peste ;FF de distribuii n *IN.3. Aom trece n revist cele mai importante i mai utilizate distribuii.

11.".1. Di!tri>uia S#ACDARE


4reatorul acestei distribuii este $atricJ AolJerding! prima versiune fiind lansat de acesta n aprilie 9LL;. -ceast distribuie are dou prioriti de baz uurina folosirii i stabilitatea. Instalarea se face n mod text! existnd posibilitatea alegerii unui anumit X(,N(* la bootare! dei cel implicat este suficient! n general! pentru o instalare normal. #ormatul standard al pachetelor &*-4X2-,( este .tgz i exist o serie de programe de instalarea! upgradarea i tergerea pachetelor! cum ar fi install p#g, upgrade p#grd, care nu pot fi folosite dect direct din linia de comand.

11.".". Di!tri>uia RED:AT


(ste una din cele mai rspndite distribuii. 4onine un sistem de pachete ,$)! sistem ce ntreine o baz de date cu fiierele i pachetele din care provin. Aersiunea ,(D5-' conine codul surs complet al sistemului de operare i al tuturor utilitarelor! cea mai mare parte a acestuia fiind scris n limba"ul 4.

243 Sisteme de operare *a instalarea sistemului nu se permit dect partiii tip ext 8 i ext ;. (xist module de Jernel i sisteme "urnalizate! ca C#& sau ,eiser #&! care pot fi montate i dup instalare. *a instalare se poate configura un sistem #ire2all cu trei variante de securitate! 5igh! )edium i N.#ire2all. (xist o sut de aplicaii destinate configurrii n mod grafic a sistemului! aplicaii specifice att interfeei 6N+)( ct i XD(.

11.".,. Di!tri>uia DEBIAN


(ste considerat cea mai sigur dintre toate distribuiile existente. De aceast distribuie se ocup o comunitate restrns de dezvoltatori! pachetele fiind foarte bine studiate i testate nainte de a fi lansate ca release+uri ntr% o distribuie. De obicei! aplicaiile i programele sunt cu cteva versiuni n urma celorlalte distribuii. Nu exist! n general! o activitate comand de promovare a acestei distribuii! singurul suport fiind asigurat de o list de discuii. $rocedura de instalare este una din cele mai dificile. (xist dou posibiliti de instalare a0simpl1 b0avansat. =n varianta simpl se aleg tasJuri de instalare! fiecare tasJ presupunnd instalarea mai multor pachete reunite de acesta. =n cazul unei variante avansate! exist posibilitatea alegerii efective a fiecrui pachet n parte. )eritul de baz al acestei distribuii este acela c este cea mai apropiat de comunitatea +pen &ource. $achetele sunt de tipul de i sunt administrate cu a"utorul unui utilitar numit -$'/-dvanced $acJage 'ool0.

11.".0. Di!tri>uia MANDRAGE


(ste o distribuie care pune baz pe o mare internaionalizare! fiind disponibile versiuni de instalare n <F de limbi. (xist i o distribuie n limba romn! n dou variante de manipulare a tastaturii! g:ertS i `:ertz. )-ND,-X( are un sistem de gestiune dual a0*inux 4onf1 b0DraJ 4onf.

244

Sorin Adrian Ciureanu *inus 4onf reprezint motenirea de la ,ed5at i permite modificarea setrilor obinuite ale sistemului gestiunea utilizatorilor! a serviciilor /dns! mail! rtp0! configurarea plcii de reea. DraJ 4onf este un utilitar care se dorete a fi pentru *IN.3 ceea ce 4ontrol $anel reprezint pentru 2IND+2&. (l permite configurarea sistemului de la partea hard:are ce folosete 5ard DraJe /plci de reea! video! sunet! tuner0 pn la cele mai utilizate servicii /:eb rtp! dns! samba! NI&! fire:all0. -u fost introduse :izard%uri pentru toate serviciile ce pot fi setate grafic.

11.".5. Di!tri>uia #?CORIS


(ste o companie foarte tnr care i%a propus drept scop crearea unei versiuni *inux foarte uor manevrabil. Instalarea acestei distribuii este cea mai simpl instalare dintre toate existente pn n prezent. Nu este permis nici un fel de selecie a pachetelor! individuale sau n grup. $rocesul de instalare ncepe imediat dup alegerea partiiilor! rulnd n fundal! iar configurrile sistemului se realizeaz n paralel. + aplicaie util este Net:orJ Bro:ser! realizat de *Scoris! care permite interconectarea simpl cu alte sisteme *inux sau 2indo:s. -ceast versiune de *inux se adreseaz utilizatorilor obinuii cu mediile de lucru )icrosoft 2indo:s. =n acest sens! desJtopul conine )S*inux &Sstem i Net:orJ Bro:ser. 4onfigurarea sistemului se realizeaz prin intermediul unui 4ontrol $anel care este de fapt XD( 4ontrol 4enter. )anagerul sistemului de fiiere! Xon`ueror! reunete aplicaiile executabile de ctre )icrosoft 2indo:s i le ruleaz cu a"utorul programului 2ine! cu care se pot chiar instala programe 2indo:s.

11.".6. Di!tri>uia SUSE


&.&( este distribuia european /de fapt german0 cea mai cunoscut i de succes. &e axeaz pe personalizarea sistemului n ct mai multe ri europene. Din pcate limba romn lipsete din aceast distribuie.

11.,. AP#ICAII #INUC

245 Sisteme de operare Aom prezenta n aceste aplicaii o serie de programe pe baza unor apeluri sistem sau a unor funcii din *IN.3. )ediul de programare este limba"ul 4. -plicaiile sunt structurate pe modelul unui laborator la disciplina &isteme de operare! fiecare lucrare de laborator prezentnd trei pri

?) Consideraii teoretice asupra lucrrii. @) &esf(urarea lucrrii, cu e)emple de programe. A) ,ema pentru lucru indi"idual, care, de o icei, propune crearea de diferite programe n conte)tul lucrrii respecti"e.

11.,.1. Co(en-i #INUC


90 Consideraii teoretice Aom prezenta aici cteva din comenzile principale ale sistemului de operare *IN.3! date pe linia de comand. -ceste comenzi reprezint interfee ntre utilizator i sistemul de operare i ele sunt de fapt programe ce se lanseaz n execuie cu a"utorul unui program numit interpretor de comenzi sau! in terminologia .NI3! numit shell. 80&esf(urarea lucrrii a0 4omenzi pentru operaii asupra proceselor. *istarea proceselor active n sistem. 4omanda ps /process status0 furnizeaz informaii detaliate! n funcie de opiunile afiate! despre procesele care aparin utilizatorului. 4omanda bps> cu urmtorul exemplu de rspuns pid ''M &'-' 'I)( 4+))-ND ;8?F p; , F FF bash ;<@8 p< 2 9 89 ps <@FL p; a @ ;@ ps @98F pL & Q @@ bash $rima coloan /pid0 reprezint identificatorul procesului. - doua coloan /''M0 reprezint terminalul de control la care este conectat procesul. $ot fi i adrese de ferestre sau terminale virtuale! cum este i n exemplul de fa / valorile p;! p<! pL sunt adrese de terminale virtuale0. - treia coloan reprezint starea procesului. ,/,unning0 O n execuie &/&leeping0 O adormit pentru mai puin de 8F secunde I/Idle0 O inactiv! adormit pentru mai mult de 8F secunde

246

Sorin Adrian Ciureanu 2/&:apped O scos afar din memoria principal i out0 trecut pe hard disc a/aombie0 O terminat i ateapt ca printele s se termine N/Nice0 O proces cu prioritate redus - patra coloan /'I)(0 indic timpul de procesor folosit de proces pn n prezent. - cincia coloan /4+))-ND0 listeaz numele programului executat de fiecare proces. Dintre opiunile acestei comenzi amintim +piunea bps %u! cu urmtorul rspuns
.&(, @FF @FF pid ;@?@ ;@LP K4$. F.F F.F )() 9.< F.P A&a <Q<Q ;Q8< ,&& 9;;? ?QQ ''M pts7F pts7F &'-' & , &'-,' 9L 9@ 9L ;P 4)D. bash ps%u

unde cmpurile noi reprezint .&(, O Numele proprietarului fiierului K4$. O .tilizarea procesorului de ctre proces K)() O $rocentele de memorie real folosite de proces &'-,' O +ra la care procesul a fost creat ,&& O Dimensiunea real n memoria procesului/JB0 +piunea bps %l ! cu urmtorul rspuns
# F F & & , .ID @FF @FF $ID ;@? @ ;@L L $$ID ;@?; ;@?@ 4 F F $$I P? PQ N I F F -DD, % % &a 989 8 99L ? % % ''M pts7F pts7F 'I)( FF FF FF FF FF FF 4) D bash ps

unde cmpurile noi reprezint .ID O Identificatorul numeri al proprietarului procesului # O #anioane care indic tipul de operaii executate de proces $$ID O Identificatorul procesului printe NI O Incrementul de planificare al procesului &a O Dimensiunea segmentelor de date al stivei 245-N O (venimentul pe care procesul l ateapt +piunea bps %e determin ca la fiecare comand s se afieze att argumentele ct i ambiana de execuie. +piunea bps %a determin afiarea de informaii i despre procesele altor utilizatori momentani conectai n sistem. *istarea activitilor diverilor utilizatori 4omanda b2> cu urmtorul rspuns
.&(, Ion ''M F #,+) % *+6IN6 P 9;pm ID*( V C*$. F!FFs $4$. F!;8s 25-' "usr7bin7gnome

Sisteme de operare
Ion pts7F FF P 9@pm F!FFs F!F?s F!F9s 2

24

*istarea dinamic a proceselor din sistem 4omanda btop cu care se poate avea o imagine dinamic a proceselor din sistem i nu o imagine static ca la comanda 2. $erioada de actualizare este implicit de @ secunde. b0 4omenzi pentru operaii generale asupra fiierelor i cataloagelor 4omanda bp:d ! pentru afiarea numelui catalogului curent. 4omanda bls > pentru afiarea coninutului unui catalog 1 este echivalent cu comanda DI, din )&%D+&. 4ele mai des utilizate opiuni sunt bls %l ! bls %al! bls %li bin. 4omanda bcd ! pentru schimbarea catalogului curent1 nume catalog. 4omanda brm ! pentru tergerea unei intrri n catalog1 nume catalog. 4omanda bcat > pentru listarea coninutului unui fiier1 nume fiier! cu opiunile cele mai frecvente bcat %n > "afieaz numrul de ordine la fiecare linie din text0 i bcat %v /afieaz i caracterele netipribile0. 4omanda bcp ! pentru copierea unui fiier1 nume9! nume8. 4omanda mv> redenumirea unui fiier1 surs destinaie. ;0 ,em & se realizeze toate comenzile prezentate n aceast lucrare! folosind un utilitar al *IN.3%ului! de preferin mc.

11.,.". Crearea pro&e!elor


90 Consideraii teoretice $entru crearea proceselor *IN.3 folosete apelul sistem fork(). 4a urmare a acestui apel un proces printe creeaz un proces fiu. #uncia fork() returneaz o valoare dup cum urmeaz - , dac operaia nu s%a putut efectua! deci eroare1 !, n codul #I.*.I1 92- Z2:, n codul printelui. =n urma unui fork procesul fiu! nou creat! va moteni de la printe att codul ct i segmentele de date i stiva. =n ceea ce privete sincronizarea printelui cu fiul! nu se poate spune care se va executa mai nti! fiul sau printele. &e impun dou probleme ma"ore a0 sincronizarea printelui cu fiul1 b0 posibilitatea ca fiul s execute alt cod dect printele.

24!

Sorin Adrian Ciureanu $entru a rezolva aceste dou situaii se folosesc dou apeluri &ait() 'i exe"(). #uncia &ait() rezolv sincronizarea fiului cu printele . (ste utilizat pentru ateptarea terminrii fiului de ctre printe. Dac punem un &ait() n cadrul printelui! se execut nti fiul i apoi printele. (xist dou apeluri pid%t &ait(intSstat1s) pid%t &aitpid(pid%t pid, intSstat1s, int f#ags) $rima form &ait() este folosit pentru ateptarea terminrii fiului i preluarea valorii returnate de acesta. $arametrul stat1s este utilizat pentru evaluarea valorii returnate! cu a"utorul ctorva macro%uri definite special. #uncia &aitpid() folosit ntr%un proces va atepta un alt proces cu un pid dat. #uncia exe"() are rolul de a face ca fiul s execute alt cod dect printele. (xist mai multe forme ale acestei funcii exe"vp, exe"#e, exe"v#, exe"#p, exe"vp. De exemplu! pentru exe"vp avem sintaxa int exe"vp("onst "(arSfi#ename,"onstS "(ar arg) $rin aceast funcie fiul va executa! chiar de la creare! fiierul cu nume fi#ename. Deoarece este prima aplicaie cu programe scrise i executate n limba"ul 4! prezentm mai "os etapele lansrii unui program n 4! n sistemul de operare *IN.3. %&e editeaz un fiier surs in limba"ul 4! utiliznd un editor de texte! de exemplu vi, kate sa1 m". &e numete fiierul! de exemplu nume fi'ier." %&e compileaz fiierul editat n 4 cu comanda bgcc numefiier.c %&e execut fiierul rezultat n urma compilrii. b . 7a.out 80&esf(urarea lucrrii %$rogramul a Oin"#1de<stdio.(Y Oin"#1de<sNs/&ait.(Y

24" Sisteme de operare Oin"#1de<1nistd.(Y Oin"#1de<sNs/tNpes.(Y main() @int pid,stat1s,i; if((pid=fork())<!) @printf(6.,A.6; exit(!);A if(pid==!) @printf(am pornit "opi#1#\n); for(i= ;i<=HT;iBB) @ff#1s((stdo1t); printf(!);A exit( );A e#se @&ait(Rstat1s); printf(am pornit p*rinte#e\n); for(i= ;i<=HT;iBB) @ff#1s((stdo1t); printf( );AAA -ceasta este o schem posibil de apelare a funciei fork(). Dac n urma execuiei s%a terminat cu eroare! se va afia G(,+-,(H. Dac suntem n procesul fiu (pid = =!), atunci codul fiului nseamn scrierea a 8@ cifre de F! iar dac suntem n procesul printe! se vor scrie 8@ cifre de 9. Deoarece avem apelul &ait n cadrul printelui! nti se va executa fiul i apoi printele. $e ecran se va afia am pornit "opi#1# !!!!!!!!!!!!!!!!!!!!!!!!! am pornit p*rinte#e ,olul ff#1s((stdo1t) este de a scrie pe ecran! imediat ce bufferul stdo1t are un caracter n el. #r ff#1s((stdo1t), momentul scrierii pe ecran este atunci cnd stdo1t este plin. =n acest caz trebuie s tim cnd se afieaz pe ecran ceva. Dac acest program nu ar conine &ait ! atunci nu s%ar ti cine se execut primul i cine al doilea! fiul i printele lucrnd n paralel. =n programul nostru! cnd fiul tiprete numai F iar printele numai 9! ar trebui ca! la o rulare! s avem la printare o secven de F !9 amestecat./ (x FF999F9F9F99FY0. Dar! dac rulm de multe ori acest program! constatm c de fiecare dat el va tipri mai nti 8@ de F i apoi 8@ de 9! ca i cum a exista &ait-1#. 4are este explicaiaV (a trebuie cutat n modul de rulare! n time sharing! n funcie de cuanta de timp alocat fiecrui proces. +ricum ea este foarte mare n raport cu duratele proceselor printe i fiu din exemplul nostru. De aceea! procesele fiu i printe nu vor fi ntrerupte din rularea n procesor! deoarece ele se termin amndou ntr%o singur cuant.

25#

Sorin Adrian Ciureanu %$rogramul >

Oin"#1de<stdio.(Y Oin"#1de<sNs/&ait.(Y Oin"#1de<1nistd.(Y Oin"#1de<sNs/tNpes.(Y main() @int pid,stat1s,i; if((pid=fork())<!) @printf(6.,A.6); exit(!);A if(pid==!) @printf(am pornit "opi#1#\n); exe"#p(./sorin ,./sorin ,3:++); exit( );A e#se @&ait(Rstat1s); printf(am pornit p*rinte#e\nA; for (i= ;i<=HT;iBB) @ff#1s((stdo1t); printf( );AAA unde sorin este un fiier executabil ce se obine prin compilarea fiierului surs sorin ." astfel bg"" -o sorin sorin ." #iierul sorin ." are coninutul Oin"#1de<stdio.(Y main() @int i; for(i= ;i<=HT;iBB) printf(!);A &e observ c n acest program n codul fiului avem funcia exe"#p care va nlocui codul printelui prin codul dat de fiierul executabil sorin care! de fapt! realizeaz acelai lucru ca la programul anterior. ,ezultatul rulrii va fi !!!!!!!!!!!!!!!!!!!!!!!!! am pornit p*rinte#e #a de rezultatul de la programul anterior! nu se mai execut printf(am pornit "opi#1#). Din ce cauzV $entru c atunci cnd se execut fiul! printarea am pornit "opi#1# este trecut n bufferul stdo1t! ns cnd se execut exe"#p! bufferul se golete i se execut strict numai fiierul sorin . $rogramul &

Sisteme de operare

251

O1n"#1de<std#i$.(Y Oin"#1de<sNs/tNpes.(Y Oin"#1de<1nistd.(Y main() @pid%t "opi#%pid; "opi#%pid=fork(); if("opi#%pidY!) /Ss1ntem 0n p*rinte 'i vom dormi H! se"1ndeS/ s#eep( H!); if("opi#%pid==- ) @printf(6.,A.6); exit(!);A e#se @printf(pid "opi#Qd\n, getpid()); exit( ); /Ss1ntem 0n "opi# 'i ie'im imediatS/AA =n acest program fiul i termin execuia imediat iar printele este ntrziat cu 98F secunde. =n acest timp fiul intr n starea zombie! pn cnd procesul init()! care preia copiii orfani! va prelua rolul de printe al fiului i l va scoate din starea zombie! elibernd tabela proceselor. $rogramul se compileaz cu Bg"" -o Mom$ie n1mefi'ier." i se execut astfel b ./Mom$ie R Dac se lanseaz comanda bps -a se poate observa ct timp st fiul n starea zombie! pn l preia procesul init() Program d Oin"#1de<stdio.(Y Oin"#1de<1nistd.(Y main() @int i/SiteratorS/ s1m=!; if(fork()<!)@perror(\eroare #a fork);ret1rn( );A for(i=!;i<= !!;iBB) @printf(\va#oarea #1i i esteQd\n,i); ff#1s((stdo1t))A s1mB=i;A

252

Sorin Adrian Ciureanu printf(\s1ma esteQd\n,s1m);ret1rn(!);A va fi afisata de 8 ori suma primelor 9FFmde numere naturale dar valorile iteratiei i vor altera in functie de care dintre ceel doua procese este programat sa ruleze ;0 ,em & se scrie un program care s creeze 9F procese. #iecare proces va scrie o linie numai cu cifre1 procesul F va scrie o linie de F! procesul 9 va scrie o linie numai de 9Y.. procesul L va scrie o linie numai de L. *iniile vor trebui scrise n ordinea cifrelor! deci prima linie de F i ultima de L.

11.,., .e!tiunea fi!ierelor 11.,.,. Co(uni&are 7ntre pro&e!e


11.3.3.1. -om(nicarea ntre procese prin PIP,-(ri *i 0I08 ?) Consideraii teoretice a0 $ipe%ul este un pseudofiier care servete la comunicarea unidirecional ntre dou procese. #aptul c este unidirecional a fost considerat ulterior ca una dintre limitele mecanismului i de aceea unele versiuni actuale au nlocuit pipe%ul unidirecional prin cel bidirecional. -stfel la &+*-,I& pipe%urile sunt bidirecionale dar n *inux sunt unidirecionale. -ici! deci! vom considera pipe%urile unidirecionale. + alt caracteristic a pipe%ului este faptul c procesele care comunic ntre ele trebuie s aib un grad de rudenie! de exemplu tat%fiu. .n pipe este creat cu apelul int pipe (int fi#e desFHC); care creeaz n Jernel un pipe accesibil n procesul apelant prin doi descriptori fi#e desF!C deschis n citire fi#e desF C deschis n scriere =n urma apelului pipe exist dou returnri F ! n caz de succes! %9! n caz de eroare. C(@/ 1/SP#Q
P.*&/S

C(@/ 1/SP1Q

N/.?/@ P(P/

Sisteme de operare

253

Fi . 11.1. S&'e(a unui pipe uni)ire&ional. )area ma"oritate a aplicaiilor care utilizeaz pipe%urile nchid! n fiecare dintre procese! captul de pipe neutilizat n comunicarea unidirecional. -stfel! dac pipe%ul este utilizat pentru comunicaia printe% fiu! atunci procesul printe scrie n pipe iar procesul fiu citete din pipe. b0#I#+ /pipe%uri cu nume0 ,estricia ca procesele care comunic s fie nrudite este eliminat la pipe%urile cu nume care sunt fiiere de tip #I#+. -pelul sistem pentru crearea unui #I#+ este Oin"#1de<sNs/tNpes.(Y Oin"#1de<sNs/stat.(Y int mkfifo("onst "(arSpat(name,mode%t mode); 4ele dou argumente ale apelului sunt "(arSpat(name, / numele #I#+%ului0 mode%t mode, /apare numai la deschidere! are loc i crearea fiierului0. Dup ce #I#+ a fost creat! i se pot ataa toate operaiile tipice cu fiiere /open! read! :rite! unlinJ etc.0. @) &esf(urarea lucrrii $rogramul a -cesta este un program care transmite un text / text prin pipe) prin pipe de la procesul printe la procesul fiu. Oin"#1de<1nistd.(Y Oin"#1de<sNs/tNpes.(Y Odefine 8A7+236 T!! main() @int n, fdFHC; pid%t pid;

254

Sorin Adrian Ciureanu "(ar #ine F8A7+236C; if(pipe(fd)<!) @printf(eroare pipe); exit(!);A if((pid=fork())<!) @ printf(eroare fork) exit( );A e#se if(pidY!) @/Sp*rinteS/ "#ose(fdF!C); &rite(fdF C,text prin pipe, V);A e#se @"#ose(fdF C);/Sfi1S/ n=read(fdF!C,#ine, 8A7+236); &rite( ,#ine,n);A exit(!);A $rogram >

$rogramul folosete dou pipe%uri! pipe9 i pipe8! ncercnd s simuleze un pipe bidirecional. &e va observa c! de fiecare dat cnd se execut o operaie la un capt al pipe%ului! cellalt capt este nchis. 7_ 4e "ompi#eaM* trei fi'iere s1rs* "a o$ie"te ag"" " mainpipe." ag"" " "#ient." ag"" " sever." 'i apoi ag"" o mainpipe mainpipe.o "#ient.o server.o 4e va "rea 1n fi'ier "1 "?teva #inii de text av?nd 1n n1me, de exemp#1 1n1, 'i apoi se #anseaM* a.mainpipe 1n1 'i apare afi'at "e era s"ris 0n fi'ier1# 1n1. S/ mainpipe.c Oin"#1de<stdio.(Y main() @int "(i#dpid,pipe FHC,pipeHFHC; if(pipe(pipe )<! || pipe(pipeH)<!)@

255 Sisteme de operare perror(n1 pot "rea pipe);

if(("(i#dpid=fork())<!) perror(n1 pot "rea fork); Ae#se if("(i#dpidY!) @/Sp*rinteS/ "#ose(pipe F!C); "#ose(pipeHF C); "#ient(pipeHF!C,pipeF C); &(i#e(&ait((intS)!)U="(i#dpid//&ait pt. "opi# "#ose(pipe F C); "#ose(pipeHF!C); exit(!);A e#se @/S"opi#S/ "#ose(pipe F C;) "#ose(pipeHF!C); server(pipe F!C,pipeHF C); "#ose(pipe F!C); "#ose(pipeHF C); exit(!); A A client.c Oin"#1de<stdio.(Y define 8A7B:ZZ !HV "#ient(int readfd,int &ritefd) @ "(ar $1ffF8A7B:ZZC; int n; /SCite'te n1me fi'ier de #a standard inp1tS/ if(fgets($1ff, 8A7B:ZZ, stdin)==3:++) perror(C#ient)eroare n1me fi'ier); n=str#en($1ff);

256

Sorin Adrian Ciureanu if($1ffFn- C==b\nb) n--; if(&rite(&ritefd,$1ff,n)U=n) perror(C#ient)eroare s"riere n1me fi'ier); /SCitire date din des"riptor 29C 'i s"riere #a standard o1tp1tS/ &(i#e((n=read(readfd,$1ff,8A7B:ZZ))Y!) if(&rite( ,$1ff,n) U=n /Sfd== pt stdo1tS/ perror(C#ient)eroare "itire date); A

server.c Oin"#1de<stdio.(Y define 8A7B:ZZ !HV server(int readfd,int &ritefd)@ "(ar $1ffF8A7B:ZZC; "(ar errmsgFHTWC; int n,k,fd; extern int errno; /SCitire n1me fi'ier din 29C des"riptorS/ if((n=read(readfd,$1ff,8A7B:ZZ))<=!) perror(4erver)eroare "itire n1me fisier); $1ffFnC=b\!b; if((fd=open($1ff,!))<!)@ /S6roare.`ener*m 1n mesaG de eroare 'i 0# trimitem #a "#ientS/ sprint(errmsg,)n1 pot sa des"(id fisier1#\n); str"at($1ff,errmsg); n=str#en($1ff); if(&rite(&ritefd,$1ff,n)U=n) perror(server)eroare s"riere); A e#se@ perror(cn"epem $1"#a de "itire din fisiers"riere #a "#ient.\n);

25 Sisteme de operare /SCite'te data din fi'ier 'i trimite "#ient1#1iS/ &(i#e((n=read(fd,$1ff,8A7B:ZZ))Y!) @ printf(Am "itit Qd "ar din fisier\n,n); if((k=&rite(&ritefd,$1ff,n))U=n) @printf(Am s"ris "*tre "#ientQd "ar\n,k); perror(server)eroare s"riere date); AA if(n<!) perror(server)eroare "itire); A A

$rogram & -cest program creaz un proces copil care citete dintr%un pipe un set de caractere trimis de procesul printe! convertind orice liter mic ntr%o litera mare. $rocesul printe citete irul de caractere de la intrarea standard. Oin"#1de<stdio.(Y Oin"#1de<"tNpe.(Y Oin"#1de<std#id.(Y Oin"#1de<1nist.(Y Oin"#1de<sNs/&ait.(Y int pipedFHC; /Spipe-1#S/ int pid; /Spid-1# fi1#1iS/ int "; /S"ara"tere#e "ititeS/ main() @if(pipe(piped)<!) /Sse "reaM* pipe-1# S/ @perror(eroare pipe); exit(!);A if((pid=fork())<!) /S"reare pro"es fi1S/ @perror(eroare fork); exit( );A if (pid) /Ss1nt 0n pro"es1# p*rinteS/ @"#ose(pipedF!C); /S0n"(iderea des"riptor1#1i de "itireS/ printf(pro"es p*rinte)introd1"eLi 'ir1# de "ara"tere); /Sse "ite'te de #a intrarea standardS/

25!

Sorin Adrian Ciureanu &(i#e(read(!,R", ))/Sse s"ri1 date#e 0n pipeS/ if(&rite(pipedF C,R", )<!) @perror(eroare s"riere);exit(H);A /Sse 0n"(ide des"riptor1# de s"riere 0n pipeS/ "#ose(pipedF C); if (&ait(3:++)<!) @perror(eroare &ait);exit(K);A exit(V);A e#se @ /Ss1nt 0n fi1S/ "#ose(pipedF C); /Sse 0n"(ide des"riptor1# de s"riereS/ printf(pro"es date#e\n); &(i#e(read(pipedF!C,R", )) @if(is#o&er(") /Seste #itera mi"*dS/ printf(Q",to1pper(")); e#se printf(Q",");A "#ose(pipedF!C); /Sse 0n"(ide des"riptor1# de "itireS/ exit(!);AA

$rogram ) =n acest program se citesc date dintr%un fiier existent! specificat ca prim argument linie de text! i se trimit prin pipe comenzii sort ce are ieire redirectat ntr%un fiier specificat ca argumentul al doilea. Oin"#1de<stdio.(Y Oin"#1de<1nistd.(Y int main(int arg","(arSargvFC) @"(ar $1fFe C; "(ar "ommandFe!C; Z2+6Sip; Z2+6Spp; sprintf("ommand,sortYQs,argvFHC); ip=fopen(argvF C,r); pp=fopen("ommand,&); &(i#e(fgets($1f,e!,ip))fp1ts($1f,pp); p"#ose(pp); f"#ose(ip);

Sisteme de operare exit(!);A $rogramul se compileaz cu bg"" -o pope pope." i se lanseaz b.7 pope fi'ierintrare fi'ierie'ire $rogram e

25"

-cest program este asemntor cu programul ) numai c de data aceasta nu mai comunic printele cu fiul prin pipe ci dou procese prin #I#+! unul client ! altul server. Client (fifoc.c) 7_se "ompi#eaM* "1 bg"" - o fifo" 'i se #anseaM* 0n exe"1Lie server1# "1 b ./fifos apoi de #a a#t termina# sa1 de #a a"e#a'i da"* am #ansat server1# 0n $a"kro1nd b./fifo" 4ir "e va fi afi'at #a server S/ Oin"#1de<stdio.(Y Oin"#1de<std#i$.(Y Odefine Z2Z,%Z2+6 P8;Z2Z, int main(int arg", "(arSargvFC) @ Z2+6Sfp; if(arg"U=H)@ printf(:ti#iMare)fifo"FsirC\n); exit( ); A if((fp=fopen(Z2Z,%Z2+6,&))==3:++)@ perror(fopen); exit( ); A fp1ts(argvF C,fp);

26#

Sorin Adrian Ciureanu f"#ose(fp); ret1rn(!); A

Server (fifos.c) /Sfifos." 4e "ompi#eaM* program1# "1 "omanda ag"" o fifos fifos." 'i apoi se #anseaM* server1# 0n exe"1Lie 0n foregro1nd sa1 $a"kro1nd a./fifos a'tept?nd s* se afi'eMe "e s-a s"ris "1 "#ient1# fo#osind a./fifo" 4ir "e va fi afisat #a server de #a a#t termina# sa1 de #a a"e#a'i da"* s-a #ansat sever1# 0n $a"kro1nd S/ Oin"#1de<stdio.(Y Oin"#1de<std#i$.(Y Oin"#1de<sNs/stat.(Y Oin"#1de<1nistd.(Y Oin"#1de<#in1x/stat.(Y Odefine Z2Z,%Z2+6 8;Z2Z, int main(void) @ Z2+6 Sfp; "(ar read$1fF !!C; /S se "reaM* Z2Z, da"* n1 exist*S/ 1mask(!); mknod(Z2Z,%Z2+6, 4%2Z2Z,|!WWW, !); &(i#e( ) @ fp=fopen(Z2Z,%Z2+6, r); fgets(read$1f, !!, fp); printf(Am re"epLionat sir1#) Qs\n,

Sisteme de operare read$1f); f"#ose(fp); A ret1rn(!); A

261

$rogram f A"est program arat* da"* imp#ementarea pipe#or permite f1n"Lionarea 0n am$e#e sens1ri (pipe $idire"Liona#e). +a 4o#aris pipe-#e s1nt $idire"Liona#e. +a +in1x n1. A"easta se poate p1ne 0n evidenL* (#a "e#e $idire"Liona#e)prin re1'ita "itirii 0n p*rinte d1p* "e a s"ris "1 &rite() "itirea, a'tept?nd "eva de #a "opi# 'i n1 ret1rn?nd "e a s"ris tot p*rinte#e. 9entr1 a rea#iMa s"enari1#, "opi#1# doarme "1 s#eep() V se"1nde, timp 0n "are p*rinte#e 0n"ear"* "e a fost preMentat mai s1s. 4e "ompi#eaM* "1 ag"" o $idi $idi." 'i se #anseaM* "1 a.$idi Oin"#1de<1nistd.(Y Oin"#1de<stdio.(Y Oin"#1de<std#i$.(Y int main(int arg", "(ar SargvFC)@ int fdFHC; int n; "(ar "; pid%t pid; pipe(fd); if((pid=fork())==!@//"opi# s#eep(T); printf(Copi# 0nainte de read()\n); if((n=read(fdF!C,R", )) U= ) printf(6roare read() a ret1rnat Qd\n,n); printf(Copi#1# a "itit Q"\n,"); &rite(fdF!C,", );exit(!);A

262

Sorin Adrian Ciureanu e#se if(pidY!)@ //p*rinte printf(9*rinte 0nainte de &rite()\n); &rite(fdF C,D, ); printf(9*rinte 0nainte de read()\n); if((n=read(fdF C,R", )) U= ) printf(p*rinte read() a ret1rnat Qd\n,n); printf((p*rinte#e a "itit Q"\n,");exit(!);AA

$rogram g /S A"est program se "ompi#eaM* "1 ag"" o popen popen." 4e #anseaM* 0n exe"1Lie "1 a.popen Eom o$Line 1n fi#e pointer ("ap*t1# dinspre noi a# pipei) #a "are vom s"rie trei 'ir1ri. +a "ap*t1# "e#*#a#t a# pipei este "omanda sort "e va afi'a #a 45-,:5 reM1#tat1#. S/ Oin"#1de<stdio.(Y Oin"#1de<1nistd.(Y int main()@ Z2+6Sstream; stream=popen(sort,&); fprintf(stream,, 0n"er"are\n); fprintf(stream,A do1a 0n"er"are\n); fprintf(stream,:#tima 0n"er"are\n);

p"#ose(stream); ret1rn !; A A) ,em a)& se creeze un pipe prin care procesul printe va trimite procesului fiu numai Hnumerele rotundeH dintre cele citite de printe de la

263 Sisteme de operare tastatur. /.n numr rotund este numrul care! n baza 8! are numrul de cifre F egal cu numrul de cifre 9. b0 & se creeze un #I#+ prin care un proces va trimite altui proces numai numere multiple de 99 dintre cele citite de la tastatur de primul proces.

11.3.3.2. -om(nicarea ntre procese prin semnale ?)Consideraii teoretice &emnalele reprezint unul dintre primele mecanisme de comunicare ntre procese. (le anun apariia unui eveniment. &emnalele pot fi trimise de ctre un proces altui proces sau pot fi trimise de ctre Jernel. )omentul apariiei unui semnal este neprecizat el aprnd asincron. .n semnal este reprezentat printr%un numr i un nume care se post vedea prin lansarea comenzii bki## &e pot trimite semnale %cu comanda ki##, %n program cu apelul sistem ki##(), %cu anumite combinaii de chei de la tastatur! %cnd se ndeplinesc anumite condiii de exemplu eroare de virgul mobil (42`Z96) sau referirea unei adrese din afara spaiului unui proces (42`46`E) %sau prin Jernel care poate semnaliza! de exemplu! prin 42`:.` apariia aut%of%band pe un soclu%socJet. #uncia ki##() 'rimite un semnal unui proces sau unui grup de procese. int ki##(pid%t pid,int sig); $entru ca un proces s poat trimite un semnalaprocesului identificat prin pid! trebuie ca user ID%ul real sau efectiv al procesului care trimite semnalul s se potriveasc cu 2--1# rea# sau set-1ser-2- salvat al procesului care recepioneaz semnalul. %Dac pidY! semnalul se trimite tuturor procesului pid; %dac pid==! semnalul se trimite tuturor proceselor care fac parte din acelai grup de procese cu procesul care trimite semnalul! dac exist permisiunile necesare1 %dac pid==- semnalul se trimite tuturor proceselor /cu excepia unui set nespecificat de procese sistem0! dac exist permisiunile necesare1

264

Sorin Adrian Ciureanu %dac pid<!RRpidU=- , semnalul se trimite tuturor proceselor care fac parte din grupul de procese al crui pgid este egal cu modulul valorii primului argument! dac exist permisiunile necesare1 %dac al doilea argument este F! nu se trimite nici un semnal1 se testeaz existena procesului specificat n primul argument. (xist dou moduri de lucru cu semnalele -0 folosind standardul iniial /stil vechi! nerecomandat01 B0 folosind noul stil. =n ambele situaii! pentru procesul care recepioneaz un semnal! putem seta trei tipuri de aciuni %aciunea implicit! reprezentat prin pointerul la funcie 42`%-6+1 %aciunea de a ignora semnalul recepionat! reprezentat prin pointerul la funcie 42`%2`3; %aciunea precizat printr%o funcie! numit (and#er! reprezentat printr%un pointer la funcie /numele funciei este adresa ei. -0&tandardul vechi =n vechiul stil! pentru a seta o aciune corespunztoare unui semnal foloseam funcia signa#() al crui prototip era void(Ssigna#(int sig,void(S(and#er)(int)))(int); g#i$" folosete pentru handlere tipul sig%t. )ai exist extensia `3:) tNpedef void(Ssig(and#er%t (and#er)(int); sig(and#er%t signa#(int sign1m, sig(and#er%t (and#er); B0 &tandardul $osix 4ele trei cazuri rmn i aici valabile. $utem s specificm un handler pentru semnal cnd aciunea este de tipul captare de semnal void (and#er(int signo); Dou semnale nu pot fi captate /nu putem scrie handlere pentru ele0 42`]2++ 'i 42`45,9. $utem ignora un semnal prin setarea aciunii la 42`%23. $entru 42`]2++ 'i 42`45,9 nu se poate acest lucru. $utem seta o aciune implicit prin folosirea lui 42`%23. -ciunea implicit nseamn! pentru ma"oritatea semnalelor! terminarea unui proces. Dou semnale au aciunea implicit s fie ignorate 42`C_+- ce este trimis printelui cnd un copil a terminat i 42`:.` la sosirea unor date a1tof-$and. #uncia siga"tion()

265 Sisteme de operare $entru a seta aciunea corespunztoare unui semnal! n loc de funcia signa#() vom folosi funcia siga"tion().$entru aceasta trebuie s alocm o structur de tipul siga"tion tNpedef void(Ssig(and#er%t)(int signo) str1"t siga"tion @ sig(and#er%t sa%(and#er;/Spointer #a o f1n"Lie de "aptare semna# sa1 42`%2`3 sa1 42`%-6ZS/ sigset%t sa mask; /Sset1# de semna#e $#o"ate 0n timp1# exe"1Liei (and#er1##1iS/ 1nsiged #ong sa%f#ags; /Sf#ag1ri spe"ia#eS/ void(Ssa%restorer)(void); /Spointer #a o f1n"Lie "aptare de semna#S/ A;

4teva flaguri 4A%3,C+-45,9 - un semnal 42`C_+- este trimis printelui unui proces cnd un copil de%al su a terminat sau e oprit. Dac specificm acest flag! semnalul 42`C_+va fi trimis numai la terminarea unui proces copil. 4A%,364_,5 - imediat ce handlerul pentru acest semnal este rulat! Jernelul va reseta aciunea pentru acest semnal la 42`%-6+. 4A%.645A.5 apelurile sistem HlenteH care returnau cu eroarea (IN', vor fi restartate automat fr s mai returneze. $rototipul funciei siga"tion() este) int siga"tion(int sign1m,str1"t siga"tion a"t, str1"t siga"tion oa"t); .nde sign1m este semnalul a crui livrare urmez s fie setat! prima structur siga"tion a"t conine setrile pe care Jernelul le va utiliza cu privire la semnalul sign1m! iar a doua structur oa"t memoreaz vechile setri /pentru a fi setate ulterior01 se poate specifica 3:++ pentru ultimul argument dac nu ne intereseaz restaurarea. -lte funcii utilizate 'ipul de date pe care se bazeaz funciile pe care le vom prezenta este sig%set i reprezint un set de semnale. 4u acest tip putem pasa uor o list de semnale Jernelului. .n semnal poate aparine sau nu unui set de semnale. Aom opera asupra unui obiect sig%set numai cu a"utorul urmtoarelor funcii

266

Sorin Adrian Ciureanu int sigempMNset(sigset%tSset); int sigfi##set(sigset%tSset); int sigaddset(sigset%tSset,int signo); int sigde#set(sigset%tSset,int signo); int sigismem$er("onst sigset%tSset, int signo) +bservm c primul argument este un pointer la setul de semnale. sigempMNset() scoate toate semnalele din set! iar sigfi##set() adaug toate semnalele setului. 'rebuie neaprat s folosim una din cele dou funcii pentru a iniializa setul de semnale. sigaddset() adaug un semnal setului iar sigde#set() scoate un semnal din set. .n concept important referitor la procese l reprezint masca de semnale corespunztoare procesului. -ceasta precizeaz care semnale sunt blocate i nu vor fi livrate procesului respectiv1 dac un astfel de semnal este trimis! Jernelul amn livrarea lui pn cnd procesul deblocheaz acel semnal. $entru a modifica masca de semnale se utilizeaz int sigpro"mask(int (o&,"onst sigset%tSmodset, sigset%tSo#dset); (o& poate fi 42`%B+,C] semnalele coninute n modset vor fi adugate mtii curente i semnalele respective vor fi i ele blocate. 42`%:3B+,C] semnalele coninute n modset vor fi scoase din masca curent de semnale. 42`%4658A4] masca de semnale va avea exact acelai coninut cu modset. 4nd un semnal nu poate fi livrat deoarec eeste blocat! spunem c semnalul respectiv este n ateptare. .n proces poate afla care semnale sunt n ateptare cu int sigpending(sigset%tSset); =n variabila set vom avea toate semnalele care ateapt s fie livrate dar nu sunt! deoarece sunt blocate. .n proces poate s%i suspende execuia simultan cu schimbarea mtii de semnale pe timpul execuiei acestui apel sistem prin utilizarea lui int sigs1spend("onst segset%tSmask); (ste scos din aceast stare de oricare semnal a crui aciune este precizat printr%un handler sau a crui aciune este s termine procesul. =n primul caz! dup execuia handlerului se revine la masca de semnale de dinaintea lui sigs1spend() iar n al doilea caz /cnd aciunea e s termine procesul0 funcia sigs1spend() nu mai returneaz. Dac masca este specificat ca 3:++! atunci va fi lsat nemodificat.

26 Sisteme de operare 4oncluzii pentru semnalele $osix %un semnal instalat rmne instalat%/vechiul stil dezactiva handlerul01 %n timpul execuiei handlerului! semnalul respectiv rmne blocat1 n plus! i semnalele specificate n membrul sa%mask al structurii sigaction sunt blocate1 %dac un semnal este transmis de mai multe ori cnd semnalul este blocat! atunci va fi livrat numai odat! dup ce semnalul va fi deblocat1 %semnalele sunt puse ntr%o coad. &emnale de timp real )odelul de semnale implementat n .NI3 n 9LPQ nu era sigur. =n decursul timpului au fost aduse numeroase mbuntiri i n final s%a a"uns la un model $osix de timp real. Aom ncepe cu definiia structurii sigva# 1nion sigva# @ int siva#%int; voidSsiva#%ptr; A; &emnalele pot fi mprite n dou categorii 90 semnale rea#time ale cror valori sunt cuprinse ntre 42`.5823 'i 42.58A7 (vezi cu bki##% ); 80 restul semnalelor. $entru a avea certitudinea comportrii corecte a semnalelor de timp real va trebui s specificm pentru membrul sa%f#ags al structurii siga"tion valoarea 4A%42`23Z, i s folosim unul din semnalele cuprinse ntre 42`.5823 'i 42`.58A7. 4e nseamn semnale de timp realV $utem enumera urmtoarele caracteristici 90#I#+ R semnalele nu se pierd1 dac sunt generate de un numr de ori! de acelai numr de ori vor fi livrate1 80$,I+,I'DEI R cnd avem mai multe semnale neblocate! ntre limitele 42`.5823 'i 42.58A7, cele cu numere mai mici sunt livrate naintea celor cu numere mari /42`.5823 are prioritate mai mare dect 42.5823B ; ;04omunic mai mult informaie R pentru semnalele obinuite singurul argument pasat era numrul semnalului1 cele de tipul real pot comunica mai mult informaie. $rototipul funciei handler este void f1n"(int signo,siginfo%tSinfo,voidS"ontext);

26!

Sorin Adrian Ciureanu unde signo este numrul semnalului iar structura siginfo%t este definit tNpedef str1"t@ int si%signo;//#a fe# "a #a arg1ment1# signo int si%"ode;//42%:46.,42%f:6:6,42%5286., 42%A4;3C2,,42%864`f 1nion sigva# si va#1e;/Sva#oare 0ntreag* sa1 pointer de #a emiL*torS/ Asiginfo%t; 42%A4;3C2, nsemn c semnalul a fost trimis la terminarea unei cereri I7+ asincrone. 42%864`f nseamn c semnalul a fost trimis la plasarea unui mesa" ntr%o coad de mesa"e goale. 42%f:6:6 nseamn c mesa"ul a fost trimis cu funcia sigD1e1e(). 42%5286. semnal generat la expirarea unui timer. 42%:46. semnalul a fost trimis cu funcia ki##(). =n afar de funcia ki##() mai putem trimite semnale cu funcia sigD1e1e(), funcie care ne va permite s trimitem o 1nion sigva# mpreun cu semnalul. $entru 42%:46. nu mai putem conta pe si%va#1e. 'rebuiesc i a"t.sa%siga"(on=f1n";//pointer k f1n"Lie (and#er a"t.sa%f#ags=4A-42`23Z,;//rest time @) &esf(urarea lucrrii $rogram a 7_4ompilm programul cu bg"" -o semna# semna#." i dup lansare observm de cte ori a fost chemat handlerul aciune! n dou cazuri %lsm programul s se termine fr s mai trimitem alte semnale1 %lansm programul n fundal i trimitem mai multe comenzi prin lansarea repetat bki## - ! pid

Sisteme de operare -r trebui s gsim valoarea 9FFFF>nr%de%Jilluri _7 Oin"#1de<signa#.(Y Oin"#1de<stdio.(Y Oin"#1de<string.(Y Oin"#1de<sNs/tNpes.(Y Oin"#1de<1nistd.(Y sig%atomi"%t nsig1sr#=!; void a"Li1ne(int signa#%n1m$er@ BBnsig1sr#;A int main()@ int i; str1"t siga"tion sa; printf(am pid-1# Qd\n,getpid()); memset)Rsa,!,siMeof(sa)); sa.sa%(and#er=a"Li1ne; siga"tion(42`:4.U,Rsa,3:++); /Sai"i efe"t1*m "a#"1#eI.S/ for(i=!;i< !!!!;iBB) @ki##(getpid(),42`:4. );A for(i=!;i<H!;iBB)s#eep(K); printf(42`:4. a ap*r1t de Qd ori\n, nsig1sf# ); ret1rn !; A $rogram > Oin"#1de<signa#.(Y /Svom "ompi#a program1# "1 bg""-o ter ter i vom putea lansa programul n fundal cu b.7ter R Aom citi pid%ul copilului i%i vom putea trimite un semnal cu bki##- !pid-"opi#

26"

2 #

Sorin Adrian Ciureanu i vom vedea starea de ieire /corespunztoare semnalului trimis0. *a o alt lansare n foreground! lsm programul s se termine i observm starea de ieire. & se remarce utilizarea handlerului curatare%copil care este instalat s trateze terminarea unui copil. -ceast abordare permite ca printele s nu fie blocat ntr%un &ait() n ateptarea strii de ieire a copilului_7 Oin"#1de<signa#.(Y Oin"#1de<1nistd.(Y Oin"#1de<setGmp.(Y sig%atomi"%t "opi#%stare%exit; void "1ratare%"opi#(int signa#%n1m$er)@ int stare; &ait(gstare); "opi#%stare%exit=stare; A int main()@ int i; pid%t pid%"opi#; int "opi#%stare str1"t siga"tion sa; memset(Rsa,!,siMeof(sa)); sa.sa%(and#er="1ratare."opi#; siga"tion(42`C_+-,Rsa,3:++); /Sai"i #1"r*mS/ pid%"opi#=fok(); if(pid%"opi# U=!)@ /Ss1ntem 0n p*rinteS/ printf(pid-1# "opi#1#1i este Qd\n,pid%"opi#); s#eep(K!);//s* ne asig1r*m "* n1 termin*m 0naintea "opi##1i A e#se @ /Ss1ntem 0n "opi#S/

Sisteme de operare

2 1

s#eep( T); exe"#p(#s,#s,- ,/,3:++; /Sn1 tre$1ie s* aG1ngem ai"iS/ exit(H); A for(i=!;i< !!!!!!!;iBB); if(^2Z672456-("opi#%stare%exit))@ prinf("opi#1# a ie'it norma# "1 starea exitQd\n,^672545A5:4("opi#%stare%exit)); printf(0n (and#er de terminare am setat varia$i#a g#o$a#* #a va#oarea Qd\n, "opi#%stare%exit);A e#se prinf("opi#1# a ie'it anorma# "1 semna#1# Qd\n,^56.42`("opi#%stare%exit)); ret1rn !; A $rogram & 7_$rogramul vrea s testeze comportarea rea# time a semnalelor din intervalul 42`.5823-42`.58A7. Dup fork() copilul blocheaz recepia celor trei semnale. $rintele trimite apoi cte trei salve purtnd informaie /pentru a verifica ordinea la recepie0! pentru fiecare semnal! ncepnd cu semnalul cel mai puin prioritar. -poi copilul deblocheaz cele trei semnale i vom putea vedea cte semnale i n ce ordine au fost primite. _7 Oin"#1de<signa#.(Y Oin"#1de<stdio.(Y Oin"#1de<string.(Y Oin"#1de<sNs/tNpes.(Y Oin"#1de<1nistd.(Y tNpedef void sigf1n"%rt(int,siginfo%tS,voidS); stati" void sig%rt(int,siginfo%tS,voidS); sigf1n"%rtSsigna#%rt(int,sigf1n"%rtS,sigsetS); int main()@ int i,G;

2 2

Sorin Adrian Ciureanu pid%t pid; sigset%t ne&set; 1nion sigva# va#; printf(42`.5823=Qd,42`.58A7=Qd\n, (int)42`.5823,(int)42`.58A7); if((pid=fork())==!)@//0n "opi# sigemptNset(Rne&set);//iniLia#iMeaM* set semna#e sigaddset(Rne&set,42`.5823);//ada1g* 1n semna# set1#1i sigaddset(Rne&set,42`.5823B ); sigaddset(Rne&set,42`.5823BH); sigpro"mask(42`%B+,C],Rne&set,3:++);//$#o"are re"epLie set semna#e

signa#%rt(42`.5823,sig%rt,Rne&set);/Sfo#ose'te o f1n"Lie aparte pentr1 setare str1"t1ra siga"tion 'i apoi "(eam* f1n"Lia siga"tion()S/ signa#%rt(42`.5823B ,sig%rt,/ne&set); signa#%rt(42`.5823BH,sig%rt,/ne&set); s#eep(W);//de#aN pentr1 a #*sa p*rinte#e s* trimit* toate semna#e#e sigpro"mask(42`%:3B+,C],Rne&set, 3:++)//de$#o"(aM* re"epLia semna#e#or s#eep(K)//#as* timp pentr1 #ivrarea semna#e#or exit(!); A //0n p*rinte s#eep(K);//#as* "opi#1# s* $#o"(eMe semna#e#e for(i=42`.5823BH;iY=42`.5823;i--)@ for(G=!;G<=H;GBB)@ va#.siva#%int=G; sigD1e1e(pid,i,va#);/S0n #o" de ki##() fo#osim a"east* f1n"Lie pentr1 trimitere semna# "1 arg1mente#e)pid%"opi#,nr%semna#,extra%va#oareS/ printf(am trimis semna# Qd,va#=Qd\n,i,G); A

Sisteme de operare

2 3

A exit(!); A stati" void sig%rt(int signo,siginfo%tSinfo, voidS"ontext)@ ptintf(re"epLie semna# OQd,"ode=Qd, iva#=Qd\n,signo,\infoJsi%"ode, infoJsi%va#1e.siva#%int); A /Svom seta str1"t1ra siga"tion 'i apoi vom ape#a f1n"Lia siga"tion() pentr1 a "om1ni"a kerne#1#1i "omportament1# doritS/ sigf1n"%rtSsigna#%rt(int signo, sigf1n"%rtSf1n",sigset%tSmask) @ str1"t siga"tion a"t,oa"t; a"t.sa%siga"tion=f1n"; a"t.sa%mask)Smask; a"t.sa%f#ags=4A-42`23Z,;//foarte important pentr1 a a"tiva rea#time if(signo==42`A+.8)@ Oifdef 4A%2356.:95 a"t.sa%f#ags|=4A%2356.:95; Oenddif Ae#se@ Oifdef 4A%.645A.5 a"t.sa%f#ags|=4A%.645A.5; Oendif A if(siga"tion(signo,Ra"t,Roa"t)<!) ret1rn((sigf1n".rtS)42`%6..); ret1rn(oa"t.sa%siga"tion);A A) ,em & se scrie un program care terge n 9F minute! toate fiierele temporare! /cu extensie.baJ0! din directorul curent. 11.3.3.3. -om(nicaie ntre procese prin sistem G IP-. -ozi de mesa4e

2 4

Sorin Adrian Ciureanu )ecanismele de comunicare ntre procese prin sistem A I$4 sunt de trei tipuri %cozi de mesa"e1 %semafoare1 %memorie parta"at. $entru a genera cheile necesare obinerii identificatorilor! care vor fi folosii n funciile de control i operare! se utilizeaz funcia ftok()) Oin"#1de<sNs/ip".(Y keN%t ftok("onst "(arSpat(name,int id); unde tipul de dat keNt%t este definit n <sNs/tNpes.(Y #uncia folosete informaii din sistemul de fiiere pornind de la pat(name, n1m*r1# i-node i din +4B%ul lui id. 9at(name nu trebuie ters i recreat ntre folosiri deoarece se poate schimba i-node1#. 'eoretic nu este garantat c folosind dou pat(name-1ri diferite i acelai id vom obine dou chei de ;8 bii diferite. =n general! se convine asupra unui pat(name unic ntre clieni i server i dac sunt necesare mai multe calale se utilizeaz mai multe id-1ri. &tructura ip"-perm + structur nsoete fiecare obiect I$4 str1"t ip"%perm@ 1id%t 1id; gid%tgid; 1id%t "1id; gid%t "gid; mode%t mode; 1#ong seD; keN%t keN; A 1id i gid sunt id%urile proprietar! "1id 'i "gid sunt id%urile creator ce vor rmne neschimbate! mode conine permisiunile read-&rite, seD un numr de secven care ne asigur c nu vor fi folosite de procese diferite din ntmplare i! n final!cheia keN. $entru a obine identificatorul care va fi utilizat n funcia de control i operare cu a"utorul funciilor %get(), putem folosi ca prim argument o valoare ntoars de funcia ftok() sau valoarea special I$4% $,IA-'( /n acest caz avem certitudinea c un obiect I$4 nou i unic a fost creat! deoarece nici o combinaie de pathname i id nu va genera valoarea F! datorit faptului c numrul de i%nod este mai mare ca zero0.

2 5 Sisteme de operare &e pot specifia n of#ag 29C%C.6A5,cns de va crea o nou intrare! corespunztor cheii specificate dac nu exist sau 29C%C.6A5| 29C%67C+ cnd!la fel ca mai sus! se va crea o nou cheie dac nu exist sau va returna eroarea 667245 dac de"a exist. Dac serverul a creat obiectul! clienii pot s nu specifice nimic. $ermisiuni I$4 =n momentul creerii unui obiect I$4 cu una din funciile Wget(), urmtoarele informaii sunt salvate n structura ipc%perm -permisiunile de" read sau7i &rite pentru user! grup i alii !V!! read de "*tre 1ser !H!! &rite de "*tre 1ser !!V! read de "*tre gr1p !!H! &rite de "*tre gr1p !!!V read de "*tre a#Lii !!!H &rite de "*tre a#Lii -"1id 'i "gid (id-1ri#e "reator) sunt setai la 1id-1# efectiv 'i gid-1# efectiv al procesului chemtor /acetia nu se pot schimba) -1id 'i gid sunt setai la fel ca mai sus1 se numesc 1id 'i gid proprietar; se pot schimba prin apelul unei funcii de control ctl( ) cu argument IPC%465. Aerificarea permisiunilor se face att la deschiderea obiectului cu %get( ) ct i de fiecare dat cnd un obiect I$4 este folosit. Dac un obiect! la deschidere! are precizat pentru membrul mode s nu aib drept de read grupul i alii i un client! i un client folosete un oflag ce include aceti bii! va obine o eroare chiar la %get( ). -ceast eroare s%ar putea ocoli prin precizarea unui flag F! dar de aceea se vor verifica la orice operaie permisiunile. Iat ordinea testelor%la prima potrivire se acord accesul %superuserului i se permite accesul1 %dac 1id-1# efectiv este egal cu 1id-1# sau "1id-1# obiectului I$4 i dac bitul corespunztor din membrul mode este setat! se permite accesul1 %dac gid-1# efectiv este egal cu cu gid-1# sau "gid-1# obiectului I$4 i bitul corespunztor din membrul mode al obiectului este setat! accesul este permis1 %dac bitul corespunztor din membrul mode al obiectului I$4 este setat! se permite accesul. 4omenzi de vizualizare I$4

2 6

Sorin Adrian Ciureanu bip"s, pentru a vedea informaii pentru fiecare I$4. $entru a terge I$4%uri din sistem folosim Bip"rm -D msg%id /pentru cozi0 bip"rm -m s(m%id /pentru memorie parta"at0 bip"rm -s sem%id (pentru semafoare0 (xist i o sintax cu aceleai opiuni dar cu litere mari unde se specific ca ultim argument cheia. 4ozi de mesa"e .n proces cu privilegiile corespunztoare i folosind identificatorul cozii de mesa"e poate plasa mesa"e n ea! dup cum un proces cu privilegiile corespunztoare poate citi mesa"ele. Nu este necesar /la fel ca la $+&I30 ca un proces s atepte mesa"e inainte ca s plasm mesa"e n coad. Xernelul pstreaz informaiile pentru o coad ntr%o structur definit n <sNs/msg.(Y ce conine str1"t msgid%ds @ str1"t ip"%perm msg%perm;//permisi1ni read&rite msgDn1m%t msgDn1m; //nr.mesaGe preMente 0n "oad* msg#en%t msg%D$Ntes ; //nr.max de $Ntes permi'i 0n "oad* pid%t msg%#spid ; //pid-1# 1#timei operaLii msgsnd() pid%t msg%#rpid ; //pid-1# 1#timei operaLii msgr"v() time%t msg%stime ; //timp1# 1#timei operaLii msgsnd() time%t msg%rtime; //timp1# 1#timei operaLii msgr"v() time%t msg%"time ; /Stimp1# 1#timei operaLii msg"t#() "e a modifi"at str1"t1raS/ +a +23:7 tip1ri#e msgDn1m%t, msg#en%t,pid%t s1nt 1s(ort. #uncia msgget() -re prototipul int msgget(keN%t keN, int msgf#g);

2 Sisteme de operare + nou coad de mesa"e este creat sau se acceseaz o coad existent. Aaloarea de retur este identificatorul cozii de mesa"e i aceasta va fi folosit ca prim argument pentru celelalte funcii de control i operare. $rimul argument al funciei poate fi 29C%9.2EA56 sau o valoare obinut prin apelul funciei ftok(). + nou coad este creat dac specificm 29C%9.2EA56 pentru msgf#g sau dac nu specificm 29C%9.2EA56 dar specificm 29C%C.6A5 i nici o coad nu este asociat cu keN. -ltfel va fi doar referit. #lagul 29C%67C+! dac este mpreun cu 29C%C.6A5 /prin folosirea lui g 0! face ca funcia msgget() s returneze eroarea 667245 dac coada exist de"a. *a crearea unei noi cozi se vor iniializa urmtorii membri ai structurii msDid%ds ) -msg%perm."1id 'i msg%perm.1id sunt setai la userul uid efectiv al procesului chemtor1 -msg%perm."gid 'i msg%perm.gid sunt setai la gid%ul efectiv al procesului apelant1 %cei mai puin semnificativi L bii ai lui msg%perm.mode sunt setai la valoarea celor mai puin semnificativi L bii ai lui msf#g. -msg-Dn1m, msg-#spid, msg-#rpid,msg-stime, msg%rtime, s1nt setaLi #a !; -msg%"time este setat #a timp1# "1rent; -msg%D$Ntes este setat #a #imita sistem1#1i de operare( #a +in1x 84`83B). -lte erori returnate 6ACC64 R dac un identificator exist pentru JeS dar procesul apelant nu are permisiunile necesare1 62.-8 R /*inux0 coada este marcat pentru tergere1 63,635 - coada nu exist i nici nu s%a specificat 29C%C.6A5; 63,868 % /*inux0 o coad trebuie creat dar nu exist memorie pentru structura de date. #uncia msgsnd() 4u a"utorul funciei int msgsnd(int msDid,"ont voidSmsgp,siMe%t, int msgf#g); vom trimite un mesa" n coada specificat prin identificatorul msD1id. -l doilea argument este un pointer ctre un buffer! definit de utilizator! care are n primul cmp o component de tip long i care specific tipul mesa"ului! urmat apoi de poriunea de date.

2 !

Sorin Adrian Ciureanu =n *inux prototipul funciei este int msgsnd(int msD1id, str1"t msg$1fSmsgp, siMe%t msgsM,int msgf#g); #uncia msgr"v() $entru a citi din coad folosim siMe%t msgr"v(int msDid, voidSmsgp, siMe%t msgsM,int msgf#g); -rgumentul msgp este un pointer la o structur buffer! definit de utilizator! care conine ca prim membru un ntreg de tip long ce specific tipul mesa"ului urmat de zona de date str1"t msg$1f@ #ong mtNpe; "(ar mtextF C; A; $rimul membru reprezint tipul mesa"ului recepionat. mtext este textul mesa"ului. -rgumentul msgsM specific lungime n bStes a componentei mtext. )esa"ul recepionat va fi trunchiat la lungimea msgsM dac n cadrul flagurilor msgf#g precizm 84`%3,6..,.. -ltfel funcia msgr"v() va returna eroarea 6HB2`. -rgumentul msgtNpe determin politica la recepie astfel %dac O O F! primul mesa" din coad este solicitat1 %dac O O n]F! primul mesa" de tipul n este solicitat1 %dac O O n\F! primul mesa" al crui tip este mai mic sau egal cu valoarea absolut a lui msgtNp va fi solicitat. -rgumentul msgf#g precizeaz cum s se procedeze dac tipul dorit nu este n coad %dac msgf#g conine i 29C%3,^A25! funcia msgr"v() va returna imediat cu eroarea 63,84`1 astfel se intr n sleep pn cnd %un mesa" de tipul dorit este disponibil n coad1 %coada creia i solicitm un mesa" este distrus de altcineva! astfel c msgr"v() returneaz eroarea 62-.81 %sleepul este ntrerupt de un semnal. Dac recepionarea s%a efectuat cu succes! structura informaional asociat cu msDid este actualizat astfel %msg%Dn1m va fi decrementat cu 91 %msg%#rpid va fi setat la pid-1# procesului apelant1 %msg%rtime este setat la timpul curent. *a *inux prototipul funciei este 4siMe%t msgr"v,(int msDid,str1"t msg$1fSmsgp,

2 " Sisteme de operare 4siMe%t msgsM,#ong msgtNp,\int msgf#g); #uncia msg"t#() $rototipul funciei este1 int msg"t#(int msDid,int "md,str1"t msDid%dsS$1f); &unt permise urmtoarele comenzi 29C%45A va copia informaiile din structura informaional asociat cu msDid n structura indicat prin pointerul buf! dac avem dreptul de read asupra cozii1 29C%465 va scrie unii membri din structura indicat prin pointerul buf n structura de date informaional a cozii1 membrii care pot fi modificai sunt msg%perm.1id msg%perm.gid msg%perm.mode //n1mai +4B h $iLi msg%D$Ntes -ceast actualizare se va efectua dac procesul apelant are privilegiile necesare root sau 1ser id-1# efectiv al procesului este cel al msg%perm."1id sau msg%perm.1id.+a *inux pentru a mri msg%D$Ntes peste valoarea sistem )&6)NB trebuie s fim root. Dup o operaie de control se va actualiza i msg%"time. 29C%.82- va distruge coada al crei identificator a fost specificat n msg"t#() mpreun cu structura de date informaional msDid%ds asociat. -ceast comand va putea fi executat de un proces cu 1ser id-1# efectiv egal cu cel msg%perm."1id sau msg%perm.1id. (rori 623EA+ - msDid greit sau comanda greit 62-.8 coada de"a distrus1 696.8 comanda 29C%465 sau 29C%.82- dar procesul apelant nu are drepturile necesare1 6ACC64 comanda 29C%45A5 dar procesul apelant nu are dreptul de read1 6ZA:+5 comanda 29C%465 sau 29C%45A5 dar adresa specificat de pointerul buf nu este accesibil.

@) &esf(urarea lucrrii $rogram a /Ss"riere-D."-s"ri1 mesaG 0n "oad*

2!#

Sorin Adrian Ciureanu se "ompi#eaM* "1 bg"" o s"riere D s"riere D." 'i se #anseaM* 0n exe"1Lie b.7s"riere%D nr-nive# se introd1" #inii de text. 4e porne'te "itirea "1 bg"" "itire%D nr%nive# 4* se 0n"er"e "itirea "1 nive#1ri diferiteS/ Oin"#1de<stdio.(Y Oin"#1de<errno.(Y Oin"#1de<sNs/ip".(Y Oin"#1de<sNs/msg.(Y Oin"#1de <sNs/stat.(Y str1"t mN%$1f@ #ong mNtNpe; "(ar mNtextFV!!C; A; int main(int arg","(arSargvFC) @ str1"t mN%$1f $1f; int msDid; keN%t keN; if(arg"U=H)@printf(1ti#iMare)a./s"riere-D nive#-n1meri"\n);A if((keN=ftok(s"riere-D.",i+i))==(keN%t)- )@ perror(ftok); exit( ) A if((msDid=msgget(keN,4%2.:4.|4%2^:4.|4%2.`.9|4 %2.,5_|29C%C.6A5))==- )@ perror(msgget); exit( ); A printf)introd1"eLi #inii de text,j- pt. terminare)\n); $1f.mtNpe=atoi(argvF C;/Sn1 ne intereseaM* a"1mS/ &(i#e(gets($1f.mNtext),Ufeof(stdin))@ if(msgsnd(msDid,(str1"t msg$1fS)R$1f,

Sisteme de operare siMeof($1f),!)==- ) perror(msgsnd); A if(msg"t#(msDid,29C%.82-,3:++)==- )@ perror(msg"t#); exit( ) A ret1rn !; A $rogram >

2!1

/S "itire-D."- "ite'te "oada 4e #anseaM* s"rierea) b./s"riere-D nive# se 0n"epe introd1"erea #inii#or de test. 4e iese "1 j-. 4* se #anseMe "itiri#e "1 nive#1ri a#eatoare b./"itire-D nive# S/ Oin"#1de<errno.(Y Oin"#1de<sNs/ip".(Y Oin"#1de<sNs/msg.(Y Oin"#1de<sNs/stat.(Y str1"t mN%$1f @ #ong mtNpe; "(ar mNtextFV!!C; A; int main(int arg","(arSargvFC) @ str1"t mN%$1f $1f; int msDid; keN%t keN; if(arg"U=H)@printf(:ti#iMare)a./"itire-D nive#% n1meri"\n);exit(H);A

2!2

Sorin Adrian Ciureanu if((keN=ftok(s"riere-D.",i+i))==(keN%t)- @ /Sa"eea'i "(eie "a 0n s"riere-"oada."S/ perror(ftok); exit( ); A if((msDid=msgget(keN,4%2.:4.|4%2^:4.|4%2.`.9|4 2.,5_))==- @/S"one"tare #a "oad*S/ perror(msgget); exit( ); A printf("itire mesaG)s1nt gata pentr1 re"epLie mesaGeIII\n); &(i#e( )@/S"itire mesaG n1 se termin* ni"iodat*S/ if(msgr"v(msDid, (str1"t msg$1fS)R$1f, siMeof($1f),atoi(argvF C,!)==- )@ perror(msgr"v); exit( ); A printf("itire-mesaG)\Qs\\n,$1f.mNtext); A ret1rn !; A

A),em & se creeze dou procese numite HclientH i HserverH n care clientul va introduce mesa"e n ir iar serverul va extrage mesa"ul de prioritate maxim. 11.3.3.%. -om(nicaie ntre procese prin sistem G IP-. Semafoare -a cum am artat n capitolele anterioare! semaforul a fost inventat de (dsger Di"Jstra! ca obiect de sincronizare a proceselor. Implementarea din *inux este bazat pe acest concept dar ofer faciliti mai generale. (xist o implementare n &A,<! foarte complex! cu urmtoarele caracteristici

2!3 Sisteme de operare %semafoarele nu exist individual ci numai n seturi! numrul semafoarelor dintr%un set fiind definit la crearea setului1 %crearea i iniializarea sunt dou operaii separate i distincte1 crearea se face prin apelul semget iar iniializarea prin apelul semet ; %deoarece semafoarele rmn n sistemul de operare dup terminarea proceselor care le utilizeaz! ca i la celelate structuri I$4! trebuie gsit o soluie de tratare a situaiilor n care un program se termin fr a elibera semafoarele alocate. #orma structurilor semafoarelor este str1"t semid%ds @str1"t ip"%perm sem%perm; str1"t semSsem%$ase;/Sprim1# semaforS/ 1s(ort sem%1sems; /Sn1m*r1# semafoare#or din setS/ time%tsem%otime; /Stimp1# 1#timei operaLiiS/ time%t sem%"time; /Stimp1# 1#timei modifi"*riS/A *a rndul su! cmpul sem%$ase are urmtoarele structuri str1"t sem @1s(ort semva#; /Sva#oarea semafor1#1iS/ pid%t sempid; /Spid-1# 1#timei operaLiiS/ 1s(ort sem"nt; /Sn1m*r1# de pro"ese "are 0ndep#ines" "ondiLia semva#Y"rtva#S/ 1s(ort semM"nt;/Sn1m*r1# de pro"ese pentr1 semva#=!S/ A; -pelul sistem de creare a semafoarelor este Oin"#1de<sNs/tipes.(Y Oin"#1de<sNs/ip".(Y Oin"#1de<sNs/sem.(Y int semget(keN%t keN,int nsems, int f#ag); /S1nde nsems repreMint* n1m*r1# de semafoare din set; va#oarea #1i se p1ne #a "rearea semafor1#1iS/ -pelul sistem pentru iniializare este int sem"ti(int semid,int semn1m,int"md,1nion semn1m arg); unde parametrii reprezint semn1m indic un semafor din set pentru funciile "md 1nion semn1m arg are urmtoarea structur

2!4

Sorin Adrian Ciureanu 1nion sem n1m @int va#; /Spentr1 465EA+S/ str1"t semid%dsS$1f; /Spentr1 29C%45A5 'i 29C%465S/ 1s(ortSarraN; /Spentr1 `65A++ 'i465A++S/ A "md specific 9F funcii de executat asupra setului identificat de semid. @) &esf(urarea lucrrii $rogram a (ste un program care implementeaz primele semafoare binare! inventate de Di"Jstra! pentru nite procese care intr n seciunea critic. Oin"#1de<sNs/tNpes.(Y Oin"#1de<sNs/ip".(Y Oin"#1de<sNs/sem.(Y Oin"#1de<errno.(Y Odefine 46896.8 !W!! Odefine 5.:6 Odefine ZA+46 ! tNpedef 1nion%sem1n @int va#; str1"t semid%dsS$1f; 1s(ortSarraN; A sem1n; int init%sem(keN%t semkeN) @ int stat1s=!,semid; if((semid=semget(semkeN, ,46896.8 | 29C%C.6A5 | 29C%67C+))==- ) @if(errno==667245) semid=semget(semkeN, ,!);A e#se @sem1n arg; arg.va#= ; stat1s=sem"t (semid,!,465EA+,arg);A if(semid==- || stat1s==- ) @perror(eroare intrare); ret1rn- A ret1rn semid;A /Simp#ementarea operaLiei p(s)S/ int p(int semid)

Sisteme de operare @str1"t sem $1f p%$1f; p%$1f.sem%n1m=!; p%$1f.sem%op=- ; p%$1f.sem%f#g=468%:3-,; if(semop(semid,Rp%$1f, )==- ) @ perror(p(semid)fai#ed); exit( ); A ret1rn !; A /Simp#ementarea operaLiei v(s)S/ int v(int semid) @ str1"t sem$1f v%$1f; v%$1f.sem%n1m=!; v%$1f.sem%op= ; v%$1f.sem%f#g=468%:3-,;

2!5

if(semop(semid,Rv%$1f, )==- ) @ perror(v(semid)fai#ed); exit( ); A ret1rn !; A /Spro"ese "on"1rente "e fo#oses" semafor1#S/ void pro"sem(keN%t skeN)@ int semid; pid%t pid=getpid(); if((semid=init%sem(skeN))<!) exit( ); printf(\npro"es Qd inaintea se"Li1nii "riti"e\n,pid); p(semid); printf(pro"es1# Qd 0n se"Li1ne "riti"*\n, pid); s#eep(T); /Ssim1#are- ai"i se desf*'oar* operaLii#e "riti"eS/

2!6

Sorin Adrian Ciureanu printf(pro"es1# Qd p*r*se'te se"Li1nea "riti"*\n,pid); v(semid); printf(pro"es1# Qd iese\n,pid); exit(!); A /Sprogram1# prin"ipa#, drearea pro"ese#or S/ int main(void) @ keN%t semkeN=!xH!!; int i; for(i=!);i<K;iBB) if(fork()==!) pro"sem(semkeN); A

A),em & se implementeze problema productor%consumator folosind semafoarele. 11.3.3.5.-om(nicaia ntre procese prin sistem G IP-. Memorie parta4at! ?) Consideraii teoretice )ecanismul care permite comunicarea ntre dou sau mai multe procese folosind o zon comun de memorie este folosit frecvent de multiprocesoare. $entru a utiliza memoria parta"at este nevoie de sincronizarea proceselor! deci de utilizarea excluderii mutuale. Implementarea excluderii mutuale se poate face cu obiecte de sincronizare! cel mai adesea cu semafoare. &tructura pentru evidena segmentelor de memorie este str1"t s(mid%ds @str1"t ip"%perm s(m%perm;/Sdrept1ri de a""esS/ str1"t anon%mapSs(m%map; /Spointer spre kerne#S/ int s(m%segsM; /Sdimensi1ne segmentS/ 1s(ort s(m%#k"nt; /SM*vor?rea segment1#1iS/ pid%t s(m%#pid; /Spid petr1 1#tim s(mopS/ pid%t s(m%"pid; /Spid-1# pro"es1#1i "reatorS/ 1#ong s(m%natt"(; /Sn1m*r de ata'*ri "1renteS/ 1#ong s(m%"natt"(; /Ss(minfoS/

time%t s(m%atime; time%t s(m%dtime; time%t s(m%"time; A $entru a obine un identificator de memorie parta"at se utilizeaz apelul s(mget Oin"#1de<sNs/tipes.(Y Oin"#1de<sNs/ip".(Y Oin"#1de<sNs/s(m.(Y int s(mget(keN-t keN,int siMe,int f#ag); @) &esf(urarea lucrrii $rogram a Oin"#1de<stdio.(Y Oin"#1de<signa#.(Y Oin"#1de<sNs/tNpes.(Y Oin"#1de<sNs/ip".(Y Oin"#1de<sNs/s(m.(Y Odefine 4_8]6; (keN%t)!x !!

2! Sisteme de operare /Stimp 1#tima ata'areS/ /Stimp 1#tima deta'areS/ /Stimp 1#tima modifi"areS/

/S"(eia prim1#1i segmentS/ Odefine 4_8]6;H (keN%t) !x AA /S"(eia pentr1 a# doi#ea segmentS/ Odefine 468]6; (keN%t) !x !! /S"(eie pentr1 semafoareS/ Odefine 42< TSB:Z42< /Sdimensi1nea segment1#1i B:Z42< def 0n stdio.( S/ str1"t data$1f @int d%nread; "(ar d%$1fF42<C;A; tNpedef 1nion%sem1n @int va#; str1"t semid%dsS$1f; 1s(ortSarraN;A sem1n; /Sr1tine#e de iniLia#iMareS/ Odefine 2Z+A`4 (29C%C.6A5|29C%67C+) Odefine 6.. ((str1"t data$1fS)- )

2!!

Sorin Adrian Ciureanu stati" int s(mid ,s(midH,semid; void getseg(str1"t data$1fSSp ,str1"t data$1f pH) /Sse "reeaM* segmente#e de memorie partaGat*S/ @if((s(mid =s(mget(48]6;,siMeof(str1"t data$1f), !W!!|2Z+A`4))==- ) @perror(s(mget error); exit( );A /Sata'eaM* segmente#e de memorieS/ if((Sp =(str1"t data$1fS)s(mat(s(mid ,!,!))==6..) @perror(s(mget error); exit( );A if((SpH=(str1"t data$1fS)s(mat(s(midH,!,!))==6..) @perror(s(mget error); exit( );AA int getsem(void) @sem1n x;x.va#=!; /Sse "reeaM*1n set "1 do1* semafoareS/ if((semid=semget(468]6;,H,!W!!| 2Z+A`4))==- ) @perror(semget error); exit( );A /Sse iniLia#iMeaM* va#ori#e semafoare#orS/ if(sem"t (semid,!,465EA+,x)==- ) @perror(sem"t error); exit( );A ret1rn semid;A /Sr1tina pentr1 'tergerea identifi"atori#or memoriei partaGate 'i semafoare#orS/ void remo$G(void) @if(s(m"t (s(mid ,29C%.82-,3:++)==@perror(s(m"t error); exit( );A @if(s(m"t (s(midH,29C%.82-,3:++)==@perror(sem"t error); exit( );A @if(sem"t (semid,29C%.82-,3:++)==- ) @perror(s(m"t error); exit( );AA /SdefiniLie pentr1 operaLii#e p() 'i v() pe "e#e do1* semafoareS/ str1"t sem$1f p =@!,- ,!A,pH=@ ,- ,!A; str1"t sem$1f v =@!, ,!A, vH=@ , ,!A; /Sr1tina de "itireS/ void reader(int semid,str1"t data$1fS$1f , str1"t data$1fS$1fH) @for(;;)@ /S"itire 0n tampon1# $1f S/ $1f Jd%nread=read(!,$1f Jd%$1f,42<); /Sp1n"t de sin"roniMareS/ semop(semid,Rv , );

2!" Sisteme de operare semop(semid,RpH, ); /Stest pentr1 evitarea ina"tivit.pro". &riterS/ if($1f Jd%nread<=!) ret1rn; $1fHJd.nread=read(!,$1fHJd%$1f,42<); semop(semid,Rp , ); semop(semid,RvH, ); if($1fHJd%nread<=!) ret1rn; /Sr1tina pentr1 s"riereS/ void &riter(int semid,str1"t data$1fS$1f , str1"t data$1fS$1fH)@ for(;;)@ semop(semid,Rp , ); semop(semid,RvH, ) if($1f Jd%nread<=!) ret1rn; &rite( ,$1f Jd%$1f,$1f Jd%nread); semop(semid,Rp , ); semop(semid,RvH, ); if($1fHJd%nread<=!) ret1rn; &rite( ,$1fHJd%$1f,$1fHJd%nread);AA /Sprogram prin"ipa#S/ int main(void) @int semid; pid%t pid; str1"t data$1fS$1f ,S$1fH) semid=getsem();getseg(R$1f ,S$1fH); s&it"((pid=fork()) @"ase- ;perror(forkerror);exit( );$reak; "ase !; /Spro"es fi1S/ &riter(semid,$1f ,$1fH); remo$G(); $reak; defa1#t)/Spro"es p*rinteS/ reader(semid,$1f ,$1fH); $reak;A exit(!);

11.3.3.6. -om(nicaia ntre fire de e#ec(ie ?) Consideraii teoretice

2"#

Sorin Adrian Ciureanu =n capitolul ; am definit firele de execuie i motivele din care au fost introduse. #irele de execuie /thread%urile0 pot fi considerate ca nite subuniti ale proceselor. 4rearea unui fir de execuie se face prin comanda Oin"#1de<pt(read.(Y int pt(read%"reate(pt(read%tSt(read,"onst pt(read% attrtSattr,voidS(start%ro1tine)(voidS),void arg); #irul de execuie nou creat va executa codul din start%ro1tine cruia i se transmit argumentele arg. Noul fir de execuie are atributele transmise prin attr, iar dac ele sunt implicite se utilizeaz N.**. Dac funcia se execut cu succes ea va returna F i n thread se va pune identificatorul nou creat. 'erminarea execuiei unui fir de ateptare se specific prin apelul funciei pt(read. Oin"#1de<pt(read.(Y void pt(read%exit(voidSstat1s); + alt proprietate a unui fir de execuie este detaarea. #irele de execuie detaate elibereaz! n momentul terminrii lor! memoria pe care au deinut%o! astfel c alte fire nu se pot sincroniza cu fire detaate. Implicit! firele sunt create cu atributul Goina$#e, ceea ce face ca alte fire s poat specifica c ateapt terminarea unui astfel de fir. Oin"#1de<pt(read.(Y int pt(read%Goin(pt(read%t t(read,void stat1s); @) &esf(urarea lucrrii $rogram a Oin"#1de<stdio.(Y Oin"#1de<pt(read.(Y int g#o$a#=T; voidS"opi#f1n"Lie(voidSp) @printf("opi#ai"i,pid=Qd,g#o$a#=Qd\n,getpid(), g#o$a#()); g#o$a#= T; printf("opi#,g#o$a#a"1m=Qd\n,g#o$a#);A main() @pt(read%t "opi#; pt(read%"reate(R"opi#,3:++,"opi#f1n"Lie,3:++); printf(p*rinte,pid=Qd,g#o$a#=Qd\n,getpid(), g#o$a#); g#o$a#= !;

2"1 Sisteme de operare pt(read%Goin("opi#,3:++); printf(n1"opi#,g#o$a#=Qd\n,g#o$a#);A 9rogram1# se va "ompi#a astfe# bg"" -o sorin sorin." -#pt(read unde sorin." este fiierul surs. .n posibil rspuns ar fi "opi# ai"i,pid=KWe!,g#o$a#=T "opi#,g#o$a# a"1m T p*rinte,pid=KWe!,g#o$a#= T n1 "opi#,g#o$a#= ! A) ,em & se creeze trei fire de execuie n care %primul fir calculeaz media aritmetic a n numere citite! %al doilea fir calculeaz media geometric a n numere citite! %al treilea fir calculeaz media armonic a n numere citite. /n i numerele se citesc de la tastatur0 . -poi s se compare rezultatele.

11.,.,.6.1 Fun&tii pentru e8&lu)erea (utuala in !tan)ar)ul POSIC 14 Mute8uri a0 Initializarea unui mutex se face cu functia hinclude\pthread] int pthreadWmutexWinit/pthreadWmutexWt _mutx const pthreadWmutexWattr _attr01 #unctia creeaza un nou mutex! cu atributele specificate de attr sau cu atributeleimplicite.Nu este absolut necesara utilizarea acestei functii pentru ca o initializare implicita a unui mutex are loc la decalarea sa in program b0 Blocarea unui mutex se face cu functia hinclude\pthread] int pthreadWmutexWinit/pthreadWmutexWt _mutx const pthreadWmutexWt _mutx01 Daca functia gaseste mutx de"a blocat! firul de executie curent intra in asteptare pana cand ul alt fir il va debloca. c0Blocarea unui mutex cu testarea valorii acestuia! permite ca firul curent sa nu fie pus in asteptare. hinclude \pthread] int pthreadWmutexWtrSlocJ/pthreadWmutexWt mutx01

2"2

Sorin Adrian Ciureanu Daca mutx este liber in momentul apelului! el va fi blocat!iar functia va returna zero.In caz contrar se revine din functie cu eroare!fara apune firul curent in asteptare. d0 Deblocarea unui mutex se face prin apelarea functiei h include \pthread] int pthreadWmutexWunlocJ/pthreadWmutexWt _mutx01 Daca firul curent este momentan proprietatea lui mutx!acesta va fi deblocat.Daca exista fire de executie in asteptare la mutx!atunci planificatorul pentru fire l va selecta pe cel ce va obtine mutx!altfel mutx ramane disponibil pentru urmatorul fir care va apela functia pthreadWmutex% unlocJ. 90 program a $rogramul calculeaza suma numerelor naturale d ela 9 la @F dar fiecare numar este adunat la totalul declarat ca variabila globala de un fir de executie separat. -ccesul firelor la variabila globala este controlat d eun mutex iar in absenta acestuia valoarea lui totWitems nu poate fi determinata corect. h include \stdio.h] h include\pthread.h] h include\stdlib.h] h define NXID& @F int totWitemsOF1 pthreadWmutexWt mutx1 struct Jidreci int data1 pthreadWt id1j1 void _Jidfunc/void_p0i int _ipO/int_0p1 int! tmp!n1 pthreadWmutexWlocJ/kmutx01 tmpOtotWitems1 7_ for/nO@FFFF1n%%101_7 totWitemsOtmp>_ip1 pthreadWmutexWunlocJ/kmutx01j int main/0i struct Jidrec JidsTNXID&U1 int n1 for/mOF1m\NXID&1m>>0i JidsTmU.dataOm>91 pthreadW"oin/JidsTmU.id!N.**01

2"3 Sisteme de operare printf/G(nd.'otalOKdH!tot%items01j 4iclul for din codul functiei Jidfunc nu are nici o semnificatie pentru cazul codificarii corecte prezentate aici.daca se elimina mutexul prin acest ciclu for se creeaza o incarcare artificiala a sistemului care va face ca tot totWitems sa obtina si alte valori decat cea corecta. "4Se(afoare + gneralizare a mutexului este seamforul! considerat in standardul $threads ca o variabila cu valori de tip intreg! parta"ata inte firele de executie. $ricipalele operatii asupra semafoarelor sunt incrementarea atomica!asteptarea ca semaforul sa aiba o valoare nenegativa si decrementarea saa tomica. #unctiile pentru llucrul cu semafoare au prototipurile in \semaphore.h] . $rincipalele functii sunt % int semWinit/semWt _sem!int pshared!unsigned int value01 Initializeaza la vlaue valoarea semforului spre care indica sem.$rin argumnetul pshared se indica daca semaforul este local procesului curent/psharedOF0 sau poate fi parta"at de mai mult eporcese.&e precizeaza ca momentan in *inux nu se permite parta"area. % int semW:ait/semWt _sem01 &uspenda firul de executie aplenat pana cand valoarea semaforului spre care indica sem devine nenegativa.-tunci valoarea semaforului este decrementata atomic. % int semWtrS:ait/semWt! _sem01 (ste varianta fara blocare a lui sem%:ait.Daca semaforul spre care tinde sem are valoare diferita de zero acesta este decrementat atomic si sem.trS:ait returneaza imediat zero.Daca valoarea semaforului este zero sem.trS:ait revine imediar semnaland eraorea (6-IN. % int semWpost/semWt _sem01 &e incementeaza atomic valoarea semaforului spre care indica sem.-c:asta functie nu conduce niciodata la blocare si poate fi folJosita in rutinele de control a semnalelor. % int semWgetvalue/semWt _sem! int _sval01 &e memoreaza valoarea curenta a semaforului indicat de sem in locatia spre care indica sval. % int semWdestroS/semWt _sem01 &e distruge un semafor eliberand toate resursele detinute de acesta. &e presupune ca in momnetul apelului nu exista fire de executie inasteptare la sem. In implentareaa ctuala de *inux nu exista resurse asociate semfoarelor. $rogram9

2"4

Sorin Adrian Ciureanu &e folosesc tampoane duble pentru a reduce timpul de executie a operatiilor de I7(. hinclude\pthread.h] hinclude\sSs7tSpes.h] hinclude\semaphore.h] hdefine B&Ia( 9F8< semWt emptSbufWsem!fullbufWsem1 structi char dataTB&Ia(U1 int size1j bufT8U1 void _reader/void_p0i int iOF1 semWinit/kemptSbufWsem!F!801 seminit/kfullbufWsem!F!F01 :hile/90i semW:ait/kemptSbufWsem01 bufTiU.sizeOread/F!bufTiU.data!B&Ia(01 semWpost/kfullbufWsem01 if/bufTiU.size\OF0 breaJ1 jj void _:riter/void_p0i :hile/90i semW:ait//kfullbufWsem01 if/bufTiU.size\OF0 breaJ1 :rite/9!bufTiU.data!bufTiU.size01 semWpost/kemptSbufWsem01jj int main/0i pthreadWt!treader!t:riter1 pthreadWcreate/ktreader!N.**!reader!N.**01 pthreadWcreate/kt:riter!N.**!:riter!N.**01 pthreadW"oin/:riter!N.**01j #irul pentru citire/reader0umple pe rabd cele doua tampoane!preluand informatii dinfisierul standard de intrare! iar firul pentru scriere/:riter0ia datele din tampoanele pline si le duce spre fisierul de iesire standard. 4ele doua fire se sincronizeaza folosind doua semafoare emptS%bufWsem numara cate tampoane au fost golite pe firul pentru scriere! iar fullbuf%sem numara cate tampoane au fost umplute de firul pentru citire. Initializarea

2"5 Sisteme de operare semaforului emptSbufWsem este obligatorie! pentru ca valoarea de start e diferita de zero.4elalt semfor nu trebuie neaparat initializat prin apel la semWinit! deoarece initializarea cu zero se produce la alocarea spatiului pentru semafor. ,.Sin&roni-area &u +aria>ile )e &on)itie #olosind doar concpetul de mutex sau chiar de semafor! firele de executie nu iis pot transmite efectiv informatia!ci pot doar s aiis sincronizeze accesul la resursele parta"ate sau sa anunte un eveniment. + comunicare mai complexa este realizata prin variabilele de conditie! care permit ca un fir d eexecutie sa se blocheze pana cand este satisfacuta o anumita conditie. Aariabilele de conditie se folosesc totdeuna impreuna cu un mutex.Aaloarea variabilei de conditie este testata sub protectia mutexului! iar daca valoarea este falsa firul aplenat se blocheaza la variabila conditie! eliberand atomic mutexul.4and un alt fir schimba conditia el poate semnala variabilei d econditie sa determine reluarea unuia sau a mai multor fire de asteptare.-cestea vor trebui sa obtina din nou mutexul si sa reevalueze conditia. Nu exista nici o ordine impusa pentru deblocarea firelor de astptare la o variabila de conditie. $rincipalel functii sunt

%int pthreadWcondWinit/pthreadWcondWt_cond!const ptreadWcondWattr_attr01 &e creeaza o noua variabila conditie cu atributele specificate de attr sau cu cele implicite daca attrON.**.(xecutia cu succes a functiei face identificatorul noii variabile conditie sa se memoreze in locatia spre care indica argumentul cond. %int pthreadWcondWdestroS/pthread%condWt _attr01 Distrugerea unei variabile conditie realizabila in principiu prinapelarea functiei pthreadWcondWdestroS nu se paote efectua daca aceasta este referita de un alt fir. %int pthreadWcondW:ait/pthreadWcondWt_cond!pthreadWmutexWt_mutex01 .n apel la aceasta functie apare atunci cand un fir de executie obtine un mutex si in sectiunea critica testeazadaca un anumit predicat/conditie0 are valoarea true.Daca acel predicat este false firulva astepta la o variabila de conditie!apeland aceasta functie cu variabila de conditie ca prim argument si cu mutexul detinut ca al doilea argument. % int pthreadWcondWsignal/pthreadWcondWt _cond01 &e deblocheaza numai unul dintre firele de asteptare la varibila de conditie specificata prin cond.-legerea firului de executie deblocat este facuta de palnificatorul firelor.

2"6

Sorin Adrian Ciureanu

$rogram8 .tilizarea variabilelr de conditie este ilustrata printr%o solutie a problemei clasice producator%consumator prin tampon de caapcitate limitata. $rogramul se desfasoara ca un ciclu infinit dar se afiseaza mesa"e la intrarea in asteptare a fiecaruia dinre firele producator si consumator. hinclude \pthread.h] hdefine )-3 8F int `ueueT)-3U1 int iOF! ipOF!icOF!lengthOF1 pthread mutexWt mutex1 pthreadWcondWt prod! cons1 int getWprod/0i iO/i>90K)-31return i1j void putWcons/int iFij void add/int i0i `ueueTipUOi1ipO/ip>90K)-31length>>1j int remove/0i int i1 iO`ueueTicUicOiic>90K)-31length%%1return i1j void _ producerLvoid _arg0 iint p1 :hile/90 ipOgetWprod/01 pthreadWmutexWlocJ/bmutex01 :hile/length]O)-30i printfHproducer :aits....fnH01 pthreadWcondW:ait/kprod!kmutex01j add/p01 pthreadWmutexWunlocJ/kmutex01 pthreadWcondWsignal/kcons01jj void _consumer/void _arg0i int c1 :hile/90i pthreadWmutexWlocJ/bmutex01 :hile/lengthOOF0i printfHconsumer :aits....fnH01 pthreadWcondW:ait/kprod!kmutex01j cOremove/01 pthreadWmutexWunlocJ/kmutex01 pthreadWcondWsignal/kprod01putWcons/c01jj

Sisteme de operare int main/Fi pthreadWt pr! con1 pthreadWcreate/kpr!N.**!producer! N.**01 pthreadWcreate/kcon!N.**!consumer! N.**01 pthreadW"oin/con! N.**01j

2"

.3.3.7. Interfaa S8-A,) ?) Consideraii teoretice Interfaa &+4X(' reprezint o facilitate general de comunicare a proceselor aflat! n general! pe maini diferite. .n &+4X(' poate avea tipuri diferite i poate fi asociat cu unul sau mai multe procese! existnd n cadrul unui domeniu de comunicaie. Datele pot fi schimbate numai ntre &+4X('%uri aparinnd aceluiai domeniu de comunicaie. (xist dou primitive pentru &+4X('%uri. $rima primitiv Oin"#1de<sNs/tNpes.(Y Oin"#1de<sNs/so"ket.(Y int so"ket(int domain,int tNpe,intproto"o#) int domain este un parametru ce stabilete formatu adreselor mainilor implicate n transferul de date. .zual aceste domenii sunt AZ-:327! care stabilete domeniile de comunicare local /.NI301 AZ-2365! care folosete protocolul '4$7I$ i este utilizat n IN'(,N('. int tNpe se refer la modalitile de realizare a comunicrii. 4ele mai utilizate tipuri sunt 4,C]-45.6A8! n care un flux de date se transmite ntr%o comunicare de tip full%duplex1 4,C]--`.A8! n care se stabilete o comunicare fr conexiune cu utilizarea datagramelor. int proto"o# specific protocolul particular utilizat pentru transmisia datelor. De obicei se utilizeaz valoarea F/zero0. - doua primitiv este 4,C]659A2.()

2"!

Sorin Adrian Ciureanu -ceasta se utilizeaz pentru crearea unei perechi de &+4X('%uri conectate. Oin"#1de<sNs/tNpes.(Y Oin"#1de<sNs/so"ketY int so"ketpair(int domain,int tNpe,int proto"o#, int 4EFHC; $rimele trei argumente sunt la fel ca la socJet iar cel de%al patrulea argument &AT8U este la fel ca la pipe. @)&esf(urarea lucrrii $rogram a Oin"#1de<sNs/tNpes.(Y Oin"#1de<sNs/so"ket.(Y Oin"#1de<netinet/in.(Y Oin"#1de<stdio.(Y Oin"#1de<errno.(Y Oin"#1de<1nistd.(Y Oin"#1de<string.(Y Oin"#1de<sNs/&ait.(Y main() @int sdFHC; /SmesaGe#e fo#ositeS/ "(arSp=s1nt p*rinte#e; "(arS"=s1nt "opi#1#; "(ar tamponFT!!C; /Sse "reeaM* pere"(ea de so"ket1riS/ if(so"ketpair(AZ%:327,4,C]%45.6A8,!,sd)==- ) @perror(eroare #a "rearea so"ket);exit( );A /S"rearea fi1#1iS/ s&it"((fork()) @"ase - ) /SeroareS/ perror(eroare #a "rearepro"es); exit( ); $reak; "ase !) /Sfi1S/ /S"itim din so"ket mesaG1#S/ if(read(sdF C,tampon, !!)<!) @perror(eroare #a "itire); exit(H);A prinf(pro"es1# "1 pid-1#Qd(fi1)a primitQs\n, getpid, tampon); /Ss"riem mesaG1# "opi#1#1iS/

Sisteme de operare if(&rite(sdF C,", !!)<!) @perror(eroare #a "itire); exit(H);A /Strimitem 6,ZS/ "#ose (sdF C); exit(!); defa1#t )/Sp*rinteS/ /Strimitem mesaG1#p*rinte#1iS/ if(&rite(sdF!C,p, !!)<!) @perror(eroare s"riere); exit(K);A /S"itim mesaG1# pornind de #a "opi#S/ if(read(sdF!C,tampon, !!)<!) @perror(eroare "itire); exit(K);A printf(pro"es1# "1 pid Qd(p*rinte) a pornitiQsi\n,getpid(),tampon); /Ss* a'tept*m terminarea "opi#1#1iS/ if(&ait(3:++)<!) @perror(eroare &ait); exit(K);A "#ose(sdF!C); ret1rn(!);AA Dup rulare se va afia procesul cu pidul 9FQL?/fiul0 gsunt printeleg procesul cu pidul 9FQLP/printele0gsunt fiulg eroare No child proces

2""

A) ,em & se creeze o pereche de socJet%uri n care primul socJet va trimite celui de%al doilea socJet un ir de caractere! iar cel de%al doilea va returna primului socJet caracterele ordonate dup alfabetul -&4II. 11.3.3.F. Model(l client'ser&er-)-P ?) Considerente teoretice =n modelulSer,er client 7server o main &lient numit server ofer anumite B&P B&P servicii altor maini numite clieni. so"ket() '4$ /'ransmission 4ontrol $rotocol0 este un protocol de so"ket() comunicaie care realizeaz legtura ntre client i server prin intermediul socJeturilor! utiliznd streamuri. $ind() &chema general de funcionare client7server R '4$! n *inux! este dat n fig. 9F.8. #isten()
a""ept() "onne"t()

read()

&rite()

&rite()

read()

"#ose()

"#ose()

3##

Sorin Adrian Ciureanu

Fi . 1P.". S&'e(a )e fun&ionare &lient2!er+er%TCP. Ser+er TCP &e execut urmtoarele apeluri sistem so"ket() se creaz un socJet care va trata conexiunile cu clienii. $ind() - se ataeaz socJetul creat anterior la un port de comunicaie. #isten() se instaleaz socJetul n vederea ascultrii portului pentrustabilirea conexiunii cu clienii. a"ept() se ateapt realizarea unei conexiuni cu un client i apoi acest apel blocheaz programul pn cnd vine o cerere de conectare de la alt client. read(),&rite() primitive pentru schimbul de mesa"e client7server. "#ose() se nchide conexiunea cu clientul. Client TCP

3#1 Sisteme de operare &e utilizeaz aceleai apeluri sistem ca i la server! cu excepia primitivei a""ept() care trebuie s conin adresa I$ i portul serverului la care se conecteaz clientul. *a apelul read() din server va corespunde un apel &rite() la client iar la &rite() din server va corespunde un apel read() n client. $rimitivele utilizate n acest protocol sunt a) $ind() Oin"#1de<sNs/tNpes.(Y Oin"#1de<sNs/so"ket.(Y int $ind(int so"kd,str1"t so"kaddrSaddr, so"k#en%t addr#en);

int so"k d este descriptorul serverului. str1"t so"kaddrSaddr este o structur care reine informaia de adres pentru orice tip de socJet%uri.(ste definit astfel str1"t so"kaddr @1nsignet s(ort sa%fami#N; "(ar sa%dataF WC A =n cazul IN'(,N('%ului structura utilizat este str1"t so"kaddr%in @s(ort int sin%fami#N)/Sfami#ia de adrese AZ%2365S/ 1nsignet s(ort int sin%port;/Sport1#(!-WTKWT)S/ str1"t in%addr sin%addr; /Sadresa 2nternetS/ 1nsignet "(ar sin%MeroFeC; /So"teLi ne1ti#iMaLiS/ A 'rebuie testat c sin%Mero este nul i acest lucru se realizeaz prin funciile $Mero() sau manset(). -dresa Internet este stocat n structura in%addr ) str1"t in%addr @1nsigned #ong int s%addr;A/Sadresa 29S/ b) #isten() Oin"#1de<sNs/so"ket.(Y int #isten(int so"kd,int $a"k#og); -$a"k#og arat numrul de conexiuni permise n coada de ateptare a conexiunilor clieni! uzual fiind @. c) a""ept() &e ruleaz ateptarea de ctre master. Oin"#1de<sNs/tNpes.(Y Oin"#1de<sNs/so"ket.(Y

3#2

Sorin Adrian Ciureanu in a""ept(int so"d,str1"t so"kaddrSaddr, so"k#en%tSaddr#en) @) &esf(urarea lucrrii

-cest program creeaz un server i un client1 serverul primete un ir de caractere de la client i l trimite napoi n ecou. 4lientul citete un ir de caractere de la intrarea standard! il trimite serverului! apoi ateapt ca serverul s l returneze. servertcp.c Oin"#1de<sNs/tNpes.(Y Oin"#1de<sNs/so"ket.(Y Oin"#1de<netinet/in.(Y Oin"#1de<errno.(Y Oin"#1de<1nist.(Y Oin"#1de<stdio.(Y Oin"#1de<string.(Y Oin"#1de<std#i$.(Y Odefine 9,.5 e!e /Sse define'te port1# S/ extern int errno; /S"od1# de eroareS/ /Sprogram1#S/ int main() @/Sstr1"t1ri#e 1ti#iMate de server 'i "#ientS/ str1"t so"kaddr%in server; str1"t so"kaddr%in from; "(ar tamponF !!C; /SmesaG trimis de "#ientS/ int sd; /Sdes"riptor1# de so"ketS/ /Sse "reaM* 1n so"ketS/ if((sd=so"ket(AZ%2365,4,C]%45.6A8,!))==- ) @perror(eroare so"ket()\n); ret1rn errno;A /Sse preg*tes" str1"t1ri#e de dateS/ $Mero(Rserver,siMeof(server)); $Mero(Rfrom,siMeof(from)); /S1mp#em str1"t1ra fo#osit* de serverS/

3#3 Sisteme de operare server.sin%fami#N=AZ%2365;/Sfami#ia de so"ket1riS/ server.sin%addr.s%addr=(ton#(23A--.%A3;);/Sse a""ept* ori"e adres*S/ server.sin%port=(tons(9,.5);/Sport 1ti#iMatorS/ /Sse ata'eaM* so"ket1#S/ if($ind(sd,(str1"t so"kaddrS)Rserver, siMeof((str1"t so"kaddr))==- ) @ perror(eroare #a $ind().\n); ret1rn errno; A /Sserver1# as"1#t* #inia da"* vin "#ienLiS/ if(#isten(sd,T)==- ) @ perror(eroare #isten().\n); ret1rn errno; A /Sse serves" "#ienLiiS/ &(i#e( ) @ int "#ient; int #engt(=siMeof(from);

printf(se a'teapt* #a port1# QdI\n,9,.5); ff#1s((stdo1t); /Sse a""ept* 1n "#ientS/ /Sserver1# se $#o"(eaM* p?n* #a rea#iMarea "onexi1niiS/ "#ient=a""ept(sd,(str1"t so"kaddrS)Rfrom,R#engt(); /Seroare de a""eptarea "onexi1nii de #a 1n "#ientS/ if("#ient<!) @ perror(eroare #a a""ept().\n); "ontin1e; A $Mero(tampon, !!);/Ss-a rea#iMat "onexi1nea, se a'teapt* mesaG1#IS/ printf(a'tept*m mesaG1#I\n);

3#4

Sorin Adrian Ciureanu ff#1s((sdo1t); /Sse "ite'te mesaG1#S/ if(read("#ient,tampon, !!)<=!) @ perror(eroare #a read()de #a "#ient.\n); "#ose("#ient); "ontin1e;/Ss-a 0n"(is"onexi1nea "1 "#ient1#S/ "ontin1e; A printf(mesaG re"epLionatI\n trimitem mesaG 0napoiI); /Sse ret1rneaM* mesaG1# "#ient1#1iS/ if(&rite("#ient,tampon, !!)<=!) @ perror(eroare #a &rite() "*tre "#ient.\n); "ontin1e;/Sse "ontin1* as"1#tareaS/ A e#se printf(transmitere "1 s1""es.\n); /Sam terminat "1 a"est "#ient, se 0n"(ide "onexi1neaS/ "#ose("#ient) A /S&(i#eS/

A Cod1# s1rs* a# "#ient1#1i este clienttcp.c /SC#ient-t"p (e"(oS/) /Sretransmite server1#1i mesaG1# primit de #a a"estaS/ Oin"#1de<sNs/tNpes.(Y Oin"#1de<sNs/so"ket.(Y Oin"#1de<netinet/in.(Y Oin"#1de<errno.(Y Oin"#1de<1nistd.(Y Oin"#1de<stdioY Oin"#1de<std#i$.(Y client-tcp.c

Sisteme de operare Oin"#1de<netd$.(Y Oin"#1de<string.(Y /S"od1# de eroare ret1rnat ape#1riS/ extern int errno; /Sport1#de "one"tare #a serverS/ int port;

3#5

de

an1mite

/Sprogram1#S/ int main(int arg","(arSargvFC) @ /Sdes"riptor1# de so"ketS/ int sd; /Sstr1"t1ra 1ti#iMat* #a "one"tareS/ str1"t so"kaddr%in server; /SmesaG transmisS/ "(ar tamponF !!C; /Stestarea arg1mente#or din #inia de "omand*S/ if(arg"U=K) @ printf(sintaxa)Qs<adresa%serverY<portY\n, argvF!C); ret1rn- ; A /Sse sta$i#e'te port1#S/ port=atoi(argvFHC); /Sse "reeaM* so"ket1#S/ if((sd=so"ket(AZ%2365,4,C]%45.6A8,!))==- ) @ perror(6roare #a so"ket().\n); ret1rn errno; A /S1mp#em str1"t1ra fo#osit* pentr1 rea#iMarea "onexi1nii "1 server1#S/ server.sin%fami#N=AZ%2365;/Sfami#ia so"ket1#1iS/ server.sin%addr.s%addr=inet%addr(argvF C;)/Sadres a 29 a server1#1iS/ server.sin%port=(tons(port);/Sport1#de "one"tareS/ /Sne "one"t*m #a serverS/

3#6

Sorin Adrian Ciureanu if("onne"t(sd,(str1"t so"kaddrS)Rserver, siMeof(str1"t so"kaddr))==@ perror(6roare #a "onne"t().\n); ret1rn errno; A /S"itirea mesaG1#1i 'i transmiterea "*tre serverS/ $Mero(tampon, !!); printf(introd1"eLi mesaG1#)); ff#1s((stdo1t); read(!,$1ffer, !!); if(&rite(sd,tampon, !!)<=!) @ perror(6roare #a &rite() spre srver.\n); ret1rn errno; A /S"itirea r*sp1ns1#1i dat de server (ne $#o"*m p?n* "?nd server1# r*sp1nde)S/ if (read(sd,tampon, !!)<!) @ perror(6roare #a read()de #a server.\n); ret1rn errno; A /Safi'area mesaG1#1i primitS/ printf(mesaG1# primit este)Qs\n,tampon); /Scn"(iderea "onexi1nii, am terminatS/ "#ose(sd); A $entru compilarea clientului i a serverului vom folosi comenzile bg"" -o servert"p servert"p." bg"" -o "#ientt"p "#ientt"p." $entru execuia programelor b ./servert"p b ./"#ientt"p HX.!.!. e!e A),em. & se creeze dou fiiere! server i client! n care clientul trimite serverului numere ntregi iar serverul va returna clientului numai numerele pare dintre cele transmise /n '4$0.

Sisteme de operare 11.3.3.@. Model(l client'ser&er-U1P "User 1atagrama Protocol$

3#

=n acest protocol de transmisie a datelor nu se realizeaz o conexiune ntre client i server pentru ca apoi s se citeasc i s se scrie date. =n .D$ transmisia este asincron! n sensul c clientul i serverul i trimit mesa"e unul altuia prin intermediul primitivelor &(ND i ,(4(IA(. &tructura de date transmis se numete datagram. +rganizarea .D$ este dat n fig.9F.;.
Ser,er U1P so"ket() &lient U1P so"ket()

$ind() cerere re"from() r-spuns sento()

$ind()

sendto()

re"from()

"#ose()

"#ose()

Fi .11.,. Or ani ra(a UDP -pelurile folosite sunt re"from() "1 sintaxa) Oin"#1de<sNs/tNpes.(Y Oin"#1de<sNs/so"ket.(Y int re"vfrom(int so"kd.voidS$1f,siMe%t #en, int f#ags,str1"t so"kaddrSfrom,so"k#en.tSfrom#en); sendto() "1 sintaxa) Oin"#1de<sNs/tNpes.(Y Oin"#1de<sNs/so"ket.(Y int sendto(intso"kd,"onst voidSmsg,siMe%t #en, int f#ags, "onst str1"t so"kaddSto,so"k#en%t

3#!

Sorin Adrian Ciureanu to#en); @) &esf(urarea lucrrii serverudp.c /Sserver :-9 iterativ (e"(o) A'teapt* 1n mesaG de #a "#ienLi; 8esaG1# primit este trimis 0napoi.S/ Oin"#1de<sNs/tNpes.(Y Oin"#1de<sNs/so"ket.(Y Oin"#1de<stdio.(Y Oin"#1de<netinet/in.(Y Oin"#1de<errno.(Yss Oin"#1de<1nistd.(Y /Sport1# fo#ositS/ Odefine 9,.5 e!e

/S"od1# de eroare ape#1riS/ extern int errno;

ret1rnat

de

an1mite

/Sprogram1#S/ int main() @ /Sstr1"t1ri#e fo#osite de server 'i "#ientS/ str1"t so"kaddr-in adresa; str1"t so"kaddr "#ient; "(ar $1fferF !!C; /SmesaG1# trimis de "#ientS/ int sd; /Sdes"riptor1# de so"ketS/ /S#ans*m server1# 0n f1nda#IS/ s&it"((fork()) @ "ase ) /Seroare #a forkS/ perror(Zork error\n;

Sisteme de operare ret1rn errno; "ase !) /S"opi#1#tr*ie'teS/ $reak; defa1#t) /Sp*rinte#e moareIS/ print(server1# a fost #ansat f1nda#\n); exit(!); A /S"reem 1n so"ketS/ if ((sd=so"ket(AZ%2365,4,C]%-`.A8,!))==- ) @ perror(6roare #a so"ket().\n); ret1rn errno; A /Spreg*tim str1"t1ra fo#osit* de serverS/ adresa.sin%fami#N=AZ%2365; /Ssta$i#irea fami#ei de so"ket-1riS/ adresa.sin%addr.s%addr=(ton#)23A--.%A3;); /Sa""ept*m ori"e adres*S/ adresa.sin%port=(tons(9,.5); /S1ti#iM*m 1n port 1ti#iMatorS/ /Sata'*m so"ket1#S/ int ($ind(sd,str1"t so"kaddrS)Radresa, siMeof(str1"t so"kaddr))==- ) @ perror(6roare #a $ind().\n); ret1rn errno; A /Sservim 0n mod iterativ "#ienLiiS/ &(i#e( ) @ int $Ntes; int #engt(=siMeof("#ient); /S"itim mesaG1# primit de #a "#ientS/ if($Ntes=re"vfrom(sd,$1ffer, !!,!, R"#ient,R#engt())<!)

3#"

0n

31#

Sorin Adrian Ciureanu @ perror(6roare #a re"vfrom()de #a "#ient.\n); ret1rn errno; A /S..d1p* "are 0# trimitem 0napoiS/ if(sendto(sd,$1ffer,$Ntes,!,R"#ient,#engt()<!) @ perror(6roare #a sendto()spre "#ient.\n); ret1rn errno; A A /S&(i#eS/ A /SmainS/ clientudp.c /SC#ient :-9 (e"(o) 5rimite 1n mesaG 1n1i server; 8esaG1# este re"epLionat de #a server.S/ Oin"#1de<sNs/tNpes.(Y Oin"#1de<sNs/so"ket.(Y Oin"#1de<stdio.(Y Oin"#1de<netinet/in.(Y Oin"#1de<errno.(Y Oin"#1de<netd$.(Y Oin"#1de<string.(Y /S"od1# de eroare ret1rnat de an1mite ape#1riS/ extern int errno; /Sport1# de "one"tare#a serverS/ int port; /Sprogram1#S/ int main(int arg","(arSargvFC) @ /Sdes"riptor1# de so"ketS/ int sd;

Sisteme de operare /Sstr1"t1ra fo#osit* pentr1 "one"tareS/ str1"t so"kaddr%in server; /SmesaG1# trimisS/ "(ar $1fferF !!C; int #engt(;

311

/Sexist* toate arg1mente#e 0n #inia de "omand*dS/ if(argU=K) @ printf(sintaxa)Qs<adresa-serverY<portY\n, argvF!C; ret1rn - ; A /Ssta$i#im port1#S/ port=atoi(argvFHC; /S"reem so"ket1#S/ if((sd=so"ket(AZ%2365,4,C]%-`.A8,!))==- ) @ perror(6roare #a so"ket().\n); ret1rn errno; A /S1mp#em str1"t1ra fo#osit* pentr1 rea#iMarea dia#og1#1i "1 server1#S/ server.sin%fami#N=AZ%2365; /Sfami#ia so"ket1#1iS/ server.sin%addr.s%addr=inet.addr(argvF C; /Sadresa 29 a server1#1iS/ server.sin%port=(tons(port); /Sport1# de "one"tareS/ /S"itirea mesaG1#1i de #a intrarea standardS/ $Mero($1ffer, !!); printf(introd1"eLi mesaG1#)); ff#1s((stdo1t); read(!,$1ffer, !!;

312

Sorin Adrian Ciureanu #engt(=siMeof(server);

/Strimiterea mesaG1#1i "*tre serverS/ if(sendto(sd,$1ffer,str#en($1ffer),!, Rserver,#engt()<!) @ perror(6roare #a sendto()spre server.\n); ret1rn errno; A /S"itirea r*sp1ns1#1i dat de server (ne $#o"*m p?n* "?nd server1# r*sp1nde)S/ if(re"vfrom(sd,$1ffer, !!,!,Rserver.R#engt()<! @ perror(6roare #a re"vfrom() de #a server.\n); ret1rn errno; A printf(8esaG1# primit este)kQsk.\n,$1ffer); /S0n"(idem so"ket1#, am terminatS/ "#ose(sd); ret1rn !; A 4lientul va necesita dou argumente n linia de comand! semnificnd adresa I$ a serverului i portul de conectare la serverul .D$. Dac ambele programe ruleaz pe aceeai main! atunci vom putea introduce bgcc Ro serverudp serverudp.c bgcc Ro clientudp clientudp.c b.7server1dp b.7"#ient1dp HX.!.!- e!e &erverul va rula automat n fundal /adoptnd postura de daemon 0 . A) ,em.& se scrie un program n care un client va trimite un ir de numere ntregi serverului iar acesta va returna ctre client numerele primite n ordine invers.

Sisteme de operare

313

Bi>lio rafie 9.D. Cra(erA Inter!or#ing !ith TCP%IPA vol.9! $rentice 5all! Ne: %CerseS!9LL9. 8.An)reF S. Tanen>au(A >odern 1perating Systems, $rentice 5all!9LL8. ;.Io!if I natA E(il MunteanA Gal(an Pu!t-aiA >icroinformatica, 9LL8.

314

Sorin Adrian Ciureanu <.B. C'ap(anA E.D. EFi&MI! 4uilding Internet 8ire!alls, +l,eillSk-ssociates! 9LL@. @.Traian Ione!&uA Daniela SaruA =o'n FloroiuA Sisteme de operare+principii (i funcionare, (ditura tehnic! Bucureti! 9LLP. ?.R. Ste+en!A '0I2 0et!or# %rogramming, "ol. ?, 0et!or#ing, $rentice 5all! 9LLQ 9.Feli&ia Ione!&uA %rincipiile calculului paralel,(ditura 'ehnic! Bucureti! 9LLL. Q.RInterprocess Communications, $rentice 5all! N.C. 9LLL. L.A. Sil>er!&'at-A P.B. .al+inA ...a neA Applied 1perating System Concepts, 2ileS! Ne:%MorJ!8FF. 9F.#i+iu Mi&leaA 0oiuni de sisteme de operare (i reeele de calculatoare (<I0'2), .niversitatea 'ehnic 4lu"%Napoca! 8FF9. 99.Dan Co!(aA '0I2. Aplicaii, (d. de Aest! 'imioara! 8FF9. 98.Ioan =ur&A Sisteme de operare, (ditura de Aest! 'imioara! 8FF9. 9;.Sa>in Bura aA .a>riel Cio>anuA Atelier de programare n reele de calculatoare, (ditura $olirom! Iai! 8FF9. 9<.Dra o/ A&o!t&'ioaieA Securitatea sistemelor <I0'2, (ditura $olirom! Iai! 8FF9. 9@. An)reF Tanen>au(A Sisteme de 1perare >oderne, (ditura BSblos! Bucureti! 8FF<. 9P. Cri!tian *i)ra/&uA http 22:::.infoiai.ro7mvidracu. 9Q. Mi'ai Bu)iuA Alocarea memoriei n nucleul sistemului de operare, http 77:::.cs.cmu.edu7mihaib! 9LLQ. 1J. 'ttpS77:::.oreillS.com7catalog7opensources7booJ7 linus. html "P. R-+an Daniel EotaA :lemente de arhitectur a sistemelor de calcul (i operare, (d%-&(! Bucureti! 8FF@.

Sisteme de operare

315

316

Sorin Adrian Ciureanu

4.$,IN& $g.
9. INTRODUCERETTTTTTTTTTTTTTTTTTTTTTT... , 9.9. &I&'()( D( +$(,-,(. D(#INIEI(YYYYYYYYYYYY.. < 9.8. *+4.* .N.I &I&'() D( +$(,-,( =N',%.N &I&'() D( 4-*4.*YYYYYYYYYYYYYYYYYYYYYYY.Y. < 9.;. #.N4EII*( .N.I &I&'() D( +$(,-,(YYYYYYYYY.Y ? 9.;.9. -sigurarea interfeei cu utilizatorulYYYYYYYYYY.. ? 9.;.9.9. )onitoareYYYYYYYYYYYYYY... ? 9.;.9.8. Interfee n linie de comandYY.Y.YYY.... P 9.;.9.;. Interfee graficeYYYYYYYYYYYY.. P 9.;.8. 6estionarea proceselor i procesoarelorYYY.YYYYY.. Q 9.;.;. 6estionarea memorieiYYYYYYYYYY.YYYYY.. Q 9.;.<. 6estionarea perifericelorYYYYYYYYYYYYYY.. L 9.;.@. 6estionarea fiierelorYYYYYYYYY.Y.YYYYY.. L 9.;.?. 'ratarea erorilorYYYYYYYYYYYYYYYYY.... L 9.<. 4-,-4'(,I&'I4I*( &I&'()(*+, D( +$(,-,(YYYYY.... 9F 9.<.9. )odul de introducere a programelor n sistem.YYYYY.... 9F 9.<.8. )odul de planificare a lucrrilor pentru execuieYYYYY. 9F 9.<.;. Numrul de programe prezente simultan n memorieYYY.. 9F 9.<.<. 6radul de comunicare a proceselor n multiprogramareYY.. 99 9.<.@. Numrul de utilizatori simultani ai &+YYYYYYYYY. 99 9.<.?. )odul de utilizare a resurselorYYYYYYYYYYYY. 99 9.<.P. &+ pentru arhitecturi paraleleYYYYYYY.YYYYY.. 98 9.@. 4+)$+N(N'(*( &I&'()(*+, D( +$(,-,(YYYYYYY. 98 9.@.9. $artea de controlYYYYYYYYYYYY.YYYYY.. 98 9.@.8. $artea de serviciuYYYYYYYYYYYYYYYYY. 9; 9.? &tructura sistemelor de operareYYYYYYYYYYY.YYYY.. 9; P#ANIFICAREA PROCESOARE#OR 1UC4TTTTTTTTTTT.. 15 8.9 &45()- 6(N(,-*D D( $*-NI#I4-,(YYYYYYYYYY 9@ 8.8. 4,I'(,II D( $(,#+,)-NED - $*-NI#I4D,IIYYYYYY... 9? 8.;. -*6+,I')I D( $*-NI#I4-,( .4YYYYYYYYYYYY.. 9P 8.;.9. -lgoritmul #4#& /#irst 4ome #irst &erved0Y.YYYYY.. 9P 8.;.8. -lgoritmul &C# /&hortest Cob #irst0YYYYYYYYYY.. 9P 8.;.;. -lgoritmi bazai pe prioritateYYYYYYYYYYYYY 9Q 8.;.<. -lgoritmi preemptiviYYYYYYYYYYYYYYYY 9Q 8.;.@. -lgoritmul ,ound%,obinYYYYYYYYYYYYYY. 9L 8.;.?. -li algoritmi de planificareYYYYYYYYYYYYY. 8F .ESTIUNEA PROCESE#ORTTTTTTTTTTTT.TTTTT.. "1 ;.9. N+EI.NI 6(N(,-*( D( $,+4(&( NI '5,(-D%.,IYYYY.. 89 ;.9.9. Definiia procesuluiYYYYYYYYYYY.YYYYY.. 89 ;.9.8. &tarea procesuluiYYYYYYYYYYYY.YYYYY.. 88 ;.9.;. 4omutarea proceselorYYYYYYYYYY.YYYYY.. 8< ;.9.<. 4rearea i terminarea proceselorYYYYYYYYYYYY8@

"

,.

Sisteme de operare
;.8. $,+4(&( NI '5,(-D%.,I =N .NI3YYYYYYYYYYYY.8@ ;.8.9. $rocese n .NI3YYYYYYYYYYYY.YYYYY...8@ ;.8.8. 'hread%uri n .NI3YYYYYYYYYYYYYYYY.. 8L ;.;. $,+4(&( NI '5,(-D%.,I =N 2IND+2&YYYYYYYYYY ;F ;.;.9. $rocese n 2IND+2&YYYYYYYYYYYYYYY. ;F COMUNICAIA @I SINCRONIEAREA $NTRE PROCESETTTT... ,1 <.9. $,+B*()- &(4EI.NII 4,I'I4( NI - (34*.D(,II ).'.-*(.;9 <.9.9. &uportul hard:are pentru implementarea excluderii mutuale...;; <.9.9.9. Invalidarea7validarea ntreruperilorYYYYYYY. ;; <.9.9.8. Instruciunea 'est and &et /'&0YYYYYYYY.. ;< <.9.9.;. $rotocoale de ateptare n excluderea mutualYYY ;< <.9.9.<. )ecanisme de sincronizare ntre procese /obiecte de sincronizare0YYYYYYYYYYYYYYYYYYY.. ;< <.8. IN'(,B*+4-,(- /D(-D*+4X0YYYYYYYYYYYYY.. ;L <.8.9. ,esurseYYYYYYYYYYYYYYYYYYYYY.. ;L <.8.9.9. 4lasificarea resurselor din punct de vedere al interblocriiYYYYYYYYYY.YYYYYYYYY.. ;L <.8.9.8. (tapele parcurse de un proces pentru utilizarea unei resurseYYYYYYYYYY.YYYYYYYYYYY... <F <.8.8. 4ondiii necesare pentru apariia interblocriiYYYYYY.. <F <.8.;. 6raful de alocare a resurselorYYYYYYY.YYYYY... <9 <.8.<. ,ezolvarea problemei interblocriiYYYYY.YYYYY.. <8 <.8.<.9. $revenirea interblocriiYYYYYYYYYYYY<8 <.8.<.8. (vitarea interblocriiYYYYYYYYYYYYY<< <.8.<.;. Detectarea interblocrii i revenirea din eaYYYY. <P <.8.<.<. ,ezolvarea interblocrii n practicYYYYYYY. @F <.;. 4+).NI4-EI- =N',( $,+4(&( 4++$(,-N'(YYYYYY.. @F <.;.9. 4omunicaie direct i indirectYYYYYYYYYYYY.@8 <.;.9.9. 4omunicaie directYYYYYYYYYYYYY. @8 <.;.9.8. 4omunicaie indirectYYYYYYYYYYYY.. @8 <.;.8. *inii de comunicaii i tipuri de mesa"eYYYYYYYYY.@; <.;.8.9. *inii de comunicaiiYYYYYYYYYYYYY. @; <.;.8.8. 'ipuri de mesa"eYYYYYYYYYYYYYY.. @< <.;.;. (xcepii n comunicaia interproceseYYYY.YYYYY... @< <.;.<. -plicaii ale I$4%urilorYYYYYYYYYYYYYYY.. @@ <.<. $,+B*()( 4*-&I4( D( 4++,D+N-,(- NI &IN4,+NIa-,(- $,+4(&(*+,YYYYYYYYYYYYY.. @? <.<.9. $roblema productor%consumatorYYYYYYYYYYY. @? <.<.9.9. ,ezolvarea problemei productor%consumator cu a"utorul semafoarelorYYYYYYYYYYYYYYYY @? <.<.9.8. ,ezolvarea problemei productor%consumator prin transmitere de mesa"eYYYYYYYYYYYYYYYY @Q <.<.8. $roblema brbierului somnorosYYYYY.YYYYYY ?F <.<.;. $roblema cititori7scriitoriYYYYYYYYYYYYYY. ?; <.<.<. $roblema cinei filozofilor chineziYYYYYYYYYY.Y ?8 <.<.@. $robleme propuse pentru implementareYYYYYYYYY ?P <.<.@.9. $roblema rezervrii biletelorYYYYYYYYYY?P <.<.@.8. $roblema grdinii ornamentaleYYYYYYYYY?P

31

0.

31!
5

Sorin Adrian Ciureanu


<.<.@.;. $roblema emitor%receptorYYYYYYYYYY. ?Q .ESTIONAREA MEMORIEITTTTTTTTTTTT.TTTTT.. 6J @.9. I(,-,5II D( )()+,I(YYYYYYYYYYYYYYYYY. ?L @.8. +$'I)IaD,I =N =N4D,4-,(- NI (3(4.EI- .N.I $,+6,-) =N )()+,I(YYYYYYYYYYYYYYYYYYYYY.Y. P9 @.8.9. =ncrcarea dinamicYYYYYYYYYYYYYYYY... P9 @.8.8. +verlaS%uriYYYYYYYYYYYYYYYYYYYY. P9 @.8.;. *egarea dinamicYYYYYYYYYYYYYYYYY... P9 @.;. -*+4-,(- )()+,I(IYYYYYYYYYYYYYYYYY... P8 @.;.9. -locarea memoriei n limba"e de programareYYYYYY... P8 @.;.8. 4aracteristici ale alocatoarelorYYYYYYYYYYYY.. P; @.;.;. 'ipuri de alocare a memorieiYYYYYYYYYYYYY. P< @.;.<. &cheme de alocare a memorieiYYYYYYYYYYYY P< @.;.<.9. -locare unicYYYYYYYYYYYYYYY... P@ @.;.<.8. -locare cu partiii fixe /alocare static0YYYYY.. P@ @.;.<.;. -locare cu partiii variabileYYYYYYYYY.Y P? @.;.<.<. -locare prin s:appingYYYYYYYYYYY.Y PP @.<. $-6IN-,(- )()+,I(IYYYYYYYYYYYYYYYY.Y PQ @.<.9. &uportul hard:areYYYYYYYYYYYYYYYYY. PQ @.<.8. Implementarea tabelei de paginiYYYYYYYYYYY.. QF @.<.;. 4oncluzii privind paginareaYYYYYYYYYYYYY... Q9 @.<.<. &egmentarea memorieiYYYYYYYYYYYYYYY.. Q8 @.<.@. &egmentarea paginatYYYYYYYYYYYYYYYY Q; @.<.?. )emorie virtualYYYYYYYYYYYYYYYYYY Q; @.<.?.9. $aginare la cerereYYYYYYYYYYYYYY. Q; @.<.P. -lgoritmi de nlocuire a paginiiYYYYYYYYYYYY. Q? @.<.P.9. -lgoritmul #I#+YYYYYYYYYYYYYY.. Q? @.<.P.8. -lgoritmul *,. /*east ,ecentlS .sed0YYYYY.. QP @.<.P.;. -lgoritmul *#. /*east #re`uentlS .sed0YYYY... QQ @.<.P.<. -lgoritmul ,eal $aged DaemonYYYYYYYY.. QQ @.<.P.@. #enomenul trashingYYYYYYYYYYYY.Y. QL @.<.P.?.. 4oncluzii privind paginarea la cerereYYYYYY.. QL @.@. -*+4-,(- &$-EI.*.I *IB(,. 'I$.,I D( -*+4-'+-,(Y... LF @.@.9. -locatorul cu hri de resurseYYYYYYYYYYYYY LF @.@.8. -locatorul cu puteri ale lui doi /metoda camarazilor0YYY... L9 @.@.;. -locatorul #ibonacciYYYYYYYYYYYYYYY.Y. L8 @.@.<. -locatorul Xarels%)cJusicJYYYYYYYYYYYYY. L8 @.@.@. -locatorul slabYYYYYYYYYYYYYYYYYY.. L; @.?. 6(&'I.N(- )()+,I(I =N .N(*( &I&'()( D( +$(,-,(Y... L< @.?.9. 6estiunea memoriei n .nixYYYYYYYYYYYYY.. L< @.?.9. 6estiunea memoriei n *inuxYYYYYYYYYYYYY. LQ @.?.8. 6estiunea memoriei n 2IND+2& YYYYYYYY.Y 9FF .ESTIUNEA SISTEMU#UI DE INTRARE2IE@IRETTTTTTTT.. 1P, ?.9. D(#INI,(- &I&'().*.I D( IN',-,(7I(NI,(YYYYYY.Y. 9F; ?.8. 4*-&I#I4-,(- DI&$+aI'IA(*+, $(,I#(,I4(YYYYYYY 9F< ?.;. &',.4'.,- 5-,D - .N.I &I&'() D( IN',-,(7I(NI,(Y.Y 9F< ?.<. &',.4'.,- &+#' - .N.I &I&'() D( IN',-,(7I(NI,(YY... 9FP ?.<.9. ,utine de tratare a ntreruperilorYYYYYYYYYYYY9FP

6.

Sisteme de operare

31"

9.

?.<.8. DrivereYYYYYYYYYYYYYYYYYYYYY... 9FL ?.<.;. $rograme%sistem independente de dispozitiveYYYYYY.. 998 ?.<.<. $rimitive de nivel utilizatorYYYYYYYYYYYYY... 998 ?.@. =)B.ND'DEI,(- +$(,-EII*+, D( IN',-,(7I(NI,(YYY...99; ?.@.9. #actorul de ntreesereYYYYYYYYYYYYYYYY99< ?.@.8. 4ache%ul de hard discYYYYYYYYYYYYYYYY.99@ ?.@.;. 4rearea de ctre &+ a unui hard disc cu performane superioareYYYYYYYYYYYYYYYYYYYY...99@ ?.@.<. 4onstruirea unui hard disc prin tehnica ,-ID /,edundant -rraSs of Indpendent DiscJ0YYYYYYYYYYYY.Y.99L ?.?. 6(&'I.N(- &I&'().*.I I7( =N .N(*( &+YYYYYYY 98F ?.?.9. 6estiunea sistemului I7( n .NI3YYYYYYYYYYY. 98F ?.?.9.9. #iiere speciale de tip blocYYYYYYYYYY 989 ?.?.9.8. #iiere speciale de tip caracterYYYYYYYY.. 989 ?.?.8. 6estiunea sistemului I7( n *IN.3YYYYYYYYYY 98; ?.?.; 6estiunea sistemului I7( n 2IND+2&YYYYYYYY.. 98; ?.?.;.9. &tructura general a sistemului I7( n 2IND+2&.. 98; ?.?.;.8. Drivere n 2IND+2&YYYYYYYYYYY. 98@ .ESTIUNEA RESURSE#OR #OCA#ETTTTTTTTTTTTT. 1"6 P.9. N+EI.NI IN',+D.4'IA(YYYYYYYYYYYYYYYY. 98? P.8. 4*-&I#I4-,(- #INI(,(*+,YYYYYYYYYYYYYY... 98P P.8.9. 4lasificarea fiierelor dup structurYYYYYYYYYY. 98P P.8.9.9. &ecvene de octei YYYYYYYYYYYYY... 98P P.8.9.8. &ecvene de nregistrriYYYYYYYYYYY... 98P P.8.9.;. &tructura arborescentYYYYYYYYYYY.Y.98P P.8.8. 4lasificarea fiierelor dup tipYYYYYYYYYYYY..98P P.8.8.9. #iiere normaleYYYYYYYYYYYYYYY.98P P.8.8.8. DirectoareYYYYYYYYYYYYYYYYY.98Q P.8.8.;. #iiere speciale de tip caracter 7 blocYYYYYY... 98Q P.8.;. 4lasificarea fiierelor dup suportul pe care sunt rezidenteY.. 98Q P.8.<. 4lasificarea fiierelor dup accesYYYYYYYYYYY.. 98Q P.8.<.9. #iiere cu acces secvenialYYYYYYYYYY... 98Q P.8.<.8. #iiere cu acces directYYYYYYYYYYYY.. 98L P.8.<.;. #iiere cu acces indexatYYYYYYYYYYY... 98L P.;. -',IB.'( NI +$(,-EII 4. #INI(,(YYYYYYYYYYYY98L P.;.9. -tributeYYYYYYYYYYYYYYYYYYYYY.. 98L P.;.8. +peraii cu fiiereYYYYYYYYYYYYYYYYY.. 98L P.<. I)$*()(N'-,(- &I&'().*.I D( #INI(,(YYYYYYYY.9;F P.<.9. -locarea fiierelor pe discYYYYYYYYYYYYYY. 9;F P.<.9.9. -locarea contiguYYYYYYYYYYYYYY 9;F P.<.9.8. -locarea nlnuitYYYYYYYYYYYYY.. 9;9 P.<.9.;. -locarea indexatYYYYYYYYYYYYYY 9;8 P.<.8. (videna blocurilor libereYYYYYYYYYYYYYY.. 9;< P.<.;. (ficiena i performana sistemului de fiiereYYYYYYY9;@ P.<.<. #iabilitatea sistemelor de fiiereYYYYYYYYYYYY 9;@ P.<.<.9. (vitarea distrugerii informaieiYYYYYYYYY9;? P.<.<.8. ,ecuperarea informaiei n urma unei erori hard sau softYYYYYYYYYYYYYYYYYYYYYY.Y.9;?

32#
P.<.@. P.<.?.

Sorin Adrian Ciureanu


P.<.<.;. -sigurarea consistenei sistemului de fiiereYYY 9;P $rotecia fiierelorYYYYYYYYYYYYYYYYY..9;Q +rganizarea fiierelor pe discYYYYYYYYYYYYY 9;L P.<.?.9. +rganizarea fiierelor ce folosesc #-'YYYYY... 9;L P.<.?.8. +rganizarea fiierelor n 5$#&YYYYYYYY. 9;L P.<.?.;. +rganizarea fiierelor n N'#&YYYYYYYYY9<9 P.@. #INI(,( =N DI#(,I'( &I&'()(YYYYYYYYYYYYYY 9<9 P.@.9. &isteme de fiiere pentru 4D%,+)%uriYYYYYYYYY 9<9 P.@.9.9. &istemul de fiiere I&+L??FYYYYYYYYY.. 9<9 P.@.9.8. (xtensia ,+4X ,ID6(YYYYYYYYYYY. 9<; P.@.9.;. (xtensia C+*I('YYYYYYYYYYYYYY 9<; P.@.8. &istemul de fiiere n .NI3YYYYYYYYYYYYY.. 9<; P.@.8.9. &istemul de fiiere rapid BerJeleSYYYYYYY. 9<< P.@.8.8. &istemul de fiiere n *IN.3YYYYYYYYY. 9<< P.@.8.;. &istemul de fiiere de reea N#&YYYYYYY... 9<@ P.@.;. &istemul de fiiere 2IND+2&YYYYYYYYYYYY.9<P P.@.;.9. &istemul de fiiere N'#&YYYYYYYYYY...9<P SISTEME DE OPERARE PENTRU CA#CU#ATOARE PARA#E#E.T15, Q.9. N+EI.NI IN',+D.4'IA(YYYYYYYYYYYYYYY.Y 9@; Q.8. &I&'()( D( +$(,-,( =N ,(E(-YYYYYYYYYYYYY 9@@ Q.;. &I&'()( D( +$(,-,( 4. ).*'I$,+4(&+-,(YYYYY.Y 9@@ Q.;.9. $rogramarea paralelYYYYYYYYYYYYYYY.Y 9@? Q.;.9.9. )emoria parta"at ntre proceseYYYYYYYY.. 9@? Q.;.9.8. (xemple de programare paralelYYYYYYY.Y 9@P Q.<. &I&'()( D( +$(,-,( DI&',IB.I'(YYYYYYYYYYY..9?9 Q.<.9. &tructura unui sistem de operare distribuitYYYYYYYY 9?; Q.<.9.9. 4omunicare sistem client 7 serverYYYYYYYY9?; Q.<.9.8. -peluri de proceduri la distanYYYYYYYY...9?? Q.<.9.;. 4omunicare n grupYYYYYYYYYYYY.Y.9?P Q.<.8. (xemple de sisteme de operare distribuiteYYYYYYYY.9Q9 Q.<.8.9. &istemul de operare -)+(B-YYYYYYYY... 9Q9 Q.<.8.8. &istemul de operare 6*+B(YYYYYYYYY... 9Q< SECURITATEA SISTEME#OR DE OPERARETTTTTTTTT.T 1<9 L.9. N+EI.NI IN',+D.4'IA(YYYYYYYYYYYYYYYY 9QP L.8. -'-4.,I -&.$,- &I&'().*.I D( +$(,-,( NI )D&.,I D( $,+'(4EI( =)$+',IA- *+,YYYYYYYYYYYYY 9LF L.8.9. Depirea zonei de memorie tampon /Buffer +verflo:0Y.Y 9L9 L.8.8. 6hicirea parolelor /$ass:ord guessing0YYYYYYYYY 9L9 L.8.;. Interceptarea reeleiYYYYYYYYYYYYYYYYY9L8 L.8.<. -tacul de refuz al serviciului /Denial +f &ervice0YYYYY9L8 L.8.@. -tacuri cu bomba e%mailYYYYYYYYYYYYYYY9L< L.8.?. #alsificarea adresei expeditorului /e%mail spoofing0YYYY. 9L< L.8.P. 4ai troieni /'ro"an 5orses0YYYYYYYYYYYYYY 9L@ L.8.Q. .i ascunse /BacJ dors and traps0YYYYYYYYYYY. 9L@ L.8.L. AiruiYYYYYYYYYYYYYYYYYYYYY.Y.9L@ L.8.9F AiermiYYYYYYYYYYYYYYYYYYYYYY 9L? L.;. )(4-NI&)( D( $,+'(4 EI(YYYYYYYYYYYYYYY9LP L.;.9. 4riptografiaYYYYYYYYYYYYYYYYYYYY9LP

<.

J.

Sisteme de operare

321

L.;.9.9. 4riptografia cu chei secrete /4riptografia simetric0. 9LP L.;.9.8. 4riptografia cu chei publice /4riptografia asimetric0 9LL L.;.8. Dispozitive fire:allYYYYYYYYYYYYYYYYY8FF L.;.8.9. 'ipuri de fire:allYYYYYYYYYYYYY.Y 8F9 L.;.8.8. #unciile unui fire:allYYYYYYYYYYY.Y.8F8 L.;.8.;. #ore:all%uri n sistemele de operare 2indo:sYY... 8F8 L.;.8.<. #ire:all%uri n sistemul de operare *inuxYYYYY8F; L.;.;. &isteme de ncredereYYYYYYYYYYYYYYYY.. 8F@ L.;.;.9. )onitorul de referinYYYYYYYYYYYY..8F@ L.;.;.8. )odelul *iste de 4ontrol al -ccesului /-4*0YYY 8F? L.;.;.;. )odelul Bell%*a $adulaYYYYYYYYYYY.. 8FP L.;.;.<. )odelul BibaYYYYYYYYYYYYYYY... 8FL L.;.;.@. )odelul securitii 4rii $ortocaliiYYYYYYY 8FL L.;.<. &ecuritatea n sistemele de operare 2indo:sYYYYYYY899 L.;.<.9. 4oncepte fundamentale de securitate n 2indo:sY.. 898 L.;.<.8. Implementarea securitiiYYYYYYYYYYY.89< L.;.@. &ecuritatea n *inuxYYYYYYYYYYYYYYYYY 89< L.;.@.9. +pen &ourceYYYYYYYYYYYYYYYY..89< L.;.@.8. $rograme ce depisteaz i corecteaz vulnerabilitiY 89@ L.;.@.;. -uditarea sistemuluiYYYYYYYYYYYYY. 89? 1P STRUCTURA SISTEME#OR DE OPERARETTTTTTTTTTT..."1J 9F.9 &I&'()( D( +$(,-,( )+N+*I'I4(YYYYYYYYYYY...89L 9F.8 &I&'()( D( +$(,-,( &',.4'.,-'( $( NIA(*.,IYYY. 88F 9F.; )-NINI AI,'.-*(YYYYYYYYYYYYYYYYYYYY889 9F.< &I&'()( D( +$(,-,( 4. )I4,+X(,N(*YYYYYYYY.. 88; 9F.@ &I&'()( D( +$(,-,( 4. (3+X(,N(*YYYYYYYYYY.88< 9F.? &I&'()( D( +$(,-,( 4. N-N+X(,N(*YYYYYYYYY..88@ 9F.P &',.4'.,- .N.I &+ .NI37*IN.3YYYYYYYYYYYY. 88? 9F.P.9. &tructura nucleului .NI3YYYYYYYYYYYYYY 88P 9F.Q &',.4'.,- .N.I &+ 2IND+2&YYYYYYYYYYYYY 88L 9F.Q.9. Implementarea obiectelor n 2IND+2&YYYYYYYY8;P 11 SISTEME DE OPERARE #INUC. AP#ICAIITTTTTTTTTT... "01 99.9 &4.,' I&'+,I4YYYYYYYYYYYYYYYYYYYY... 8<9 99.8 DI&',IB.EII IN *IN.3YYYYYYYYYYYYYYYY.Y 8<8 99.8.9 Distribuia &*-42-,(YYYYYYYYYYYYYY.. 8<8 99.8.8 Distribuia ,(D5-'YYYYYYYYYYYYYYYY 8<8 99.8.; Distribuia D(BI-NYYYYYYYYYYYYYYY.Y 8<; 99.8.< Distribuia )-ND,-X(YYYYYYYYYYYYY.Y 8<; 99.8.@ Distribuia *M4+,I&YYYYYYYYYYYYYYY... 8<< 99.8.? Distribuia &.&(YYYYYYYYYYYYYYYYY.. 8<< 99.; -$*I4-EII *IN.3YYYYYYYYYYYYYYYYYYYY8<< 99.;.9 4omenzi *IN.3YYYYYYYYYYYYYYYYYY8<@ 99.;.8 4rearea proceselorYYYYYYYYYYYYYYYY.Y 8<P 99.;.; 4omunicare ntre proceseYYYYYYYYYYYYYY.. 8@9 99.;.;.9. 4omunicarea ntre procese prin $I$( i #I#+YY.. 8@9 99.;.;.8. 4omunicarea ntre procese prin semnaleYYYY. 8?8 99.;.;.;. 4omunicarea ntre procese prin sistem A I$4. 4ozi de mesa"eYYYYYYYYYYYYYY. 8P;

322

Sorin Adrian Ciureanu


99.;.;.<. 4omunicarea ntre procese prin sistem A I$4. &emafoareYYYYYYYYYYYYYYYY.. 8Q8 99.;.;.;. 4omunicarea ntre procese prin sistem A I$4 )emorie parta"atYYYYYYYYYYYYY.. 8Q@ 99.;.;.?. 4omunicarea ntre fire de execuieYYYYYY... 8QL 99.;.;.P. Interfaa &+4X('YYYYYYYYYYYYY. 8LF 99.;.;.Q. )odelul client 7 server '4$YYYYYYYYY 8L; 99.;.;.L. )odelul client 7 server .D$YYYYYYYYY. ;FF BIB#IO.RAFIETTTTTTTTTTTTTTTTTTTTTTT.. ;FP

Sisteme de operare

323

324

Sorin Adrian Ciureanu

-lgoritm

-4( -4* -(& -$4 -$4 -$I -$' -tribute B4$ BI+& Boot Boot BlocJ Booting B&D Broadcast

DICIONAR D( '(,)(NI NI $,(&4.,'D,I %de planificare a proceselor #4#&O#irst 4ome #irst $rimul venit primul servit &erved #I#+O#irst Input #irst $rimul intrat primul ieit +utput &C#O&hortest Cob #irst 4ea mai scurt sarcin mai nti %de alegere a spaiului de memorie liber ##-O#irst #it -lgorithme -lgoritm de prima potrivire B#-OBest #it -lgorithme -lg. de cea mai bun portrivire 2#-O2orst #it -lgorithme0 -lg. de cea mai proast potrivire %de nlocuire a paginii de memorie #I#+O#irst Input #irst $rimul intrat primul ieit +utput *,.O*east ,ecentlS .sed .ltimul folosit *#.O*east #re`uenzlS .sed 4el mai puin utilizat -lgoritm real% $aged $regtete sistemul pentru daemon evacuarea de pagini -cces 4ontrol (ntries Intrri de control al accesului -cces 4ontrol *ist *ist de control al accesului -pplication (nvironnement &pecificaie a serviciilor utilizabile &pecification de ctre o aplicaie client7server -pplication $rocedure 4all -pelul unei proceduri de aplicaie -sSnchronous $rocedure -pel de procedur asincron 4all -pplication $rograming + intefa ce conine definiia Interface tipurilor de date i funciilor apel n 2IND+2& -dvanced $acJage 'oll .tilitar pentru pachete deb 4aracteristici ale fiierelor Nume! tip! locaie! protecie etc. Bloc 4otrol $rocess Descriptor de proces Basic I7+ &Sstem .n sistem de memrie pentru dispozitive intrare7ieire $roces Boot .n proces care iniializeaz &+ Bloc de Boot 4onine proceduri i funcii pentru iniializarea sistemului de fiiere Botare 4reare de procese care s porneasc &+ BerJeleS &Sstem Aersiune a sistemuluide operare Distribution .NI3 (misie! emitere

Sisteme de operare
Bug BussS BussS%sleep BussS%:ait 4-45( 4B4 4#B 4hecJsumm 4ircuit *evel 6ate:aSs 4*ist 4oad 4+D( ,(D 4+,B4$. 4,( D-4* Daemon DeadlocJ D(4 D(4 D(& D(&3 DI7(I Director D)DiscJ cache DN& D+& D$4 defect +cupat -teptare dormant -teptare ocupat )emorie rapidn 4ipher Bloc 4hainning 4ipher #eed BacJ &um de verificare $ortie de circuit 4apabilities *ist &tructur de date 4ommon +b"ect ,e`uest BroJer -rhitecture 4entral $rocessing .nit 4luster tools ,untime (nvironement DiscretionarS -4* Demon Impas Distributed (nvironement 4orporation Digital (`uipement 4orporation Data (ncrSption &tandard Data (ncrSption &tandard 3 Invalidare7validare ntreruperi /4atalog0 Direct -cces )emorS + seciune a memoriei principale Domain Name &Sstem DiscJ +perating &Sstem Deferred $rocedure 4all =n hard i n soft

325

$rotocol de ateptare n excluderea mutual $rotocol de ateptare n excluderea mutual $arte din memoria principal )od de criptare cu nlnuire )od de criptare cu reacie &uma biilor mesa"elor *ist de capabiliti #uncioneaz dup principiul #I#+! cu comenzile $+$ i $.&5 Numele unui vierme &istem bazat pe derularea obiectelor .nitate central de procesare )ediu de lansare n execuie n )$I *ist de acces discreionar .n proces care st n fundal! pentru manevrarea diferitelor activiti Interblocare n comunicaia proceselor 4onsoriu 4onsoriu &tandard de incriptare a datelor bazat pe chei secrete 'ip de D(& .n fiier sistem care gestioneaz structura sistemului de fiiere )od de transfer de date n unitatea de I7( $entru blocurile de disc cele mai des utilizate &chem de baz de date care mapeaz ncod -&4II numele gazdelor pe adresele lor I$ -pelul procedurii de amnare

326
Driver (4B (veniment #-' #irestar #ire:all #ire:all Builder #iier #ragle #ree behind 5andle 5)-4 5$#& 5''$ I7+ I4)$ Id i%nod I$ I$ sniffing I$4 I$spoofing Iptables I,$ I&I&, CDX Xernel *and craft *I#+ *ist *&# )-4

Sorin Adrian Ciureanu


#iier ce conine comenzi specifice unui periferic (lectronic 4ode Bloc /&emnal0 #ile -location 'abel =n .NI3 $erete de foc =n .NI3 (ntitatea de baz a unui &+ *iber n urm + intrare n tabelul de resurse 5 )essage -utentification 4ode 5igh $erformance #ile &Sstem 5iper 'ext 'ransfer $rotocol Input7+utput O Identificator proces Nod de indexare Internet $rotocol -tac asupra I$ Inter $rocess 4ommunication #alsificarea adresei I$ I7+ ,e`uest $acJet Instructions &et -rchitecture Interrupt &ervice ,outine C-A- Developement Xit Nucleu G-terizare foratH *ast Input #irst +ut &tructur de date *ood &haring #acilitS )essage -utentification $artea de &+ care depinde de perifericul asociat )od de criptare cu carte de coduri )ecanism de comunicare ntre procese 'abel de alocare a fiierulor Interfa grafic pentru iptables &istem ce separ o reea prote"at de una neprote"at Interfa grafic pentru iptables $streaz informaia -tac cu pachete .D$ la portul P al adresei broadcast 'ehnic de optimizare a accesului secvenial (ntitate de identificare a unui proces n 2indo:s 4od de autentificare a mesa"elor bazat pe funcia de dispersie 5 &istem de fiiere de naJt performan Intrare 7 Ieire $rotocol de transmitere a pachetelor de date =n 2indo:s

Intercepteaz o reea 4omunicaie ntre procese 'ip de atac #ire:all n .NI3 -rhitetura setului de instruciuni ,utin de ntrerupere

'ip de atac .ltimul intrat! primul ieit Nir de noduri ntr%o relaie de ordine )ediu de lansare n execuie n )$I 4od de autentificare a mesa"elor

Sisteme de operare
)B, )#' )$ )$I )+,,I& )&%D+& )utex N-' N(&&.& Net:orJ Bro:ser N#& N'#& +biect Net:orJ #ile &Sstem Ne: 'ehnologS #ile &Sstem =n unele limba"e de programare ca 4>> ! C-A-! 4+,B+ut #eed BacJ =n afara &+ +pen Net:orJ 4omputing =n cadrul &+ &urse deschise 4ostul comutrii procesului &uprapunere $otop de pachete Demon de paginare $aginarea memoriei $arallel Airtual )achine Dispozitiv aflat n afara .4 $acJet #iltering #ire:alls $rocess Identificator 4ode )aster Boot ,ecord )aster #ile &Sstem )essage $assing )essage $assing Inteface )icrosoft DiscJ +perating &Sstem )utual exclusive Net:orJ -dress 'ranslation =n .NI3

32

#iier de informaii asupra fiierelor de pe volumul respectiv 'ransmisie de mesa"e Intefa n transmisia de mesa"e Numele primului vierme inventat .n sistem de operare mai vechi +biect de sincronizare #ire:all n 2indo:s $rogram de scanare care determin vulnerabilitile unei maini -plicaie ce permite interconectarea cu alte sisteme .NI3 sau 2IND+2& &istem de fiiere de reea Noua tehnologie a sistemului de fiiere% sistem de organizare a fiierelor + colecie de variabile legate ntre ele printr%un set de proceduri numite metode1 n loc de fiiere sau documente )od de criptare cu reacie la ieire 'ip de metod pentru determinarea blocurilor defecte ,eea deschis de computere 'ip de metod pentru determinarea blocurilor defecte 4omunitatea sistemelor de operare libere

+#B +fline +N4 +nline +pen &ources +verhead +verlaS $acJet flood $age daemon $aging $A) $eriferic $## $ID $ing flood $ing of death

Bombardarea unei reele cu pachete de date $regtete sistemul pentru evacccuarea de pagini

(x hard disc! imprimanta modem! scanner!4D ,+) #ire:all%uri cu filtrare de pachete Identificator de proces .NI3 'ip de atac 'ip de atac

32!
$ipe $,-) $roces $roces &:itch $rogram 4ounter $roxies $&2 ,-ID ,-)%disc ,ead ahead ,$4 ,+ &-4* &crambling &emafor &hel &ID &I6.&, &marf &)I &)'$ &niffer &+ &$-) &poofing &tacJ $ointer &tiv &treamer &:apping &Snchronous calls conduct

Sorin Adrian Ciureanu


.n pseudofiier pentru comunicaia unidirecional ntredou procese )aini cu acces ntmpltor paralel &ub controlul &+ 4onine adresa de memorie a urmtoarei instruciuni de utilizat

$arallel ,andom -cces )achines $rogram n execuie 4omutarea procesului ,egistru special vizibil utilizatorului $roxi%uri de aplicaii $rogram &tatus 2ord ,edundant -rraS of Independent DiscJs ,andom )emorS DisJ 4itete nainte ,emote $rocess 4omunication ,ead +nlSOnumai citire &Sstem -cces 4ontrol =nvlmeal =n .NI3 &ecuritS identificator =n .NI3 &tateful )ultilaSer Inspections &imple )ail 'ransfer $rotocol -dulmecare &istem de operare (.)ail spamming (%)ail spoofing ,egistru special vizibil utilizatorului &tructur de date Nucleu n spaiul utilizator /analog pipelines%urilor0 Deplasare! micare -peluri sincrone

+ mulime redundant de discuri independente + poriune de memorie principal declarat ca disc virtual 'ehnic de optimizare a accesului secvenial &egment de cod -lterarea i amestecarea mesa"elor +biect de sincronizare Interpretor de comenzi Identificator de securitate 'ip de semnal -tac de tipul I4)# asupra adresei brodcast a reelei #ire:all%uri cu inspecii multistrat $rotocol de transfer al mesa"elor $rogram de interceptarea traficului de reea

#alsificarea adresei expeditorului $ointeaz pe partea de sus a stivei curente de memorie #uncioneaz dup principiul *I#+ 4onecteaz dinamic un proces utilizator la driver Deplasarea proceselor de pe memoria principal pe hard disc -peluri blocante

Sisteme de operare
&MN4++XI(& &MNflood &M&'() A &Sstem calls &Sstem &hado: 'asJ '4B '4$ '4$7I$ 'ear drop '(*N(' 'hread 'ime out 'I'-N 'rashing 'rip:ire '& .4 .D$ .,* 222 2eb 2eb page aombie aone -llarm $ro $otop de pachete &MN Aersiune de .NI3 -peluri sistem &istem de umbrire /Cob0 &arcin 'rusted 4omputing Base 'ransmission 4ontrol $rotocol 'ransmission 4ontrol $rotocol 7 Internet $rotocol 'elevision Net:oJ #ir de execuie 'imp depit In .NI3 Devalorizare =n .NI3 'est and &et .nitatea 4entral .ser Datagram $rotocol .niform ,esource *ocator 2orld 2ide 2eb ,eea! estur $agin 2eb &tare a unui proces n 2IND+2& .n mecanism de prevenire a atacurilor D+& Bombardare cu pachete care au setat numai bitul &MN &e bazeaz pe BerJeleS .NI3

32"

=mpiedic accesarea fiierului de parole Baz de calcul de ncredere $rotocol de control al transmisiei pachetelor de date $rotocol de control al transmisiei pachetelor de date 'ip de atac '4$ ,eea de televiziune &ubunitate a unui proces ,ezultat al atacului &MNflood $rogram de scanare care determin i corecteaz vulnerabilitile unei maini 4nd procesele folosesc mai mult timp pentru paginare dect pentru execuie $rogram de auditare &uport hard pentru validare7invalidare de ntreruperi sau instruciuni $rotocol de transmitere a pachetelor de date -dresa unic a unei pagini 2eb *arg reea mondial .n mare graf orientat de documente care pointeaz spre alte documente Document n reeaua 2eb $roces terminat! n ateptarea terminrii printelui $rogram de instalare a unui fire:all

33#

Sorin Adrian Ciureanu

Sisteme de operare

331

S-ar putea să vă placă și