Wybrane zadania z programowania wspóªbie»nego

Wielkość: px
Rozpocząć pokaz od strony:

Download "Wybrane zadania z programowania wspóªbie»nego"

Transkrypt

1 Wybrane zadania z programowania wspóªbie»nego Cz ± I Semafory Drukarki W biurowcu Semso dziaªa N rm. Znajduje si tam równie» 0 < K N drukarek, z których korzystaj wspólnie pracownicy rm. Zasady korzystania z drukarek s nast puj ce. Pracownicy ró»nych rm nigdy nie korzystaj z tej samej drukarki jednocze±nie (przyjmujemy,»e jest dana procedura drukuj(nr_drukarki:1..k), której wywoªanie oznacza korzystanie z drukarki: wysªanie dokumentu, oczekiwanie na wydrukowanie i odbiór dokumentu z drukarki). Pracownik danej rmy nie mo»e rozpocz drukowania nie maj c pewno±ci,»e drukarka na któr chce wysªa swój dokument nie jest wykorzystywana przez pracowników innych rm. Pracownicy tej samej rmy w danej chwili mog korzysta tylko z jednej drukarki. Je»eli jest wiele wolnych drukarek, to pracownik, którego rma nie drukuje, mo»e wybra dowoln z nich (nie dbamy o równomierne wykorzystanie drukarek). Rozwi zanie ochrona: binary semaphore := 1; reszta: array [1..N] of binary semaphore := (0,...,0); pierwsi: binary semaphore := 0; ilu_czeka: array [1..N] of integer := (0,...,0); ile_firm_czeka: integer := 0; przydzial: array [1..N] of integer := (0,...,0); ilu_drukuje: array [1..K] of integer := (0,...,0); ile_wolnych: integer := K; process Pracownik(nr:1..N) nr_drukarki; repeat wlasne_sprawy; P(ochrona); if (przydzial[nr] = 0 and ile_wolnych = 0) or ile_firm_czeka > 0 then inc(ilu_czeka); if ilu_czeka[nr] > 1 then V(ochrona); P(reszta[nr]); else inc(ile_firm_czeka); V(ochrona); P(pierwsi); dec(ile_firm_czeka); 1

