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.Sekcjamikrytycznymiinstrukcjewwierszach7–8oraz12–13,
dlategonawejściuiwyjściuztychsekcjirealizowaneoperacjewait(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ćzbazyzwię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órekonstrukcjaminiskiegopoziomu.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,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).