Systemy wbudowane

Transkrypt

Systemy wbudowane
Systemy wbudowane
Systemy operacyjne czasu rzeczywistego
Definicje
System czasu rzeczywistego to taki, w którym wynik przetwarzania nie
zależy tylko i wyłącznie od jego logicznej poprawności, ale również od
czasu, w jakim został osiągnięty. Jeśli nie są spełnione ograniczenia
czasowe, mówi się, że nastąpił błąd systemu.
System mikrokomputerowy działa w czasie rzeczywistym, jeżeli
wypracowane przez ten system decyzje są realizowane w tempie
obsługiwanego procesu. Inaczej mówiąc, system działa w czasie
rzeczywistym, jeżeli czas reakcji systemu jest niezauważalny przez
proces (decyzja jest wypracowana we właściwym czasie)
Systemy operacyjne czasu rzeczywistego dzielimy na:
● Rygorystyczne
● Łagodne
Systemy rygorystyczne
Rygorystyczne (twarde, ang. Hard real - time systems) - gwarantują
terminowe wypełnianie krytycznych zadań. Osiągnięcie tego celu wymaga
ograniczenia wszystkich opóźnień w systemie, poczynając od
odzyskiwania przechowywanych danych, a kończąc na czasie zużywanym
przez system na wypełnienie dowolnego zamówienia.
Takie ograniczenia czasu wpływają na dobór środków, w które są
wyposażane rygorystyczne systemy czasu rzeczywistego.
Wszelkiego rodzaju pamięć pomocnicza jest na ogół bardzo mała albo nie
występuje wcale. Wszystkie dane są przechowywane w pamięci o krótkim
czasie dostępu lub w pamięci, z której można je tylko pobierać (ROM).
Systemy łagodne
Łagodne(miękkie, ang. Soft real - time systems) - są mniej wymagające. W
nich krytyczne zadanie do obsługi w czasie rzeczywistym otrzymuje
pierwszeństwo przed innymi zadaniami i zachowuje je aż do swojego
zakończenia.
Podobnie jak w rygorystycznym systemie czasu rzeczywistego opóźnienia
muszą być ograniczone - zadanie czasu rzeczywistego nie może w
nieskończoność czekać na usługi jądra.
Schemat SOCR
Systemy rzeczywiste a systemy
wbudowane
Nie wszystkie systemy wbudowane zawierają cechy systemów czasu
rzeczywistego, jak i również nie wszystkie systemy czasu rzeczywistego są
wbudowane. Jednakże oba te typy systemów nie stanowią zbiorów rozłącznych.
Ich część wspólna, to wbudowane systemy czasu rzeczywistego.
Cechy SOCR
- ciągłość działania (stany oczekiwania na wystąpienie zdarzenia)
zależność od otoczenia
- współbieżność
- przewidywalność
- punktualność
- uzależnienie pracy systemu mikrokomputerowego od wymagań
czasowych obiektu
- niezawodność
- zapewnienie bezpiecznej pracy obiektu w przypadku awarii
Budowa SOCR
- jądro(czasami utożsamiane jest z całym SO) systemu zawiera właściwe
mechanizmy systemowe – zarządzają one systemem plików, planują
przydział procesora, zarządzają pamięcią
- interfejs programów użytkowych określa sposób odwoływania się do
systemu operacyjnego z poziomu wszystkich programów (użytkownika,
programów systemowych tworzących powłokę)
- powłoka – jest modułem wymiennym i realizuje prosty interfejs
użytkownika oraz niektóre polecenia systemowe
- programy systemowe i użytkowe są dostarczane łącznie z jadrem SO
- najniższą warstwą są programy obsługi sprzętu zawierające procedury
bardzo niskiego poziomu
Funkcje SOCR
Aby prawidłowo zarządzać procesami, systemy czasu rzeczywistego
muszą realizować następujące funkcje :
- tworzenie i usuwanie procesów użytkowych
- wznawianie i wstrzymywanie procesów
- synchronizację procesów
- komunikację miedzy procesami
- obsługę blokad
Zdarzenia w SOCR
System operacyjny czasu rzeczywistego musi odpowiednio zareagować na
różne typy zdarzeń i w przeciwieństwie do zwykłych systemów musi być
tak samo stabilny przed i po ich obsłużeniu.
Rodzaje zdarzeń :
- zdarzenia zewnętrzne – sygnalizowane przez przerwania zgłaszane
przez zewnętrzne urządzenia współpracujące
- zdarzenia czasowe czyli sygnalizowane przez systemowy program
obsługi zegara rejestrujący upływ zadanego czasu kontrolnego T
- zdarzenia wewnętrzne czyli sygnalizowane przez przerwania
generowane przez odpowiednie elementy komputera np.: koprocesor
arytmetyczny w przypadku popełnienia błędu
-zdarzenia programowe czyli generowane jawnie odwołania
wykonywanych zadań do systemu operacyjnego
Zadania w SOCR
Zadanie - fragment programu którego wykonanie jest wymuszone przez
zdarzenie np.: działanie zegara czasu rzeczywistego, obsługa przerwania.
Cechą SOCR jest stałe, ściśle określone ograniczenie czasowe nałożone
na wykonywane zadanie. Jeśli aktualne zdanie musi czekać na
zakończenie danej operacji, to system może przejść do wykonywania
następnego zadania, a następnie powrócić do zadania pierwotnego.
Zadania mogą znajdować się w różnych stanach:
- zadanie wykonywane
- zadanie zawieszone
- zadanie w stanie oczekiwania
- zadanie bez przydzielonych zasobów
Budowa SOCR
Najniższe dwie warstwy to sprzęt oraz zbiór
sterowników (BSP).
Później jest jądro systemu oraz szereg
modułów jak np. system plików, podsystem
wejścia - wyjścia, dodatkowe sterowniki,
protokoły sieciowe oraz komponenty
wspierające tworzenie aplikacji.
Na samym szczycie powyższej hierarchii,
uruchamiane są aplikacje użytkownika.
Jądro SOCR
Mikrojądro, to komponent dostarczający minimalną liczbę usług. jak np.
tworzenie lub usuwanie zadania, alokowanie i dealokowanie potrzebnej
pamięci, dostarczenie kolejek komunikatów itp.
Klient ma dostęp do tych obiektów poprzez różne interfejsy, jak np. API.
Najczęściej jest implementowane w języku niskiego poziomu (np.
assembler). co sprawia, że jego przenośność jest ograniczona tylko i
wyłącznie do konkretnego typu procesora.
Nie jest to jednak ogromny problem, gdyż cała reszta systemu jest
implementowana w językach jak np. C++ i przeniesienie całości z jednej
platformy na inną, wiąże się tylko i wyłącznie z przepisaniem tych
najbardziej podstawowych usług.
Mechanizmy jądra
Przydzielają czas systemu dla poszczególnych zadań programu
użytkowego:
- obsługa priorytetowa zadań z wywłaszczeniem. Zaleta: czas miedzy
zdarzeniami wewnętrznymi, a wykonywaniem zadania o największym
priorytecie jest ściśle określony i spełniony. Wada: w przypadku zadań o
niskim priorytecie może dojść do sytuacji są one wykonywanie bardzo
rzadko.
- obsługa cykliczna zdarzeń z wywłaszczeniem. Zaleta: wszystkie zadania
mają ten sam priorytet oraz własny maksymalny czas wykonania. Wada:
nie ma możliwości zagwarantowania natychmiastowej obsługi
zgłoszonego zdarzenia zewnętrznego.
●
Przydzielają pamięć dla poszczególnych zdań programu użytkowego
(alokacja pamięci RAM przez zadanie).
●
Mechanizmy jądra
mechanizmy wymiany informacji między zadaniami oraz między zadaniami i
zdarzeniami zewnętrznymi:
- kolejki do wymiany informacji między zadaniami za pomocą komunikatów
przekazywanych w ustalonych buforach danych
- gniazda do wymiany informacji między zadaniami, a systemami zewnętrznymi za
pomocą standardowych protokołów sieciowych
- semafory do synchronizacji pracy zadań, uzależnienie wykonywania danego
zadania od wyników pracy innego zdania (operacja binarna)
- sygnały do wymiany informacji między zdarzeniami zewnętrznymi , a
wykonywanymi zadaniami (obsługa przerwań)
- wspólna pamięć od korzystania ze wspólnych struktur danych przez wiele zadań
●
Mechanizmy dostępu do układów peryferyjnych (sterowniki urządzeń) –
sterowniki urządzeń mogą kontaktować się z zadaniami tylko za pośrednictwem
kilku standardowych funkcji
●
Szeregowanie zadań
Jeśli właściwości kontrolowanego systemu mogą zostać określone z góry, to rodzaj
i kolejność podejmowanych działań są określone przed rozpoczęciem
wykonywania procesu. Wówczas stosuje się tzw. szeregowanie statyczne
Niestety, kontrolowane procesy okazują się o wiele bardziej złożone, a środowiska
w jakich najczęściej się wykonują, charakteryzuje niepewność. Istnienie elementów
stochastycznych sprawia, że powstają także systemy z szeregowaniem
dynamicznym
Najważniejszą częścią jądra każdego systemu czasu rzeczywistego, jest tzw.
program szeregujący (ang. scheduler). Dostarcza on algorytmów określających,
jakie zadanie czy proces ma przejąć procesor oraz kiedy ma to nastąpić. Pozwala
to na stworzenie wielozadaniowości (ang. multitasking).
Algorytmy wywłaszczania z
priorytetami
Algorytm opiera się tylko o zestaw priorytetów, określających poziom
ważności. Ich interpretacja oraz zakres zależą od konkretnej
implementacji.
Ogólna zasada polega na tym, że jeśli w danej chwili jest jednocześnie
kilka zadań gotowych do uruchomienia, to wybierane jest to o najwyższym
priorytecie. Jeśli natomiast, w czasie obliczeń, pojawi się zadanie o
wyższym priorytecie od aktualnie wykonywanego, to wówczas scheduler
przerywa je, zapisuje jego stan oraz oddaje procesor zadaniu
ważniejszemu.
Algorytm wywłaszczania z priorytetami
i podziałem czasu procesora
Każdemu zadaniu przydzielony został określony przedział czasowy. Zadanie nr 1, po
przejęciu procesora, wykonuje się przez określony czas, po czym oddaje procesor
kolejnemu. Oczywiście jeśli w dowolnej chwili pojawi się zadanie o wyższym priorytecie
od aktualnego, to wówczas ono staje się bieżącym. Jeśli jest ono przez cały czas swoich
obliczeń zadaniem najważniejszym, to wykonuje się aż do zakończenia i dopiero oddaje
procesor, aby inne zadania mogły się dokończyć. Wywłaszczone zadanie nr 1, po
przywróceniu jego stanu nie otrzymuje dodatkowego czasu. Jest ono wykonywane dalej
tak, jakby przełączenie kontekstu w ogóle nie miało miejsca.
Semafory
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.
Każdy jest zdefiniowany przez swój unikalny numer, blok kontrolny
zawierający dodatkowe dane, wartość (binarną lub wyliczeniową) oraz listę
oczekujących zadań.
Operacje:
●
czekaj - to operacja opuszczająca semafor. Zmniejsza jego wartość o
jeden. Pamiętać należy, że sam semafor jest liczbą nieujemną. Dlatego
też operacja ta jest wykonywana tylko wtedy, gdy jest możliwa.
● sygnalizuj - jest operacją zwiększającą wartość semafora o jeden.
Logicznie odpowiada operacji podniesienia semafora.
Obie te operacje są niepodzielne, co oznacza, że w danej chwili może być
wykonana tylko i wyłącznie jedna z nich. Raz rozpoczęte muszą się
zakończyć.
Odmierzanie czasu
Rozwiązania sprzętowe. Realizowane są przez układy scalone, które w sposób
bezpośredni przerywają obliczenia procesora oraz sygnalizują, że upłynął jakiś
okres. Są one stosowane wszędzie tam, gdzie bardzo istotna jest precyzja.
Programowalne kontrolery czasu określają częstotliwość impulsu wejściowego
oraz zbiór programowalnych rejestrów. Częstotliwość generowanych przez nie
przerwań jest funkcją odpowiedniego rejestru oraz sygnału wejściowego. Reszta
rejestrów może określać inne cechy, jak np. czy odmierzanie ma być cykliczne oraz
jest zależna od konkretnej implementacji.
Rozwiązania programowe pozwalają bardzo wydajnie szeregować zadania, dla
których można założyć pewne niedokładności jeśli chodzi o impulsy czasowe. Ich
użycie składa się zazwyczaj z trzech podstawowych etapów:
- instalacja zegara (uruchomienie odliczania)
- podtrzymywanie zegara(np. odliczanie)
- usunięcie zegara (zatrzymanie odliczania).
Przykłady SOCR
●
●
●
●
●
●
●
●
●
●
●
●
●
●
FlexOS
FreeRTOS
uCRTOS
MicroC/OS-II
eCOS
QNX
OS9
VxWorks
LynxOS
Phoenix-RTOS
iRMX
RT-Linux
RTKernel
DRYOS, i inne
Przykłady zastosowań SOCR
●
●
●
●
systemy sterowania procesów przemysłowych - nadzorowanie linii
technologicznych, obrabiarek, robotów, układów napędowych itp.
w urządzeniach telekomunikacyjnych i sieciowych
w życiu codziennym:
● w aparatach cyfrowych, w samochodach, komputerach
przenośnych, a także w systemach kina domowego i sekretarkach
telefonicznych,
● w pralkach i zmywarkach, gdzie po zebraniu informacji z licznych
czujników (jak stopień zabrudzenia wody), odpowiednio
optymalizują przebieg programu.
● w zastosowaniach biurowych, jako funkcjonalna część urządzeń
sieciowych jak np. przełączniki, routery, drukarki, modemy itp.
w medycynie, fizyce, astronomii, wojskowości itp.