2 dec(ilu_czeka); if przydzial[nr] = 0 then nr_drukarki:=1; while ilu_drukuje[nr_drukarki] do inc(nr_drukarki); przydzial[nr]:=nr_drukarki; dec(ile_wolnych); nr_drukarki:=przydzial[nr]; inc(ilu_drukuje(nr_drukarki); if ilu_czeka[nr]>0 then V(reszta[nr]) else if ile_wolnych > 0 and ile_firm_czeka > 0 then V(pierwsi); else V(ochrona); drukuj(nr_drukarki); P(ochrona); dec(ilu_drukuje(nr_drukarki); if ilu_drukuje(nr_drukarki)=0 then inc(ile_wolnych); przydzial[nr]:=0; if ile_firm_czeka > 0 then V(pierwsi) else V(ochrona); else V(ochrona); forever 2

3 Biblioteka mikrolmów W bibliotece mikrolmów w Semlandii znajduje si N mikrolmów, ponumerowanych od 0 do N 1. W bibliotece znajduj si dwie czytelnie z K stanowiskami do odczytu mikrolmów. Klient, który chce skorzysta z czytelni udaje si najpierw do informacji. Po podaniu numeru mikrolmu, który chce przejrze, zostaje skierowany do której± czytelni. Klient przechodzi do niej i je±li jest w niej wolne stanowisko i mikrolm jest dost pny, to klient mo»e rozpocz jego przegl danie. Je±li kto± inny wªa±nie korzysta z tego mikrolmu lub w czytelni nie ma wolnych stanowisk, to klient musi poczeka. W obu czytelniach jest wystarczaj co du»o miejsca, aby pomie±ci wszystkich oczekuj cych. Klient musi uda si do czytelni, do której zostaª skierowany i nie wolno mu przechodzi do drugiej czytelni. Po zako«czeniu korzystania z mikrolmu, klient zwalnia zasoby (mikrolm i stanowisko) i opuszcza bibliotek. Schemat dziaªania klienta mo»na zatem opisa nast puj co: process Klient; czytelnia: 1..2; mikrofilm: 0..N-1; while true do wlasne_sprawy; czytelnia := Informacja_Dokad (mikrofilm); PRZEJDZ_DO_CZYTELNI (czytelnia); Czekaj_Na_Zasoby (czytelnia, mikrofilm); CZYTAJ; Zwolnij_Zasoby (czytelnia, mikrofilm) Poniewa» w informacji jest maªo miejsca, klienci nie mog tam oczekiwa na zasoby, zatem funkcja Informacja_Dokad jest nieblokuj ca, z wyj tkiem by mo»e krótkiego oczekiwania na obsªu»enie. Zaimplementuj funkcj Informacja_Dokad i procedury Czekaj_Na_Zasoby i Zwolnij_Zasoby za pomoc semaforów. Zadbaj o jak najlepsze wykorzystanie czytelni, ale pami taj o tym, aby nie doszªo do zagªodzenia»adnego procesu. Rozwi zanie mutex: binary semaphore = 1; czekaj: array [0..N-1] of bin sem = (1,..., 1); iluw: array [1..2, 0..N-1] of integer = ((0, 0), N * 0); {iluw[c, f] --- ilu amatorow filmu f znajduje sie w czytelni c} ilezas: array[1..2] of integer = (0, 0); {ilezas --- liczba zaangazowanych mikrofilmow w poszczegolnych czytelniach (tj. takich, z ktorych sie korzysta lub na ktore sie czeka} czytelnia: array [ 1..2] of semaphore = (K, K); 3

4 function Informacja_Dokad (mikro: 0..N-1): 1..2; czyt : 1..2; PB (mutex); if iluw[1, mikro] > 0 then czyt := 1 else if iluw[2, mikro] > 0 then czyt := 2 else if ilezas[1] < ilezas[2] then inc (ilezas[1]); czyt := 1 else inc (ilezas[2]); czyt := 2 inc (iluw[czyt, mikro]); Informacja_Dokad := czyt; VB (mutex) procedure Czekaj_Na_Zasoby (czyt: 1..2; mikro: 0..N-1); PB (czekaj[mikro]); P (czytelnia[czyt]); procedure Zwolnij_Zasoby (czyt: 1..2; mikro: 0..N-1); j: 0..N-1; PB (mutex); dec (iluw[czyt, mikro]); if iluw[czyt, mikro] = 0 then dec (ilezas[czyt]); VB (czekaj[mikro]); V (czytelnia[czyt]) 4

5 Poziomy umiej tno±ci Firma Semso zatrudnia pewn liczb pracowników. Ka»dy pracownik ma przydzielony identy- kator (typu identprac) oraz poziom umiej tno±ci (typu integer). Firma obsªuguje klientów, z których ka»dy ma przydzielony identykator (typu identklienta). Ka»dy klient mo»e by obsªugiwany przez grup pracowników, których suma poziomów umiej tno±ci wynosi co najmniej M. Zakªadamy,»e poziom umiej tno±ci ka»dego pracownika jest mniejszy od M. Klient w p tli niesko«czonej zajmuje si najpierw wªasnymi sprawami, a nast pnie zgªasza si do rmy Semso z pro±b o obsªug. Klient przekazuje przydzielonym mu pracownikom swój identykator oraz otrzymuje zbiorczy identykator (typu identgrupy) caªej grupy obsªuguj cych go pracowników. Pracownicy w niesko«czonej p tli obsªuguj klientów swojej rmy. Ka»dy pracownik musi zna identykator obsªugiwanego klienta. Dane s nast puj ce procedury: procedure init(id : identprac; idg : identgrupy) inicjacja zbiorczego identy- katora grupy pracowników idg na identykator jednego pracownika id, procedure dodaj( idg : identgrupy; id : identprac) dodanie do zbiorczego identykatora idg identykatora id kolejnego pracownika z tej samej grupy, praca(id : identklienta) wywoªywana w procesie pracownika (obsªuga przez tego pracownika klienta o identykatorze id), obsªuga(zid : identgrupy) wywoªywana w procesie klienta (obsªuga tego klienta przez grup pracowników o zbiorczym identykatorze zid). Zapisz przy u»yciu semaforów tre± procesów: process Klient (id : identklienta), process Pracownik (id : identprac; pozum : integer). Rozwi zanie Ochrona : binary semaphore = 1; Pracownicy : binary semaphore = 0; sumapoz : integer = 0; Pierwszy : binary semaphore = 0; idklienta : identklienta; Klienci : binary semaphore = 0; ileklient : integer = 0; idgrupy : identgrupy; pozgrupy : integer = 0; {czekaja wszyscy pracownicy} {suma poziomow czekajacych prac.} {pierwszy klient} {id pierwszego klienta} {pozostali klienci} {liczba czekajacych klientow} {zbiorcze id grupy pracownikow} {suma poziomow tworzonej grupy} process Pracownik (id : identprac; poz : integer); mojklient : identklienta; while true do P(Ochrona); sumapoz:= sumapoz + poz; if (ileklient > 0) and (sumapoz >= M) then {rozpoczynamy prace} 5

6 mojklient:= idklienta; init(id, idgrupy); {pierwszy pracownik tworzy grupe} pozgrupy:= poz; {suma poziomow umiejetnosci grupy} V(Pracownicy) {zbudzenie nastepnego pracownika} else {czekamy: brak klienta lub pracownikow} V(Ochrona); P(Pracownicy); mojklient:= idklienta; {po zbudzeniu: pobiera id klienta} if pozgrupy = 0 then init(id, idgrupy) else dodaj(idgrupy, id); {aktualizacja zbiorczego id} pozgrupy:= pozgrupy + poz; if pozgrupy < M then {grupa jeszcze niepelna} V(Pracownicy) else {pracownicy w komplecie} sumapoz:= sumapoz - pozgrupy; {ostatni robi porzadki} pozgrupy:= 0; V(Pierwszy) {budzi klienta} praca(mojklient) process Klient (id : identklienta); idprac : identgrupy; while true do wlasnesprawy; P(Ochrona); if sumapoz >= M then {sa pracownicy} idklienta:= id; {przekazanie im swego id} V(Pracownicy); {i zbudzenie pierwszego pracownika} P(Pierwszy); {czekanie na zbiorczy id grupy} idprac:= idgrupy; {dziedziczenie sekcji} V(Ochrona) else {nie ma pracownikow, czekamy} ileklient:= iluklient + 1; if ileklient = 1 then {pierwszy klient} idklienta:= id {przekazuje swoj id} else {nastepny klient} V(Ochrona); P(Klienci); {czeka na tym semaforze} idklienta:= id {staje sie pierwszym klientem} V(Ochrona) {klient zwalnia sekcje} 6

7 P(Pierwszy); idprac:= idgrupy; ileklient:= ileklient - 1; if ileklient > 0 then V(Klienci) else V(Ochrona) obsluga(idprac); {i czeka jako pierwszy} {pobranie zbiorczego id} {kolejny klient staje sie pierwszym} {zwolnienie sekcji po dziedziczeniu} 7

8 Górskie wycieczki (zadanie z kolokwium SO w 2008) Górski punkt wycieczkowy organizuje wycieczki w góry o T 1 stopniach trudno±ci. Wycieczki prowadz przewodnicy. Ka»dy przewodnik ma uprawnienia wyra»one liczb od 1 do T, przy czym przewodnik o uprawnieniach t mo»e kierowa wycieczk o trudno±ci nie wi kszej ni» t. Dla ka»dego 1 t T jest co najmniej jeden przewodnik o uprawnieniach t. Liczno± grupy zale»y od stopnia trudno±ci wycieczki: na wycieczk o trudno±ci t mo»e wyj± grupa od GM IN(t) do GM AX(t) (wª cznie) uczestników i dokªadnie jeden przewodnik. Wiadomo przy tym,»e 1 t T 1 GMIN(t) GMAX(t). Uczestnik cyklicznie wykonuje WŠASNE_SPRAWY, losuje poziom trudno±ci kolejnej wycieczki (funkcja LOSUJ(T)) i (by mo»e po oczekiwaniu na grup i/lub przewodnika) wraz z grup i przewodnikiem wybiera si na wycieczk (procedura WYCIECZKA(nr_przewodnika: integer)). Przewodnik cyklicznie wykonuje WŠASNE_SPRAWY, zgªasza si do pracy, zabiera na wycieczk pewn skompletowan grup (o liczno±ci GM IN(t)), wybieraj c przy tym wycieczk o najwi kszej trudno±ci, któr jest w stanie poprowadzi. Je±li»adna grupa nie jest gotowa lub przewodnik nie ma wystarczaj cych uprawnie«, to przewodnik musi poczeka. Gdy zbieraj ca si grupa osi gnie liczno± GMIN(t) i czeka pewien przewodnik o uprawnieniach t, to jest budzony przewodnik o najni»szych dostatecznych uprawnieniach spo±ród oczekuj cych przewodników. Zabiera on grup na wycieczk (procedura WYCIECZKA). Po zako«czeniu wycieczki ka»dy uczestnik (bez synchronizacji z innymi) rozpoczyna ponownie wykonanie wªasnych spraw. Zapisz tre± procesów Przewodnik(nr: integer; upr: 1..T) i Uczestnik, u»ywaj c do synchronizacji semaforów ogólnych i/lub binarnych. Parametr nr jest unikatowym numerem przewodnika, a upr okre±la jego uprawnienia. Rozwi zanie ochrona: binary semaphore := 1; przewodnicy: array [1..T] of binary semaphore := (0,...); grupy: array [1..T] of binary semaphore := (0,...); ilu_przewodników: array [1..T] of integer := (0,...); ilu_czeka: array [1..T] of integer := (0,...); obudzonych, teraz_rusza: integer := 0; function znajd¹_grup (upr: 1..T): 0..T; i: integer; for i := upr downto 1 do if ilu_czeka[i] > GMIN(i) then return i; return 0; function znajd¹_przewodnika(upr: 1..T): 0..T; i: integer; 8

9 for i := upr to T do if ilu_przewodników[i] > 0 then return i; return 0; process Przewodnik(nr: 1..MAXINT; upr: 1..T); gr: integer; repeat WŠASNE_SPRAWY; P(ochrona); gr := znajd¹_grup (upr); if gr = 0 /* nie ma zebranej grupy */ then inc(ilu_przewodników[upr]); V(ochrona); P(przewodnicy[upr]); dec(ilu_przewodników[upr]); gr := znajd¹_grup (upr); /* jest grupa, by mo»e kto± nas obudziª * i wtedy ponownie szukali±my grupy */ teraz_rusza := nr; obudzonych := 0; /* na pewno kto± czeka, zaczynamy budzenie uczestników */ V(grupy[gr]); WYCIECZKA(); until false; process Uczestnik; gr, poz_prz: integer; mój_przew: integer; repeat WŠASNE_SPRAWY; gr := LOSUJ(T); P(ochrona); inc(ilu_czeka[gr]); if ilu_czeka[gr] >= GMIN(gr) and znajd¹_przewodnika(gr)!= 0 then /* budzimy przewodnika */ V(przewodnicy[znajd¹_przewodnika(gr)]; else /* czekamy na przewodnika lub reszt */ V(ochrona); /* zawsze zasypia, przewodnik obudzi 1-szego uczestnika */ 9

10 P(grupy[gr]); dec(ilu_czeka[gr]); mój_przew := teraz_rusza; inc(obudzonych); if obudzonych < GMAX(gr) and ilu_czeka[gr] > 0 then V(grupy[gr]) else V(ochrona); WYCIECZKA(mój_przew); until false; 10

11 Czytelnicy i pisarze z zamian ról Cz ± II Monitory W pewnym systemie dziaªaj procesy, z których ka»dy cyklicznie zaªatwia wªasne_sprawy, po czym wchodzi do sekcji_krytycznej. Dost p do sekcji krytycznej mo»e by wyª czny albo dzielony. Proces» daj cy wyª cznego dost pu do sekcji krytycznej przebywa w niej jako jedyny. Proces» - daj cy dost pu dzielonego mo»e korzysta z sekcji krytycznej w tym samym czasie, co inne procesy» daj ce dost pu dzielonego. Wiadomo ponadto,»e ka»dy proces przebywaj cy w sekcji krytycznej co najwy»ej raz za» da zmiany sposobu korzystania z sekcji. Procesy» daj ce zmiany sposobu dost pu z dzielonego na wyª czny zostaj wstrzymane do momentu, w którym b d mogªy korzysta z sekcji na zasadzie wyª czno±ci. Maj one przy tym pierwsze«stwo przed nowymi procesami. Zaprogramuj monitor synchronizuj cy procesy zgodnie z powy»szym opisem. Monitor ma udost pnia cztery bezparametrowe procedury: wyª czny, dzielony, zmiana i koniec. Rozwi zanie monitor Serwer; WYLACZNY, ZMIANA, DZIELONY: condition; wylacz, dziel: integer; export procedure dzielony; if not empty(wyš CZNY) or not empty(zmiana) or wyª cz>0 then wait(dzielony); dziel := dziel + 1; signal(dzielony) /* kaskada */ {dzielony}; export procedure wyª czny; if wyª cz+dziel>0 then wait(wyšaczny); wyª cz := 1 {wyª czny}; export procedure koniec; if wyª cz>0 then wyª cz := 0; if not empty(zmiana) then signal(zmiana) else if empty(dzielony) then signal(wyš CZNY) else signal(dzielony); /* pierwszy czytelnik */ else dziel := dziel -1; if dziel = 0 then 11

12 if not empty(zmiana) then signal(zmiana) else if empty(wyš CZNY) then signal(dzielony) else signal(wyš CZNY); {koniec}; export procedure zmiana; if wyª cz>0 then /* byªem sam */ wyª cz := 0; dziel := 1; signal(dzielony) else /* byªo nas wielu */ if dziel = 1 then dziel := 0; wyª cz := 1 else dziel := dziel -1; wait(zmiana); wyª cz := 1 wylacz := 0; dziel := 0. 12

13 Grupy i zasoby W systemie N grup procesów (liczno± grup nie jest znana) korzysta z K zasobów ponumerowanych od 1 do K. Ka»dy proces dziaªa wedªug schematu: process P(grupa: 1..N) k: integer; while true do wªasne_sprawy; SERWER.chc _korzysta (grupa, k); korzystam(k); SERWER.sko«czyªem(grupa,k); Zasady korzystania z zasobów s nast puj ce: Dwie grupy nie korzystaj jednocze±nie z tego samego zasobu. Procesy z jednej grupy korzystaj w danej chwili z co najwy»ej jednego zasobu. Je»eli jaki± zasób jest wolny, to»aden proces, który chce korzysta z zasobu nie powinien czeka. Napisz monitor SERWER zarz dzaj cy dost pem do zasobów w taki sposób, aby powy»sze warunki warunki byªy speªnione i»aden proces nie zostaª zagªodzony. Rozwi zanie monitor SERWER; pierwsi: condition; reszta: array [1..N] of condition ile_czeka: array [1..N] of integer; ile_korzysta: array [1..K] of integer; przydziaª: array [1..N] of integer; ile_wolnych: integer; export procedure chc _korzysta (grupa: integer, k: integer); if (ile_wolnych=0 and przydzial[i]=0) or not empty(pierwsi) then inc(ile_czeka[i]); if (ile_czeka[i]=1) then wait(pierwsi); else wait(reszta[i]); dec(ile_czeka[i]); if przydzial[i] = 0 then 13

14 k:=1; while (ile_korzysta[k]>0) do inc(k); przydzial[i]:=k; dec(ile_wolnych); else k:=przydzial[i]; inc(ile_korzysta[k]); signal(reszta[i]); if (ile_wolnych > 0) then signal(pierwsi); { grupa mogªa doª czy do procesów, które pracowaªy wcze±niej i wci» mog by wolne zasoby } export procedure sko«czyªem(i,k: integer); dec(ile_korzysta[k]); if ile_korzysta[k]=0 then przydzial[i]:=0; inc(ile_wolnych); signal(pierwsi); ile_wolnych:=k; for i=1 to K do ile_korzysta[i]:=0; for i=1 to N do przydziaª[i]:=0; for i=1 to N do ile_czeka[i]:=0;. 14

15 Centrum Terapeutyczne Centrum Terapeutyczne dla Studentów po Egzaminie z SO zatrudnia pewn liczb terapeutów oraz dysponuje G > 0 gabinetami. Po zgªoszeniu si do centrum pacjent jest najpierw diagnozowany indywidualnie przez terapeut : czeka na terapeut i gabinet, którego numer musi pozna i wywoªuje predeniowan procedur Diagnoza, której wynikiem jest rodzaj zalecanej terapii. Nast pnie zgªasza si na terapi : czeka na terapeut (by mo»e innego) i gabinet oraz odbywa sesj terapeutyczn indywidualn albo grupow (predeniowana procedura Sesja). W terapii grupowej bierze zawsze udziaª P > 0 pacjentów, którzy tworz grup zgodnie z kolejno±ci zgªaszania si na terapi. Spotkania terapeutów z pacjentami odbywaj si zawsze w gabinetach zarówno podczas diagnozowania jak i sesji. Po ka»dym spotkaniu z terapeut (zarówno diagnostycznym jak i terapeutycznym) pacjent opuszcza gabinet, przy czym pacjenci ko«cz terapi grupow pojedynczo i niezale»nie od siebie. Terapeuta zgªasza si najpierw do pracy, gdzie czeka na pacjentów i gabinet. Nast pnie udaje si do wskazanego gabinetu, gdzie spotyka si z pacjentem lub pacjentami (predeniowana procedura Praca). Gdy uznaje,»e spotkanie dobiegªo ko«ca (tj. zako«czyªa si procedura Praca), czeka a» ostatni (by mo»e jedyny przy diagnozowaniu lub terapii indywidualnej) pacjent opu±ci gabinet, po czym zwalnia gabinet. Napisz monitor synchronizuj cy prac centrum. Pacjenci i terapeuci dziaªaj w nast puj cy sposób: process Pacjent; gab1, gab2: integer rodzaj: (ind, grup); repeat CENTRUM.ZglaszamSie(gab1); rodzaj:= Diagnoza(gab1); CENTRUM.Koniec(gab1); Odpoczynek; CENTRUM.Terapia(gab2, rodzaj); Sesja(gab2); CENTRUM.Skonczylem (gab2) until false; process Terapeuta; gab: integer; repeat CENTRUM.Zglaszamsiedopracy(gab); Praca (gab); CENTRUM.Zwalniam(gab); Odpoczynek until false; Rozwi zanie monitor CENTRUM; ilu: integer; {zlicza pacjentow zbierajacych sie na terapie grupowa} gabinet: integer; {do przekazywania numeru gabinetu} wolneg: integer; {liczba wolnych gabinetow} 15

16 terapeuci, diagnoza, terapia: condition; {do wieszania terapeutów, diagnozowanych, czekajacych na terapie} komplet: condition; {tu czekamy na kompletna grupe} iluw: array [1..G] of integer; {ilu pacjentow w gabinecie} koniec: array [1..G] of condition; {tu czekaja terapeuci na wyjscie pacjentow} {Zakªadamy,»e terapeuta bedzie zabieraª pacjenta, chyba»e przychodzi pacjent a terapeuci czekaja - porównaj z zadaniem o urz dnikach z wicze«} export procedure ZglaszamSie ( gab: integer); if empty (terapeuci) or (wolneg = 0) then wait (diagnoza) {obudzi mnie terapeuta} else signal (terapeuci); gab := gabinet; iluw [gab] := 1; wolneg := wolneg - 1; export procedure Terapia ( gab: integer; r: (ind, grup)); if r = grup then ilu := (ilu + 1) mod P; if (ilu <> 0) and (r = grup) then wait (komplet) else {indywidualny lub ostatni z grupy} if empty (terapeuci) or (wolneg = 0) then wait (terapia) else signal (terapeuci); wolnyg := wolnyg - 1; if r = grup then for i := 1 to P-1 do signal(komplet); gab := gabinet; iluw[gab] := iluw[gab]+1; 16

17 export procedure Koniec/Skonczylem (gab: integer); iluw[gab] := iluw[gab]-1; if iluw[gab] = 0 then signal (koniec[gab]) export procedure ZglaszamSiedopracy ( gab: integer); if wolneg = 0 or empty (diagnoza) or empty (terapia) then wait (terapeuta); gab := 1; while iluw[gab] <> 0 do gab := gab+1; gabinet := gab; if not empty (terapia) then {najpierw terapia, zeby nie zaglodzic} signal (terapia) else signal (diagnoza); export procedure Zwalniam (gab: integer); if iluw[gab] > 0 then wait (koniec[gab]); wolneg := wolneg - 1; if not empty (terapeuci) and (not empty (terapia) or not empty (diagnoza)) then signal (terapeuci) { budzimy terapeute, on obudzi pacjenta, a pacjent ewentualnie innych pacjentow do grupy } wolneg := 0; ilu := 0; for i to G do iluw[i] := 0;. 17

18 Dyskoteka (zadanie z kolokwium SO 2008) W pewnej dyskotece bawi sie procesy. Jednocze±nie na parkiecie mo»e przebywa co najwy»ej K > 1 procesów. Ka»dy proces przychodz c na dyskotek czeka na dowolny proces odmiennej pªci, oba procesy czekaj na wolne miejsca na parkiecie, po czym razem id ta«czy. Ka»dy z nich ko«czy taniec niezale»nie od drugiego. W dyskotece pracuje te» DJ, który dba o to, aby muzyka graªa wtedy i tylko wtedy, gdy parkiet jest niepusty (to oznacza,»e muzyka mo»e nigdy nie zamilkn ). Napisz monitor DYSKOTEKA. Tre±ci procesów s nast puj ce: process Proces(nr: integer;plec: 0..1); partner: integer; repeat DYSKOTEKA.CzekajNaPartneraIMiejsce (nr, plec, partner); tanczz(partner); DYSKOTEKA.Koncz; until false process DJ; repeat DYSKOTEKA.CzekajNaNiepusty; wlaczmuzyke; DYSKOTEKA.CzekajNaPusty; wylaczmuzyke; until false Rozwi zanie monitor DYSKOTEKA; wolne, id, int; czekamy: bool; single: array[0..1] of condition; parkiet, dj: condition; export procedure CzekajNaPartneraIMiejsce(i, p:int, j:int) if empty(single[1-p]) then wait(single[p]); j := id; id := i; czekamy := false; if wolne < 2 then czekamy := true; wait(parkiet); else if wolne = K then signal(dj); else id := i; signal(single[1-p]); j := id; 18

19 if czekamy then wait(parkiet); dec(wolne); export procedure Koncz; inc(wolne); if wolne >= 2 then signal(parkiet); signal(parkiet); if wolne = K then signal(dj); export procedure CzekajNaPoczatek; if wolne = K then wait(dj); export procedure CzekajNaKoniec; if wolne < K then wait(dj); wolne := K;. 19

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Programowanie wspóªbie»ne wiczenia 5 monitory cz. 1 Zadanie 1: Stolik dwuosobowy raz jeszcze W systemie dziaªa N par procesów. Procesy z pary s nierozró»nialne. Ka»dy proces cyklicznie wykonuje wªasnesprawy,

Bardziej szczegółowo

Rozwi zania klasycznych problemów w Rendezvous

Rozwi zania klasycznych problemów w Rendezvous Cz ± I Rozwi zania klasycznych problemów w Rendezvous 1 Producenci i konsumenci Na pocz tek rozwa»my wersj z jednym producentem i jednym konsumentem, dziaªaj cymi w niesko«czonych p tlach. Mechanizm komunikacji

Bardziej szczegółowo

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Programowanie wspóªbie»ne wiczenia 2 semafory cz. 1 Zadanie 1: Producent i konsument z buforem cyklicznym type porcja; void produkuj(porcja &p); void konsumuj(porcja p); porcja bufor[n]; / bufor cykliczny

Bardziej szczegółowo

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Zadanie 1: Bar Programowanie wspóªbie»ne wiczenia 6 monitory cz. 2 Napisz monitor Bar synchronizuj cy prac barmana obsªuguj cego klientów przy kolistym barze z N stoªkami. Ka»dy klient realizuje nast

Bardziej szczegółowo

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie Cz ± II Podziaª pracy 1 Tablica sortuj ca Kolejka priorytetowa to struktura danych udost pniaj ca operacje wstawienia warto±ci i pobrania warto±ci minimalnej. Z kolejki liczb caªkowitych, za po±rednictwem

Bardziej szczegółowo

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Zadanie 1: Programowanie wspóªbie»ne wiczenia 12 Przestrzenie krotek cz. 2 Przychodnia lekarska W przychodni lekarskiej pracuje L > 0 lekarzy, z których ka»dy ma jedn z 0 < S L specjalno±ci, przy czym

Bardziej szczegółowo

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Zadanie 1: Programowanie wspóªbie»ne wiczenia 11 Przestrzenie krotek cz. 1 Obliczanie caªki oznaczonej Rozwa»my iteracyjne obliczanie caªki oznaczonej na przedziale [a, b] metod trapezów. Krok iteracji

Bardziej szczegółowo

Lab. 02: Algorytm Schrage

Lab. 02: Algorytm Schrage Lab. 02: Algorytm Schrage Andrzej Gnatowski 5 kwietnia 2015 1 Opis zadania Celem zadania laboratoryjnego jest zapoznanie si z jednym z przybli»onych algorytmów sªu» cych do szukania rozwi za«znanego z

Bardziej szczegółowo

Semafory. - aktywne oczekiwanie =GRGDWNRZ\PZVSDUFLHPVSU]WRZ\P 6SHFMDOQDLQVWUXNFMDPDV]\QRZDUHDOL]XMFDDWRPRZ\]DSLVL odczyt, np.

