Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
22
1.Procesywspółbieżne
realizowanajestoperacjasignalnasemaforzedostęp(wiersz13).Umożliwiatouzy-
skaniedostępudobazyprzezpisarza,jeżelitakiczekałwkolejcesemaforadostęp
wskutekwykonaniaoperacjiwaitwwierszu20.Pisarztenuzyskujewówczasdostęp
dobazy,apowykonaniuswoichtransakcjisygnalizujerezygnacjęzdostępudobazy,
wykonującoperacjęsignalwwierszu22.Opróczsemaforadostępwomawianym
rozwiązaniuwystępujerównieżsemaforssłużącydowzajemnegowykluczaniazadań
podczaswykonywaniasekcjikrytycznych,wktórychmodyfikujesięwartośćzmiennej
liczba_czytelników.Sekcjamikrytycznymisąinstrukcjewwierszach7–8oraz12–13,
dlategonawejściuiwyjściuztychsekcjirealizowanesąoperacjewait(s)orazsignal(s).
Przedstawionerozwiązanieproblemuczytelnikówipisarzycechujeprostota.Nieste-
ty,rozwiązanietoniejestwpełnipoprawne.Możebowiemwnimwystąpićzagłodzenie
pisarzy,jeślidobazydanychbędziesięzgłaszaćwsposóbciągłydużaliczbaczytelni-
ków.Wtakimprzypadkuczytelnicybędąbezprzerwykorzystaćzbazy—zwiększając
izmniejszającjedyniewartośćzmiennejliczba_czytelników(wiersze7i12)—nie
pozwalającprzytymnakorzystaniezbazyprzezpisarzy.Womówionymrozwiązaniu
czytelnicymająwięcwyższypriorytetwdostępiedobazywporównaniuzpisarzami.
Poprawnerozwiązanieomawianegoproblemuzzastosowaniemmonitorajestprzedsta-
wionewnastępnympunkcie,azzastosowaniemsemaforówjestprzedmiotemćw.1.8.
1.4.5.Monitory
Womawianychdotądprzykładachdorozwiązaniaproblemówsynchronizacjiużywane
byłysemafory,któresąkonstrukcjaminiskiegopoziomu.Semaforytrzebastosować
zuwagą,ponieważniewłaściwakolejnośćwykonaniaoperacjiwaitisignal,bądźpomi-
nięciektórejśznich,powodujezwykleblokadęzadańiniepoprawnedziałaniesystemu
współbieżnego.Zlokalizowanietegorodzajubłędów,szczególniewdużychsystemach,
jesttrudne.
Konstrukcjąwyższegopoziomu,owiększymstopniustrukturalizacji,jestmonitor.
Umożliwiaonrozwiązywanieproblemówsynchronizacjizzapewnieniemwiększego
bezpieczeństwa.Monitorjestspecjalnymmodułemlubpakietemgromadzącymstruktu-
rydanychorazproceduryoperującenatychstrukturach.Procesy(zadania)wykonywane
współbieżniemogąmodyfikowaćstrukturydanychmonitoratylkoprzezwywołaniajego
procedur,czyliniemogątegoczynićbezpośrednio13.Istotnącechąmonitorajestto,że
wdanejchwilitylkojedenprocesmożewykonywaćproceduręmonitora.Oprocesie,
którywykonujeprocedurę,mówimy,żejestonaktywnywewnątrzmonitora.Jeśli
wprocesieAwywoływanajestproceduramonitora,awewnątrzmonitorajestaktywny
procesB,towykonywanieprocesuAzostajewstrzymanedomomentu,ażprocesB
opuścimonitor.Innymisłowy,wykonywanieprocedurmonitorazachodzizewzajemnym
wykluczaniemprocesów.Gwarantujetowzajemnewykluczaniedostępudostruktur
danychmonitora,któremogąbyćmodyfikowaneprzezjegoprocedury.Wykluczanie
13Umieszczaniedanychidziałającychnanichprocedurwodrębnychmodułachokreślanejestmianem
kapsułkowania(ang.encapsulation).