Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Projektowanie oprogramowania czasu rzeczywistego

Podobne prezentacje


Prezentacja na temat: "Projektowanie oprogramowania czasu rzeczywistego"— Zapis prezentacji:

1 Projektowanie oprogramowania czasu rzeczywistego
Przedstawienie metod używanych do projektowania systemów czasu rzeczywistego i opisu niektórych ogólnych architektur systemów czasu rzeczywistego.

2 Cele Zrozumieć pojęcie czasu rzeczywistego i dowiedzieć, dlaczego takie systemy zwykle implementuje się jako zbiory procesów współbieżnych. Zrozumieć proces projektowania systemów czasu rzeczywistego. Zrozumieć rolę modułu wykonawczego czasu rzeczywistego. Poznać uniwersalne architektury procesowe systemów monitorowania i sterowania oraz systemów gromadzenia danych.

3 Zawartość Projektowanie systemów Moduły wykonawcze czasu rzeczywistego
Systemy monitorowania i sterowania Systemy gromadzenia danych

4 Systemy czasu rzeczywistego
Komputery są obecnie używane do sterowania rozmaitymi systemami, od maszyn domowych do całych hal produkcyjnych. Te komputery bezpośrednio porozumiewają się z urządzeniami sprzętowymi. Ich oprogramowanie jest wbudowanym systemem czasu rzeczywistego, który musi reagować na zdarzenia powodowane przez sprzęt i wysyłać sygnały sterujące w odpowiedzi na te zdarzenia.

5 Definicje System czasu rzeczywistego jest systemem oprogramowania, którego poprawne działanie zależy od wyników przez niego wytwarzanych i czasu potrzebnego do ich wytworzenia. Tolerancyjnym systemem czasu rzeczywistego jest system, którego działanie jest tylko gorsze, jeśli wyniki nie są dostępne zgodnie z ustalonymi wymaganiami czasowymi. Wymagający system czasu rzeczywistego to system, którego działanie jest niepoprawne, jeśli wyniki nie są tworzone zgodnie z ustalonymi wymaganiami czasowymi.

6 System czasu rzeczywistego jako system bodziec-reakcja
Na podstawie otrzymanego bodźca system musi wygenerować odpowiednią reakcję. Zachowanie systemu czasu rzeczywistego można więc zdefiniować przez wyliczenie bodźców, które może otrzymać, skojarzonych z nimi odpowiedzi oraz czasu, w którym należy je utworzyć. Podział bodźców: bodźce okresowe pojawiają się w przewidywanych odstępach czasu, bodźce nieokresowe pojawiają się nieregularnie.

7 Architektura systemu czasu rzeczywistego
System czasu rzeczywistego musi reagować na bodźce pojawiające się w różnych chwilach. Jego architektura musi więc być tak skonstruowana, aby sterowanie było przekazywane do odpowiedniej procedury obsługi natychmiast po pojawieniu się bodźca. Systemy czasu rzeczywistego zwykle projektowane są jako zbiór współbieżnych, współpracujących procesów. Zadaniem części systemu czasu rzeczywistego, zwanego modułem wykonawczym, jest zarządzanie tymi procesami.

8 Uniwersalny model systemu czasu rzeczywistego
Detektor Detektor Detektor Detektor Detektor Detektor System sterujący czasu rzeczywistego Efektor Efektor Efektor Efektor

9 Uniwersalny model architektoniczny
Z każdym rodzajem detektora kojarzy się proces zarządzania detektorem. Procesy obliczające wyznaczają oczekiwaną odpowiedź na bodźce otrzymane przez system. Procesy sterowania efektorami zarządzają działaniem efektorów. Ten model umożliwia szybkie odbieranie danych od detektorów (zanim będą gotowe następne dane wejściowe), późniejsze ich przetwarzanie i reagowanie przez efektory.

10 Procesy sterujące detektorami i efektorami
Reakcja Bodziec Sterowanie detektorem Procesor danych Sterowanie efektorem

11 Wymogi dot. projektowania systemu
Część procesu projektowania systemu polega na podjęciu decyzji, które udogodnienia systemu będą zaimplementowane przez oprogramowanie, a które przez sprzęt. Ograniczenia czasowe lub inne wymagania mogą oznaczać, że niektóre funkcje systemu, takie jak przetwarzanie sygnałów, muszą być zaimplementowane w postaci specjalnie zbudowanego sprzętu. Proces projektowania systemu może więc zarówno obejmować projektowanie specjalnego sprzętu, jak i projektowanie oprogramowania czasu rzeczywistego.

12 Hardware and software design