Semafory. - aktywne oczekiwanie =GRGDWNRZ\PZVSDUFLHPVSU]WRZ\P 6SHFMDOQDLQVWUXNFMDPDV]\QRZDUHDOL]XMFDDWRPRZ\]DSLVL odczyt, np. Semafory 5R]ZL]DQLHSUREOHPXZ]DMHPQHJRZ\NOXF]DQLD %H]GRGDWNRZHJRZVSDUFLDVSU]WRZHJRLSURJUDPRZHJR =DNáDGDP\MHG\QLH*H]DSLVGRLRGF]\W]SDPLFLZVSyOQHMV RSHUDFMDPLDWRPRZ\PLF]\OLLVWQLHMHDUELWHUZVSyOQHMSDPLFL :UD]LHMHGQRF]HVQHJR]DSLVXLRGF]\WXUH]XOWDWHPEG]LH

Bardziej szczegółowo

Projekt systemy operacyjne 2 - Systemowe mechanizmy synchr

Projekt systemy operacyjne 2 - Systemowe mechanizmy synchr systemy operacyjne 2 - Systemowe mechanizmy synchronizacji procesów 19 lutego 2012 Wielow tkowo± Mechanizmy synchronizacji Wielow tkowo± Mechanizmy synchronizacji Klasyczne przykªady programów Wielow tkowo±

