Programowanie wspóªbie»ne

Podobne dokumenty
Programowanie wspóªbie»ne

Rozwi zania klasycznych problemów w Rendezvous

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

Programowanie wspóªbie»ne

Lab. 02: Algorytm Schrage

X WARMI SKO-MAZURSKIE ZAWODY MATEMATYCZNE 18 maja 2012 (szkoªy ponadgimnazjalne)

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Programowanie i struktury danych 1 / 44

Algorytmy zwiazane z gramatykami bezkontekstowymi

Metody dowodzenia twierdze«

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

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

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Listy i operacje pytania

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

Algorytmy grafowe 2. Andrzej Jastrz bski. Akademia ETI. Politechnika Gda«ska Algorytmy grafowe 2

Przetwarzanie sygnaªów

1 Stos: Stack i Stack<T>

Rekurencyjne struktury danych

1 Bª dy i arytmetyka zmiennopozycyjna

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

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Model obiektu w JavaScript

Strategia "dziel i zwyciężaj"

Imi i nazwisko... Egzamin - Programowanie Obiektowe II rok informatyki, studia pierwszego stopnia, niestacjonarne Termin zerowy

Szeregowanie zada« Przedmiot fakultatywny 15h wykªadu + 15h wicze« dr Hanna Furma«czyk. 7 pa¹dziernika 2013

CREATE TABLE logika (p BOOLEAN); INSERT INTO logika VALUES(true); INSERT INTO logika VALUES(false); INSERT INTO logika VALUES(NULL);

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

Janusz Adamowski METODY OBLICZENIOWE FIZYKI Zastosowanie eliptycznych równa«ró»niczkowych

1. Wprowadzenie do C/C++

Algorytmy tekstowe. Andrzej Jastrz bski. Akademia ETI

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

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

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

Algorytmy sortowania. Przykład Posortuj metod b belkow zbiór pi ciu elementów: w porz dku rosn cym. Funkcja porównuj ca przyjmuje posta :

Matematyka wykªad 1. Macierze (1) Andrzej Torój. 17 wrze±nia Wy»sza Szkoªa Zarz dzania i Prawa im. H. Chodkowskiej

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe

Lekcja 5 Programowanie - Nowicjusz

P tle. Rozdziaª Wst p. 4.2 P tle P tla for(...);

Szeregowanie zada« Wykªad nr 5. dr Hanna Furma«czyk. 4 kwietnia 2013

Szeregowanie zada« Wykªad nr 4. dr Hanna Furma«czyk. 21 marca 2013

Algorytmiczna teoria grafów

1. Warunek ka»dy proces w ko«cu wejdzie do sekcji krytycznej jest

EDUKARIS - O±rodek Ksztaªcenia

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

1. Wprowadzenie do C/C++

Ekonometria. wiczenia 1 Regresja liniowa i MNK. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej

Ukªady równa«liniowych

ALGORYTMY SORTOWANIA DANYCH

Wybrane zadania z programowania wspóªbie»nego

Metody numeryczne. Wst p do metod numerycznych. Dawid Rasaªa. January 9, Dawid Rasaªa Metody numeryczne 1 / 9

x y x y x y x + y x y

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

WYMAGANIA EDUKACYJNE Z PRZEDMIOTÓW ZAWODOWYCH ODBYWAJĄCYCH SIĘ W SZKOLNYM LABORATORIUM CHEMICZNYM

Przykªady problemów optymalizacji kombinatorycznej

Laboratorium Podstawy Przetwarzania Rozproszonego SPRAWOZDANIE z zadania SERWIS KOMPUTEROWY

ZAJ CIA 4. Podstawowe informacje o algorytmie. Operatory relacyjne i logiczne, instrukcja warunkowa if

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

Sposoby przekazywania parametrów w metodach.

Zadanie 1. (8 punktów) Dana jest nast puj ca macierz: M =

Optymalizacja R dlaczego warto przesi ± si na Linuxa?

Bazy danych, 4. wiczenia

Grafy. Andrzej Jastrz bski. Akademia ET I. Politechnika Gda«ska

Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów

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

Dynamiczne struktury danych

c Marcin Sydow Wst p Grafy i Zastosowania Wierzchoªki 8: Kolorowanie Grafów Mapy Kraw dzie Zliczanie Podsumowanie

Programowanie i struktury danych

KLASYCZNE ZDANIA KATEGORYCZNE. ogólne - orzekaj co± o wszystkich desygnatach podmiotu szczegóªowe - orzekaj co± o niektórych desygnatach podmiotu

Projektowanie algorytmów rekurencyjnych

NAP D I STEROWANIE PNEUMATYCZNE