13 Czynności procesu projektowania
Zidentyfikuj bodźce, które system musi przetwarzać oraz skojarzone z nimi reakcje. Dla każdego bodźca i związanej z nim reakcji zidentyfikuj wymagania czasowe, które dotyczą przetwarzania zarówno bodźca, jak i reakcji. Pogrupuj bodźce i reakcje w kilku procesach współbieżnych. Dobrym modelem uniwersalnej architektury takiego systemu jest skojarzenie jednego procesu z każdą klasą bodźców i reakcji.

14 Czynności procesu projektowania c.d.
Dla każdego bodźca i reakcji zaprojektuj algorytmy do przeprowadzania koniecznych obliczeń. Te projekty algorytmów często trzeba opracować w dość wczesnej fazie procesu, aby poznać ilość przetwarzania i czas potrzebny do wykonania tych obliczeń. Zaprojektuj system szeregujący, który zapewni, że procesy będą uruchamiane w chwili wystarczającej do spełnienia ograniczeń czasowych. Zintegruj system pod kontrolą modułu wykonawczego.

15 Uwagi dot. ograniczeń czasowych i projektowania obiektowego
Systemy czasu rzeczywistego muszą spełniać postawione im ograniczenia czasowe, a zatem zastosowanie strategii projektowych, które powodują dodatkowe narzuty implementacyjne, byłoby niepraktyczne w wypadku wymagających systemów czasu rzeczywistego. Projektowanie obiektowe oznacza na przykład ukrywanie informacji o reprezentacji danych i dostęp do atrybutów za pośrednictwem operacji zdefiniowanych na obiektach. Prowadzi to nieuchronnie do narzutów i utraty efektywności.

16 Wykorzystanie modelu maszyny stanowej
W modelu stanowym systemu zakłada się, że w każdej chwili system jest w jednym z wielu swoich stanów. Po wystąpieniu bodźca może nastąpić przejście do innego stanu. Np. system sterujący zaworem może na przykład zmienić stan z „zawór otwarty” na „zawór zamknięty” po otrzymaniu polecenia operatora (bodźca).

17 Model maszyny stanowej kuchenki mikrofalowej
Pełna moc Pełna moc do: ustaw moc = 600 Działanie do: podgrzewanie Stoper Liczba Pełna moc Oczekiwanie do: wyświetlaj godzinę Ustawienie czasu do: odczytaj liczbę exit: ustaw czas Połowa mocy Początek Zatrzymaj Połowa mocy Stoper Oczekiwanie do: wyświetlaj godzinę Połowa mocy do: ustaw moc = 300 Otworzono drzwiczki Gotowy do: wyświetlaj „Gotowy” Zamknięto drzwiczki Niegotowy do: wyświetlaj „Czekam” Otworzono drzwiczki

18 Programowanie czasu rzeczywistego
Język programowania użyty do implementacji systemu czasu rzeczywistego również może mieć wpływ na projekt. Wymagające systemy czasu rzeczywistego wciąż często programuje się w asemblerze, aby sprostać limitom czasowym. Można skorzystać także z języków programowania systemowego takich jak C, które dają efektywny kod. Zaleta języków programowania systemowego polega na tym, że umożliwiają tworzenie efektywnego kodu. Taki język nie obejmuje jednak żadnych konstrukcji do obsługi współbieżności albo zarządzania zasobami współdzielonymi.

19 Problemy z Javą Java nie nadaje się do programowania wymagających systemów czasu rzeczywistego lub systemów, w których procesy mają ścisłe limity czasowe. Oto zasadnicze problemy z zastosowaniem Javy jako języka programowania czasu rzeczywistego: Nie można określić czasu, w którym wątki powinny działać. Odśmiecanie nie podlega sterowaniu – może rozpocząć się w dowolnym czasie. Nie ma możliwości odczytu długości kolejek związanych ze współdzielonymi zasobami. Implementacja maszyny wirtualnej Javy jest inna na każdym komputerze. Język nie przewiduje szczegółowej analizy wykorzystania procesora i pamięci w czasie wykonania.

20 Moduły wykonawcze czasu rzeczywistego
Moduł wykonawczy czasu rzeczywistego jest odpowiednikiem systemu operacyjnego w komputerze ogólnego przeznaczenia. Zarządza procesami i przydziałem zasobów systemu czasu rzeczywistego. Uruchamia i zatrzymuje procesy, aby reagować na bodźce. Przydziela pamięć i zasoby procesora. Nie obejmuje jednak bardziej złożonych udogodnień systemu operacyjnego, np. zarządzania plikami. 14