Bardziej szczegółowo

Wst p teoretyczny do wiczenia nr 3 - Elementy kombinatoryki

Wst p teoretyczny do wiczenia nr 3 - Elementy kombinatoryki Wst p teoretyczny do wiczenia nr 3 - Elementy kombinatoryki 1 Zadania na wiczenia nr 3 - Elementy kombinatoryki Zad. 1. Ile istnieje ró»nych liczb czterocyfrowych zakªadaj c,»e cyfry nie powtarzaj si a

Bardziej szczegółowo

1 Metody iteracyjne rozwi zywania równania f(x)=0

1 Metody iteracyjne rozwi zywania równania f(x)=0 1 Metody iteracyjne rozwi zywania równania f()=0 1.1 Metoda bisekcji Zaªó»my,»e funkcja f jest ci gªa w [a 0, b 0 ]. Pierwiastek jest w przedziale [a 0, b 0 ] gdy f(a 0 )f(b 0 ) < 0. (1) Ustalmy f(a 0

Bardziej szczegółowo

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix)

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix) Mechanizmy komunikacji spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix) Język CSP Hoare (1978r.) Communicating Sequential Processes

Bardziej szczegółowo

synchronizacji procesów

synchronizacji procesów Dariusz Wawrzyniak Definicja semafora Klasyfikacja semaforów Implementacja semaforów Zamki Zmienne warunkowe Klasyczne problemy synchronizacji Plan wykładu (2) Semafory Rodzaje semaforów (1) Semafor jest

