Semafory - Kamil Dworak

Transkrypt

Semafory - Kamil Dworak
Programowanie Wspóªbie»ne
Semafory
Zadanie 1
Napisa¢ program, w którym, oprócz w¡tku gªównego, dziaªaj¡ dwa w¡tki robocze. Zadaniem pierwszego jest pobranie od u»ytkownika dwóch liczb caªkowitych
i umieszczenie ich w tablicy wspóªdzielonej z drugim w¡tkiem. Gdy liczby zostan¡ podane, w¡tek niezwªocznie powiadamia drugi w¡tek. Drugi w¡tek po uruchomieniu czeka na sygnaª od pierwszego w¡tku, a nast¦pnie wy±wietla iloczyn
podanych liczb.
Do synchronizacji mi¦dzy w¡tkami nale»y zastosowa¢ semafor.
Przykªadowy kod uruchamiaj¡cy w¡tki.
Semaphore gotowe = new Semaphore(0);
int [] liczby = new int [2];
Czytajacy watek1 = new Czytajacy(liczby, gotowe);
Liczacy watek2 = new Liczacy(liczby, gotowe);
watek1.start();
watek2.start();
watek1.join();
watek2.join();
Zadanie 2
Napisa¢ program symuluj¡cy korzystanie z parkingu samochodowego. Zarówno
wjazd, jak i wyjazd z parkingu zabezpieczone s¡ szlabanami podnoszonymi po
naci±ni¦ciu przycisku. Szlaban wjazdowy jest podnoszony pod warunkiem, »e
na parkingu s¡ wolne miejsca. W przeciwnym razie kierowcy sygnalizowane jest
zapeªnienie parkingu i musi on czeka¢ na zwolnienie miejsca.
Sterowaniem pojedynczym samochodem zawarte jest w klasie
Samochod.
Ka»dy samochód dziaªa w osobnym w¡tku. Samochód wykonuje cyklicznie nast¦puj¡ce czynno±ci (okre±lon¡ w konstruktorze liczb¦ razy):
wje»d»a na parking,
stoi na parkingu (1-3 sek.),
wyje»d»a z parkingu,
pewien czas je¹dzi poza parkingiem (1-3 sek.).
Kontrol¡ miejsc parkingowych zajmuje si¦ klasa
P arking ,
która ma nast¦-
puj¡ce metody publiczne:
void wjedz()
- metoda ko«czy si¦, gdy na parkingu jest wolne co najmniej
jedno miejsce, w przeciwnym razie metoda powoduje wstrzymanie w¡tku,
który j¡ wywoªaª;
void wyjedz()
- metoda aktualizuje stan wolnych miejsc na parkingu, wy-
konanie ko«czy si¦ natychmiast.
Liczba miejsc parkingowych wynosi 5, liczba samochodów wynosi 10. Przy
próbie wjazdu oraz przy wyje¹dzie z parkingu klasa
nikaty informacyjne. Podobnie klasa
P arking
Samochod wy±wietla komu-
dziaªaj¡ca w odr¦bnym w¡tku co
kilka sekund wy±wietla informacje o liczbie wolnych miejsc parkingowych.
Wskazówka: w klasie P arking
zastosowa¢ semafor.
Zadanie 3
W problemie Producenta-Konsumenta modelowany jest ukªad dwóch obiektów:
obiekt klasy Producent produkuje liczby, które umieszcza w buforze o ograniczonej pojemno±ci;
obiekt klasy Konsument konsumuje liczby, które w buforze umie±ciª producent;
obiekt bufora jest, oczywi±cie, wspóªdzielony mi¦dzy producentem a konsumentem, natomiast producent nie ma bezpo±redniego dost¦pu do konsumenta i na odwrót.
Zaimplementuj niezb¦dne klasy (Producent, Konsument, Bufor) i wykonaj symulacj¦, w której producent produkuje ci¡g
N = 10i , i ∈ {1, 2, 3, 5}
losowych
liczb caªkowitych z zakresu [1, 10]. Liczby te s¡ pobierane przez konsumenta.
Pojemno±¢ bufora jest ograniczona do 5. Zarówno producent, jak i konsument
powinni wypisywa¢ informacje o ka»dej wyprodukowanej, czy skonsumowanej
liczbie.
Do synchronizacji kooperacji mi¦dzy w¡tkami nale»y zastosowa¢ mechanizm
semaforów. Nale»y równie» pami¦ta¢ o konieczno±ci synchronizacji operacji na
buforze za pomoc¡ blokad.
W celu dodatkowej werykacji poprawno±ci dziaªania programu nale»y doda¢ obliczanie sumy kontrolnej przez producenta dla wyprodukowanych, a przez
konsumenta dla odebranych liczb. Oczywi±cie, sumy te powinny si¦ zgadza¢.
Przykªad:
Producent:
Producent:
Producent:
Konsument:
Producent:
Konsument:
Producent:
Konsument:
produkuj¦ 6
produkuj¦ 3
produkuj¦ 5
otrzymaªem 6
produkuj¦ 4
otrzymaªem 3
produkuj¦ 4
otrzymaªem 5
Zadanie 4
Plemi¦ tubylców ucztuje zebrane wokóª du»ego kotªa zawieraj¡cego
m
porcji
mi¦sa z upolowanej gazeli. Gdy jaki± tubylec ma ochot¦ si¦ pocz¦stowa¢, to si¦ga
do kotªa po porcj¦. Je»eli kocioª jest pusty, to tubylec budzi kucharza, który
ponownie napeªnia kocioª. Ka»dy tubylec zaspokoi swój gªód po zjedzeniu
porcji. Napisa¢ program wspóªbie»ny zªo»ony z
n procesów Tubylec
k
oraz procesu
Kucharz symuluj¡cy opisany scenariusz. Kucharz powinien by¢ budzony jedynie
wtedy, gdy kocioª jest pusty.
Program przetestowa¢ dla warto±ci
n = 3, m = 10, k = 5
wi¦kszych warto±ci.
Przykªadowy wydruk:
Tubylec 1, zjadªem 1. sztuk¦
Tubylec 3, zjadªem 1. sztuk¦
Tubylec 2, zjadªem 1. sztuk¦
Tubylec 1, zjadªem 2. sztuk¦
Tubylec 3, zjadªem 2. sztuk¦
Tubylec 2, zjadªem 2. sztuk¦
Tubylec 1, zjadªem 3. sztuk¦
Tubylec 3, zjadªem 3. sztuk¦
Tubylec 2, zjadªem 3. sztuk¦
Tubylec 1, zjadªem 4. sztuk¦
Kucharz: napeªniam kocioª
Napeªniono kocioª 10 sztukami mi¦sa
Tubylec 3, zjadªem 4. sztuk¦
Tubylec 2, zjadªem 4. sztuk¦
Tubylec 1, zjadªem 5. sztuk¦
Tubylec 3, zjadªem 5. sztuk¦
Tubylec 2, zjadªem 5. sztuk¦
Uczta zako«czona
oraz dla zestawu
Zadanie 5
Wariant zadania producent-konsument. W systemie dany jest jeden w¡tek pro-
ducenta oraz
n
w¡tków konsumentów. Producent produkuje liczby caªkowite i
b, z którego s¡ pobierane przez konsumenm liczb. Napisa¢ program symuluj¡cy wspóªprac¦
wstawia je do bufora o rozmiarze
tów. Š¡cznie produkowane jest
producentkonsumenci przy zaªo»eniach:
ka»da wiadomo±¢ wysªana przez producenta musi zosta¢ odczytana przez
wszystkich konsumentów
ka»dy konsument musi odebra¢ wiadomo±ci w kolejno±ci w jakiej zostaªy
wysªane.
Program przetestowa¢ dla ró»nych warto±ci
n, b
oraz
m,
przykªadowo
n = 4,
b = 3, m = 10.
Podobnie jak w poprzednich zadaniach ka»dy konsument powinien wyznacza¢
sum¦ kontroln¡ otrzymywanych liczb.
Zadanie 6 - dodatkowe
W pewnym supermarkecie jest ª¡cznie K kas. Zasady ich dziaªania przyj¦te przez
kierownika sklepu s¡ nast¦puj¡ce:
zawsze dziaªaj¡ min. 2 stanowiska kasowe,
na ka»dych K klientów znajduj¡cych si¦ na terenie supermarketu powinno
przypada¢ min. 1 czynne stanowisko kasowe,
je»li liczba klientów jest mniejsza ni» K*(N-1), gdzie N oznacza liczb¦ czynnych kas, to jedna z kas zostaje zamkni¦ta,
je»li w kolejce do kasy czekali klienci (przed ogªoszeniem decyzji o jej zamkni¦ciu) to powinni zosta¢ obsªu»eni przez t¦ kas¦.
Klienci przychodz¡ do supermarketu w losowych momentach czasu i przebywaj¡
w nim przez pewien okre±lony losowy dla ka»dego z nich czas. Napisz program
klienta i kierownika kasjerów.

Podobne dokumenty