21 Zbiór komponentów modułu wykonawczego
Zegar czasu rzeczywistego. Udostępnia informacje niezbędne do okresowego. szeregowania procesów. Procedura obsługi przerwań. Zarządza nieokresowymi żądaniami usług. Moduł szeregujący. Odpowiada za znajdowanie procesów, które można wykonać, i wybór jednego z nich, który będzie wykonywany. Menedżer zasobów. Przydziela procesowi wybranemu do wykonywania odpowiednie zasoby procesora i pamięć. Dyspozytor. Odpowiada za rozpoczęcie wykonywania procesu.

22 Rys. Komponenty modułu wykonawczego systemu czasu rzeczywistego
Informacje o szeregowaniu Moduł szeregujący Zegar czasu rzeczywistego Procedura obsługi przerwań Informacje o zasobach wymaganych przez procesy Procesy czekające na zasoby Lista dostępnych zasobów Menedżer zasobów Proces Zwolnione gotowy zasoby Dyspozytor Lista procesów gotowych Lista procesorów Proces wykonywany Rys. Komponenty modułu wykonawczego systemu czasu rzeczywistego

23 Systemy zapewniające ciągłą obsługę
Systemy zapewniające ciągłą obsługę (np. telekomunikacja, monitoring) mogą posiadać pewne udogodnienia modułu wykonawczego. Menedżer konfiguracji. Odpowiada za dynamiczną rekonfigurację sprzętu systemu. Bez zatrzymywania systemu można wyłączyć z użycia pewne moduły sprzętowe lub rozszerzyć system o nowy sprzęt. Menedżer awarii. Odpowiada za wykrywania awarii sprzętu i oprogramowania oraz podjęcie odpowiednich działań zmierzających do odtworzenia stanu po awariach.

24 Poziom priorytetu i obsługa sytuacji wyjątkowych
Bodźce przetwarzane przez systemy czasu rzeczywistego mają zwykle różne poziomy priorytetu. W wypadku niektórych bodźców, takich jak te związane z sytuacjami wyjątkowymi, ważne jest, aby zakończyć ich przetwarzanie w ściśle ustalonym czasie. Inne procesy można bezpiecznie opóźnić, gdy obsługi wymaga bardziej krytyczny proces.

25 Poziomy priorytetu procesów
Moduły wykonawcze są zdolne do zarządzania co najmniej dwoma poziomami priorytetu procesów: Poziom przerwania oznacza najwyższy priorytet. Nadaje się go procesom, które wymagają bardzo szybkiej reakcji. Jednym z nich jest proces zegara czasu rzeczywistego. Poziom zegarowy jest nadawany procesom okresowym.

26 Procesy okresowe Procesy okresowe to procesy, które muszą być wykonywane w ustalonych odstępach czasu w celu pobrania danych i sterowania efektorami. Moduł wykonawczy korzysta ze swojego zegara czasu rzeczywistego, aby określić, kiedy proces ma być wykonywany. W większości systemów czasu rzeczywistego występuje kilka klas procesów okresowych. Mają one różne okresy (odstępy między wykonaniami), czasy działania i limity czasowe (czasy, po których muszą zakończyć działanie). Moduł wykonawczy musi wybrać odpowiedni proces do wykonania w każdej chwili.

27 Zarządzanie procesami
Zarządzanie procesami w module wykonawczym czasu rzeczywistego polega na zarządzaniu zbiorem procesów współbieżnych, który jest częścią systemu czasu rzeczywistego. Menedżer procesów musi wybrać proces do wykonania, przydzielić dla niego pamięć i zasoby procesora oraz rozpocząć jego wykonywanie na procesorze.

28 Akcje modułu wykonawczego niezbędne do uruchomienia procesu
Moduł szeregujący Wybierz proces do wykonania Menedżer zasobów Przydziel pamięć i procesor Dyspozytor Rozpocznij wykonywanie na dostępnym procesorze

29 Moduł szeregujący Przegląda listę procesów okresowych i wybiera proces do wykonania. Wybór zależy od priorytetu, okresu, oczekiwanego czasu wykonania i limitu poszczególnych procesów gotowych. Czasem po jednym tyknięciu zegara trzeba wykonać dwa procesy z różnymi limitami czasowymi. W takiej sytuacji jeden z nich musi być opóźniony, jednak najwyżej na tyle, aby jego zakończenie przed upływem limitu czasowego było możliwe.

30 Strategie szeregowania
Szeregowanie bez wywłaszczenia. Gdy wybrano proces do wykonywania, działa on aż do zakończenia swojej pracy lub do chwili zablokowania z jakiegoś powodu, np. oczekiwania na dane wejściowe. Szeregowanie z wywłaszczeniem. Działanie procesu może być przerwane, jeśli trzeba obsłużyć proces o wyższym priorytecie.

