SCR - LH.pl

Transkrypt

SCR - LH.pl
Systemy Czasu Rzeczywistego
(SCR)
Elementy systemów operacyjnych czasu rzeczywistego
Politechnika Gdańska
Wydział Elektrotechniki i Automatyki
Kierunek: Automatyka i Robotyka
Studia stacjonarne I stopnia: rok II, semestr IV
Opracowanie: dr inż. Tomasz Rutkowski
Katedra Inżynierii Systemów Sterowania
© SCR 2010
1
Jądro systemu
– Szeregowanie zadań – Scheduler
Integralną i najważniejszą częścią jądra systemu SOCR jest
program szeregujący – scheduler
Program szeregujący jest to zestaw algorytmów
określających jakie zadanie będzie wykonywane jako
następne oraz kiedy to nastąpi
Większość systemów SOCR oparta jest na priorytetach –
każde zadanie ma przyporządkowany priorytet zależny od
ważności zadania, w związku z tym czas CPU zostaje
przydzielony do zadania, które jest gotowe i ma najwyższy
priorytet
© SCR 2010
2
Jądro systemu
– Szeregowanie zadań – model periodyczny (okresowy)
Model zadań periodycznych (okresowych) zakłada
deterministyczne obciążenie systemu i opisuje właściwości
oraz zachowanie wielu klasycznych systemów „hard realtime time” (np. zadania sterowania cyfrowego).
Zadania periodyczne mogą się pojawiać równocześnie (w
tym samym czasie), przy czym nie może to zaburzyć
normalnej pracy systemu.
© SCR 2010
3
Jądro systemu
– Szeregowanie zadań – model periodyczny (okresowy)
Każde
o
o
o
zadanie opisują następujące parametry:
okres p : czas pomiędzy kolejnymi zdarzeniami wymagającymi obsługi
termin d : czas w którym zdarzenie musi być obsłużone, od
momentu jego zajścia
czas t : czas potrzebny na obsługę zdarzenia (realizacja zadania)
zadanie
zadanie
okres 1
zdarzenie
© SCR 2010
zadanie
okres 3
okres 2
zdarzenie
zdarzenie
4
Jądro systemu
– Szeregowanie zadań – model okresowy
Pomiędzy
Stopień
parametrami p, d, t zachodzi relacja 0 ≤ t ≤ d ≤ p
wykorzystania procesora jest równy u = t/p
Warunkiem
koniecznym wykonywalności szeregowania jest by suma
stopni wykorzystania procesora była mniejsza równa jeden, Σu ≤ 1
Zadanie przekazuje swoje parametry t, d, p planiście (programowi
szeregującemu), który podejmuje się wykonania zadania gwarantując
dotrzymania terminu albo odrzuca zadanie
© SCR 2010
5
Jądro systemu
– Szeregowanie zadań – Scheduler
Przykłady
o
o
o
o
o
algorytmów szeregujących zadania:
szeregowanie uwzględniające częstość wykonywania
danego zadania - algorytm RMS (ang. Rate Monotonic
Scheduling)
szeregowanie karuzelowe (ang. Round Robin Scheduling)
szeregowanie FIFO (ang. First In First Out Scheduling)
szeregowanie sporadyczne (ang. Sporadic Scheduling)
szeregowanie zegarowe (ang. Clock-Driven)
© SCR 2010
6
Jądro systemu
– Szeregowanie zadań – algorytm RMS
Założenia algorytmu RMS:
1. Wszystkie zadania są okresowe periodyczne (pojawiają się w regularnych
odcinkach czasu)
2. Zadania nie synchronizują się miedzy sobą w trakcie współdzielenia
zasobów i komunikacji
3. Procesor zawsze wykonuje zadanie o najwyższym priorytecie, które jest
gotowe do pracy (powinien być wykorzystany system z wywłaszczaniem)
4. Procesy są planowane na podstawie statycznego priorytetu równego
im krótszy okres zadania, tym wyższy jego priorytet
© SCR 2010
7
Jądro systemu
– Szeregowanie zadań – algorytm RMS
Przykład dwóch zadań o następujących parametrach:
zadanie pierwsze – Z1 : p = 50;
d = 50; t = 20;
zadanie drugie – Z2 :
p = 100; d = 100; t = 35;
E1 – zdarzenie wyzwalające zadanie Z1
E2 – zdarzenie wyzwalające zadanie Z2
E1, E2
E1
Z1
0
10
Z2
E1, E2
Z1
Z1
E1
Z2
Z1
20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250
czas
Całkowite obciążenie procesora: u = (20/50) + (35/100) = 0.75
© SCR 2010
8
Jądro systemu
– Szeregowanie zadań – algorytm RMS
Zakładamy chwilowo, że zadanie drugie ma większy priorytet
od zadania pierwszego
E1, E2
E1
Z2
0
10
E1, E2
Z1
20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250
czas
Przekroczenie terminu !!!
© SCR 2010
9
Jądro systemu
– Szeregowanie zadań – algorytm RMS
Przykład dwóch zadań o następujących parametrach:
zadanie pierwsze – Z1: p = 50; d = 50; t = 25;
zadanie drugie – Z2:
p = 80; d = 80; t = 35;
E1, E2
E1
Przekroczenie terminu !!!
Z1
0
10
Z2
Z1
20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250
czas
Całkowite obciążenie procesora: u = (25/50) + (35/80) = 0.94 !!!
© SCR 2010
10
Jądro systemu
– Szeregowanie zadań – algorytm RMS
Podstawowe twierdzenie RMS:
wszystkie solidne limity czasowe systemu SOCR będą zawsze spełnione jeżeli:
∑
i
 1n 
