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