31 Systemy monitorowania i sterowania
Systemy monitorowania i sterowania są ważna klasą systemów czasu rzeczywistego. Sprawdzają stan detektorów dostarczających informacje o środowisku systemu i wykonują akcje zależne od odczytów z tych detektorów. Systemy monitorowania podejmują działania, gdy detektory wykryją jakąś wyjątkową wartość. Systemy sterowania ustawicznie sterują sprzętowymi efektorami zależnie od wartości związanych z nimi detektorów.

32 Przykład systemu antywłamaniowego
Ten system korzysta z różnych rodzajów detektorów. Gdy detektor wykrywa obecność intruza, system automatycznie dzwoni do pobliskiego posterunku policji i za pomocą syntezatora mowy informuje o miejscu wywołania alarmu. System alarmowy zwykle jest zasilany z sieci, ale ma też zapasowe akumulatory.

33 Przykład systemu antywłamaniowego c.d.
Ten system jest „tolerancyjnym” systemem czasu rzeczywistego, który nie ma dużych wymagań czasowych. Detektory nie muszą wykrywać bardzo szybko następujących zdarzeń, trzeba je więc odpytywać najwyżej dwa razy na sekundę.

34 Projektowanie systemu antywłamaniowego
Projektowanie rozpoczyna się od rozpoznania bodźców nieokresowych działających na system i skojarzonych z nimi odpowiedzi. Następnym krokiem procesu projektowania jest rozważenie ograniczeń czasowych związanych z każdym bodźcem i skojarzoną z nim reakcją. Kolejnym krokiem jest przydział funkcji systemu do procesów współbieżnych.

35 Dwie klasy bodźców Zanik zasilania
Jest zgłaszany przez układ monitorujący napięcie. Wymagana odpowiedzią jest przełączenie na zasilanie zapasowe przez wysłanie sygnału do urządzenia przełączającego zasilanie. Wtargnięcie intruza Reakcją na ten bodziec jest wyznaczenie numeru pokoju, w którym znajduje się aktywny detektor, zadzwonienie na policję, uruchomienie syntezatora mowy do obsługi telefonu oraz włączenie syreny i świateł w okolicach włamania.

36 Wymagania czasowe stawiane bodźcom i reakcji
Bodziec/reakcja Wymagania czasowe Przerwanie zaniku Przełączenie na zasilanie zapasowe musi być ukończone po najwyżej zasilania ms Alarm drzwiowy Każdy detektor drzwiowy musi być odpytywany dwa razy na sekundę Alarm okienny Każdy detektor okienny musi być odpytywany dwa razy na sekundę Detektor ruchu Każdy detektor ruchu powinien być odpytywany dwa razy na sekundę Sygnał dźwiękowy Sygnał dźwiękowy musi być włączony po upływie najwyżej 1 sekundy od alarmu wywołanego przez detektor Włączenie świateł Światła powinny być włączone po upływie najwyżej 1/2 sekundy Komunikacja Wezwanie policji przez telefon należy rozpocząć po upływie najwyżej sekund od alarmu wywołanego przez detektor Syntezator mowy Komunikat z syntezatora powinien być dostępny po upływie najwyżej 4 sekund od alarmu wywołanego przez detektor

37 Rys. Architektura procesowa systemu antywłamaniowego
400 Hz 60 Hz 100 Hz Proces detektorów ruchu Proces detektorów drzwiowych Proces detektorów okiennych Stan detektorów Stan detektorów Stan detektorów 560 Hz Proces monitorowania budynku System alarmowy Kontroler budynku Proces komunikacyjny Numer pokoju Przerwanie braku zasilania Proces systemu alarmowego Proces przełączania zasilania Komunikat alarmowy System alarmowy Numer pokoju System alarmowy System alarmowy Numer pokoju Proces sterowania światłami Proces sygnalizacji dźwiękowej Proces syntezatora mowy Rys. Architektura procesowa systemu antywłamaniowego

38 Building_monitor process 1

39 Building_monitor process 2

40 Przykład systemu sterowania
System antywłamaniowy jest systemem monitorowania, a nie systemem sterowania, ponieważ nie zawiera efektorów będących pod bezpośrednim wpływem stanu detektorów. Przykładem systemu sterowania jest system sterowania ogrzewaniem w budynku. Monitoruje on detektory temperatury w różnych pokojach budynku oraz włącza i wyłącza grzejniki w zależności od aktualnej temperatury i ustawienia termostatów w pokojach.

