Zadanie 1. (3 pkt) Podaj przyklad swiadczfl,cy 0 tym, ze algorytm OMIC (uogolnienie bizantyjskich generalow) nie zadziala poprawnie dla n = 6 i m = 2. Zadanie 2. (3 pkt) Wymien w punktach najwazniejsze roznice mi~dzy semaforami a zmiennymi warunkowymi. Zadanie 3. (10 pkt) W systemie dziala pewna liczba procesow zaj'mujfl,cych si~ przetwarzaniem danych. Kazde zlecenie jest wykonywane dokladnie przez K procesow (K > 1). Kazdy proces (w nieskonczonej p~tli) zglasza si~ do pracy, otrzymuje numer kolejny z przedzialu od 1 do K, a nast~pnie czeka na zgloszenie si~ wszystkich K procesow. Ostatni (K-ty) proces inicjuje przetwarzanie (function inicjuj 0 : DANE)). Zainicjowane dane Sfl,nast~pnie przetwarzane sekwencyjnie przez vvszystkie procesy z tej grupy, poczfl,wszy od pierwszego procesu (tj. procesu, ktory przy zgloszeniu otrzymal numer 1) az do ostatniego (procedure przetwarzaj (var dane : DANE; nr : 1.. K)). Po zakonczeniu przetwarzania kazdy proces ponownie zglasza si~ do pracy. Zakonczenie realizacji calego zlecenia nast~puje po zakonczeniu jego przetwarzania przez wszystkie procesy z grupy. Rownoczesnie moze byc wykonywanych co najwyzej MAXzlecen (opisanych wyzej; MAX2:: 1). Przetwarzanie roznych zlecen moze (i powinno) odbywac si~ rownolegle, przy czym przetwarzanie danego zlecenia przez i-ty proces z danej grupy moze rozpoczfl,c si~ dopiero po zakonczeniu przetwarzania poprzedniego zlecenia przez i-ty proces z poprzedniej grupy. Zapisz przy uzyciu semaforow tresc procesow dzialajfl,cych w tym systemie. Podaj poczfl,tkowe wartosci wszystkich semaforow. Zadanie 4. (8 pkt) W systemie Sfl,dwie grupy procesow korzystajfl,ce z N zasobow typu AiM zasobow typu B (N + M > 1). Procesy z pierwszej grupy cyklicznie wykonujej.wlasne sprawy, po czym wywolujfl, procedur~ zamienab, ktora konsumuje jeden zasob A i produkuje jeden zasob B. Procesy z grupy drugiej cyklicznie wykonujfl, wlasne sprawy, po czym wywolujfl, procedur~ zamien, ktora konsumuje jeden zasob dowolnego typu i produkuje zasob przeciwny. Zsynchronizuj procesy za pomocfl, monitora tak, aby: procedury zamienab i zamien byly wywolywane przez procesy jedynie pod warunkiem dost~pnosci odpowiednich zasobow, procesy z grupy pierwszej wykonywaly procedur~ zamienab parami, tzn. proces z grupy pierwszej moze rozpoczej.cjej wykonanie jedynie wtedy, gdy jest inny proces z grupy pierwszej, gotowy do jej wykonania (i oczywiscie niezb~dne zasoby), jednoczesnie moglo odbywac si~ wiele operacji na zasobach, ale nie doszlo do zaglodzenia zadnej grupy procesow. Monitor powinien udost~pniac jedynie procedury wywolywane przez procesy przed i po rozpocz~ciu korzystania z zasobow.
Zadani{l) (5 pkt) Sformuruj problem uzgadniania wartosci przechowywanych przez n ptocesow (uogolniona wersja bizantyjskich generalow). Podaj oba wanmki poprawnosci algorytmu uzgadniania oraz wamnek rozwi,!zalnosci. Pokaz, ze dla n = 7 i m = 2 dwie rundy algorytmu OMIC s'! niewystarczaj,!ce. Zadanie 2 (5 pkt) Kiedy program wsp61biemy jest poprawny? Zilustmj niez~dne poj~cia na przykladzie czytelnikow i pisarzy. Zadanie 3 (15 pkt) W rozgrywkach koszykowki bierze udzial M (M > 0) drui:yn licz,!cych po L > 1 zawodnikow kazda. Kazdy zawodnik zalatwia wlasne sprawy, po czym oczekuje na kolegow z dmi:yny. Gdy zbior,! si~ dwie peine dmi:yny, to mog'! one rozegrae mecz (gram), a wszyscy oczekuj,!cy zawodnicy z innych dmi:yn koncz,! wtedy oczekiwanie i kibicuj,! (funkcja kibicuj e) rozgrywa;i,!cym mecz dmzynom. Po zakonczeniu wykonania funkcji gram lub kibicuj e zawodnik zajmuje si~ znow wlasnymi sprawami. Jednoczesnie moze odbywac si~ wiele meczy, ale dmi:yna moze rozegrae co najwyzej 0 K > 0 meczy wi~cej niz dowolna inna dmi:yna. Zapisz w Lindzie trese procesu Gracz (nrdruz: 1.. M). Opisz pocz,!tkow,! zawartose przestrzeni krotek i znaczenie poszczegolnych krotek Zadbaj 0 to, aby liczb~ krotek znajduj'!cych si~ jednoczesnie w przestrzeni moma bylo ograniczyc z gory przez pewn,! stal,!. Zadanie 4 (15 pkt) Za siedmioma gorami, za siedmioma rzekami, w g~stym lesie znajduje si~ wioska krasnoludkow. Jak wiadomo, krasnoludki opiekuj,! si~ wyp~dzonymi przez okrutne macochy kr6lewnami. W wiosce mieszkaj,! K > 0 kr6lewny, K R > 1krasnoludk6w oraz jeden handlarz nici.pocz,!tkowo w bezkresnym magazynie wioskowym znajduje sie I > 1 igiel, S > 0 szpulek nici i jedne noi:yczki. Krolewny oraz krasnoludki zajmuj,! si~ szyciem. Handlarz podr6zuje po swiecie i wymienia uszyte ubrania na nici potrzebne w wiosce. Postae chc,!ca rozpocz,!c szycie bierze igl~ i szpulk~ nici. Romica mi~dzy krolewn,! a krasnoludkiem polega na tym, ze krolewna sama bierze noi:yczki i wycina form~ z materialu (funkcja wycinam () ), natomiast krasnoludki musz'! to robie zespolowo (co najrnniej we dwoch - s'! zbyt male aby obslui:yc noi:yczki pojedyilczo). Po wyci~ciu formy postae odklada noi:yczki i zabiera si~ za szycie (funkcja szycie ()). Po zakonczeniu szycia igla jest odkladana do magazynu. Ponadto, jesli na szpulce zostalo jeszcze wystarczajaco duzo nitki (funkcja szycie daje wtedy w wyniku true), to zwracana do magazynu jest takze szpulka. Postac udaje si~ nas~pnie na zasruzony wypoczynek (). Po odpoczynku caly cykl pracy jest powtarzany.
Handlarz zajmuje si~ dostarczaniem nici do magazyn6w wioski. W tym celu wykonuje podr6ze po calym swiecie (funkcja podroz (), kt6rej wynikiemjest liczba szpulek przywieziona do wioski). Po umieszczeniu nici w magazynach udaje sie na wypoczynek (). Kiedy wypocznie powtarza opisany powyzej cykl. Napisz tresci proces6w kr6lewna, krasnoludek oraz handlarz. Do synchronizacji proces6w ui:yj semafor6w og6lnych illub binarnych. Nalei:y zadbac 0 to, zeby praca byla wykonywana, a postaci nie czekaly bezczynnie, jezeli tylko jest to mozliwe.
Egzamin z programowania wsp61bieznego, 2005-06-01 Zadanie 2 (5p.) Algorytm uzgadniania OMIC uruchomiono dla n = 7 i m = 2 wykonuj l:c dwie fazy (OMIC (1) i OMIC (0)) zamiast trzech. Skonstruuj przyklad pokazuj l:cy, ze uzyskane wyniki nie s l: poprawne. Zadanie 3 (lop.) Biuro pracy pomaga znalezc pracodawcom pracownikow i na odwrot. Pracodawcy i pracownicy majq unikalne identyfikatory b~dqce liczbami naturalnym - b~dziemy je nazywac peselami. Pracownicy w p~tli nieskonczonej zglaszajq do biura ch~c pracy i podajq sw6j pesel, a w odpowiedzi otrzymujq pesel pracodawcy, z kt6rym przyszlo im pracowac (procedura Chc~Pracowac). Pracodawcy zglaszajq do biura ch~c realizacji projektu, podaj l:c swoj pesel, dodatniq liczb~ pracownikow L, ktorych potrzebujq do wykonania projektu (procedura Projekt), i kolejnose, w jakiej chcq poznawae pesele pracownikow z grupy przydzielonej do wykonania projektu (ot, taka zachcianka pracodawc6w), a majq do wyboru kolejnose, w jakiej pracownicy zglaszali si~ do biura (KOLEJNO),albo odwrotnq (ODWROTNIE).Nast~pnie, po zakonczeniu procedury Projekt, L razy wywoluj l: procedur~ Nast~pnyPracownik i otrzymujq w odpowiedzi numery kolejnych pracownik6w zgodnie z wybran l: przez siebie kolejnosci l:. Zaimplementuj monitor BiuroPracy, kt6ry udostlipnia nastlipujqce procedury, odpowiadajqce wczesniej opisanym czynnosciom (mozesz skrocie nazwy zmiennych): Projekt(pesel,liczbaPracownikow:integer; wjakiejkolejnosci:kolejnosc) Nast~pnyPracownik(var pracownik:integer) Pracownicy S l:przypisywani kolejnym zgloszeniom pracodawcow, zgodnie z kolejnosci l:, w jakiej pracownicy zjawiaj l: si~ w biurze. W monitorze moze bye jedynie stala liczba zmiennych typu condition, a wszystkie pozostale struktury muszq miee sumaryczny staly rozmiar. Zlekcewazenie tego wymagania oznacza 0 punktow. Przyklad. Do biura zglaszaj l: si~ kolejno pracownicy 0 peselach 1, 2, 3,4, 5 i 6. Pot em zjawia si~ pracodawca, ktory zglasza z l:danie Pro j ekt (20050601,2, ODWROTNIE),i otrzymuje pesele pracownik6w 2 i 1 (w tej kolejnosci). Nastlipny pracodawca z l:daprojekt(14100715,3,kolejno) i otrzymuje pesele 3, 4 i 5 (w tej kolejnosci).
Zadanie 4 (lop_) W pewnym systemie dzialajc1 klienci oraz obslugujc1cyich robotnicy. Kazdy robotnik jest zakwalifikowany do jednej z dw6ch grup: robotnik6w sprawnych bc1dirobotnik6w mniej sprawnych. Do obslugi jednego klienta jest potrzebnych dw6ch robotnik6w, przy czym co najmniej jeden z nich musi bye robotnikiem sprawnym. Klient w p~tli nieskonczonej zajmuje si~ najpierw wlasnymi sprawami, a nast~pnie prosi 0 wykonanie pewnej pracy i przekazuje przydzielonym mu robotnikom sw6j adres. Robotnicy w nieskonczonej p~tli wykonujc1zlecane im prace. Po przydzieleniu robotnik6w do danego klienta nastlipuje przekazanie mu identyfikator6w robotnik6w, kt6rzy wykonajc1 zleconc1przez niego pracli. Dane sc1nast~pujc1ce procedury: procedure praca (idl, id2 : IdentRobotnika) - wywolywana w procesie klienta, parametry idl,id2 powinny bye identyfikatorami robotnik6w wykonuj lcych dan l pracli; procedure idzpracuj (gdzie: Adres ; id: IdentRobotnika) - wywolywana w procesie robotnika, parametr gdzie powinien bye adresem klienta, u kt6rego dany robotnik ma pracowae, a parametr id powinien bye identyfikatorem tego robotnika. Napisz trese proces6w: process Klient (m6jadres:adres) oraz process Robotnik (sprawny:boolean,id :IdentRobotnika) przy uzyciu semafor6w og61nych i/lub binarnych. Zadbaj 0 zywotnose proces6w.
Egzamin poprawkowy z PW, 2006-09-06 Zadanie 1 (5p) Omow semafory Agerwali. Podaj przyklad ich zastosowania. Zadanie 2 (5p) Przedstaw rozproszony algorytm synchronizacji Agerwali. W ktorym miejscu dochodzi do synchronizacji zegarow. Podaj przyklad swiadcz'lcy 0 tym, ze jest to niezb~dne. Zadanie 3 (lop.) W pewnym malym miasteczku jest jedna linia autobusowa. Miasteczko to jest tak male, ze na jej trasie zrobiono tylko jeden przystanek. Lini~ obsroguje jeden autobus w ktorym, w dowolnym momencie, zarowno podczas jazdy jak i postoju, moze sie znajdowac co najwyzej K > 0 pasazerow. Autobus ma jedne drzwi, z ktorych korzystaj'l zarowno wsiadaj'lcy, jak i wysiadaj'lcy. Drzwi s&:w&:skie- na raz moze przez nie przechodzic tylko jeden pasazer. Z linii autobusowej korzysta wielu pasazerow. Pasazer, ktory wsi&:dziedo autobusu, moze w nim pozostac tak drogo, jak chce nie musi wysiadac podczas najblizszego postoju. Po przyjeidzie autobusu na przystanek najpierw z autobusu wysiadaj&:ci pasazerowie, ktorzy chcq, a nast~pnie wsiadaj&:nowi. Uzupelnij algorytm pasazerow i kierowcy autobusu: process Pasazer; process Kierowca; begin begin while true do beg in while true do begin <prywatne sprawy> <przejazd na przystanek> <przejscie na przystanek> <otworzenie drzwi> <wsiadanie do autobusu> <odpoczynek> <przejazd autobusem> <zamkniecie drzwi> <wysiadanie z autobusu> <odjazd z przystanku> <odejscie z przystanku> end end end; o instrukcje, ktore za pomoc&:semaforow ogolnych lub binarnych zagwarantuj&:wlasciw&:synchronizacj~ procesow. Zadbaj 0 to, by kierowca autobusu mogl odpoczywac takze wtedy, gdy pasazerowie wysiadaj&:i wsiadaj&:. Zadanie 4 (lop.) W pewnym systemie dziala N 2 0 procesow i serwer. Procesy w p~tli nieskonczonej: zalatwiaj&:wlasne sprawy, grupuj&:si~ w zespoly po 0 < K < N procesow, a nastl(pnie synchronizuj&:sil( w obr~bie zespolu. Kazdy proces, ktory zakonczyl wlasne sprawy wywoluje wejscie serwera Komplet (m: in 1.. N. i; out 1.. K; numery: out array [1.. K] of 1.. N), na ktorym czeka az skompletuje si~ zesp61. Parametr m jest numerem wywoluj&:cego procesu, tablica numery zawiera numery wszystkich czlonkow zespolu oraz pozycj~ i, pod ktor&:dany proces znajduje si~ w tej tablicy. Nast~pnie kazdy czlonek zespolu synchronizuje sil( ze wszystkimi
pozostalymi czlonkami zespolu bezposrednio wywolujcl:cich wejscia Synchro (tzn. kazdy proces wywoluje wejscie Synchro kazdego innego procesu z tego zespolu), po czym znow zajmuje si~ wlasnymi sprawy. Napisz w Adzie tresc procesow Serwer oraz Proces (1.. N). Jedynym wejsciem w serwerze jest Komplet, a jedynym wejsciem w procesie jest Synchro.