Propozycja integracji elementów ±wiata gry przy u»yciu drzew zachowa«

Interpolacja funkcjami sklejanymi

W zadaniach na procenty wyró»niamy trzy typy czynno±ci: obliczanie, jakim procentem jednej liczby jest druga liczba,

2 Liczby rzeczywiste - cz. 2

Subversion - jak dziaªa

API transakcyjne BitMarket.pl

Wykonanie materiałów informacyjnych i promocyjnych dotyczących II Osi Priorytetowej MRPO

Logika dla matematyków i informatyków Wykªad 1

.! $ Stos jest list z trzema operacjami: dodawanie elementów na wierzch stosu, zdejmowanie elementu z wierzchu stosu, sprawdzanie czy stos jest pusty.

12: Znajdowanie najkrótszych ±cie»ek w grafach

Elementy Modelowania Matematycznego Wykªad 9 Systemy kolejkowe

Granular Computing 9999 pages 15 METODY SZTUCZNEJ INTELIGENCJI - PROJEKTY

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym.

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Ÿ1 Oznaczenia, poj cia wst pne

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

CAŠKOWANIE METODAMI MONTE CARLO Janusz Adamowski

Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

Dyskretyzacja i kwantyzacja obrazów

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

Podstawy przedsiębiorczości Klasa: 3 LO Semestr: I Tygodniowy wymiar godzin: 1

Ekstremalnie fajne równania

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

Planowanie adresacji IP dla przedsibiorstwa.

2 Skªadnia polece«w pliku