Bardziej szczegółowo

Ekonometria. wiczenia 13 Metoda ±cie»ki krytycznej. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej

Ekonometria. wiczenia 13 Metoda ±cie»ki krytycznej. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej wiczenia 13 Metoda ±cie»ki krytycznej Instytut Ekonometrii Zakªad Ekonometrii Stosowanej Plan wicze«1 Przykªad: ubieranie choinki 2 3 Programowanie liniowe w analizie czasowej i czasowo-kosztowej projektu

Bardziej szczegółowo

Monitory. Wady semafora

Monitory. Wady semafora Wady semafora Monitory Niestrukturalny mechanizm synchronizacji Nie ułatwia wykrywania błędów synchronizacyjnych w czasie kompilacji programu Idea Jądro systemu operacyjnego jako monolityczny monitor -

Bardziej szczegółowo

Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg.

Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg. Wady mechanizmów niskopoziomowych Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg. Dekkera zależny od liczby synchronizowanych

Bardziej szczegółowo

Semafory. // G - globalna dla wszystkich. // Wada - aktywne oczekiwanie Test_and_Set(Li); exit when Li = 0; end loop sekcja_krytyczna(i); G := 0;

Semafory. // G - globalna dla wszystkich. // Wada - aktywne oczekiwanie Test_and_Set(Li); exit when Li = 0; end loop sekcja_krytyczna(i); G := 0; Semafory Rozwiązanie problemu wzajemnego wykluczania Bez dodatkowego wsparcia sprzętowego i programowego Zakładamy jedynie, że zapis do i odczyt z pamięci wspólnej są operacjami atomowymi (czyli istnieje

Bardziej szczegółowo

synchronizacji procesów

synchronizacji procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Definicja semafora Klasyfikacja semaforów Implementacja semaforów Zamki Zmienne warunkowe Klasyczne problemy synchronizacji (2) Semafory

Bardziej szczegółowo

Algorytmiczna teoria grafów

Algorytmiczna teoria grafów 18 maja 2013 Twierdzenie Halla o maª»e«stwach Problem Wyobra¹my sobie,»e mamy m dziewczyn i pewn liczb chªopców. Ka»da dziewczyna chce wyj± za m», przy czym ka»da z nich godzi si po±lubi tylko pewnych

Bardziej szczegółowo

Metodydowodzenia twierdzeń

Metodydowodzenia twierdzeń 1 Metodydowodzenia twierdzeń Przez zdanie rozumiemy dowolne stwierdzenie, które jest albo prawdziwe, albo faªszywe (nie mo»e by ono jednocze±nie prawdziwe i faªszywe). Tradycyjnie b dziemy u»ywali maªych

Bardziej szczegółowo

Wprowadzenie do programowania współbieżnego

Wprowadzenie do programowania współbieżnego Wprowadzenie do programowania współbieżnego Marcin Engel Instytut Informatyki Uniwersytet Warszawski Zamiast wstępu... Zamiast wstępu... Możliwość wykonywania wielu akcji jednocześnie może ułatwić tworzenie

Bardziej szczegółowo

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Bash i algorytmy. Elwira Wachowicz. 20 lutego Bash i algorytmy Elwira Wachowicz elwira@ifd.uni.wroc.pl 20 lutego 2012 Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Bash i algorytmy 20 lutego 2012 1 / 16 Inne przydatne polecenia Polecenie Dziaªanie Przykªad

Bardziej szczegółowo

x y x y x y x + y x y

x y x y x y x + y x y Algebra logiki 1 W zbiorze {0, 1} okre±lamy dziaªania dwuargumentowe,, +, oraz dziaªanie jednoargumentowe ( ). Dziaªanie x + y nazywamy dodawaniem modulo 2, a dziaªanie x y nazywamy kresk Sheera. x x 0

Bardziej szczegółowo

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java J zyk programowania JAVA c 2011 Vincent Van GOGH: M»czyzna pij cy li»ank kawy Zadanie 6. Napisz program, który tworzy tablic 30 liczb wstawia do tej tablicy liczby od 0 do 29 sumuje te elementy tablicy,

Bardziej szczegółowo

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1 Programowanie równoległe i rozproszone Monitory i zmienne warunku Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności Problem producentów i konsumentów: jedna grupa procesów

Bardziej szczegółowo

Lekcja 6 Programowanie - Zaawansowane

Lekcja 6 Programowanie - Zaawansowane Lekcja 6 Programowanie - Zaawansowane Akademia im. Jana Dªugosza w Cz stochowie Wst p Wiemy ju»: co to jest program i programowanie, jak wygl da programowanie, jak tworzy programy za pomoc Baltiego. Na

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych Wykªad 3 1 / 37 tekstowe binarne Wyró»niamy dwa rodzaje plików: pliki binarne pliki tekstowe 2 / 37 binarne tekstowe binarne Plik binarny to ci g bajtów zapami tanych w

Bardziej szczegółowo

Systemy operacyjne. Zajęcia 11. Monitory

Systemy operacyjne. Zajęcia 11. Monitory Systemy operacyjne. Zajęcia 11. Monitory 1. Monitor to mechanizm zamykający całą pamięć wspólną i synchronizację w pojedynczym module. 2. Monitor posiada całą pamięć wspólną jako część 'prywatną': dostępu

Bardziej szczegółowo

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację. J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 11.1 abstrakcyjne Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post

Bardziej szczegółowo

MiASI. Modelowanie systemów informatycznych. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

MiASI. Modelowanie systemów informatycznych. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska MiASI Modelowanie systemów informatycznych Piotr Fulma«ski Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska 18 stycznia 2010 Spis tre±ci 1 Analiza systemu informatycznego Poziomy analizy 2

Bardziej szczegółowo

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1 J zyki formalne i operacje na j zykach J zyki formalne s abstrakcyjnie zbiorami sªów nad alfabetem sko«czonym Σ. J zyk formalny L to opis pewnego problemu decyzyjnego: sªowa to kody instancji (wej±cia)

Bardziej szczegółowo

Matematyka dyskretna dla informatyków

Matematyka dyskretna dla informatyków Matematyka dyskretna dla informatyków Cz ± I: Elementy kombinatoryki Jerzy Jaworski Zbigniew Palka Jerzy Szyma«ski Uniwersytet im. Adama Mickiewicza Pozna«2007 2 Podstawowe zasady i prawa przeliczania

Bardziej szczegółowo

WYKŁAD 4 SEMAPHORES (CIĄG DALSZY) Przykład 6 Problem czytelników i pisarzy. Wykład 4 strona 1/24

WYKŁAD 4 SEMAPHORES (CIĄG DALSZY) Przykład 6 Problem czytelników i pisarzy. Wykład 4 strona 1/24 WYKŁAD 4 SEMAPHORES (CIĄG DALSZY) Przykład 6 Problem czytelników i pisarzy Wykład 4 strona 1/24 Ilustracja 5. Schemat problemu czytelników i pisarzy Wykład 4 strona 2/24 Opis problemu: Jest n czytelników,

