Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
10
1.Procesywspółbieżne
1.4.1.Problemsekcjikrytycznej
Problemsekcjikrytycznejwystępujewprzypadku,gdygrupaprocesówrywalizujeoza-
sób,przyczymwdanymmomencietylkojedenzprocesówmożemiećdoniegodostęp.
Zasobamitegotypu9zmiennewpamięciwspólnej,pliki,urządzeniafizyczne.Za-
uważmy,żejednoczesnekorzystanieprzezkilkaprocesówzdrukarkiprowadziłobydo
drukowanianieczytelnychraportów.Podobnie,modyfikowanietychsamychrekordów
bazydanychprzezwieleprocesówwtymsamymczasiemożespowodowaćniespójność
danych.
Fragmentprocesu,aściślejzadania,wktórymkorzystaonozzasobu,określa-
nyjestmianemsekcjikrytycznej.Wyłącznekorzystaniezzasobuosiągasięprzez
zagwarantowanie,żewdowolnejchwilitylkojednozadaniewykonujeswojąsekcję
krytyczną,tj.instrukcjedwóchlubwiększejliczbysekcjikrytycznychniemogąbyć
wykonywanezprzeplotem.Przykładowo,niechdanebędązadaniaAiB.AbyzadanieA
mogłoskorzystaćzzasobu,musiuzyskaćzgodęnajegoużytkowanie,alboinaczej,
zasóbtenmusibyćzadaniuprzydzielony.Poprzydzieleniuzasobuzadaniekorzysta
zniegowramachswojejsekcjikrytycznejipozakończeniusekcjizwalniago.Po
zwolnieniuzasobuprzezzadanieAmożeonbyćprzydzielonyzadaniuB.Jeżeliwtrakcie
użytkowaniazasobuprzezzadanieAzadanieBubiegasięoprzydzielenietegozasobu,
tomusizaczekaćdomomentuzwolnieniazasobuprzezzadanieA.
Problemsekcjikrytycznejmożnarozwiązaćzapomocąsemaforów.Semaforsjest
strukturądanychodwóchpolach:s.worazs.q,przyczympoles.wprzyjmujenieujemne
wartościcałkowite,awartościamipolas.qzbioryzadań(procesów).Nasemaforzes
definiujesięnastępująceoperacje:
wait(s):Jeślis.w>0,tos.w:ls.w11,wprzeciwnymraziewstrzymajzadanie
wykonująceoperacjęwaitidodajjedozbiorus.q.
signal(s):Jeślizadaniawstrzymaneprzezsemafors,tousuńjednozzadań
zezbiorus.qiwznówjegowykonywanie,
wprzeciwnymrazies.w:ls.w+1.
Operacjeczekaniawaitorazsygnalizowania(wysyłaniasygnału,budzenia)signal
atomowe,tzn.instrukcjesprawdzania,czys.w>0lubczywzbiorzes.qwstrzy-
manezadania,anastępniemodyfikowaniawartościs.wlubzbiorus.q,niemogąbyć
wykonanewprzeplociezżadnymiinnymiinstrukcjami.Wdalszymciąguprzyjmiemy,
żezbiórzadańwstrzymanychprzezsemaforjestzorganizowanywkolejkęFIFO.Tak
zdefiniowanysemaforbędziemyokreślaćmianemsemaforazkolejkąoczekujących.
Przedkorzystaniemzsemaforasnależygozainicjowaćprzeznadanieskładowejs.w
dowolnejnieujemnejwartościcałkowitej,s.w0,askładowejs.qkolejkipustej.
9Zasób,zktóregowdanymmomenciemożekorzystaćtylkojedenproces,nazywanyjestzasobem
jednopodzielnym.Zasoby,któremogąbyćużywaneprzezkilkaprocesówjednocześnie,tozasobywielo-
podzielne.Zasobytakiezwykleskładająsięzpewnejliczbyjednostek,np.komórekpamięci,sektorów
dysku,drukarek.Procesymogąsięubiegaćoprzydzieleniejednejlubwiększejliczbyjednostekdanego
zasobu.