Programowanie wspóªbie»ne

Podobne dokumenty
Programowanie wspóªbie»ne

Rozwi zania klasycznych problemów w Rendezvous

Programowanie wspóªbie»ne

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

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

SOP2 - semafory. grudzień

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

Lab. 02: Algorytm Schrage

Programowanie wspóªbie»ne

Programowanie i struktury danych

Metody dowodzenia twierdze«

Monitory. Jarosław Kuchta

Programowanie Równoległe i Rozproszone

Listy i operacje pytania

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

synchronizacji procesów

synchronizacji procesów

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

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

Wprowadzenie do programowania współbieżnego

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

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

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

Funkcje, wielomiany. Informacje pomocnicze

Semafor ustaw_semafor(key_t nazwa, int start); Semafor usun_semafor(semafor sem); void signal(semafor sem); void wait(semafor sem);

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

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

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

Lekcja 12 - POMOCNICY

Bash i algorytmy. Elwira Wachowicz. 20 lutego

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

3URJUDPRZDQLHZVSyáELH*QHZVWS

Programowanie wspóªbie»ne

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

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

Ekstremalnie fajne równania

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

Klasyczne problemy synchronizacji

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

Projektowanie algorytmów rekurencyjnych

Model obiektu w JavaScript

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

Synchronizacja procesów i wątków

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

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

1 Bª dy i arytmetyka zmiennopozycyjna

PROGRAMOWANIE OBIEKTOWE W C++ - cz 1. Definicja klasy, składniki klasy, prawa dost pu, definiowanie funkcji składowych, konstruktory i destruktory.

Projekt konceptualny z Baz Danych "Centralny system zarz dzania salami na AGH"

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

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

Subversion - jak dziaªa

Wybrane zadania z programowania wspóªbie»nego

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

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

Strategie zabezpieczaj ce

Programowanie funkcyjne. Wykªad 13

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

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

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

Ćwiczenie 7 Liczniki binarne i binarne systemy liczbowe.

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

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

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe

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

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Informacje pomocnicze

Proste modele o zªo»onej dynamice

Rekurencyjne struktury danych

1. Wprowadzenie do C/C++

Rozdziaª I. Postanowienia wst pne

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

Ciaªa i wielomiany. 1 Denicja ciaªa. Ciaªa i wielomiany 1

1 Granice funkcji wielu zmiennych.

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

Równania ró»niczkowe I rz du (RRIR) Twierdzenie Picarda. Anna D browska. WFTiMS. 23 marca 2010

Lekcja 9 Liczby losowe, zmienne, staªe

Bazy danych, 4. wiczenia

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

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

1. Wprowadzenie do C/C++

Metody numeryczne i statystyka dla in»ynierów

Algorytmy tekstowe. Andrzej Jastrz bski. Akademia ETI

MATEMATYKA POZIOM ROZSZERZONY PRZYK ADOWY ZESTAW ZADA NR 2. Miejsce na naklejk z kodem szko y CKE MARZEC ROK Czas pracy 150 minut

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

Interpolacja funkcjami sklejanymi

Monitory. Wady semafora

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

Jerzy Nawrocki, Wprowadzenie do informatyki

Projekt edukacyjny z informatyki

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

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

Metodydowodzenia twierdzeń

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

EGZAMIN MATURALNY Z INFORMATYKI

Lekcja 6 Programowanie - Zaawansowane

Systemy operacyjne. Zajęcia 11. Monitory

Jerzy Nawrocki, Wprowadzenie do informatyki

Transkrypt:

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 / semaphore wolne = N; / bufor jest pocz tkowo pusty / semaphore zajete = 0; process Producent() process Konsument() produkuj(p); P(wolne); bufor[k] = p; V(zajete); P(zajete); p = bufor[k]; V(wolne); konsumuj(p); Zadanie 2: Producent i wielu konsumentów z buforem cyklicznym type porcja; void produkuj(porcja &p); void konsumuj(porcja p); porcja bufor[n]; / bufor cykliczny / semaphore wolne = N; / bufor jest pocz tkowo pusty / semaphore zajete = 0; int gk = 0; binary semaphore ochrona = 1; process Producent() produkuj(p); P(wolne); bufor[k] = p; V(zajete); process Konsument[K] P(zajete); p = bufor[gk]; gk = (gk + 1) % N; V(wolne); konsumuj(p);

2 Zadanie 3: Semafor uogólniony Zdeniuj dwie operacje, nazwijmy je PG(n) oraz VG(n), oznaczaj ce odpowiednio opuszczenie oraz podniesienie semafora uogólnionego o n warto±ci. Zwró uwag na zachowanie wªasno±ci»ywotno±ci. Rozwi zanie bez dziedziczenia sekcji krytycznej binary semaphore ochrona = 1; / ochrona wspólnych zmiennych / binary semaphore reszta = 1; / semafor dla reszty czekaj cych / binary semaphore pierwszy = 0; / semafor dla pierwszego czekaj cego / int ile ; / aktualna warto± semafora / void PG(int n) / operacja P na semaforze uogólnionym / P(reszta); / zapewnia,»e co najwy»ej jeden proces czeka na semaforze pierwszy / ile = ile n; if ( ile < 0) / wstrzymanie / P(pierwszy); V(reszta); void VG(int n) / operacja V na semaforze uogólnionym / ile = ile + n; if (( ile >= 0) && (ile < n)) / kto± czeka i ju» si doczekaª / V(pierwszy); W przedstawionym rozwi zaniu zmienna reprezentuj ca warto± semafora przyjmuje czasowo warto±ci ujemne. Sposób dziaªania procesów (wstrzymywanie procesów) jest jednak caªkowicie prawidªowy. Rozwi zanie z dziedziczeniem sekcji krytycznej binary semaphore ochrona = 1; / ochrona wspólnych zmiennych / binary semaphore reszta = 1; / semafor dla reszty czekaj cych / binary semaphore pierwszy = 0; / semafor dla pierwszego czekaj cego / int ile ; / aktualna warto± semafora / int naileczeka ; / na ile czeka pierwszy czekaj cy / void PG(int n) / operacja P na semaforze uogólnionym / P(reszta); if ( ile < n) naileczeka = n; P(pierwszy); / dziedziczenie sekcji krytycznej /