Bardziej szczegółowo

Metody dowodzenia twierdze«

Metody dowodzenia twierdze« Metody dowodzenia twierdze«1 Metoda indukcji matematycznej Je±li T (n) jest form zdaniow okre±lon w zbiorze liczb naturalnych, to prawdziwe jest zdanie (T (0) n N (T (n) T (n + 1))) n N T (n). 2 W przypadku

Bardziej szczegółowo

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15 ARYTMETYKA MODULARNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Denicja kongruencji i jej podstawowe wªasno±ci 3 2 Systemy pozycyjne 8 3 Elementy odwrotne 12 4 Pewne zastosowania elementów odwrotnych

Bardziej szczegółowo

Subversion - jak dziaªa

Subversion - jak dziaªa - jak dziaªa Krótka instrukcja obsªugi lstelmach@gmail.com Stelmisoft 12/07/2010 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 Spis tre±ci Czym jest Czym jest repozytorium 1 Czym jest Czym jest repozytorium

Bardziej szczegółowo

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy. 1 Klasy. Klasa to inaczej mówi c typ który podobnie jak struktura skªada si z ró»nych typów danych. Tworz c klas programista tworzy nowy typ danych, który mo»e by modelem rzeczywistego obiektu. 1.1 Denicja

Bardziej szczegółowo

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne A. Permutacja losowa Matematyka dyskretna - wykład - część 2 9. Podstawowe algorytmy kombinatoryczne Załóżmy, że mamy tablice p złożoną z n liczb (ponumerowanych od 0 do n 1). Aby wygenerować losową permutację

Bardziej szczegółowo

Algorytmy zwiazane z gramatykami bezkontekstowymi

Algorytmy zwiazane z gramatykami bezkontekstowymi Algorytmy zwiazane z gramatykami bezkontekstowymi Rozpoznawanie j zyków bezkontekstowych Problem rozpoznawania j zyka L polega na sprawdzaniu przynale»no±ci sªowa wej±ciowego x do L. Zakªadamy,»e j zyk

Bardziej szczegółowo

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz Lekcja 8 - ANIMACJA 1 Polecenia Za pomoc Baltiego mo»emy tworzy animacj, tzn. sprawia by obraz na ekranie wygl daª jakby si poruszaª. Do animowania przedmiotów i tworzenia animacji posªu» nam polecenia

Bardziej szczegółowo

Przetwarzanie sygnaªów

Przetwarzanie sygnaªów Przetwarzanie sygnaªów Laboratorium 1 - wst p do C# Dawid Poªap Przetwarzanie sygnaªów Pa¹dziernik, 2018 1 / 17 Czego mo»na oczekiwa wzgl dem programowania w C# na tych laboratoriach? Dawid Poªap Przetwarzanie

Bardziej szczegółowo

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X. Relacje 1 Relacj n-argumentow nazywamy podzbiór ϱ X 1 X 2... X n. Je±li ϱ X Y jest relacj dwuargumentow (binarn ), to zamiast (x, y) ϱ piszemy xϱy. Relacj binarn okre±lon w zbiorze X nazywamy podzbiór

Bardziej szczegółowo

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu.

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu. Centralna Komisja Egzaminacyjna Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu. Uk ad graficzny CKE 2010 KOD WPISUJE ZDAJ CY PESEL Miejsce na naklejk z kodem EGZAMIN MATURALNY

Bardziej szczegółowo

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku. Laboratorium 7 Wstęp Jednym z podstawowych własności Javy jest wielowątkowość. Wiąże się to z możliwością współbieżnego wykonywania różnych operacji w ramach pojedynczej wirtualnej maszyny Javy (JVM).

Bardziej szczegółowo

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Abstrakcja programowania współbieżnego Instrukcje atomowe i ich przeplot Istota synchronizacji Kryteria poprawności programów współbieżnych

Bardziej szczegółowo

Lekcja 5 Programowanie - Nowicjusz

Lekcja 5 Programowanie - Nowicjusz Lekcja 5 Programowanie - Nowicjusz Akademia im. Jana Dªugosza w Cz stochowie Programowanie i program wedªug Baltiego Programowanie Programowanie jest najwy»szym trybem Baltiego. Z pomoc Baltiego mo»esz

Bardziej szczegółowo

Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska

Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów Iwona Kochańska Mechanizm synchronizacji wątków/procesów Wykorzystanie semaforów zapobiega niedozwolonemu wykonaniu

Bardziej szczegółowo

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację. J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Bardziej szczegółowo

Wybrane poj cia i twierdzenia z wykªadu z teorii liczb

Wybrane poj cia i twierdzenia z wykªadu z teorii liczb Wybrane poj cia i twierdzenia z wykªadu z teorii liczb 1. Podzielno± Przedmiotem bada«teorii liczb s wªasno±ci liczb caªkowitych. Zbiór liczb caªkowitych oznacza b dziemy symbolem Z. Zbiór liczb naturalnych

Bardziej szczegółowo

1 Strumienie. 2 Pliki. 2.1 Zapis do pliku tekstowego. Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski

1 Strumienie. 2 Pliki. 2.1 Zapis do pliku tekstowego. Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski 1 Strumienie W j zyku C++ pliki obsªugiwane s za pomoc strumieni. Strumie«pozwala na sekwencyjny dost p do pliku. Elementy, które jako pierwsze

Bardziej szczegółowo

O pewnym zadaniu olimpijskim

O pewnym zadaniu olimpijskim O pewnym zadaniu olimpijskim Michaª Seweryn, V LO w Krakowie opiekun pracy: dr Jacek Dymel Problem pocz tkowy Na drugim etapie LXII Olimpiady Matematycznej pojawiª si nast puj cy problem: Dla ka»dej liczby

Bardziej szczegółowo

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd Synchronizacja procesów Proces producenta - zmodyfikowany (licznik) produkuj jednostka w nast_p while licznik =n do nic_nie_rob; bufor [we] := nast_p; we=we+1 mod n; licznik:=licznik+1; Zmodyfikowany proces

Bardziej szczegółowo

Lekcja 3 - BANKI I NOWE PRZEDMIOTY

Lekcja 3 - BANKI I NOWE PRZEDMIOTY Lekcja 3 - BANKI I NOWE PRZEDMIOTY Wiemy ju» co to s banki przedmiotów i potramy z nich korzysta. Dowiedzieli±my si te»,»e mo»emy tworzy nowe przedmioty, a nawet caªe banki przedmiotów. Na tej lekcji zajmiemy

Bardziej szczegółowo

Wojewódzki Konkurs Matematyczny

Wojewódzki Konkurs Matematyczny Wojewódzki Konkurs Matematyczny dla uczniów gimnazjów ETAP SZKOLNY 16 listopada 2012 Czas 90 minut Instrukcja dla Ucznia 1. Otrzymujesz do rozwi zania 10 zada«zamkni tych oraz 5 zada«otwartych. 2. Obok

Bardziej szczegółowo

Podstawy JavaScript. Dawid Poªap. Dawid Poªap Technologia informacyjna Grudzie«, / 13

Podstawy JavaScript. Dawid Poªap. Dawid Poªap Technologia informacyjna Grudzie«, / 13 Podstawy JavaScript Dawid Poªap Dawid Poªap Technologia informacyjna Grudzie«, 2017 1 / 13 Plan na reszt zaj z TI Dzisiaj podstawy podstaw programowania w konsoli. W nowym roku na stronie internetowej

Bardziej szczegółowo

Podzbiory Symbol Newtona Zasada szuadkowa Dirichleta Zasada wª czania i wyª czania. Ilo± najkrótszych dróg. Kombinatoryka. Magdalena Lema«ska

Podzbiory Symbol Newtona Zasada szuadkowa Dirichleta Zasada wª czania i wyª czania. Ilo± najkrótszych dróg. Kombinatoryka. Magdalena Lema«ska Kombinatoryka Magdalena Lema«ska Zasady zaliczenia przedmiotu Zasady zaliczenia przedmiotu Maksymalna ilo± punktów to 100 punktów = 100 procent. Zasady zaliczenia przedmiotu Maksymalna ilo± punktów to

