Modelowanie procesów współbieżnych dr inż. Maciej Piotrowicz Katedra Mikroelektroniki i Technik Informatycznych PŁ piotrowi@dmcs.p.lodz.pl http://fiona.dmcs.pl/~piotrowi -> Modelowanie...
Literatura M. Ben-Ari, Podstawy programowania współbieżnego, WNT 1989 lub M. Ben-Ari, Podstawy programowania współbieżnego i rozproszonego, WNT, 1996 K. Jensen, Coloured Petri Nets, Basic Concepts, Analysis Methods and Practical Use, Vol. 1-3, Springer 1996 Dodatkowo: A. Jaszkiewicz, Inżynieria oprogramowania, Wydawnictwo Helion, Warszawa, 1997. S. Szejko (red.), Metody wytwarzania oprogramowania, Mikom, 2002 J. Górski (red.), Inżynieria oprogramowania w projekcie informatycznym, Mikom, 1999
Program przedmiotu Podstawy modelowania formalnego Sieci miejsc i przejść Kolorowane sieci Petriego Metody analizy formalnej współbieżnych systemów informatycznych Idea i abstrakcja programowania współbieżnego Problem wzajemnego wykluczania Pojęcia semafora i monitora Laboratorium: Wykorzystanie kolorowanych sieci Petriego do modelowania współbieżnych systemów informatycznych
Projekt informatyczny Specyfikacja Analiza wymagań - powinna definiować model logiczny i być sporządzona w oderwaniu od platformy, na której dokonuje się implementacji Projekt - powinien zawierać odniesienia do implementacji (definicje klas, relacje pomiędzy klasami) Model formalny ma pokazać zasadę działania obejmującą fragment funkcjonalności. wczesna identyfikacja stanów systemu identyfikacja akcji wykonywanych w systemie symulacja działania Implementacja Kod źródłowy, plik wynikowy, działająca aplikacja
Model formalny Model pośredni w procesie tworzenia oprogramowania lub systemu hardware/software. Konstruowany przy użyciu języka formalnego przejście w obszar wirtualny (wyższy poziom abstrakcji). Opis funkcjonalny projektowanego systemu Niezależny od planowanej implementacji Pozwala na przeprowadzenie symulacji Matematyczny aparat analizy formalizmu umożliwia skuteczną weryfikację modelu
Popularne metody formalne Automat skończony FSM Grafy przepływu DFG, CFG i CDFG Automat z reprezentacją danych FSMD Maszyna stanowo-programowa PSM Model CFSM stosowany w pakiecie POLIS Automat hierarchiczny z równoległością HCFSM Formuły logiki temporalnej (raczej wymagania) Sieci miejsc i przejść, sieci kolorowane
Analiza formalna Sprawdzenie zgodności zachowania modelu ze specyfikacją wejściową, Badanie abstrakcyjnych własności systemu, niezmiennych dla różnych sygnałów wejściowych, Wykonywana po każdym etapie projektowania pozwala wcześnie wychwycić błędy, które mogą nie wystąpić w symulacji
Ogólna postać modelu Formalnie, proces sekwencyjny Pi może być opisany (modelowany) przez uporządkowaną czwórkę: P i = <S i, S i0, e i, F > gdzie S i jest zbiorem stanów s i procesu P i S i 0 jest zbiorem stanów początkowych, S i 0 zawiera się w S i e i jest zbiorem zdarzeń procesu P i F jest funkcja tranzycji, taką że: F S i e S i jeżeli zajście zdarzenia E w stanie S jest możliwe i prowadzi do zmiany stanu na S i
Stany i zdarzenia Stan S i (t) procesu w chwili t czasu lokalnego jest w ogólności zbiorem wartości wszystkich zmiennych lokalnych skojarzonych z procesem w chwili t oraz ciągów wiadomości wysłanych (wpisanych) do incydentnych kanałów wyjściowych i ciągów wiadomości odebranych z incydentnych kanałów wejściowych do chwili t. Wartości stanów początkowych są zadawane wstępnie, bądź są wynikiem zajścia wyróżnionego zdarzenia inicjującego e i0. Zdarzenie e i odpowiada unikalnemu wykonaniu operacji atomowej, zmieniającemu stan Si procesu i ewentualnie stan incydentnych z procesem kanałów. Jeżeli operacja odpowiadająca zdarzeniu została wykonana, to powiemy, że zdarzenie zaszło. Funkcja tranzycji dopuszcza możliwość zajścia zdarzenia e tylko w tych stanach S, dla których <S, E, S 2 > należy do F. Powiemy że zdarzenie jest dopuszczalne (ang. allowed) w stanie S.
Sieci miejsc i przejść (Petriego) Sieci Petriego (1962) są grafami Graf jest uporządkowaną parą G:=(V,E), gdzie V to zbiór węzłów, a E to zbiór par rożnych węzłów - krawędzi Jeśli E jest zbiorem par nieuporządkowanych węzłow, graf jest niezorientowany Jeśli E jest zbiorem par uporządkowanych węzłow, graf jest zorientowany (digraf) Jeżeli dwa węzły może łączyć więcej niż jedna krawędź, graf nazywamy multigrafem.
Grafy Graf niezorientowany Graf zorientowany (digraf) multigraf
Sieć Petriego jako graf dwudzielny W grafie dwudzielnym zbiór węzłów V może być podzielony na dwa rozłączne podzbiory V1 i V2 takie, że krawędź zawsze łączy węzły z rożnych podzbiorów. W sieciach Petriego węzły pierwszego podzbioru są nazywane miejscami, drugiego - przejściami Symbolem miejsca jest okrąg bądź elipsa Symbolem przejścia jest belka (prostokąt) Krawędzie nazywane są łukami
Sieć Petriego - definicja formalna Siecią Petriego nazywamy piątkę, PM = (P, T, A, W, s 0 ), gdzie: P - zbiór (skończony) miejsc; T - zbiór (skończony) przejść; A P T T P- zbiór łuków; W: A N - funkcja wag przypisująca etykiety (liczby naturalne) do każdego łuku; s 0 : P *N- funkcja opisująca oznakowanie początkowe (initial marking), gdzie *N oznacza zbiór liczb całkowitych nieujemnych, tj. N*=N {0}. Zakłada się ponadto, że dla każdej sieci specyfikowanej jak wyżej spełniony jest warunek: P T = & P T.
Znaczniki w sieci Petriego Aby opisać dynamikę sieci Petriego (i moc je wykonywać ) wprowadza się pojęcie znacznika tokenu. Znaczniki są reprezentowane przez kółka/kropki i umieszczane w symbolu miejsca Oznaczają obecność (lub brak) np. zasobu Miejsca mogą przyjąć dowolną liczbę znaczników bądź też ich ograniczoną liczbę
Znaczniki a przejścia Znaczniki są stosowane do oznaczenia aktywacji przejścia Jeśli łuk łączy miejsce z przejściem, oznacza to że znacznik w miejscu jest potrzebny do aktywacji przejścia Jeśli jest wiele łuków (multigraf!), ich liczba określa liczbę wymaganych znaczników Przejście jest aktywne wtedy i tylko wtedy gdy dla wszystkich łuków dochodzących do przejścia spełniony jest warunek liczby znaczników
Zbiory wejściowe i wyjściowe Aby uprościć opis definiuje się zbiory wejściowe i wyjściowe Zbiór wejściowy (preset) przejścia t, oznaczany t, to zbiór wszystkich miejsc dla których istnieją łuki od tych miejsc do przejścia t Zbiór wyjściowy (postset) przejścia t, oznaczany t, to zbiór wszystkich miejsc dla których istnieją łuki od przejścia t do tych miejsc Podobne definicje dotyczą zbiorów wejściowych i wyjściowych miejsca p, oznaczanych odpowiednio p i p
Oznakowanie sieci Oznakowanie sieci Petriego to rozkład znaczników w sieci Jest to mapowanie P {0, 1, 2,...} opisujące liczbę znaczników w każdym miejscu Oznakowanie sieci na początku analizy zwane jest oznakowaniem początkowym
Wykonanie przejścia Jeśli przejście jest aktywne, może zostać wykonane (ang. fired odpalone) Jeśli przejście jest wykonywane, ze wszystkich miejsc wejściowych usuwana jest odpowiednia liczba znaczników (uwzględniając łuki wielokrotne) Następnie właściwa liczba znaczników jest wstawiana w miejsca wyjściowe - również uwzględniając łuki wielokrotne Liczba znaczników usuniętych i dodanych może być różna!
Wykonanie przejścia przykład
Wykonanie przejścia przykład
Wykonanie przejścia przykład
Przydatność sieci Petriego Modelowanie przepływu sterowania dla złożonych procesów Możliwość prowadzenia symulacji (wykonywania modelu) ilustracja działania testowanie zachowania określenie prędkości itp. Analiza formalna systemu wyszukiwanie problemów niewidocznych podczas symulacji (blokad, zagłodzeń itp.)
Znaczenie miejsc i przejść Miejsca wejściowe Przejście Miejsca wyjściowe Prewarunki Zdarzenie Postwarunki Żądane zasoby Operacja, zadanie Zwalniane zasoby Dane wejściowe Wykonanie obliczeń Wyniki obliczeń Warunki Klauzula logiczna Konkluzje Sygnały wejściowe Przetwarzanie Sygnały wyjściowe Rejestry, bufory Akcja procesora Rejestry, bufory
Przykładowe modele Na serwerze Uniwersytetu w Hamburgu http://www.informatik.uni-hamburg.de/tgi/petrinets/introductions/aalst
Przykładowe modele Sender Receiver Ready Mess_Buff Ready Send mess Receive Wait for ack Ack_Buff Received Send ack
Przykładowe modele
Własności formalne sieci Własności są podstawą dla analizy formalnej Często badane: osiągalność (reachability) żywotność (liveness) ograniczoność (boundedness)
Osiągalność znakowań Zbiór znakowań osiągalnych R(M 0 ) to zbiór wszystkich możliwych znakowań osiągalnych ze znakowania początkowego M 0 Jeśli znakowanie M jest w R(M 0 ), oznacza to że istnieje sekwencja odpaleń przekształcająca M w M 0 Przydatne w analizie systemów, np.: Czy stan pożądany może w ogóle zostać osiągnięty? Czy system może dotrzeć do stanu niepożądanego?
Graf osiągalności Graf skierowany do badania osiągalności Węzły reprezentują znakowania Krawędzie - przejścia między znakowaniami Konstruowany poprzez znalezienie wszystkich przejść ze znakowania początkowego, następnie przejść ze znakowań odkrytych w poprzednim kroku itd. Z reguły prowadzi do bardzo dużych grafów.
Żywotność Znakowanie M x jest żywotne jeśli dla każdego przejścia t i każdego osiągalnego znakowania M y istnieje sekwencja odpaleń M y która zawiera t Innymi słowy, każde przejście w sieci może być wykonane nieskończoną liczbę razy Sieć jest strukturalnie żywotna jeśli wszystkie znakowania początkowe są żywotne Właściwość stosowana w modelowaniu zakleszczeń
Ograniczoność sieci Znakowanie M x jest ograniczone jeśli istnieje dodatnia liczba całkowita taka, że dla każdego osiągalnego znakowania M y (elementu R(M x )) liczba znaczników w każdym miejscu jest ograniczona przez k. Inaczej - żadne miejsce nie może zawierać więcej niż k znaczników Sieć jest strukturalnie ograniczona jeśli wszystkie znakowania początkowe są ograniczone. Jeśli k=1, znakowanie nazywa się bezpiecznym Stosowana w modelu ograniczonych zasobów
Ograniczenia sieci miejsc i przejść Niemożność modelowania podobnych (choć nie identycznych) procesów za pomocą tej samej sieci Wszystkie znaczniki są identyczne Niemożność określenia dodatkowych własności - nie ma sposobu aby znacznik niósł dodatkowe informacje Zaawansowane sieci obejście powyższych ograniczeń: sieci kolorowane sieci hierarchiczne sieci obiektowe i in.
Kolorowane sieci Petriego Głównym założeniem jest wprowadzenie różnych typów znaczników, mogących przenosić dowolny rodzaj danych Pozwalają konstruować bardziej kompaktowe modele poprzez współdzielenie podobnych fragmentów Obsługują dodatkowe dane
Kolorowane sieci Petriego Każdy znacznik ma przypisane dane kolor Dana może być typem prymitywnym (wartość), łańcuchem znakowym, strukturą itd. Typ wartości to zbiór kolorów Każde miejsce w CPN ma swój zbiór kolorów (typ)
Pojęcie wielozbioru Wprowadzone w celu opisu faktu istnienia kilku egzemplarzy tego samego elementu. Klasyczna teoria zbiorów opis wyłącznie z punktu widzenia przynależności (lub nie) elementu do zbioru wstawienie elementu do zbioru w którym taki element występuje nie zmienia zawartości tego zbioru. Teoria wielozbiorów odpowiednie współczynniki określające ilość wystąpień danego elementu wielozbiorze
s S m ( s)`s Definicja wielozbioru Wielozbiór m nad niepustym zbiorem S funkcja m [S N] Dowolna nieujemna liczba całkowita m(s) N jest ilością wystąpień elementu s w tym wielozbiorze. Wielozbiór jest zazwyczaj reprezentowany w postaci pewnej sumy: s S m ( s)`s S MS oznacza zbiór wszystkich wielozbiorów nad zbiorem S m(s) (s S) nazywa się współczynnikiem elementu s ; Element s S należy do wielozbioru m(s) 0; fakt ten zapisujemy s m.
Operacje na wielozbiorach Dla dowolnych wielozbiorów m, m 1, m 2 S MS definiujemy: dodawanie wielozbiorów: mnożenie skalarne porównanie wielozbiorów moc wielozbioru różnicę wielozbiorów (dla m 2 m 1 ) Wielozbiór nazywa się skończonym, jeżeli m < s S s s m )` ( S s s s m s m m m ` )) ( ) ( ( 2 1 2 1 S s `s m s n m n )) ( ( ) ( ) ( ) ( ), ( ) ( ) ( 2 1 2 1 2 1 2 1 s m s m S s m m s m s m S s m m m(s) m S s S s s s m s m m m ))` ( ) ( ( 1 2 1 2
Własności operacji Dla dowolnych wielozbiorów m, m 1,m 2, m 3 S MS oraz nieujemnych liczb całkowitych n, n 1, n 2 spełnione są warunki: przemienność m 1 +m 2 = m 2 +m 1 łączność m 1 +(m 2 +m 3 ) = (m 1 +m 2 )+m 3 element zerowy, jedynka m+ = m, 1 m = m 0 m = n (m 1 +m 2 ) = (n m 1 ) + (n m 2 ) (n 1 +n 2 ) m = (n 1 m) + (n 2 m) n 1 (n 2 m) = (n 1 n 2 ) m m 1 +m 2 = m 1 + m 2 n m = n m
Wykorzystanie wspólnych zasobów p_processes p1 tp1 p2 2 R 3 q_processes q2 2 3 tp2 tq2 p3 S q3 tp3 tq3
Wykorzystanie wspólnych zasobów
Wspólna pętla dla procesów colset u = with p,q; colset RS = with r s; var x:u;
Sieć kolorowana - definicja formalna Kolorowaną siecią Petriego nazywamy krotkę CPN = (, P, T, A, N, C, G, E, I), gdzie: - skończony niepusty zbiór typów, zwany zbiorem kolorów; P - skończony zbiór miejsc; T - skończony zbiór przejść; A - skończony zbiór łuków, taki że: P T = P A = T A = ; N - funkcja wierzchołków, N : A P T T P ; C - funkcja kolorów, C : P ; G - funkcja dozorów, G : T EB, gdzie EB jest zbiorem wyrażeń o wartościach boolean, wykorzystujących kolory; E - funkcja wyrażeń łuków, E : A EC, gdzie EC jest zbiorem wyrażeń o wartościach w wielozbiorach kolorów; I - funkcja inicjalizacji, I : P ECP, gdzie ECP jest zbiorem wyrażeń opisujących oznakowanie początkowe
Wyrażenia łuków Umożliwiają wykorzystanie danych zawartych w znacznikach Ich wartością jest wielozbiór znaczników określający typ i liczbę znaczników przepływających przez łuk Mogą zawierać zmienne, operacje na zmiennych, operatory logiczne. Dla różnych znaczników mogą przybrać rożne wartości Mogą być więc traktowane jako funkcje: argumentami wyrażeń są znaczniki (ich typ i wartość) wyrażenia zwracają znaczniki (typ i wartość) oraz determinują ich przepływy
Warunki przejść (guards) Są wyrażeniami boolowskimi przypisanymi do przejść Umieszczane w nawiasach kwadratowych przy przejściach Stanowią dodatkowe warunki, które muszą być spełnione aby uaktywnić przejście
Przykłady sieci kolorowanych
Przykłady sieci kolorowanych
Potrzeba podzielności modeli Współczesne języki programowania wyższego poziomu umożliwiają konstrukcję programu z mniejszych komponentów modułów i funkcji/procedur Elementy rozważane mniej lub bardziej niezależnie Możliwość podziału pracy Przejrzystość programu
Sieci hierarchiczne Odpowiedź na potrzeby modularności systemu Formalne wiązanie ze sobą mniejszych sieci Możliwość analizy formalnej całości, jak i poszczególnych części Każda część jest kolorowaną siecią Petriego (strony) Siecią kolorowaną jest również złożenie komponentów (strona nadrzędna) Podstawowy problem sposób zdefiniowania połączeń
Typy hierarchizacji Podstawianie przejść Reprezentacja złożonej procedury przez pojedyncze przejście Łączenie miejsc Wyspecyfikowanie zbioru miejsc uważanych za identyczne
Podstawianie przejść Wyższy poziom prosty model zdarzenia Niższy poziom szczegółowa specyfikacja procedury Możliwa jest translacja strony nadrzędnej w sieć niehierarchiczną (zastąpienie podstawianych przejść treściami podstron)
Przypisanie portów Niezbędna wiedza na temat sposobu połączenia strony z wyższą w hierarchii Powiązanie wierzchołków gniazdowych (otoczenie podstawianego przejścia na stronie nadrzędnej) z wierzchołkami portowymi (wybrane miejsca na podstronie) Porty wejściowe Wyjściowe Dwukierunkowe Ogólne (typu general) Podstawienie nie jest przejściem nie dotyczą go niektóre wymagania (np. odnośnie istnienia znaczników we wszystkich miejscach wejściowych
Instancje stron Każde podstawienie przejścia na stronie nadrzędnej generuje instancję podstrony (podstawianej) Również strona nadrzędna może mieć wiele instancji Formalne określenie liczby instancji stron nadrzędnych i podstron przez wielozbiory Graf hierarchii sieci wierzchołki reprezentują strony sieci (po jednym dla każdej nazwa i numer strony wpisane w wierzchołku) łuki relacje zależności stron (graf skierowany); do łuków przypisane są nazwy odpowiadających im podstawień przejść.
Przykład podstawiania stron
Przykład podstawiania stron
Łączenie miejsc Wyróżnienie zbioru miejsc traktowanych jako identyczne Reprezentują pojęciowo pojedyncze miejsce muszą podlegać tym samym zdarzeniom Dodanie/ujęcie znacznika z jednego miejsc powoduje taką samą zmianę w pozostałych Miejsca z jednej instancji strony złączenie jest wyłącznie ułatwieniem dla rysującego graf
Telefony duża sieć hierarchiczna
Telefony duża sieć hierarchiczna
Telefony duża sieć hierarchiczna
Telefony duża sieć hierarchiczna
Telefony duża sieć hierarchiczna Graf hierarchii sieci (tylko jedna instancja każdej ze stron)