Transkrypt:

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 puj cy algorytm: process Klient() { i = Bar.CzekamNaStoªekIPiwo(); // pij piwo na stoªku i tym Bar.ZwalniamStoªek(i); Barman nalewa piwo nowo przybyªym klientom w kolejno±ci wyznaczonej przez stoªki przez nich zajmowane (chodzi w kóªko): process Barman() { int i=0; i = Bar.KtoNast pny(i); // podej±cie do stoªka i tego i nalanie piwa Bar.Gotowe(i); Rozwi zanie monitor Bar { enum StanStoªka {wolny, nieobsªu»ony, obsªu»ony; / stan stoªka : nieobsªu»ony siedz cy na nim klient czeka na piwo obsªu»ony siedz cy na nim klient pije piwo / condition naklienta; / barman czeka, je»eli nie ma nic do roboty / condition nawej±cie; / klienci czekaj na wej±cie do baru / condition napiwo[n]; / klient czeka na nalanie piwa / int iluwbarze = 0; / ilu klientów jest w barze / iluczeka: int; / ilu klientów czeka na nalanie piwa / StanStoªka stoªek[n] = (wolny,..., wolny); int CzekamNaStoªekIPiwo(){ if (iluwbarze == N) (nawej±cie); / nie ma wolnych stoªków / iluwbarze++; iluczeka++; i = 0; while (stoªek[i ] <> wolny) i = (i + 1) % N; / klient szuka wolnego stoªka / stoªek [ i ] = nieobsªu»ony; / i ty stoªek byª wolny, klient go zajmuje /

2 (naklienta); / zwalnia barmana, je»eli ten czeka / (napiwo[i]); / czeka na stoªku i tym na piwo / return i; void ZwalniamStoªek(int i){ iluwbarze ; stoªek [ i ] = wolny; (nawej±cie); int KtoNast pny(int ostatnio){ if (iluczeka == 0) (naklienta); / nie ma nieobsªu»onych klientów / i = (ostatnio + 1) % N; / barman szuka klienta pocz wszy od nast pnego miejsca po tym, które ostatnio obsªugiwaª / while (stoªek[i ] <> nieobsªu»ony) i = (i + 1) % N; return i; void Gotowe(int i){ stoªek [ i ] = obsªu»ony; iluczeka ; (napiwo[i]); Uwagi Stan stoªka musi by okre±lony przez trzy warto±ci. Je±li trzymamy informacj tylko o tym, czy stoªek jest wolny, czy zaj ty, a rozró»niamy stoªki obsªu»one od nieobsªu»onych sprawdzaj c czy kolejki z nimi zwi zane s niepuste, to mamy rozwi zanie niepoprawne. Klient w CzekamNaSto- ªekIPiwo() wykonuje (napiwo[i]) po (naklienta). Zgodnie z semantyk operacji po wykonaniu (naklienta) zaczyna dziaªa barman, który sprawdzaj c kolejk napiwo[i] stwierdza,»e jest ona pusta, poniewa» klient nie wykonaª jeszcze (napiwo[i]). Ten sam problem wyst puje, je»eli przyjmiemy zaªo»enie,»e nalanie piwa jest wewn trzn czynno±ci w monitorze, czyli procedury KtoNast pny() i Gotowe() zª czymy w jedn. Barman szukaj c nie obsªu»onego klienta nie mo»e zaczyna zawsze od tego samego miejsca, poniewa» prowadzi to do zagªodzenia. Dlaczego nie skorzystali±my z wygodniejszych struktur danych takich jak lista zamiast tablicy? Poniewa» barman szukaj c klienta nie mógªby wzi pierwszego z listy oczekuj cych powinien obsªugiwa wszystkich czekaj cych klientów, obok których przechodzi, niezale»nie od tego w jakiej kolejno±ci przyszli. Ten problem mo»na rozwi za porz dkuj c list wedªug numerów stoªków, przy których siedz klienci, jednak wtedy pojawia si nowa trudno± od którego miejsca nale»y rozpocz,»eby nie spowodowa zagªodzenia? Jak wida rozwi zanie korzystaj ce z tablicy jest prostsze. Zadanie 2: Šadowanie cegieª Grupa N (N > 0) robotników ma zaªadowa stert cegieª na samochód. Ka»dy z nich musi wiedzie od kogo ma odbiera cegªy i komu podawa, czyli musi zna numery obu swoich s siadów (nale»y przyj,»e sterta cegieª ma numer 0, a samochód N+1). Prac mo»na rozpocz dopiero wtedy, gdy zgªosz si wszyscy robotnicy. Po zako«czeniu zaªadunku robotnicy przychodz po wypªat. Ka»dy podaje swoj stawk za prac, na podstawie której wylicza si stawk ±redni, któr otrzymuj wszyscy. Ka»dy robotnik dziaªa wedªug schematu:

3 process Robotnik (int id) { int mojastawka =...; int lewy, prawy, wypªata; Zaªadunek.Chc Pracowa (id, &lewy, &prawy); podawajcegªy(lewy, prawy); Zaªadunek.Wypªata(mojaStawka, &wypªata); odpoczynek(wypªata); Nale»y napisa monitor Zaªadunek. Dodatkowe wymaganie: nie wolno deklarowa»adnych struktur rozmiaru N lub wi kszego. Rozwi zanie Aby pozna numer prawego s siada nie u»ywaj c dodatkowych struktur danych nale»y odwróci kolejno± procesów wykorzystuj c do tego operacj. Przypominamy,»e wstrzymuje dziaªanie procesu do momentu, gdy zwalniany przez niego proces opu±ci monitor. Procesy wstrzymane przy wykonaniu operacji zwalniane s w kolejno±ci odwrotnej do tej w jakiej j wykonywaªy. monitor Zaªadunek { int ilu =0, ostatni=0, stawka=0; condition napozostaªych; void chc Pracowa (int id, &lewy, &prawy) { lewy = ostatni; if ( ilu < N) { (napozostaªych); prawy = ostatni; else { prawy = N + 1; ilu = 0; void Wypªata(int mojastawka, &wypªata) { if ( ilu == 1) ostatni = 0; stawka = stawka + mojastawka; if ( ilu < N) (napozostaªych) else stawka = stawka / N; wypªata = stawka;

4 Przeanalizujmy wykonanie procesów na przykªadzie 4 robotników, którzy zgªaszaj si w kolejno±ci: 2, 3, 4, 1. 2 4 3 1 lewy=0 lewy=2 lewy=4 lewy=3 prawy=n+1 (pusty) prawy=1 prawy=3 prawy=4 Nie potrzeba osobnych kolejek do wstrzymywania procesów czekaj cych na prac i na wypªat, poniewa» nie ma niebezpiecze«stwa,»e procesy z tych dwóch grup si przemieszaj. Rozwi zanie niepoprawne Zwró my uwag,»e nast puj ce rozwi zanie nie jest poprawne: void chc Pracowa (int id, &lewy, &prawy) { lewy = ostatni; if ( ilu < N) (napozostaªych) else ostatni = N+1; prawy = ostatni; ilu ; if not empty(napozostaªych) Ka»dy z procesów musi pozna swoich s siadów: lewego, czyli proces, który zgªosiª si bezpo±rednio przed nim i prawego, czyli proces, który zgªosiª si bezpo±rednio po nim - ten wªa±nie warunek nie jest speªniony. Przeanalizujmy to na naszym przykªadzie.

2 4 3 1 lewy=0 lewy=2 lewy=4 lewy=3 ostatni=n+1 prawy=n+1 prawy=1 (bª d) prawy=2 (bª d) prawy=4 (bª d) (pusty) 5