PROGRAMOWANIE WSPÓŁBIEŻNE I RÓWNOLEGŁE INFORMATYKA IV, semestr letni 2007 Wykorzystując mechanizmy systemu LINUX zaprojektować i uruchomić zadany przez prowadzacego zajęcia system w wersji lokalnej (A) oraz globalnej(B). ZADANIE A. wersja lokalna Zasady działania systemu : - wszystkie procesy systemu uruchamiany na jednym procesorze ( tzn. każdy proces na innej konsoli ). W programach nie korzystamy z funkcji "fork" oraz potoków - nie wprowadzamy danych do procesów z plików - do synchronizacji procesów wykorzystujemy semafory (A) lub komunikaty (B) - wykorzystujemy funkcje preprocesora C do warunkowego wyświetlania na ekranie monitora ( DEBUG) - procesy systemu wyświetlają następujące informacje np: "N.koniec pracy", "awaria wizji" oraz dodatkowo dla wersji B "awaria zasobów" - przygotować skrypty (dla pojazdów) pokazujące prawidłowe działanie systemu - w systemie istnieją następujące procesy : 1. proces instalujący i usuwający mechanizmy IPC Tylko ten proces ma dostęp do klawiatury. Proces ten po zainstalowaniu wszystkich wspólnych mechanizmów IPC oczekuje na sygnał z klawiatury Ctrl+C po którym wysyła wybrany sygnał "xxx" a następnie usuwa z pamięci komputera wcześniej zainstalowane mechanizmy IPC i kończy pracę. Pozostałe procesy mają zablokowany sygnał Ctrl_C i Ctrl_Z a po odebraniu sygnału "xxx" również kończy pracę 2. proces wizualizacji systemu Program ten pracuje w trybie tekstowym. Proces ten pokazuje ilość procesów oczekujących na wizualizację IP1,2,3 oraz wyświetla na ekranie znaki ASCII od miejsca określonego przez klientów . Format danych dla komunikatu tego procesu ma następującą strukturę "char z1,x1,y1,z2,x2,y2" Opis znaków na schemacie skrzyżowania : - S : pole "światła" o tle w kolorze czerwonym lub zielonym - N : = 6, długość drogi dojazdowej do skrzyżowania Proces wizualizacji analizuje odebrane zmienne i dla "z1" : - 0 : kończy proces dla wersji B systemu - 1,2 : uruchamia watek który w czterech krokach co 1 sek, otwiera (1) lub zamyka (2) most. - 3,4 : dodaje/odejmuje jeden do wybranego licznika IP oraz wyświetla na otrzymanych współrzędnych x1,y1 jego zawartość na ekranie - 5,6 : zmienia tło jednego "światła" o współrzędnych x1,y1 na czerwone/zielone - 7,8 : zmienia tło dwóch "świateł" o współrzędnych x1,y1 x2,y2 na czerwone/zielone - reszta : wyświetla go na współrzędnych x1,y1 a dla zmiennej „z2" - 0 : nic nie wyświetla - reszta : wyświetla go na współrzędnych x2,y2 Proces ten nie przechowuje żadnych współrzędnych x,y. W razie dowolnej Błędnej operacji kończy działanie. W programie konieczne jest synchronizacja dostępu do monitora. 3. proces klienta : zarządca mostu i świateł Proces ten co 0.75 sekundy sprawdza stan zgłoszeń LZ i w zależności od warunku zadania (numer kierunku jazdy opisany w nawiasach kwadratowych ma najwyższy priorytet) oraz stanu licznika skrzyżowania LS odpowiednio steruje światłami i mostem. W czasie zmiany stanu mostu proces zarządcy jest "uśpiony". Nie wolno podnosić/opuszczać i zaraz potem opuszczać/podnosić most. 4. proces klienta : pojazd ( samochód, barka) Przykładowy sposób powołania procesu klienta "ppp": ppp A 30 1 2 & gdzie parametr : [A] - jeden znak ASCII 'A..Z' lub 'a..z' nazwa klienta [30] - czas opóźnienia startu procesu [0...40]*1 sekundę [1] - skąd zaczyna się proces klienta [2] - czas jazdy (po kratce) [1 ... 30].* 0.2 sekundy Długość samochodu wynosi trzy znaki ASCII (np. AAA) a barki dwa znaki ASCI (np. cc WW). Do wyliczenia czasu używamy funkcje sleep() i usleep(); Po uruchomieniu procesu wykonuje funkcje sleep() z parametrem 2 wybiera numer drogi (parametr 3) wysyła komunikat o zwiększeniu IP do procesu wizualizacji a potem wybiera pierwszy odcinek (semafor) drogi. Po przejściu jego wysyła komunikat o zmniejszeniu IP i wyświetleniu Znaku ASCII (parametr 1) a następnie wywołuje funkcję usleep() z parametrem 4 itd. Pojazd na dwa pola przed polem "światła" zwiększa zawartość licznika zgłoszeń LZ (wspólna pamięć) i zatrzymuje się na równo z polem "światła", gdy ma czerwone światło. Po przejściu przez pole "swiatła" zmniejsza zawartość licznika LZ i zwiększa zawartość licznika skrzyżowania LS (semafor). Po opuszczeniu skrzyżowania zmniejsza licznik LS. ZADANIE B. wersja globalna Warunki działania systemu równoległego : - każdy proces uruchamiany jest na innym komputerze - do komunikacji między procesami wykorzystujemy gniazda starając się nie obciążać nie potrzebnie sieci LAN. Zasady działanie procesów : 1. proces serwera : zasobów Proces ten zastępuje proces 1 z wersji A. Przechowuje on stan odcinków dróg, stan świateł oraz liczniki zgłoszeń i zajętości skrzyżowania. Odpowiada na pytania klientów i tak : - dla pojazdów warunkowo, tzn jeżeli zasób jest dostępny - dla zarządcy mostu natychmiast - proces posiada licznik pojazdów znajdujących się na lub pod mostem Struktura komunikatu serwera zasobów jest jednakowa dla wszystkich klientów. Po odebranie sygnału Ctrl+C "odpowiednio" informuje on klientów o zakończeniu pracy a ostatni klient informuje proces wizualizacji 2. proces serwera : wizualizacja systemu Zasady pracy procesu jak w wersji A 3. proces klienta : zarządca mostu i świateł Proces ten ma zmienione warunki działania w stosunku do wersji A. Proces ten uruchamiamy z parametrem zewnętrznym określającym próg "cierpliwości" (ilość taktów ). Próg ten określa maksymalny czas jazdy pojazdów w jednym kierunku. Proces ten co 0.75 sekundy (takt czasu) sprawdza stan zgłoszeń i w zależności od progu "cierpliwości" odpowiednio steruje "światłami i mostem. 4. proces klienta : pojazd Zasady pracy procesu jak wersji A ZADANIE C Posługując się narzędziami programowania współbieżnego oferowanymi przez środowisko preferowane przez studenta (lub prowadzącego zajęcia) zaprojektować, zaprogramować oraz wykonać obliczenia związane ze współbieżnym rozwiązaniem przykładowych problemów obliczeniowych Terminy oddawania poszczególnych części systemu numer zajęć [punkty] Ocena końcowa 2 [2] - A. IPC, wizualizacja bdb 14 - 16 4 [3] - + pojazdy pdb 12 - 13 6 [3] - + zarządca db 9 - 11 7 [1] - + całość pdst 7 - 8 10 [3] - B. zasoby, pojazd, wizualizacja dst 0 - 6 12 [2] - + całość 14 [2] - C.