41 Architektura procesowa systemu sterowania temperaturą
500 Hz Proces detektora Stan detektora 500 Hz Proces termostatu Proces termostatu 500 Hz Polecenie przełączenia Numer pokoju Proces sterowania grzejnikiem Proces sterowania piecem

42 Systemy gromadzenia danych
Systemy gromadzenia danych stanowią kolejną klasę systemów czasu rzeczywistego, mających zwykle uniwersalny model architektoniczny. Takie systemy zbierają od detektorów dane do późniejszego przetwarzania i analizy.

43 System zbierający dane od detektorów monitorujących promieniowanie neutronowe w reaktorze atomowym
Dane z detektorów są umieszczane w buforze; następnie są z niego pobierane i przetwarzane. W rezultacie na ekranie operatora jest wyświetlane średnie natężenie promieniowania. Każdy detektor ma swój proces, który zmienia dane analogowe o natężeniu promieniowania neutronowego na sygnał cyfrowy. Następnie przekazuje to natężenie promieniowania oraz swój identyfikator do bufora danych. Proces odpowiedzialny za przetwarzanie danych pobiera dane z tego bufora, przetwarza je i przekazuje do procesu wyświetlającego w celu pokazania na konsoli operatora.

44 Architektura systemu monitorującego promieniowanie
Detektory (każdy przepływ danych to stan detektora) Wyznaczone natężenie promieniowania Identyfikator i stan detektora Przetwarzanie danych Proces detektora Bufor z danymi z detektorów Wyświetlacz

45 Wzajemne wykluczanie W systemach czasu rzeczywistego, które gromadzą i przetwarzają dane, czasy wykonywania i okresy procesów gromadzących oraz przetwarzających mogą być nierówne. W większości systemów gromadzenia danych neutralizacja tych różnic szybkości polega na zastosowaniu bufora cyklicznego. Oczywiście należy zaimplementować wzajemne wykluczanie, aby procesy producentów i konsumentów nie miały w buforze dostępu do tego samego elementu w tym samym czasie. System musi również zadbać o to, żeby producent nie mógł dodać informacji do pełnego bufora i żeby konsument nie pobrał informacji z pustego bufora.

46 Bufor cykliczny do gromadzenia danych
Proces producenta Proces konsumenta

47 Implementacja bufora cyklicznego w Javie

48 Implementacja bufora cyklicznego w Javie
synchronized OdczytDetektora pobierz () throw InterruptedException { OdczytDetektora wynik = new OdczytDetektora (-1, -1) ; if (liczbaDanych = = 0) wait () ; wynik = składnica [początek] ; początek = początek + 1 ; if (początek = = rozmiar) początek = 0 ; liczbaDanych = liczbaDanych –1 ; notify () ; return wynik ; } // pobierz } //BuforCykliczny Implementacja bufora cyklicznego w Javie

49 Główne tezy System czasu rzeczywistego to system oprogramowania, który musi reagować na zdarzenia w czasie rzeczywistym. Jego poprawność nie zależy tylko od wytwarzanych wyników, ale także od czasu ich wytworzenia. Uniwersalny model architektury systemu czasu rzeczywistego przewiduje skojarzenie procesu z każdą klasą detektorów i efektorów. Mogą być potrzebne także inne procesy koordynujące. Projektowanie architektoniczne systemu czasu rzeczywistego polega zwykle na nadaniu systemowi struktury zbioru oddziałujących na siebie procesów współbieżnych. Moduł wykonawczy czasu rzeczywistego odpowiada za zarządzanie procesami i zasobami. Zawsze obejmuje moduł szeregujący, który jest komponentem podejmującym decyzje o tym, który proces ma się wykonywać. Decyzje o szeregowaniu są podejmowane na podstawie priorytetów procesów.

50 Główne tezy Systemy monitorowania i sterowania okresowego odpytują zbiór detektorów, które dostarczają informacje ze środowiska systemu. Takie systemy przez wydawanie poleceń efektorom wykonują akcje, które zależą od odczytów detektorów. Systemy gromadzenia danych są zwykle zgodne z modelem producent-konsument. Proces producenta wkłada dane do bufora cyklicznego, skąd są pobierane do wykorzystania przez konsumenta. Również bufor jest implementowany jako proces, co umożliwia wyeliminowanie konfliktów między producentem, a konsumentem. Chociaż Java ma udogodnienia do realizacji współbieżności, nie nadaje się do tworzenia krytycznych systemów czasu rzeczywistego. Java nie obejmuje udogodnień do sterowania wykonaniem. Nie ma tez możliwości analizowania czasowych aspektów zachowania programów Javy.


Pobierz ppt "Projektowanie oprogramowania czasu rzeczywistego"

Podobne prezentacje


Reklamy Google