ti
≤ n ⋅  2 − 1
pi


gdzie:
n – dany zestaw zadań z przypisanymi priorytetami RMS,
ti – maksymalny czas wykonania zadania i,
pi – okres wykonania zadania i,
ti / pi – część czasu procesora wymagana do wykonania zadania i.
Zgodnie ze statycznym doborem priorytetów algorytmem RMS, im
krótszy okres zadania, tym wyższy jego priorytet.
© SCR 2010
11
Jądro systemu
– Szeregowanie zadań – algorytm RMS
Liczba Zadań
 1n

n ⋅  2 − 1


1
2
3
4
5
...
1.000
0.828
0.779
0.756
0.743
...
∞
0.693
Aby spełnić wszystkie limity czasowe systemu o „solidnych” wymaganiach
czasowych w oparciu o algorytm RMS, wykorzystanie CPU przez wszystkie
zadania krytyczne czasowo powinno być mniejsze niż 70 procent !!!
Nadal można mieć zadania niekrytyczne czasowo, a więc wykorzystać 100
procent czasu CPU
© SCR 2010
12
Jądro systemu
– Szeregowanie zadań – algorytm karuzelowy
Algorytm karuzelowy:
1. Umożliwia współdzielenie czasu procesora przez zadania o takim samym
priorytecie – tzw. rotacja zadań
2. Określa się przedział czasu (ang. time slice) gdy zadanie się wykonuje,
a następnie oddaje procesora zadaniu o takim samym priorytecie, które
wykonuje się przez taki sam przedział czasu i oddaje procesor kolejnemu
zadaniu o takim samym priorytecie
3. W przypadku wywłaszczenia zadania, w trakcie jego przedziału czasu, przez
zadanie o wyższym priorytecie, po wykonaniu zadania o wyższym priorytecie
zadanie to wykorzystuje pozostały należny mu czas procesora
Algorytm przeznaczony do szeregowania zadań
w środowisku zdominowanym przez zadania wykonywane współbieżnie
© SCR 2010
13
Jądro systemu
– Szeregowanie zadań – algorytm FIFO
Algorytm FIFO:
1. Jest podobny do algorytmu karuzelowego z tą różnicą, że zadanie
nie jest wywłaszczane po wyczerpaniu pewnego przedziału czasu
2. Zadanie wykonywane jest aż do czasu gdy:
© SCR 2010
samoistnie zwolni procesor
zostanie wywłaszczone przez zadanie o wyższym priorytecie
14
Jądro systemu
– Szeregowanie zadań – algorytm sporadyczny
Algorytm sporadyczny:
1. Jest podobny do algorytmu karuzelowego z tą różnicą, że po wyczerpaniu
przedzielonego zadaniu przedziału czasu zadanie jest wywłaszczane i jego
priorytet jest obniżony o 1
2. Jeżeli zadanie nie podejmie pracy w kolejnym, określonym przedziale czasu
jego priorytet jest podwyższony o 1
3. Priorytet zadania nie może być podwyższony powyżej oryginalnego
priorytetu zadania
4. Zadanie zawieszone uzyskuje swój „dawny” priorytet
Algorytm przeznaczony do szeregowania zadań sporadycznych pojawiających
się w środowisku zdominowanym przez zadania cykliczne
© SCR 2010
15
Jądro systemu
– Szeregowanie zadań – algorytm zegarowy
Algorytm zegarowy:
1. Decyzje, które zadania maja się wykonywać, podejmowane są z góry
w ustalonych momentach czasu
2. Typowo wszystkie parametry zadań typu hard real-time są ustalone i znane
3. Najczęściej decyzje szeregowania podejmowane są periodycznie i
sterowane hardware-owym zegarem zewnętrznym
Algorytm przeznaczony do szeregowania zadań
w środowisku zdominowanym przez zadania synchroniczne (cykliczne)
zawierającym kilka aperiodycznych i sporadycznych zadań
© SCR 2010
16
Problemy związane z szeregowaniem zadań
W systemach wielozadaniowych, prawie zawsze istnieje pewien podzbiór
procesów uruchomionych w danej chwili, które oddziaływają na siebie.
Źle zorganizowany współbieżny dostęp do tych samych zasobów, prowadzi do
powstawania niespójności danych, w efekcie którego efektywność systemu
może być dalece niezadowalająca.
zjawisko zakleszczenia (ang. impas lub deadlock)
zjawisko inwersji priorytetów (ang. priority inversion)
© SCR 2010
17
Zakleszczenie procesów
Zbiór zadań znajduje się w stanie blokady (zakleszczenia), jeśli każde z
nich jest wstrzymane w oczekiwaniu na zdarzenie, które może być
wywołane przez jakieś inne zadanie z tego zbioru.
Zadania są wstrzymane w oczekiwanie na dostęp do odpowiednich
zasobów, które są wykorzystywane przez inne zadania.
Z1
Zadanie
żąda dostępu do …
R2
Z2
Zadanie
żąda dostępu do …
Zasób
należy do …
R3
Z3
R1
Zadanie
żąda dostępu do …
© SCR 2010
Zasób
należy do …
Zadania: Z1, Z2, Z3
Zasoby: R1,18R2, R3
Zakleszczenie procesów (cd.)
Algorytmy wykrywające zakleszczenie oparte są głównie
o teorię grafów.
W trakcie projektowania aplikacji należy zadbać o to by zadania
sprawdzały czy to czego oczekują jest w danej chwili dostępne, a kiedy
już nie korzystają z jakiś zasobów to powinny je zwolnić.
Można również zasoby zorganizować w hierarchiczną strukturę i
zaimplementować prosty model ich przydziału (protokół), np.:
zadanie które uzyska dostęp do jakiegoś zasobu, w kolejnych krokach
albo musi ten zasób zwolnić lub starać się tylko i wyłącznie o zasoby
znajdujące się wyżej w hierarchii
© SCR 2010
19
Inwersja priorytetów
Inwersja priorytetów występuje w przypadkach gdy zadania o różnych
priorytetach wykorzystują te same zasoby (zasoby współdzielone).
Ogólnie zjawisko inwersji priorytetów polega na tym, że zadanie o
niskim priorytecie, zajmując zasób dzielony, zmusza zadanie o wyższym
priorytecie do przejścia w stan „wstrzymane” i oczekiwania
na zwolnienie tego zasobu.
© SCR 2010
20
Inwersja priorytetów (cd.)
niski
Z1
t1
t2
Z1 zwalnia zasób R1,
zatem Z2 wchodzi w stan gotowe
i wywłaszcza Z1
E1
Z2
Z2 blokuje się
się,
bo zasób R1 zajęty
ty przez Z1
Z2
Z2 wywłaszcza Z1
średni
Z1 zajmuje zasób R1
E2
wysoki
E1 – zdarzenie wyzwalające zadanie Z1
E2 – zdarzenie wyzwalające zadanie Z2
INWERSJA
PRIORYTETÓW
Z1
t3
t4
t5
Z2 zwalnia zasób R1
priorytet
t6
t7
t8
czas
Dwa zadania, zadanie o priorytecie niskim (Z1) i zadanie o priorytecie wysokim (Z2)
korzystające z tego samego zasobu (R1)
© SCR 2010
21
Inwersja priorytetów (cd.)
E1 – zdarzenie wyzwalające zadanie Z1
E2 – zdarzenie wyzwalające zadanie Z2
E3 – zdarzenie wyzwalające zadanie Z3
INWERSJA
PRIORYTETÓW
Z1
t1
t2
Z3
Z1
t3
t4
Z2
Z1 się kończy
czy i zwalnia zasób R1
nieznany
czas !!!
Z3 wywłaszcza Z1
E1
niski
Z3 się kończy
czy i zwalnia zasób R1
Z2
Z2 blokuje się
się,
bo zasób R1 zajęty
ty przez Z1
średni
E3
Z2 wywłaszcza Z1
wysoki
Z1 zajmuje zasób R1
E2
Z1
t5
t6
t7
Z2 się kończy
czy i zwalnia zasób R1
priorytet
t8
czas
Trzy zadania, zadanie o priorytecie niskim (Z1), zadanie o priorytecie wysokim (Z2) oraz
zadanie o priorytecie średnim (Z3) korzystające z tego samego zasobu (R1)
© SCR 2010
22
Inwersja priorytetów (cd.)
Inwersja priorytetów prowadzi do wielu niebezpieczeństw, które
w najgorszym wypadku mogą prowadzić do powstania w systemie
„sporych” anomalii czasowych.
Całkowite wyeliminowanie zjawiska inwersji priorytetów jest
praktycznie niemożliwe.
Metody eliminacji tego zjawiska wykorzystują różne modele sterowania
dostępem do zasobów (protokoły), np.:
- protokół wykorzystujący dziedziczenie priorytetów (może powodować
zakleszczenia),
- protokół pułapów priorytetu (całkowita eliminacja wystąpienia blokad),
- różne modyfikacje powyższych.
© SCR 2010
23
Inwersja priorytetów
– rozwiązanie przez dziedziczenie priorytetów –
Z1
t1
Z1
t2
t3
t4
t5
Z2 kończy się i zwalnia zasób R1
niski
E3
Z2
Z1 kończy się i zwalnia zasób R1,
powrót do pierwotnego priorytetu Z1
E1
Z1
Z2 blokuje się
się,
bo zasób R1 zajęty
ty przez Z1,
podniesienie priorytetu Z1
Z2
Z2 wywłaszcza Z1
średni
Z1 zajmuje zasób R1
E2
wysoki
E1 – zdarzenie wyzwalające zadanie Z1
E2 – zdarzenie wyzwalające zadanie Z2
E3 – zdarzenie wyzwalające zadanie Z3
INWERSJA
PRIORYTETÓW
Z3 kończy się i zwalnia zasób R1
priorytet
Z3
t6
t7
E1
Z1
t8
czas
Zasada jego działania polega na tymczasowym podnoszeniu priorytetu zadania, które zajmuje
zasób dzielony, do najwyższego poziomu priorytetów zadań, które zgłaszają żądanie dostępu do
24
tego zasobu.
© SCR 2010
Inwersja priorytetów
– rozwiązanie przez pułap priorytetów –
priorytet
Każdy zasób ma przypisany
tzw. pułap priorytetów.
Po zwolnieniu zasobu, zadanie
ma przywracany priorytet do
wartości początkowej.
© SCR 2010
Z1
Z1 zwalnia zasób
Gdy zadanie zarygluje dostęp
do takiego zasobu, jego
priorytet jest zwiększany do
wartości pułapu tego zasobu.
wysoki
Z1 zajmuje zasób
Jego wartość jest określana
przez najwyższy priorytet
spośród zadań, które mogą o
niego konkurować.
średni
niski
Z1
t1
Z1
t2
t3
t4
czas
25
Jądro systemu – komunikacja pomiędzy zadaniami
- model przesyłania komunikatów
komunikat
Klient
Serwer
odpowiedź
Fazy przesłania komunikatu:
1. Wysłanie komunikatu od procesu klienta do procesu serwera. Proces klienta zostaje
„zablokowany” a komunikat odblokowuje proces serwera (o ile był „zablokowany”)
2. Serwer przetwarza komunikat i przesyła odpowiedź do klienta.
3. Proces klienta po otrzymaniu odpowiedzi ulega „odblokowaniu”.
Większość SOCR oparta jest o modelu przesyłaniu komunikatów typu klient-serwer
© SCR 2010
26
Jądro systemu – komunikacja pomiędzy zadaniami
- Semafory (binarny, ogólny)
To jedne z obiektów umożliwiających wzajemne wykluczanie oraz
synchronizację zadań.
Semafor, jest obiektem jądra, który może zostać zajęty przez jeden lub
kilka wątków w celu sterowania dostępem do np. jakiegoś wspólnego
zasobu.
Operacje na semaforach, umożliwiające wstrzymanie i wznowienie
procesów:
- czekaj: to operacja opuszczająca semafor, zmniejsza jego wartość o
jeden (semafor może mieć wartości nieujemne),
- sygnalizuj: jest operacją zwiększającą wartość semafora o jeden,
logicznie odpowiada operacji podniesienia semafora
Semafory są globalne : dowolny proces może je opuszczać albo podnosić
© SCR 2010
27
Jądro systemu – komunikacja pomiędzy zadaniami
- muteksy
Muteksy (ang. mutual exclusion semaphores), stanowią szczególny
rodzaj semaforów binarnych.
Muteks może być zablokowany (ma wartość 1) lub odblokowany (ma
wartość 0).
Jedną z cech muteksów jest zasada posiadania.
Zasada posiadania polega na tym, że jeśli jakieś zadanie zablokuje
muteks (nada mu wartość 1), to tylko ono może ten muteks odblokować
(nadać mu wartość 0).
Zapobiega to sytuacji, w której jedno z zadań wykona operację czekaj
aby synchronizować dostęp do jakiegoś zasobu, a później inne zadanie
niezwiązane logicznie z tym zasobem, podniesie semafor (potencjalny
problem niespójności danych przy wykorzystywaniu jedynie semaforów)
© SCR 2010
28
Jądro systemu – komunikacja pomiędzy zadaniami
- zmienne warunkowe
Zmienne warunkowe również służą do synchronizacji zadań.
Zmienne warunkowe pozwalają wielokrotnie wstrzymywać wykonanie
jakiegoś zadania, aż żądany warunek zostanie spełniony.
© SCR 2010
29
Jądro systemu – komunikacja pomiędzy zadaniami
– kolejki komunikatów
Kolejki komunikatów, to inteligentne bufory, które zazwyczaj działają w
oparciu o algorytm „pierwszy przyszedł, pierwszy został obsłużony”
(FIFO).
- kolejki jednokierunkowe
- kolejki dwukierunkowe
© SCR 2010
30
Jądro systemu – komunikacja pomiędzy zadaniami
- potoki
Potoki (ang. pipes), służą do przechowywania danych jako strumień
pozbawiony jakiejkolwiek struktury.
Potoki są odczytywane według algorytmu „pierwszy przyszedł, pierwszy
zostanie obsłużony” (FIFO).
Dzięki wskaźnikom (deskryptorom) początku i końca potoku możliwe są operacje zapisu i odczytu.
© SCR 2010
31
Jądro systemu – komunikacja pomiędzy zadaniami
- rejestry zdarzeń
Bardzo często występuje konieczność, aby zadanie miało możliwość
śledzenia wystąpienia jakiś konkretnych zdarzeń oraz podjęcia
odpowiednich kroków w celu wypracowania jakiejś odpowiedzi na nie.
Obiektami umożliwiającymi takie zachowanie są właśnie rejestry
zdarzeń - obiekty, które składają się z szeregu bitów, interpretowanych
jako flagi.
© SCR 2010
32
Jądro systemu – komunikacja pomiędzy zadaniami
– sygnały
Sygnał, to przerwanie programowe, generowane w odpowiedzi na
zaistnienie jakiegoś zdarzenia. Przerywa normalny tok wykonywania u
jego odbiorcy oraz wymusza wykonanie jakiegoś określonego zadania.
© SCR 2010
33
Wyjątki
Wyjątek (ang. exception) – jest to dowolne zdarzenie, które przerywa
normalny tok obliczeń procesora i wymusza wykonanie określonego
zbioru instrukcji w trybie uprzywilejowanym. Najogólniej można je
podzielić na dwie grupy: synchroniczne i asynchroniczne.
Synchroniczne są generowane przez tzw. zdarzenia wewnętrzne jak np.
efekt wykonania jakiejś instrukcji procesora. Przykładami mogą być
dzielenie przez zero lub niepoprawny odczyt z pamięci.
Asynchroniczne (przerwania) są generowane przez tzw. zdarzenia
zewnętrzne.
© SCR 2010
34
Przerwania
Przerwanie (ang. interrupt, external interrupt) – to tzw. wyjątki
asynchroniczne i nie są powiązane z instrukcjami wykonywanymi przez
procesor. Ich źródłem są wszelkie zdarzenia zewnętrzne, czyli odnoszą
się do różnych sygnałów generowanych przez sprzęt. Przykładami mogą
być wciśnięcie przycisku reset na płycie głównej lub sygnał urządzenia
komunikacyjnego, które właśnie otrzymało pakiet z danymi.
Można je podzielić na maskowalne, czyli takie, które można wyłączyć
programowo oraz niemaskowalne, których nie da się zablokować.
Przerwania niemaskowalne, są zazwyczaj połączone z procesorem przy
pomocy specjalnego kanału komunikacyjnego i są obsługiwane
natychmiast po ich wystąpieniu.
© SCR 2010
35
Czas
Aby poprawnie mogły działać proces szeregujący zadania oraz same
zadania czasu rzeczywistego, bardzo ważne jest precyzyjne odmierzanie
czasu.
Większość systemów wbudowanych dostarcza dwa rodzaje
mechanizmów odmierzających czas (ang. timer):
- timery oparte o rozwiązania sprzętowe (programowalne kontrolery
czasu),
- typowe rozwiązania programowe.
© SCR 2010
36
Krótka charakterystyka
wybranych
Systemów Operacyjnych
Czasu Rzeczywistego
© SCR 2010
37
Popularne systemy SOCR
– QNX Neutrino –
QNX, to zdaniem wielu (np. AMD, IBM, Cisco Systems) najlepszy i
jednocześnie najbardziej zaawansowany oraz przyszłościowy,
rygorystyczny (realizujący solidne wymagania czasowe) system
operacyjny czasu rzeczywistego.
Jest pierwszym w historii systemem wielozadaniowym i wielodostępnym
przeznaczonym dla mikrokomputerów IBM PC.
Wykorzystuje architekturę mikrojądra, które od wersji 6.0 systemu
zajmuje 8kB (jądro systemu UNIX to co najmniej 700kB).
QNX ma strukturę modułową oraz architekturę opartą o przesyłanie
komunikatów (model klient – serwer).
Wysoko posunięta modularność i skalowalność systemu.
Komunikacja pomiędzy procesami znajdującymi się na odległych
sieci jest tak samo prosta, jak w obrębie jednego komputera.
©węzłach
SCR 2010
38
Popularne systemy RTOS
– QNX Neutrino – (cd.)
QNX daje możliwość zdeterminowania czasu reakcji na zdarzenia
występujące w systemie.
QNX dzięki rozbudowanym możliwościom definiowania priorytetów,
jest stosowany jako system służący do sterowania automatyką
przemysłową, gdzie pewne zdarzenia są krytyczne (np. otwarcie zaworu
bezpieczeństwa w zbiorniku kiedy gwałtownie wzrasta ciśnienie) i
muszą być zawsze obsłużone na czas.
Na bazie QNX opracowywane są również systemy SCADA.
QNX jest również wykorzystywany jako platforma dla baz danych.
© SCR 2010
39
Popularne systemy RTOS
– VxWorks Jeden z najbardziej profesjonalnych systemów czasu rzeczywistego
firmy Wind River Systems.
Należy do grupy nowoczesnych systemów operacyjnych opartych na
koncepcji wielozadaniowości, komunikacji między zadaniami,
mikrojądrze oraz procedurach obsługi przerwań.
Posiada zaimplementowane funkcje komunikacji sieciowej.
Możliwość rozwoju systemu docelowego zgodnie ze standardem ANSI
C i C++ oraz POSIX.
Bogaty zestaw dodatkowych pakietów oprogramowania: wykorzystanie
wieloprocesorowości, biblioteki graficzne, narzędzia do testowania i
uruchamiania aplikacji, wirtualne maszyny Javy, symulator środowiska
docelowego
© SCR 2010
40
Popularne systemy SOCR
– RTLinux –
Występuje w dwóch wersjach, komercyjnej RT Linux PRO i w
ogólnodostępnej GPL – RTLinux (darmowy i udostępniany wraz z całym
kodem źródłowym).
Jego cechą charakterystyczną jest to, że współistnieją w nim: jądro czasu
rzeczywistego RTCore i jądro Linuksa.
RTLinux „szybko” potrafi obsługiwać przerwania w warunkach dużego
obciążenia obliczeniami, przy jednoczesnych znikomych operacjach
dyskowych.
Architektura RTLinux wymusza jednak pewien styl programowania
(podział na dwie części: obliczeniową i operacje dyskowe, sieciowe).
Typowa aplikacja składa się z zadań czasu rzeczywistego, które
współpracują bezpośrednio ze sprzętem, a zadania Linuxa wykonują
nie wymagające reżimu czaus rzeczywistego.
©obliczenia
SCR 2010
41
Popularne systemy SOCR
– OS-9 –
To wielozadaniowy system operacyjny opracowany przez firmę
Microware dla wbudowanych systemów sterujących opartych o
procesory rodziny Motorola.
System OS-9 ma strukturę warstwową, złożoną z jądra, niezależnej od
sprzętu warstwy podprogramów zarządzającej zbiorami (plikami) oraz
warstwy podprogramów sterujących pracą urządzeń zewnętrznych.
Jedynym obowiązkowym elementem systemu jest jądro.
Podstawowymi językami programowania aplikacji są C i asembler,
dodatkowo są dostępne kompilatory Basic i Pascal.
OS-9 nie można zakalikować do systemu rozproszonego ponieważ
mechanizmy komunikacji i synchronizacji zadań są ograniczone do
pojedynczego komputera.
© SCR 2010
42
Popularne systemy SOCR
– Windows CE –
Systemem czasu rzeczywistego Microsoftu o słabych wymaganiach
czasowych.
Posiada architekturę modułową.
Zoptymalizowany dla urządzeń o niewielkiej ilości pamięci – jądro
systemu wymaga do uruchomienia około 1MB RAM.
Microsoft opracował dedykowaną wersję systemu do układów
elektronicznych urządzeń instalowanych w samochodach (np. zarządza
sprzętem audio auta)
Szerokie pole do popisu wszędzie tam, gdzie konieczne jest
wykorzystanie wszelkich najnowszych technologii, a zwłaszcza tych
związanych z multimediami. Można tworzyć bardzo wydajne konsole
służące do gier oraz instalować w nich różne pakiety biurowe.
© SCR 2010
43
Popularne systemy SOCR
– Windows XP Embendded –
Windows XP Embedded, nie jest zasadniczo przeznaczony do
przetwarzania w czasie rzeczywistym. Jego budowa jest jednak tak
zorganizowana, że łatwo można go wzbogacić o takie możliwości. Służą
do tego specjalne komponenty oraz rozwiązania firm trzecich.
Windows XP Embedded składa się dokładnie z tych samych plików
binarnych, co jego brat, przeznaczony na komputery typu desktop, tyle
że niektóre zostały nieznacznie zmodyfikowane lub uproszczone.
Posiada architekturę modułową.
Znajduje zastosowanie u producentów bankomatów, terminale graficzne,
urządzeń przenośnych, konsoli do gier oraz tych którzy wykorzystują
najnowsze technologie multimedialne.
© SCR 2010
44
Popularne systemy SOCR
µC/OS-II
: przenośny skalowalny, z wywłaszczeniem,
wielozadaniowe jądro ładowane z ROM, platforma
docelowa to m.in. MS-Win, DOS, x86, 68HC11, ARM
eCOS
: wysoce konfigurowalny, 32 lub 64 bitowy, oparty na
koncepcji kodu źródłowego (nie jest to kolejny Linux),
wysoce zoptymalizowany, zawiera bogatą bibliotekę
matematyczną, komunikacyjną i system plików,
platforma docelowa to m. in.: Windows, Sun, Linux,
x86, ARM7
Przykłady darmowych SOCR dla rodziny AVR:
AvrX,
EtherNut - Nut/OS,
FreeRTOS, TinyOS,
XMK - eXtreme Minimal Kernel
© SCR 2010
45
Systemy SOCR - obecnie
Obecnie dostępnych jest ponad kilkadziesiąt systemów SOCR lub
mających znamiona systemów operacyjnych czasu rzeczywistego.
Część z nich to kompletne systemy operacyjne, w skład których wchodzą
jądro, sterowniki I/O, systemy plików, usługi sieciowe ...
Niektóre dostępne są na licencji GPL a niektóre odpłatnie.
Ceny wahają się od kilkuset do kilkuset tysięcy zł, przy czym cena
zależy od dodatkowych modułów.
© SCR 2010
46
Systemy SOCR – małe zestawienie
QNX Neutrino
6.2
WinCE
.NET
VXWorks
AE 1.1
RedHat Linux
1.1
Wydajność
9
7
5
2
Instalacja i
konfiguracja
8
5
4
3
Architektura
(RTOS)
9
7
7
3
Ilość API
7
7
8
5
Obsługa internetu
8
9
9
8
Narzędzia
8
8
8
8
Dokumentacja i
wsparcie tech.
7
5
4
2
Średni wynik
8.0
6.9
6.4
4.4
Źródło: Dedicated Systems Experts, sierpień 2002
© SCR 2010
47
Bibliografia:
[1] P.Szymczyk (2003). Systemy Operacyjne Czasu Rzeczywistego.
Uczelniane Wydawnictwa Naukowo-Dydaktyczne, Kraków.
[2] J.Ułasiewicz (2007). System czasu Rzeczywistego QNX6 Neutrino.
Wydawnictwo BTC, Legionowo.
[3] K.Lal, T.Rak, K.Orkisz (2003). RTLinux system czasu rzeczywistego.
Helion, Gliwice.
© SCR 2010
48
Dziękuję za uwagę !!!
© SCR 2010
49

Podobne dokumenty