Bardziej szczegółowo

SOP2 - semafory. grudzień

SOP2 - semafory. grudzień SOP2 - semafory grudzień 2010 1 Plan prezentacji Problem producent-konsument Problem czytelników i pisarzy Problem jedzących filozofów grudzień 2010 2 Producent-konsument var bufor: array [0..n-1] of produkt;

Bardziej szczegółowo

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II. Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II. Poni»sze zadania s wyborem zada«z kolokwiów ze Wst pu do Informatyki jakie przeprowadziªem w ci gu ostatnich lat. Marek Zawadowski Zadanie 1 Napisz

Bardziej szczegółowo

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA. W obu podpunktach zakªadamy,»e kolejno± ta«ców jest wa»na.

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA. W obu podpunktach zakªadamy,»e kolejno± ta«ców jest wa»na. Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA Zadanko 1 (12p.) Na imprezie w Noc Kupaªy s 44 dziewczyny. Nosz one 11 ró»nych imion, a dla ka»dego imienia s dokªadnie 4 dziewczyny o tym imieniu przy czym ka»da

Bardziej szczegółowo

Elementy Modelowania Matematycznego Wykªad 9 Systemy kolejkowe

Elementy Modelowania Matematycznego Wykªad 9 Systemy kolejkowe Elementy Modelowania Matematycznego Wykªad 9 Systemy kolejkowe Romuald Kotowski Katedra Informatyki Stosowanej PJWSTK 2009 Spis tre±ci 1 2 3 Spis tre±ci 1 2 3 Spis tre±ci 1 2 3 Teoria masowej obsªugi,

Bardziej szczegółowo

PROWIZJE Menad er Schematy rozliczeniowe

PROWIZJE Menad er Schematy rozliczeniowe W nowej wersji systemu pojawił si specjalny moduł dla menaderów przychodni. Na razie jest to rozwizanie pilotaowe i udostpniono w nim jedn funkcj, która zostanie przybliona w niniejszym biuletynie. Docelowo

Bardziej szczegółowo

Funkcje, wielomiany. Informacje pomocnicze

Funkcje, wielomiany. Informacje pomocnicze Funkcje, wielomiany Informacje pomocnicze Przydatne wzory: (a + b) 2 = a 2 + 2ab + b 2 (a b) 2 = a 2 2ab + b 2 (a + b) 3 = a 3 + 3a 2 b + 3ab 2 + b 3 (a b) 3 = a 3 3a 2 b + 3ab 2 b 3 a 2 b 2 = (a + b)(a

Bardziej szczegółowo

Mosty królewieckie, chi«ski listonosz i... kojarzenie maª»e«stw

Mosty królewieckie, chi«ski listonosz i... kojarzenie maª»e«stw Mosty królewieckie, chi«ski listonosz i... kojarzenie maª»e«stw 3 kwietnia 2014 roku 1 / 106 Mosty królewieckie W Królewcu, na rzece Pregole znajduj si dwie wyspy poª czone ze sob, a tak»e z brzegami za

Bardziej szczegółowo

Funkcja kwadratowa, wielomiany oraz funkcje wymierne

Funkcja kwadratowa, wielomiany oraz funkcje wymierne Funkcja kwadratowa, wielomiany oraz funkcje wymierne Šukasz Dawidowski Nocne powtórki maturalne 28 kwietnia 2014 r. Troch teorii Funkcj f : R R dan wzorem: f (x) = ax 2 + bx + c gdzie a 0 nazywamy funkcj

Bardziej szczegółowo

6.2. Ćwiczenia umysłowe. 2.1. Ćwiczenia ogólne

6.2. Ćwiczenia umysłowe. 2.1. Ćwiczenia ogólne 6.2. Ćwiczenia umysłowe 2.1. Ćwiczenia ogólne 2.1.1 Wprowadzenie Jako opiekun musisz dbać o swoje samopoczucie mentalne oraz fizyczne, abyś mógł dać najwięcej z siebie pacjentowi. Musisz monitorować leki

Bardziej szczegółowo

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15 ARYTMETYKA MODULARNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Denicja kongruencji i jej podstawowe wªasno±ci 3 2 Systemy pozycyjne 8 3 Elementy odwrotne 12 4 Pewne zastosowania elementów odwrotnych

Bardziej szczegółowo

Lekcja 3 Banki i nowe przedmioty

Lekcja 3 Banki i nowe przedmioty Lekcja 3 Banki i nowe przedmioty Akademia im. Jana Dªugosza w Cz stochowie Banki przedmiotów Co ju» wiemy? co to s banki przedmiotów w Baltie potramy korzysta z banków przedmiotów mo»emy tworzy nowe przedmioty

Bardziej szczegółowo

Rekurencyjne struktury danych

Rekurencyjne struktury danych Andrzej Jastrz bski Akademia ETI Dynamiczny przydziaª pami ci Pami, która jest przydzielana na pocz tku dziaªania procesu to: pami programu czyli instrukcje programu pami statyczna zwi zana ze zmiennymi

Bardziej szczegółowo

1 Bª dy i arytmetyka zmiennopozycyjna

1 Bª dy i arytmetyka zmiennopozycyjna 1 Bª dy i arytmetyka zmiennopozycyjna Liczby w pami ci komputera przedstawiamy w ukªadzie dwójkowym w postaci zmiennopozycyjnej Oznacza to,»e s one postaci ±m c, 01 m < 1, c min c c max, (1) gdzie m nazywamy

Bardziej szczegółowo

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15 ANALIZA NUMERYCZNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Metoda Eulera 3 1.1 zagadnienia brzegowe....................... 3 1.2 Zastosowanie ró»niczki...................... 4 1.3 Output do pliku

Bardziej szczegółowo

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 4 Synchronizacja procesów (i wątków) cześć I Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Potrzeba synchronizacji Procesy wykonują się współbieżnie. Jeżeli w 100% są

Bardziej szczegółowo

Wska¹niki, tablice dynamiczne wielowymiarowe

Wska¹niki, tablice dynamiczne wielowymiarowe Rozdziaª 11 Wska¹niki, tablice dynamiczne wielowymiarowe 11.1 Wst p Identycznie, jak w przypadku tablic statycznych, tablica dynamiczna mo»e by tablic jedno-, dwu-, trójitd. wymiarow. Tablica dynamiczna

Bardziej szczegółowo

Programowanie robota mobilnego Khepera

Programowanie robota mobilnego Khepera Programowanie robota mobilnego Khepera Paweª Ludwików 14 grudnia 2006 roku 1 Wst p Celem wiczenia jest zapoznanie si z programowaniem robota mobilnego Khepera. Programowanie odbywa si w j zyku Python.

Bardziej szczegółowo

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne Synchronizacja procesów Przeplot Przeplot wątków współbieżnych Cel i metody synchronizacji procesów Problem sekcji krytycznej Semafory Blokady 3.1 3.3 Wątki współbieżne Cel i metody synchronizacji procesów

Bardziej szczegółowo

Caªkowanie numeryczne - porównanie skuteczno±ci metody prostokatów, metody trapezów oraz metody Simpsona

Caªkowanie numeryczne - porównanie skuteczno±ci metody prostokatów, metody trapezów oraz metody Simpsona Akademia Górniczo-Hutnicza im. Stanisªawa Staszica w Krakowie Wydziaª Fizyki i Informatyki Stosowanej Krzysztof Grz dziel kierunek studiów: informatyka stosowana Caªkowanie numeryczne - porównanie skuteczno±ci

Bardziej szczegółowo

Monitory. Jarosław Kuchta

Monitory. Jarosław Kuchta Monitory Jarosław Kuchta Co to jest monitor Monitor to zebrane w jednej konstrukcji programowej zmienne i operacje na tych zmiennych. Część tych operacji jest udostępnianych na zewnątrz monitora. Tylko

Bardziej szczegółowo

Interpolacja funkcjami sklejanymi

Interpolacja funkcjami sklejanymi Interpolacja funkcjami sklejanymi Funkcje sklejane: Zaªó»my,»e mamy n + 1 w zªów t 0, t 1,, t n takich,»e t 0 < t 1 < < t n Dla danej liczby caªkowitej, nieujemnej k funkcj sklejan stopnia k nazywamy tak

Bardziej szczegółowo

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych. Wykªad jest prowadzony w oparciu o podr cznik Analiza matematyczna 2. Denicje, twierdzenia, wzory M. Gewerta i Z. Skoczylasa. Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych. Denicja Mówimy,»e funkcja

Bardziej szczegółowo

Zbiory i odwzorowania

Zbiory i odwzorowania Zbiory i odwzorowania 1 Sposoby okre±lania zbiorów 1) Zbiór wszystkich elementów postaci f(t), gdzie t przebiega zbiór T : {f(t); t T }. 2) Zbiór wszystkich elementów x zbioru X speªniaj cych warunek ϕ(x):