3 naileczeka = 0; ile = ile n; V(reszta); void VG(int n) / operacja V na semaforze uogólnionym / ile = ile + n; if (( naileczeka > 0) && (ile > = naileczeka)) V(pierwszy); / przekazanie sekcji krytycznej / Zadanie 4: Czytelnicy i pisarze W systemie dziaªaj dwa typy procesów: czytelnicy i pisarze. Pisarze zapisuj, a czytelnicy odczytuj dane. Je±li pisarz pisze, to»aden inny proces nie czyta ani nie pisze. Jednocze±nie mo»e (i powinno) czyta wielu czytelników. Zanim napiszemy program, zastanówmy si, jaki jest ogólny schemat rozwi zywania tego typu zada«synchronizacyjnych. Mamy tutaj dwie grupy procesów, które musz w jaki± sposób zsynchronizowa korzystanie z czytelni tak b dziemy nazywa wykonanie operacji czytania przez czytelnika lub pisania przez pisarza. Nie znamy liczby czytelników ani pisarzy mo»e ich by dowolnie du»o. Podobnie w»aden sposób nie limitujemy liczby miejsc w czytelni. Projektuj c protokoªy wst pne odpowiadamy na pytanie Kiedy proces powinien poczeka?. Z kolei pisz c protokoªy ko«cowe podejmuje decyzj, któr grup procesów czekaj cych w protokoªach wst pnych, obudzi. Spróbujmy zatem opisa protokoªy wst pne i ko«cowe czytelnika i pisarza. Protokóª wst pny czytelnika: czytelnik czeka, je±li w czytelni jest pisarz. Protokóª wst pny pisarza: pisarz czeka je±li, w czytelni jest czytelnik lub pisarz. Protokóª ko«cowy czytelnika: je±li jest ostatnim wychodz cym, to budzi pisarza o ile jaki± czeka. Protokóª ko«cowy pisarza: je±li czekaj czytelnicy, to inicjuje budzenie wszystkich czekaj cych czytelników, w przeciwnym razie, je±li czekaj pisarze, to budzi jednego z nich. Zanim zaczniemy implementowa to rozwi zanie, odpowiedzmy na kilka pyta«. Czy takie rozwi zanie jest bezpieczne? Czy nie prowadzi do zagªodzenia czytelników? Czy nie prowadzi do zagªodzenia pisarzy? Przedstawione rozwi zanie mo»e zagªodzi pisarzy. Wska» scenariusz prowadz cy do takiej sytuacji. Poprawne rozwi zanie polega na zatrzymaniu czytelnika tak»e wtedy, gdy czeka pisarz. Protokóª wst pny czytelnika b dzie zatem nast puj cy: Protokóª wst pny czytelnika: czytelnik czeka, je±li w czytelni jest pisarz lub je±li czeka pisarz. Do realizacji powy»szego schematu nale»y u»y :

4 czterech liczników: dwóch dla czytelników oraz dwóch dla pisarzy, oznaczaj cych liczby procesów z danej grupy, które zgªosiªy ch skorzystania z czytelni oraz tych, które ju» korzystaj z czytelni; semafora binarnego do ochrony wspólnych zmiennych; dwóch semaforów, na których czekaj odpowiednio czytelnicy oraz pisarze. void czytam(); void pisz (); int iluczyta, ilupisze, czekaczyt, czekapis = (0, 0, 0, 0); binary semaphore ochrona = 1; semaphore Czytelnicy = 0; semaphore Pisarze = 0; process Czytelnik(int id) sekcja_lokalna; if ( ilupisze + czekapis > 0) czekaczyt++; P(Czytelnicy); / dziedziczenie sekcji krytycznej / czekaczyt ; ; iluczyta++; if (czekaczyt > 0) V(Czytelnicy); czytam(); iluczyta ; if (( iluczyta == 0) && (czekapis > 0)) V(Pisarze); process Pisarz(int id) sekcja_lokalna; if ( ilupisze + iluczyta > 0) czekapis++; P(Pisarze); / dziedziczenie sekcji krytycznej / czekapis ; ; ilupisze ++; pisz ();

5 ilupisze ; if (czekaczyt > 0) V(Czytelnicy); if (czekapis > 0) V(Pisarze); Zadanie dodatkowe Zapisz rozwi zanie problemu czytelników i pisarzy bez dziedziczenia sekcji krytycznej.