skrypt.pdf

(57 KB) Pobierz
651959626 UNPDF
Przykładowezadanianakolokwiumnr2
***proKtórazfunkcjisystemowychUnixaniejestpotrzebnadokorzystania
zpotoku?***odppipe***odpfork***odpread***odpwrite
***proIlepowstanieł¡cznieprocesówwskutekuruchomieniaponi»szegopro-
gramu?
main(){inti;for(i=0;i<5;++i)if(fork()<0)exit(0);}
***proKtórafunkcjanigdyniezwracawarto±ci 1?***odpfork***odp
exec***odpclose***odpexit
***proConale»ywstawi¢wprzytoczonymfragmenciekoduwmiejscetrzech
kropek,byspowodowa¢przekierowaniestandardowegowej±cianaplik?
fd=open("plik",0700);close(0);...;close(fd);
***proIleconajwy»ejsierotmo»epowsta¢wwynikudziałanianast¦puj¡-
cegokodu?
fork();fork();if(fork())wait(NULL);
***proKtóryalgorytmpoprawnieimplementujewzajemnewykluczanieza
pomoc¡niepodzielnejoperacjizamianywarto±cizmiennych(exch)?Zakładamy,
»ezmiennaajestwspółdzielona,zainicjowanana0,natomiastbjestlokalna
wka»dymzprocesów;SKoznaczasekcj¦krytyczn¡.***odpb:=1;repeatexch(a,b)untilb=0;SK;a:=0
***odpb:=1;repeatexch(a,b)untilb=1;SK;a:=0***odpb:=1;repeatexch(a,b)untilb=0;SK;b:=0
***odpb:=0;repeatexch(a,b)untilb=0;SK;a:=0
***proKtóryalgorytmpoprawnieimplementujewzajemnewykluczanieza
pomoc¡niepodzielnejoperacjitest-and-set(ts)?Zakładamy,»ezmiennaajest
współdzielona;SKoznaczasekcj¦krytyczn¡.***odpwhilets(a)=1do;SK;a:=0
***odpwhilets(a)=1do;SK;a:=1***odpwhilets(a)=1doa:=0;SK;a:=0
***odpwhilets(a)=1doa:=1;SK;a:=1
***proDwaprocesywspółbie»nekomunikuj¡si¦przezbuforoograniczo-
nejpojemno±ci.Jedenznichjestproducentem,drugi—konsumentem.Dost¦p
dobuforaprocesyprzeprowadzaj¡wedługalgorytmów,wykorzystuj¡cychsema-
forya,b,w.Producentwykonujepokolei:P(a);P(w);wło»eniebajtudobufora;
V(w);V(b).Jakpowinienwygl¡da¢poprawnykodkonsumenta(„pbzb”ozna-
czapobraniebajtuzbufora)?***odpP(b);P(w);pbzb;V(a);V(w)***odp
P(w);P(b);pbzb;V(a);V(w)***odpP(w);P(a);pbzb;V(w);V(b)***odp
P(a);P(w);pbzb;V(w);V(b)
***proDwaprocesywspółbie»nekomunikuj¡si¦przezbuforopojemno±ci
1024bajtów.Jedenznichjestproducentem,drugi—konsumentem.Dost¦p
dobuforaprocesyprzeprowadzaj¡wedługalgorytmów,wykorzystuj¡cychse-
maforya,b,w.Wszczególno±cikodproducentamaposta¢:P(a);P(w);wło-
»eniebajtudobufora;V(w);V(b).Jakiewarto±cipocz¡tkowenale»ynada¢
semaforom?***odpa=1024,b=0,w=1***odpa=0,b=1024,w=1***odp
a=0,b=0,w=1024***odpa=1024,b=1,w=0
***proprocesy P i ( i =1 ,...,N )wykonuj¡wniesko«czonychp¦tlachswoj¡
tre±¢,czylis¡postaci:
process P i :for k i :=1to 1 do { (*); C i ;(**) }
1
Dodatkowomamytablic¦semaforówliczbowych s [ i,j ]orozmiarze N × N ,któ-
rymnadanopocz¡tkowowarto±¢ d .Którefragmentymo»nawstawi¢wmiejsca
(*)/(**),bywdowolnejchwilispełnionybyłwarunek 8 i,j =1 ,...,N : | k i k j
d +1?Liczby N oraz d tostałe.Procesyznaj¡swojenumery i .
**odp(*)for j :=1to N doP( s [ i,j ]),(**)for j :=1to N doV( s [ j,i ])
**odp(*)for j :=1to N doP( s [ i,j ]),(**)for j :=1to N doV( s [ i,j ])
**odp(*)for j :=1to N doP( s [ i,i ]),(**)for j :=1to N doV( s [ j,i ])
**odp(*)for j :=1to N doP( s [ i,j ]),(**)for j :=1to N doV( s [ j,j ])
***proWktórymzestanówznajdujesi¦proces,którywykonałnasemaforze
operacj¦P,leczniewszedłdostrefykrytycznej,gdy»tajestakuratzaj¦taprzez
innyproces?***odpoczekuj¡cy***odpwstrzymany***odpgotowy***odp
wykonywany
***proWktórymzestanówznajdujesi¦proces,którywykonał(wmoni-
torze)operacj¦delay?***odpoczekuj¡cy***odpwstrzymany***odpgotowy
***odpwykonywany
***proPoni»szymonitorsłu»ydosynchronizacjiczytelnikówipisarzy:
monitor CP;varlc,lp:int:=0;qc,qp:queue;
entry PoczPis:iflc > 0orlp > 0thendelay(qp);lp:=1
entry KonPis:lp:=0;ifnotempty(qc)thencontinue(qc)elseifnotempty(qp)
thencontinue(qp)
entry PoczCzyt:iflp > 0thendelay(qc);++lc;ifnotempty(qc)thenconti-
nue(qc)
entry KonCzyt: −− lc;ifnotempty(qp)thencontinue(qp)
Istniejescenariusz,przyktórym:***odpdwóchpisarzynarazuzyskadost¦pdo
bazydanych***odpnast¡pizakleszczenie***odpnast¡pizagłodzenieczytelni-
ków***odpnast¡pizagłodzeniepisarzy
***proDwaprocesykorzystaj¡zdwóchsemaforówbinarnych:s1is2.Po-
cz¡tkowos1jestotwarty,za±s2—zamkni¦ty.Kodprocesów: process P1:whiletruedo { P(s1);V(s2);V(s2) } ,
process P2:whiletruedo { P(s2);P(s2);V(s1) } .Wkodzietym:***odpmo»e
(leczniemusi)doj±¢dozakleszczenia***odpnapewnodojdziedozakleszczenia
***odpnapewnoniedojdziedozakleszczenia***odpkodjestniepoprawny
***proSemaforliczbowy(nieograniczony)smiałwarto±¢10.Pó¹niejwyko-
nywanonanimoperacjePiV;wsumie13razywykonanoP(s)i5razyV(s).
Warto±¢semaforapotychoperacjachto:***odp2***odp18***odp5***odp
tegoniemo»naustali¢nieznaj¡ckonkretnejkolejno±ciwykonywaniaPiV
***proRozwa»mydwaprocesy,P1iP2.SemaforbinarnyAjestpocz¡tkowo
otwarty,za±B—zamkni¦ty.Przez N X oznaczmyliczb¦wykona«operacjiX,
przez N Y —liczb¦wykona«operacjiY.Kodprocesów: process P1:whiletruedo { P(A);X;V(B) } ,
process P2:whiletruedo { P(B);Y;V(A) } .Wskaza¢najsilniejszywarunek
zachodz¡cywdowolnejchwili:***odp N Y +1 ­ N X ­ N Y ***odp N X +1 ­
N Y ­ N X ***odp N X +2 ­ N Y ­ N X ***odp N Y +2 ­ N Y ­ N X
***proMamytrzysemaforyliczbowe(nieograniczone):s1,s2is3,zainicjo-
wanena1.Rozwa»amytrzyprocesy.Przez n X , n Y i n Z oznaczamyliczb¦wyko-
na«odpowiednichoperacji.Kodprocesów: process P1:whiletruedo { P(s1);X;V(s2);V(s3) } ,
process P2:whiletruedo { P(s2);Y;V(s1);V(s3) } , process P3:whiletruedo { P(s3);Z;V(s2);V(s1) } .
2
Wskaza¢najsilniejszywarunekzachodz¡cywdowolnejchwili:***odp n X ¬
n Y + n Z ***odp n X ¬ n Y + n Z +1***odp n X ¬ n Y + n Z 1***odp
n X ¬ n Y + n Z +2
***proWproblemieczytelnikówipisarzy:***odpniezale»nieodrozkładu
priorytetównapewnoniedojdziedozagłodzeniaczytelnikówanipisarzy***odp
napewnoniedojdziedozagłodzeniaczytelników,natomiastwzale»no±ciod
rozkładupriorytetówmo»edoj±¢dozagłodzeniapisarzy***odpwzale»no±ciod
rozkładupriorytetówmo»edoj±¢dozagłodzeniaczytelnikówlubpisarzy***odp
dlaka»degomo»liwegorozkładupriorytetówmo»edoj±¢dozagłodzeniaktórego±
ztypówprocesów
***proRozwa»mynast¦puj¡cetaskiwAdzie: task semafor:repeatacceptP;acceptVforever,
task T1:semafor.P;X;semafor.V, task T2:semafor.V;Y;semafor.P, task T3:semafor.P;Z;semafor.P,
task T4:semafor.V;A;semafor.V.Zakładamy,»awprocesiejesttasksemafor
ijedentaskzezbioru X { T 1 ,T 2 ,T 3 ,T 4 } .Wskaza¢maksymalnyzbiór X
gwarantuj¡cyzakleszczenie:***odp { T 1 ,T 2 ,T 3 } ***odp { T 2 ,T 3 ,T 4 } ***odp
{ T 2 ,T 3 } ***odp { T 3 ,T 4 }
3
Zgłoś jeśli naruszono regulamin