Twoim problemem jest to, że powszechną NICOŚĆ mylisz z osobistą PUSTKĄ
System czasu rzeczywistego jest to system komputerowy, w którym obliczenia są wykonywane
współbieżnie z procesem zewnętrznym w celu sterowania, nadzorowania lub terminowego reagowania
na zdarzenia występujące w tym procesie
Cechy systemu czasu rzeczywistego:
1. Ciągłość´ działania. System czasu rzeczywistego powinien działać´ nieprzerwanie w okresie od
uruchomienia systemu do jego wycofania.
2. Zależność od otoczenia. System czasu rzeczywistego rozpatruje sie w kontekście otoczenia.
Obliczenia dla takiego systemu uzależnione sa˛od zdarzeń´ oraz danych generowanych przez proces
zewnętrzny (otoczenie).
3. Współbieżność´. System czasu rzeczywistego składa sie z szeregu procesów, które wymagają
jednoczesnej obsługi narzucając współbieżną strukturę sytemu.
4. Przewidywalność´. Wszelkie zdarzenia i dane generowane przez otoczenie pojawiają w sposób
przypadkowy, a współbieżne pojawienie sie zdarzeń wymaga jednoczesnej ich obsługi. Na zewnątrz system musi zachowywać´ się deterministycznie.
5. Punktualność. Reakcje systemu na zdarzenia powinny być dostarczane w odpowiednich momentach
czasowych.
Klasy systemu czasu rzeczywistego
1. Systemy o ostrych wymaganiach czasowych (ang. hard real–time), gdzie wymagania czasowe
musza byc dokładnie spełnione, przekroczenie ograniczen czasowych moze prowadzic do katastrofy
systemu, np. sterowanie samolotem przez system fly–by–wire
2. Systemy o słabych wymaganiach czasowych (ang. soft real–time), gdzie żąda sie spełnienia
sredniego czasu odpowiedzi. Opóznienie nie powoduje katastrofy systemu, a jedynie wpływa
niekorzystnie na ocene np. system rezerwacji miejsc lotniczych.
3. Systemy o solidnych wymaganiach czasowych (ang. firm real-time), wymagania czasowe sa tu
kombinacją ograniczen dla systemów o wymaganiach ostrych i słabych. Przekroczenia ograniczen
czasowych mogą pojawiac sie okazjonalnie. Wyróznia sie dwa poziomy waznosci wartosci ograniczen
czasowych jeden krótszy majacy charakter „słaby", i dłuzszy majacy charakter „ostry”.
Historia jezyka Ada
— koniec lat 70-tych XX wieku — sformułowano (Departament Obrony Stanów Zjednoczonych)
wymagania dla nowego jezyka i w drodze konkursu wyłoniono jeden jezyk programowania; konkurs
wygrał zespół francuskich informatyków, który opracował jezyk o nazwie Ada; zespołowi
przewodniczył Jean Ichbah, znany teoretyk informatyki,
— 1983 — pierwsza standardowa wersja Ady nazwana Ada 83, której specyfikacja została przyjeta
jako norma ANSII w roku 1983,
— 1987 — Ada 83 jako norma miedzynarodowa ISO,
— 1988 — koncepcja okreslenia nowej wersji Ady oznaczonej wtedy jako Ada 9X,
— 1995 — opublikowaniem nowej normy Ada 95,
— 2005 — nowa norma Ada 2005.
Przykłady zastosowan jezyka Ada 95
— sterowanie szybkiej kolei francuskiej (TGV),
— sterowanie metrem w Paryzu i w innych miastach,
— sterowanie wybranych układów w samolocie Boeing 777,
— system GPS – oprogramowanie satelitów i odbiorników naziemnych,
— systemy wojskowe, w tym rakietowe,
— systemy kontroli i sterowania transportu drogowego i kolejowego,
— systemy medyczne,
— sterowanie elektrowniami atomowymi
Cechy jezyka Ada 95
— uniwersalny jezyk programowania ukierunkowany na programowanie systemów czasu rzeczywistego
— wysoki stopien standaryzacji, zgodnosc z norma ISO 8652:1995
— scisła typizacja jezyka umozliwia wykrycie przez kompilator duzej klasy błedów w oprogramowaniu
— duza czytelnosc kodu,
— udogodnienia dla pracy grupowej,
— łatwosc konserwacji oprogramowania w ciagu całego zycia programu (czasami kilkadziesiat lat),
— wielouzywalnosc kodu (ang. reuse) daja˛ca moz˙liwos´c´ wielokrotnego wykorzystania wczesniej
napisanego kodu,
— mechanizmy programowania obiektowego,
— interfejs do innych jezyków programowania w standardzie,
— łatwosc realizacji oprogramowania współbieznego dzi˛eki zawarciu konstrukcji współbieznych w
składni jezyka,
— wbudowana obsługa czasu,
— obsługa wyjatków,
— mozliwosc zastosowania jako jezyka projektowania i do zapisu algorytmów,
— jezyk podatny na zastosowanie róznych metod analizy oprogramowania.
Ada 95 – jako język obiektowo zorientowany
1. umozliwia deklarowanie typów obiektów
2. umozliwia deklarowanie operacji na obiektach
3. umozliwia enkapsulacje (hermetyzacje) obiektu i jego operacji
4. udostepnia mechanizm dziedziczenia
5. udostepnia mechanizm polimorfizmu statycznego i dynamicznego
Agregat wyrazenie reprezentujace wartosci typów złozonych.
Atrybut
Funkcja wyznaczajaca pierwotna˛własnosc nazwanego bytu np. typu, zmiennej, to atrybut.
np.
Zmienna’Address— zwraca adres zmiennej
Integer’Image(Zmienna)— zwraca obraz (String) danej zmiennej
Zmienna’Img— j.w. ale dost˛epna tylko w GNAT’cie
Character’Pos(Znak)— zwraca kod znaku
Character’Val(Kod_Znaku)— zwraca znak o danym kodzie
TekstoweWe/Wy— pliki
with Ada.Text_IO;
use Ada.Text_IO;
Plik: File_Type;
Open(Plik, In_File,”Nazwa_Pliku.TXT”);
lub
Create(Plik, Out_File,”Nazwa_Pliku.TXT”);
Get(Plik,);
Get_Line(Plik,);
Put(Plik,);
Put_Line(Plik,);
New_Line(Plik);
Close(Plik);
Wyjatki
Wyjatki słuza˛ do sygnalizacji zdarzen awaryjnych zgłaszanych przez program.
Dzieki obsłudze wyjatków można zapewnić´ nieprzerwane działanie systemu.
Podział wyjątków:
— wyjątki predefiniowane – udostępnia jezyk w swoich pakietach,
np. Constraint_Error, Name_Error, Tasking_Error,
— wyja˛tki uz˙ytkownika – zadeklarowane przez programkiste˛.
Nazwa_Wyjatku {, Nazwa_Wyj atku} : exception;
Wyjatki zgłaszane są przez instrukcję:
raise [Nazwa_Wyjatku];
Obsługa wyjątków
exception Segment_Obsługi_Wyj ˛ atków
{,Segment_Obsługi_Wyjatków}
Segment_Obsługi_Wyjatków:
when Nazwa_Wyj ˛ atku
{ | Nazwa_Wyj ˛ atku} => Instrukcje
| when others => Instrukcje
Współbieznosc
Współbieżność dotyczy procesów.
Procesy sa˛ od siebie uzależnione.
Dwa procesy sa˛ współbieżne, jeżeli jeden z nich rozpoczyna się przed zakończeniem drugiego.
Współbieżność – wirtualna równoległość.
Realizacja współbieżności na jednym procesorze wymaga przeplotu.
Programowanie współbieżne – notacja i techniki programowania umożliwiające specyfikację współbieżności z uwzględnieniem synchronizacji i komunikacji procesów.
Stany procesu
Obsługą procesów zajmuje sie˛ program szeregujący – cześć´ systemu operacyjnego.
Stany procesu (podstawowe):
— gotowy – czeka na przydział procesora,
— aktywny – wykonywany przez procesor,
— zawieszony – oczekuje na spełnienie swoich żądań´.
Zakończenie zadania
— wykonanie całego ciągu instrukcji zadania – osiągniecie instrukcji end,
— zgłoszenie nieobsłużonego wyjątku,
— wykonanie instrukcji terminate,
— wykonanie na tym zadaniu instrukcji abort.
Semafor – zmienna całkowita przyjmująca jedynie wartości nieujemne np. S.
Semafor powinien mieć´ nadaną wartość´ początkową.
Operacje semaforowe – operacje zdefiniowane na semaforze, P(S) i V(S).
P(S) lub Czekaj(S):
if S>0 then S:=S-1 else Zawie´s_Zadanie;
V(S) lub Sygnalizuj(S):
...