Sunteți pe pagina 1din 44

Universitatea din Bucureti Facultatea Matematic - Informatic !

e"nolo#ia Informa$iei

Sisteme de operare

Coordonator: Conf. Dr. Marin Vlada

Student: Irava Radu-Florin

Cuprins:

%. Conceptie si utili&are S': !ema (). !estare* e+perimente ,i comentarii asupra unei distri-u.ii /inu+: 1. a. b. c. d. 2. 3. 4. Prezentare PCLinuxOS.. ..3 Istorie...... 4 Versiuni...........................................4 Caracteristici.........5 Proiecte... .....5 Creearea masinii virtua e... .....! Insta area sistemu ui de o"erare....... .14 Con#i$urarea sistemu ui de o"erare.... .......23 B. Conceptie si de&voltare S': !ema 0. 1ro-leme clasice de coordonare si sincroni&are procese: 1. a. b. 2. 3. Prob ema "roduc%tor& consumator..31 'etoda sema#oare or. 32 'etoda transmiterii de mesa(e.....34 Prob ema b%rbieru ui somnoros...........35 Prob ema cititori)scriitori................................... 3*

2+Pa$e

4. 5. .. !.

Prob ema cinei #i ozo#i or c,inezi.....4Prob ema rezerv%rii bi ete or.............43 Prob ema $r%dinii ornamenta e....43 Prob ema emi/%tor& rece"tor...44

%. Conceptie si utili&are S': !ema (). !estare* e+perimente ,i comentarii asupra unei distri-u.ii /inu+:

(. 1re&entare 1C/inu+'S

PCLinuxOS0 adesea "rescurtat PCLOS este o distributie 123)Linux ce are o inter#ata cu uti izatoru 456 P asma 5es7to". 6ste un sistem de o"erare $ratuit "entru ca cu atoare "ersona e ce se concentreaza "e usurinta uti izarii. 6ste un sistem de o"erare ce continua sa se dezvo te c,iar si a acest moment.

3+Pa$e

a. Istorie Prevestitoru ui PCLinuxOS a #ost un set de "ac,ete 8P' 9"ac7a$e mana$er: create "entru a imbunatati versiuni e succesive a e 'andra7e Linux 9acum denumit 'andriva Linux:. ;ceste "ac,ete au #ost create de <i 8e=no ds 9cunoscut ca si >exstar:. 5in 2--- "ana in 2--30 >exstar si&a mentinut de"ozitu de "ac,ete 8P' in "ara e cu site&u PCLinuxOn ine. Intr&un interviu0 8e=no ds a dec arat ca a ince"ut PCLinuxOS ?"entru a&si ex"rima "asiunea nebuna "entru "ac,ete de cod sursa0 #ara a avea de a #ace cu or$o ii0 aro$anta si "o itica@. In octombrie 2--30 >exstar a creat un branc, din 'andra7e Linux A.2. Lucrand in "ara e si a >,e Live C5 Pro(ect0 >exstar a im" ementat inca de atunci ace branc,0 ca #iind inde"endent0 intr&o distributie com" et noua.

-. Versiuni

4+Pa$e

;"roa"e toate re ease&uri e ma(ore au #ost insotite de metode de boot&are si ecrane de o$in noi0 im"reuna cu sc,imbari in seturi e de icon&uri si sunete de o$in.

Versiune 2012.2 2011.9 2011.6 2010.12 2010.10 2010.7 2010.1 2010 2009.2 2009.1 200# "MiniMe"

Data 2 Feb 2012 23 Sep 2011 27 un 2011 1! De" 2010 2# $"% 2010 5 Iul 2010 ! Mai 2010 19 Apr 2010 30 un 2009 11 Mar 2009 7 an 200#

P.94 "2007" P.93a "Big Daddy" P.93a "Junior" P.93a "MiniMe" P.93 "MiniMe" P.92 P.91 P.#1a P.# P.7 P.! (e'ea)e*u' ini%ia'

21 Mai 2007 21 Aug 2006 9 Aug 2006 4 Aug 2006 21 Apr 2006 21 &oi 200! 7 u' 200! 200! 200! 2004 2004 $"% 2003

c. Caracteristici PCLinuxOS este distribuit ca si Live C50 care "oate #i de asemenea insta at "e ,ard dis7&u oca sau "e un # as, drive 3S<. Versiunea 2--A.1 o#era un insta er 3S< "entru a crea un Live 3S<0 unde con#i$uratii e uti izatoru ui si date e "ersona e "ot #i sa vate daca se doreste. 3n Live 3S< "entru versiuni mai vec,i a e PCLinuxOS "oate #i creat manua sau cu 32etbootin. Intre$u C5 "oate #i ru at din memorie0 "resu"unand ca sistemu are su#icient 8;'. PCLinuxOS #o oseste ;P>&8P'0 bazat "e ;dvanced Pac7a$in$ >oo 9;P>:0 un sistem de mana$ement a "ac,ete or 9ori$inar din distributia 5ebian:0 im"reuna cu S=na"tic Pac7a$e 'ana$er0 un 13I "entru ;P>0 "entru a adau$a0 ster$e sau u"data "ac,ete. 5aca sistemu are destu a memorie si o conexiune activa a internet0 Live C5&u "oate u"data "ac,ete. PCLinuxOS este de asemenea creat ast#e incat0 du"a ce se #ace o con#i$urare initia a0 acesta sa "oata #i usor de insta at "e mai mu te sisteme. ;cest ucru se "oate #ace "rin creearea unui Live C5 #o osind unea ta '7 ivecd.

5+Pa$e

d. 1roiecte

Distri-utii t"ird-part2 5e cand PCLinuxOS inc ude si scri"tu m7 ivecd0 exista o varietate de distributii bazate "e PCLinuxOS0 "rintre care 4aros,i0 <u$nuB0 <6L Pro(ect0 C62&mini 1nome. Revista 1C/inu+'S ;cest "roiect este o "ub icatie $ratuita condusa de useri PCLinuxOS ai '=PCLinuxOS. 2umere e revistei sunt dis"onibi e atat in #ormat P5D cat si in #ormat E>'L. 8evista este "ub icata unar. MiniMe 6ste un Live F Insta C5 "entru uti izatori avansati care doresc sa isi adau$e "ro"ria se ectia de "ac,ete. PCLinuxOS 2--* ?'ini'e@ a #ost ansat "e 1 Iu ie 2--*.

3D4 Fullmont2 6ste un "ac,et ce contine obisnuitu PCLinuxOS a care se adau$a niste a=out&uri s"ecia e "entru des7to" si mu te a" icatii si drivere "reinsta ate. Du mont= a" ica un nou conce"tG des7to"&uri virtua e orientate "e activitati e si nevoi e anumitor ti"uri de uti izatori0 #acandu& e viata mai usoara. 6xista sase ti"uri de des7to" virtua G

.+Pa$e

). Creearea masinii virtuale

Pentru crearea masinii virtua e0 vom #o osi V'Hare P a=er. Stab irea metodei de insta are a sistemu ui de o"erare. In cazu nostru0 insta area se #ace de "e un #isier ima$ine de ti" ISO.

!+Pa$e

Stabi irea sistemu ui de o"erare si a versiunii ce urmeaza a #i insta ate. In cazu nostru PCLinuxOS este o distributie a 'andriva Linux 9initia denumita 'andra7e Linux:.

*+Pa$e

Stabi irea nume ui si ocatiei masinii virtua e. 2oi o vom numi PC Linux OS si o vom insta a in drive&u 5 in #o deru cu ace asi nume.

A+Pa$e

Crearea ,ard dis7&u ui virtua . Pentru versiunea noastra este su#icient un ,ard dis7 de 2- 1<. Vom stoca ,ard dis7&u virtua intr&un sin$ur #isier "entru "er#ormante mai bune.

1- + P a $ e

In #ina "utem vizua iza con#i$uratia masinii virtua e ce urmeaza a #i create.

11 + P a $ e

Putem c,iar sa modi#icam anumite setari0 s"re exem" u ca"acitatea memoriei 8;'.

12 + P a $ e

'asina virtua a este $ata. In meniu a" icatiei V'Hare P a=er observam deta ii des"re aceasta0 "recum si o"tiuni e dis"onibi e.

13 + P a $ e

5. Instalarea sistemului de operare

Pornind masina virtua a0 vom $asi urmatoru start&u" screen. ; e$em Live C5.

14 + P a $ e

Sistemu de o"erare boot&eaza.

15 + P a $ e

3rmatoarea secventa ne "ro"une sa a e$em tastatura. In cazu nostru aceasta este romana.

1. + P a $ e

In continuare0 a"are ecranu de ince"ut. Observam asemanarea cu HindoIs. Printre icon&uri e de "e des7to" se a# a si ?Insta PCLinuxOS@. I accesam "entru a insta a "ermanent sistemu de o"erare "e ,ard dis7&u masinii virtua e.

1! + P a $ e

Porneste insta area sistemu ui de o"erare.

1* + P a $ e

In continuare a e$em dis"ozitivu de "e care se #ace boot&area si metoda de boot&are.

1A + P a $ e

5u"a care a e$em una din "osibi e e item&uri de boot&at.

2- + P a $ e

Insta area a #ost #acuta cu succes. 5u"a restartare0 si a #iecare desc,idere a sistemu ui0 "utem o"ta "entru metoda de desc,idere norma a sau sa#e mode.

21 + P a $ e

La "rima desc,idere a sistemu ui0 este necesar sa ne cream un uti izator nou0 du"a care insta area este $ata. ;cum avem o masina virtua a cu un sistem de o"erare PCLinuxOS insta ata "ermanent "e ,ard dis7&u acesteia0 com" et #unctiona .

22 + P a $ e

0. Confi#urarea sistemului de operare

;bso ut orice ti" de con#i$urare se "oate #ace cu a(utoru termina u ui. ;cesta este ec,iva entu C'5&u ui din IindoIs. 5esi$ur0 aceasta inter#ata este cea mai "utin "rietenoasa cu uti izatoru 0 deoarece necesita cunoasterea comenzi or in deta iu.

23 + P a $ e

3nu dintre so#turi e "e care uti izatorii e " ac ce mai mu t este C,<$. ;cesta este un too #o osit "entru deru area anumitor ima$ini "e bac7$round.

24 + P a $ e

Contro Center este ec,iva entu Contro Pane &u ui din HindoIs. ;cesta contine o mu titudine de setari.

25 + P a $ e

6c,iva entu bine&cunoscutu ui c ic7 drea"ta J Pro"erties din HindoIs0 este #ereastra "rezentata mai (os. ;st#e "uteti #ace o mu time de modi#icari a as"ectu sistemu ui de o"erare.

2. + P a $ e

Printre so#turi e de monitarizare a e PCLinuxOS0 se a# a si ce ebru >as7 'ana$er0 care "ractic ace easi #unctiona itati cu ce din HindoIs.

2! + P a $ e

Cu a(utoru 'ozi a Dire#ox0 "reinsta at "e aceasta versiune de PCLinuxOS0 "utem sa observam so#tu de monitorizare a rete ei.

2* + P a $ e

La ca"ito u a" icatii "reinsta ate $asim si editoru de texte s"eci#ic PCLinuxOS&u ui. Pe #unda "utem observa una din ce e a te ima$ini "rede#inite a e sistemu ui de o"erare.

2A + P a $ e

3na dintre a" icatii e "reinsta ate "e acest sistem este S'P a=er. P a=eru este dis"onibi si "e " at#orma HindoIs0 si du"a cum se vede0 ru eaza cu usurinta orice #ormat video0 #ara a #i necesara insta area unor codec&uri.Pe #unda "utem observa una din ce e a te ima$ini "rede#inite a e sistemu ui de o"erare.

3- + P a $ e

B. Conceptie si de&voltare S': !ema 0. 1ro-leme clasice de coordonare si sincroni&are procese:

6xist% o serie de exem" e c asice de coordonare Ki sincronizare a "rocese or Ln care se re$%sesc "rinci"a e e "rob eme ce a"ar Ln ast#e de situa/ii. 'u te din aceste "rob eme se a# % Ln structura oric%rui sistem se o"erare. >otodat% aceste "rob eme c asice se re$%sesc Ki Ln "ro$ramarea concurent%. Le vom aborda LncercMnd s% e so u/ion%m cu mi( oace e s"eci#ice "rezentate anterior.

31 + P a $ e

(. 1ro-lema produc tor-consumator

Die o serie de "rocese concurente care "roduc date 9"rocese P8O53CN>O8:. ;ceste date sunt consumate de a te "rocese 9"rocese CO2S3';>O8:. 5ate e sunt consumate Ln ordinea Ln care au #ost "roduse. 6ste "osibi ca viteza de "roducere s% di#ere mu t de viteza de consum. ;ceast% "rob em% s&ar rezo va uKor dac% ar exista un bu##er de dimensiuni #oarte mari0 teoretic in#init0 care ar "ermite o"erarea a viteze di#erite a e "roduc%tori or Ki consumatori or. Cum o ast#e de so u/ie este "ractic im"osibi %0 vom considera cazu "ractic a unui bu##er #init. Princi"a e e "rob eme care a"ar Ln acest caz suntG & bu##er $o 9consumatorii nu "ot consuma date Ki trebuie s% aKte"te:O &bu##er " in 9"roduc%torii nu "ot Lnscrie date Ln bu##er Ki trebuie s% aKte"te:. Indi#erent de so u/ii e a ese0 vor trebui rezo vate situa/ii e de citire din bu##er&u $o Ki de Lnscriere Ln bu##er&u " in.

a. Metoda semafoarelor

Die un bu##er de dimensiune n or$anizat du"% structura coad% circu ar%. <u##eru are n oca/ii "e care e&am notat cu tampon[n]. Vom considera urm%toare e variabi e0 sema#oare Ki mutexuriG Variabi e e cu care se scrie Ki se citeKte Ln bu##er au #ost notate cu scriere Ki citire. 6 e asi$ur% accesu "rocese or a "ozi/ia unde se doreKte o"era/ia de scriere sau citire0 Ln ordinea Ln care au venit. Sema#oare e0 semscriere Ki semcitire0 au ro u de a asi$ura exc uderea mutua % Lntre "rocese e "roduc%tor Ki consumator. Sema#oru semscriere con/ine num%ru de "ozi/ii ibere din bu##er iar sema#oru semcitire con/ine num%ru de "ozi/ii " ine.Semscriere se ini/ia izeaz% 32 + P a $ e

cu n Ki semcitire cu -.CMnd semscriere=0 sau semcitire=n0 se va semna a situa/ia de bu##er " in res"ectiv bu##er $o Ki "rocese e vor #i b ocate. Se intr% Lntr&o exc udere mutua % cu "rotoco u buss=&Iait Ki "rocese e vor #i deb ocate atunci cMnd semscriere di#erit de n sau semcitire di#erit de 0. 'utexuri e mutexscriereKi mutexcitire#o osesc "entru exc uderea mutua % Lntre dou% "rocese de ace aKi ti"Gmutexscriere "entru "rocese e de ti" "roduc%tor Ki mutexcitire "entru "rocese e de ti" consumator. Procese e "roduc%tor vor citi numere Lntre$i a tastatur% iar "rocese e consumator vor Pconsuma@ aceste numere. Iat% o im" ementare a "rob emei "roduc%tor)consumator0 scris% Ln imba(u CG

//declaraii de variabile, semafoare, mutexuri i iniializatori typedef int semafor; typedef int mutex; define n !000; int tampon[n]; int scriere=0, citire=0; semafor semscriere=n, semcitire=0; mutex mutexscriere, mutexcitire;

//"rocese produc#tor int valoare, tastatur#; $%ile&!' ( valoare=scanf&)*d+,,tastatura'; $ait&semscriere' ; loc-&mutexscriere' ; tampon[scriere]=valoare ; scriere=&scriere.!'*n ; unloc-&mutexscriere' ; si/nal&semcitire' ;0

//"rocese 1onsumator 33 + P a $ e

int valoare; $%ile&!' ($ait&semcitire'; loc-&mutexcitire'; valoare=tampon[citire]; citire=&citire.!'*n; unloc-&mutexcitire'; si/nal&semscriere';0

Procese e "roduc%tor #unc/ioneaz% Ln #e u urm%torG Se consider% o buc % $%ile din care "ractic nu se iese. Se citeKte un num%r Lntre$ de a tastatur% Ln variabi a valoare. Prin $ait&semscriere' se asi$ur% exc uderea mutua % a "rocesu ui res"ectiv "roduc%tor #a/% de a te eventua e "rocese consumator.Prinloc-&mutexscriere' se asi$ur% exc uderea mutua % a "rocesu ui res"ectiv "roduc%tor #a/% de a te "rocese "roduc%toare. Prin tampon[scriere]=valoarese scrie e#ectiv va oarea Ln bu##er. Prin scriere=&scriere.!'*nse actua izeaz% "ozi/ia de scriere Ln bu##er. Prin unloc-&mutexscriere' se e ibereaz% mutexu de scriere0 "ermi/Mnd a tor "roduc%tori s% #o oseasc% bu##eru . Prin si/nal&semcitire' se contorizeaz% sema#oru de citire cu 10 semna Mnd c%0 du"% ce "rocesu "roduc%tor a Lnscris o va oare Ln bu##er0 num%ru de "ozi/ii din bu##er "entru "rocese e consumatoare s&a m%rit cu !.Procese e consumator #unc/ioneaz% Ln mod asem%n%tor.

-. Metoda transmiterii de mesa6e

Pentru #o osirea te,nicii de transmitere "rin mesa(e0 consider%m o inie de transmisie cu ca"acitate imitat% care #o oseKte un bu##er cu n "ozi/ii. 'odu de comunica/ie a es "entru im" ementare este ce este sim" u. Consumatoru trimite mai direct0 deci #%r% mesa(e $oa e mai boxuri.; $oritmu LntMi

"roduc%toru ui. Ori de cMte ori "roduc%toru are de dat un "rodus consumatoru ui0 va ua un mesa( $o si va transmite consumatoru ui un mesa( " in. Prin aceasta num%ru de mesa(e din sistem r%mMne constant Ln tim"0 nede"%Kind ca"acitatea imitat% a bu##eru ui de comunica/ie. <u##eru de comunica/ie este " in atunci cMnd "roduc%toru ucreaz% mai re"ede decMt consumatoru Ki toate mesa(e e sunt " ine. Qn acest moment "roduc%toru se b oc,eaz%0 aKte"tMnd ca un mesa( $o s% se Lntoarc%.

34 + P a $ e

<u##eru de comunica/ie este $o atunci cMnd consumatoru ucreaz% mai re"ede decMt "roduc%toru . >oate mesa(e e vor #i $o ite aKte"tMnd ca "roduc%toru s% e um" e. Consumatoru este b ocat aKte"tMnd "entru deb ocare un mesa( " in. Iat% mai (os o im" ementare a "rob emei "roduc%tor)consumator "rin trans#er de mesa(e.

define n !0000 (int val; void produc#tor&' messa/e m; $%ile&!' (val=produce element&'; receive&consumator,,m'; construieste mesa3&,m,val'; send&consumator,,m';00 /2o funcie care produce mesa3ul transmis de produc#tor2/ /2ateapt# un mesa3 /ol2/ /2o funcie care construiete mesa3ul transmis2/ /2se transmite efectiv mesa3ul consumatorului2/ /2este mesa3ul transmis de produc#tor2/

void consumator&' (int i,val; messa/e m; for&i=!;i4=n;i..' send&produc#tor,,m'; $%ile&!'( receive&produc#tor,,m'; val=extra/eremesa3&,m'; send&produc#tor,,m'; consuma element&val';00 /2se primete mesa3ul de la produc#tor2/ /2se extra/e mesa3ul pentru a putea fi prelucrat2/ /2se trimite o replic# la mesa3ul /ol2/ /2o funcie care are rolul de a utiliza mesa3ul transmis de produc#tor2/ /2se transmit spre produc#tor cele n mesa3e /oale2/

35 + P a $ e

Se observ% Ln im" ementarea a eas% c% "arametru mesa( este un "arametru re#erin/%.

). 1ro-lema - r-ierului somnoros

6nun/ Pr%v% ia unui b%rbier este #ormat% din dou% camere0 una a strad%0 #o osit% ca sa % de aKte"tare0 Ki una Ln s"ate0 Ln care se $%seKte scaunu "e care se aKeaz% c ien/ii "entru a #i servi/i. 5ac% nu are c ien/i0 b%rbieru somnoros se cu c%. S% se simu eze activit%/i e care se des#%Koar% Ln "r%v% ia b%rbieru ui. 8ezo vare ;ceast% "rob em% este o re#ormu are a "rob emei "roduc%tor)consumator0 Ln care ocu bu##eru ui de obiecte este uat de scaunu b%rbieru ui iar consumatoru este b%rbieru care LKi serveKte 9consum%: c ien/ii. Qn sa a de aKte"tare sunt n scaune "e care se aKeaz% c ien/iiO #iecare scaun este "entru un c ient. 5ac% nu sunt c ien/i0 b%rbieru doarme Ln scaunu de #rizerie. CMnd vine "rimu c ient L trezeKte "e b%rbier Ki b%rbieru L serveKte "e c ient0 aKezMndu& Ln scaunu de #rizerie. 5ac% Ln acest tim" sosesc Ki a /i c ien/i0 ei vor aKte"ta "e ce e n scaune. CMnd toate scaune e sunt ocu"ate Ki mai vine Lnc% un c ient0 acesta "%r%seKte "r%v% ia. Prob ema const% Ln a "ro$rama aceste activit%/i Ln aKa #e LncMt s% nu se a(un$% a aKa numite e condi/ii de curs%. 6ste o "rob em% c asic% cu mu te a" ica/ii0 mai a es Ln ce e de ,e "des7. Pentru im" ementarea so u/iei vom uti iza dou% sema#oare Ki un mutexG clieni J un sema#or ce contorizeaz% c ien/ii ce aKtea"t%O b#rbier J un sema#or care arat% dac% b%rbieru este ocu"at sau nuO e are dou% va ori0 - dac% b%rbieru este ocu"at Ki 1 dac% este iberO mutexc J un mutex #o osit "entru exc udere mutua %O arat% dac% scaunu de #rizerie este ocu"at sau nu. 5e asemenea mai #o osim o variabi %G

3. + P a $ e

c ien/iLnaKte"tare J care0 aKa cum arat% Ki nume e0 num%r% c ien/ii care aKtea"t%. ;ceast% variabi % trebuie introdus% deoarece nu exist% o ca e de a citi va oarea curent% a sema#oare or Ki de aceea un c ient care intr% Ln "r%v% ie trebuie s% numere c ien/ii care aKtea"t%. 5ac% sunt mai "u/ini decMt scaune e0 se aKeaz% Ki e Ki aKtea"t%O dac% nu0 "%r%seKte #rizeria.

S% descriem a $oritmu . CMnd b%rbieru intr% diminea/a Ln "r%v% ie0 e execut% #unc/ia b#rbier&'0 b ocMnd sema#oru clieni care este ini/ia "e zero. ;"oi se cu c% Ki doarme "Mn% vine "rimu c ient. CMnd acesta soseKte0 e execut% #unc/ia clieni&' Ki ocu"% mutexul care arat% c% scaunu de #rizerie este ocu"at. 5ac% intr% un a t c ient Ln acest tim"0 e nu va "utea #i servit deoarece mutexul este ocu"at. Va num%ra c ien/ii care aKtea"t% Ki0 dac% num%ru or e mai mic decMt num%ru scaune or0 va r%mMne0 dac% nu0 va "%r%si "r%v% ia. 8%mMnMnd0 va incrementa variabi a a rMndu s%u. Iat% mai (os im" ementarea acestui a $oritmG clieni5nateptare. CMnd c ientu care este servit a #ost b%rbierit0 e e ibereaz% mutexu 0 trezind c ien/ii care aKtea"t% Ki unu din ei va ocu"a mutexul0 #iind servit

define scaune 60

/2se definete num#rul de scaune2/

type def int semafor; type def int mutex ; semafor clienti=0; /2declaraii i

iniializ#ri2/ semafor b#rbier=0; mutexc=!; int clientiinasteptare=0;

void b#rbier&' ($%ile&!'( $ait&clienti'; $ait&mutexc'; clientiinasteptare77; 3! + P a $ e

si/nal&b#rbier'; si/nal&mutexc'; tunde&'; 0 void clienti&' ($ait&mutexc'; if&clientiinasteptare4scaune' (clientiinasteptare..; si/nal&clienti'; si/nal&mutexc'; clienttuns&'; 0 else si/nal&mutexc';00

5. 1ro-lema cititori7scriitori

Prob ema a #ost enun/at% de Coutois0 Ee=mans Ki Parnas Ln 1A!1. 3n obiect 9care "oate #i o resurs%0 de exem" u un #iKier sau o zon% de memorie: este "arta(at de mai mu te "rocese concurente. 5intre aceste "rocese0 une e doar vor citi con/inutu obiectu ui "arta(at Ki aceste "rocese "oart% nume e de cititori iar ce e a te vor scrie Ln con/inutu obiectu ui "arta(at0 "urtMnd nume e de scriitori. Cerin/a este ca scriitorii s% aib% acces exc usiv a obiectu "arta(at0 Ln tim" ce cititorii s% "oat% accesa obiectu Ln mod concurent 9neexc usiv:. 6xist% mai mu te "osibi it%/i de a so u/iona aceast% "rob em%. Vom aminti dou% varianteG

Varianta 1 2ici un cititor nu va #i /inut Ln aKte"tare0 decMt dac% un scriitor a ob/inut de(a "ermisiunea de acces a obiectu "arta(at.La un acces simu tan a obiectu "arta(at0 atMt a scriitori or cMt Ki a cititori or0 cititorii au "rioritate.

Varianta 2 3* + P a $ e

CMnd un scriitor este $ata de scriere0 e va executa scrierea cMt mai curMnd "osibi .La un acces simu tan0 scriitorii sunt "rioritari. Oricum0 Ln ambe e cazuri0 "rob ema "rinci"a % ce trebuie rezo vat% este Ln#ometarea0 adic% aKte"tarea a in#init a ob/inerii dre"tu ui de acces. S% im" ement%m un "ro$ram "entru "rima variant%0 #o osind urm%toare e sema#oare0 mutexuri Ki variabi eG scrie J un sema#or cu mai mu te ro uriO e asi$ur% exc uderea mutua % a scriitori orO este #o osit de c%tre "rimu cititor care intr% Ln "ro"ria sec/iune critic%O de remarcat c% acest sema#or nu este uti izat de cititorii care intr% sau ies din sec/iunea critic% Ln tim" ce a /i cititori se a# % Ln "ro"ria sec/iune critic%O contorcitire J o variabi % care are ro u de a /ine eviden/a num%ru ui de "rocese existente Ln cursu citiriiO semcontor J un sema#or care asi$ur% exc uderea mutua % cMnd este actua izat% variabi a contorcitire. 5ac% un scriitor este Ln sec/iunea critic% Ki n cititori aKtea"t%0 atunci un cititor

aKtea"t% a sema#oru scriere iar cei a /i n&1 aKtea"t% a semcontor. Lasi/nal&scrie'0 se "oate re ua #ie execu/ia unui sin$ur scriitor0 #ie a cititori or a# a/i Ln aKte"tare0 decizia #iind uat% de " ani#icator. Iat% im" ementarea "ro$ramu ui "entru "rima variant%G typedef int semafor; /2declaraii i initializ#ri2/ int contorcitire=0; semafor scrie=!,semcontor=! ;

void scriitor&' ($ait&scrie' ; scriereobiect&' ; si/nal&scrie' ;0 void cititor&' 3A + P a $ e

($ait&semcontor' ; contor citire..; if&contorcitire==!'$ait&scrie';/2primul cititor2/ si/nal&semcontor'; citireobiect&'; $ait&semcontor'; contor citire77; if&contorcitire==0'si/nal&scrie';/2ultimul cititor2/ si/nal&semcontor';0

0. 1ro-lema cinei filo&ofilor c"ine&i

Cinci #i ozo#i c,inezi LKi "etrec via/a $Mndind Ki mMncMnd Ln (uru unei mese circu are Lncon(urat% de cinci scaune0 #iecare #i ozo# ocu"Mnd un scaun. Qn centru mesei este un " atou cu orez Ki Ln dre"tu #iec%rui #i ozo# se a# % o #ar#urie. Qn stMn$a Ki Ln drea"ta #ar#uriei cMte un be/iKor. 5eci0 Ln tota 0 cinci #ar#urii Ki cinci be/iKoare. 3n #i ozo# "oate e#ectua dou% o"era/iiG $MndeKte sau m%nMnc%. Pentru a "utea mMnca0 un #i ozo# are nevoie de dou% be/iKoare0 unu din drea"ta Ki unu din stMn$a. 5ar un #i ozo# "oate ridica un sin$ur be/iKor odat%. Prob ema cere o so u/ie "entru aceast% cin%. 2 1 3 5 4

>rebuie rezo vate dou% "rob eme ma(oreG Interb ocarea care "oate s% a"ar%. 5e exem" u0 dac% #iecare #i ozo# ridic% be/iKoru din drea"ta sa0 nimeni nu mai "oate s%& ridice Ki "e ce din stMn$a Ki a"are o situa/ie c ar% de aKte"tare circu ar%0 deci de interb ocare. 4- + P a $ e

Prob ema Ln#omet%rii unui #i ozo# care nu a"uc% s% ridice niciodat% ce e dou% be/iKoare. ;ceast% "rob em% a #ost enun/at% Ki rezo vat% de c%tre 5i(7stra Ln 1A.5. 6xist% mu te

so u/ii a e acestei "rob eme0 marea ma(oritate uti izMnd exc uderea mutua %. Pentru a nu a"%rea interb ocarea se #o osesc0 Ln $enera 0 so u/ii de "revenire a acesteia adic% se im"un une e restric/ii Ln ceea ce "riveKte ac/iuni e #i ozo#i or0 cum ar #iG unui #i ozo# i se "ermite s% ia un be/iKor numai atunci cMnd ambe e be/iKoare0 din drea"ta Ki din stMn$a sa0 sunt dis"onibi eO se creeaz% o cores"onden/% biunivoc% Lntre mu /imea numere or natura e Ki #i ozo#i0 #iecare #i ozo# avMnd un num%r natura O o so u/ie asimetric% im"une #i ozo#i or cu num%r im"ar s% a"uce mai LntMi be/iKoru din stMn$a Ki a"oi "e ce din drea"ta0 iar #i ozo#i or cu num%r "ar s% ia mai LntMi be/iKoru din drea"ta Ki a"oi "e ce din stMn$a.

Vom "rezenta0 Ln continuare0 o so u/ie c asic% a acestei "rob eme0 care rezo v% Ki situa/ia interb oc%rii Ki "e cea a Ln#omet%rii. Qn acest a $oritm0 se "oate $enera iza "rob ema "entru n #i ozo#i. Se urm%reKte Ln ce stare "oate #i un #i ozo#0 existMnd trei st%ri "osibi eG m%nMnc%0 $MndeKte Ki este Ln#ometat. 3nui #i ozo# i se "ermite s% intre Ln starea Pm%nMnc%@ numai dac% ce "u/in unu din vecinii s%i nu este Ln aceast% stare. Prin aceast% restric/ie se "revine interb ocarea. Pentru im" ementare0 se uti izeaz% urm%toare e structuriG stare[n] J un vector n&dimensiona 0 Ln care "e "ozi/ia i se $%seKte starea #i ozo#u ui a un moment datO aceasta "oate #iG o o o "entru starea P$MndeKte@ "entru starea PLn#ometat@ "entru starea Pm%nMnc%@

sem[n] J un vector n&dimensiona 0 Ln care sem[i] este un sema#or "entru #i ozo#u iO mutexfil J un mutex "entru exc udere mutua %O funciafilozof&i' J este #unc/ia "rinci"a % care coordoneaz% toate ce e a te #unc/ii Ki care se re#er% a #i ozo#u iO funcia ridic# beior&i' J este #unc/ia care asi$ur% "entru #i ozo#u i ridicarea ambe or be/iKoareO 41 + P a $ e

funcia pune beior i J este #unc/ia care asi$ur% "entru #iecare #i ozo# i "unerea ambe or be/iKoare "e mas%O funcia test&i' J este #unc/ia care testeaz% Ln ce stare este #i ozo#u i.

Im" ementarea esteG

define n 8 define stan/&i.n7!'*n define drept&i.!'*n define /andeste 0 defineinfometat ! define mananca 6 typedef int semafor; typedef int mutex; int stare[n]; mutex mutexfil=! semafor sem[n]; void filozof&int i' $%ile&i' ( /andeste&'; ridicabetisor&i'; mananca&'; punebetisor&i'; void ridicabetisor&int i' ($ait&mutexfil'; stare[i]=infometat; test&i'; si/nal&mutexfil'; $ait&sem[i]';0 void punebetisor&int i' ($ait&mutexfil';

/2am definit num#rul de filozofi2/ /2num#rul vecinului din st9n/a filozofului i2/ /2num#rul vecinului din st9n/a filozofului i2/

/2filozoful i /9ndete2/ /2filozoful i ridic# cele dou# beioare2/ /2filozoful i m#n9nc#2/ /2filozoful i pune pe mas# dou# beioare2/ /2se intr# 5n re/iunea critic#2/ /2filozoful i este 5n starea 5nfometat2/ /25ncearc# s# acapareze cele dou# beioare2/ /2se iese din re/iunea critic#2/ /2procesul se bloc%eaz# dac# nu se pot lua cele dou# beioare2/ /2se intr# 5n re/iunea critic#2/ 42 + P a $ e

stare [i]=/andeste; test&stan/'; test&drept'; si/nal&mutexfil'; 0 void test&int i'; (if stare [i]== infometat,,stare[stan/]:= mananca,,stare[drept]:= mananca' (stare[i]=mananca; si/nal&sem[i]';00

/2filozoful i a terminat de /9ndit2/ /2se testeaz# dac# vecinul din st9n/a filozofului i m#n9nc#2/ /2se testeaz# dac# vecinul din dreaptafilozofului i m#n9nc#2/ /2se iese din re/iunea critic#2/

8. 1ro-lema re&erv rii -iletelor


6nun/ Diecare termina a unei re/e e de ca cu atoare este " asat Lntr&un "unct de vMnzare a bi ete or "entru trans"ortu #eroviar. Se cere s% se $%seasc% o moda itate de a simu a vMnzarea bi ete or0 #%r% a vinde dou% sau mai mu te bi ete "entru ace aKi oc. 8ezo vare 6ste cazu Ln care mai mu te "rocese 9vMnz%toare e de bi ete: Lncearc% s% uti izeze Ln mod concurent o resurs% ne"arta(abi %0 care este o resurs% critic% 9 ocu dintren:. Prob ema se rezo v% uti izMnd exc uderea mutua % iar "entru im" ementarea ei cea mai sim" % metod% este #o osirea sema#oare or.

9. 1ro-lema #r dinii ornamentale


6nun/ Intrarea Ln $r%dini e ornamenta e a e unui oraK orienta se #ace "rin n "%r/i. S% se /in% eviden/a "ersoane or care au intrat Ln $r%din%. 8ezo vare Diecare "oart% de intrare Ln $r%din% este o resurs% care trebuie accesat% exc usiv de un"roces 9 o "ersoan% care intr% Ln $r%din%: .

43 + P a $ e

5ac%0 a un moment dat0 "e una din "or/i intr% o "ersoan%0 atunci0 Ln ace moment0 "e nici oa t% "oart% nu mai intr% vreo "ersoan% Ln $r%din%. ;ceast% "rob em% #ace "arte din "rob ema exc uderii reci"roce.

:. 1ro-lema emi. tor-receptor

6nun/ 3n emi/%tor emite succesiv mesa(e0 #iecare dintre e e trebuind s% #ie rece"/ionate de to/i rece"torii0 Lnainte ca emi/%toru s% emit% mesa(u urm%tor. 8ezo vare 6ste o a" ica/ie de ti"u c ient&server. Qn acest ti" de a" ica/ii0 un "roces server este un "roces ce o#er% servicii a tor "rocese din sistem iar un "roces c ient este unu care so icit% servicii de a server Ki e consum%. 5ac% "rocese e c ient Ki server nu sunt "e ace aKi ca cu ator0 atunci aceast% a" ica/ie este distribuit%. Im" ementarea ei0 ce mai adesea uti izat% Ln sisteme e mu tica cu ator0 se #ace "rin transmisie de mesa(e.

44 + P a $ e

S-ar putea să vă placă și