Bardziej szczegółowo

Podstawy matematyki dla informatyków

Podstawy matematyki dla informatyków Podstawy matematyki dla informatyków Wykªad 6 10 listopada 2011 W poprzednim odcinku... Zbiory A i B s równoliczne (tej samej mocy ), gdy istnieje bijekcja f : A 1 1 B. Piszemy A B lub A = B. na Moc zbioru

Bardziej szczegółowo

Egzaminy i inne zadania. Semestr II.

Egzaminy i inne zadania. Semestr II. Egzaminy i inne zadania. Semestr II. Poni»sze zadania s wyborem zada«ze Wst pu do Informatyki z egzaminów jakie przeprowadziªem w ci gu ostatnich lat. Ponadto doª czyªem szereg zada«, które pojawiaªy si

Bardziej szczegółowo

INFORMATOR TECHNICZNY WONDERWARE

INFORMATOR TECHNICZNY WONDERWARE Informator techniczny nr 95 04-06-2007 INFORMATOR TECHNICZNY WONDERWARE Synchronizacja czasu systemowego na zdalnych komputerach względem czasu systemowego na komputerze z serwerem Wonderware Historian

Bardziej szczegółowo

Klasyczne problemy współbieżności. Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów

Klasyczne problemy współbieżności. Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów Klasyczne problemy współbieżności Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów Wzajemne wykluczanie Zsynchronizować N procesów, z których każdy w nieskończonej

Bardziej szczegółowo

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd Synchronizacja procesów Proces producenta - zmodyfikowany (licznik) produkuj jednostka w nast_p while licznik =n do nic_nie_rob; bufor [we] := nast_p; we=we+1 mod n; licznik:=licznik+1; Zmodyfikowany proces

Bardziej szczegółowo

Klasyczne problemy synchronizacji

Klasyczne problemy synchronizacji Klasyczne problemy synchronizacji Systemy Operacyjne 2 laboratorium Mateusz Hołenko 19 grudnia 2011 Plan zajęć 1 Synchronizacja 2 Problem producenta / konsumenta 3 Problem pięciu filozofów 4 Problem czytelników

Bardziej szczegółowo

Java Podstawy. Michał Bereta

Java Podstawy. Michał Bereta Prezentacja współfinansowana przez Unię Europejską ze środków Europejskiego Funduszu Społecznego w ramach projektu Wzmocnienie znaczenia Politechniki Krakowskiej w kształceniu przedmiotów ścisłych i propagowaniu

Bardziej szczegółowo

First-order logic. Usage. Tautologies, using rst-order logic, relations to natural language

First-order logic. Usage. Tautologies, using rst-order logic, relations to natural language First-order logic. Usage Tautologies, using rst-order logic, relations to natural language A few important tautologies 1 x(ϕ ψ) ( xϕ xψ); A few important tautologies 1 x(ϕ ψ) ( xϕ xψ); 2 xϕ ϕ, o ile x

Bardziej szczegółowo

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017 i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski Uniwersytet Šódzki, Wydziaª Matematyki i Informatyki UŠ piotr@fulmanski.pl http://fulmanski.pl/zajecia/prezentacje/festiwalnauki2017/festiwal_wmii_2017_

Bardziej szczegółowo

Informatyka 1. Przetwarzanie tekstów

Informatyka 1. Przetwarzanie tekstów Informatyka 1 Wykład IX Przetwarzanie tekstów Robert Muszyński ZPCiR ICT PWr Zagadnienia: reprezentacja napisów znakowych, zmienne napisowe w Sun Pascalu, zgodność typów, operowanie na napisach: testowanie

Bardziej szczegółowo

I.Wojnicki, Tech.Inter.

I.Wojnicki, Tech.Inter. Igor Wojnicki (AGH, KA) 13 maja 2012 1 / 26 Hypertext Preprocessor Igor Wojnicki Katedra Automatyki Akademia Górniczo-Hutnicza w Krakowie 13 maja 2012 $Id: php1.tex,v 1.1 2011/11/19 19:14:25 wojnicki Exp

Bardziej szczegółowo

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15 ARYTMETYKA MODULARNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Denicja kongruencji i jej podstawowe wªasno±ci 3 2 Systemy pozycyjne 8 3 Elementy odwrotne 12 4 Pewne zastosowania elementów odwrotnych

Bardziej szczegółowo

Programowanie obiektowe w C++ Wykªad 4

Programowanie obiektowe w C++ Wykªad 4 Programowanie obiektowe w C++ Wykªad 4 dr Lidia St pie«akademia im. Jana Dªugosza w Cz stochowie L. St pie«(ajd) Programowanie obiektowe w C++ 1 / 26 Dziedziczenie - podstawy Denicja klasy dziedzicz cej

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

XVII Warmi«sko-Mazurskie Zawody Matematyczne

XVII Warmi«sko-Mazurskie Zawody Matematyczne 1 XVII Warmi«sko-Mazurskie Zawody Matematyczne Kategoria: klasa VIII szkoªy podstawowej i III gimnazjum Olsztyn, 16 maja 2019r. Zad. 1. Udowodnij,»e dla dowolnych liczb rzeczywistych x, y, z speªniaj cych

Bardziej szczegółowo

API transakcyjne BitMarket.pl

API transakcyjne BitMarket.pl API transakcyjne BitMarket.pl Wersja 20140314 1. Sposób łączenia się z API... 2 1.1. Klucze API... 2 1.2. Podpisywanie wiadomości... 2 1.3. Parametr tonce... 2 1.4. Odpowiedzi serwera... 3 1.5. Przykładowy

Bardziej szczegółowo

Podstawy logiki i teorii zbiorów wiczenia

Podstawy logiki i teorii zbiorów wiczenia Spis tre±ci 1 Zdania logiczne i tautologie 1 2 Zdania logiczne i tautologie c.d. 2 3 Algebra zbiorów 3 4 Ró»nica symetryczna 4 5 Kwantykatory 5 6 Relacje 7 7 Relacje porz dku i równowa»no±ci 8 8 Funkcje

Bardziej szczegółowo

Dzi kuj za uwag! Spotkania z Pythonem. Cz ± 1 - podstawy - rozwi zania zada« Michaª Alichniewicz. Gda«sk 2014. Studenckie Koªo Automatyków SKALP

Dzi kuj za uwag! Spotkania z Pythonem. Cz ± 1 - podstawy - rozwi zania zada« Michaª Alichniewicz. Gda«sk 2014. Studenckie Koªo Automatyków SKALP Spotkania z Pythonem Cz ± 1 - podstawy - rozwi zania zada«michaª Alichniewicz Studenckie Koªo Automatyków SKALP Gda«sk 2014 Dzi kuj za uwag! Na licencji Creative Commons Attribution-NonCommercial-ShareAlike

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Cz ± pierwsza Prowadz cy: dr Andrzej Mróz, Wydziaª Matematyki i Informatyki, Uniwersytet Mikoªaja Kopernika 1 / 65 Opis przedmiotu Zagadnienia, którymi si zajmiemy: metody

Bardziej szczegółowo