Czym są systemy operacyjne czasu rzeczywistego? Systemy operacyjne czasu rzeczywistego dla początkujących.

system operacyjny Systemy czasu rzeczywistego (RTOS) zostały zaprojektowane w celu zapewnienia interfejsu do zasobów systemów czasu rzeczywistego, w których czas jest krytyczny. Głównym zadaniem w takich systemach jest terminowość przetwarzania danych.

Głównym wymaganiem dla RTOS jest zapewnienie przewidywalności lub determinizmu zachowania systemu w najgorszych scenariuszach. warunki zewnętrzne, co znacznie różni się od wymagań dotyczących wydajności i szybkości uniwersalnych systemów operacyjnych. Dobry system RTOS charakteryzuje się przewidywalnym zachowaniem we wszystkich scenariuszach obciążenia systemu (jednoczesne przerwy i wykonywanie wątków).

Istnieje pewna różnica pomiędzy systemami czasu rzeczywistego a systemami wbudowanymi. Od systemu wbudowanego nie zawsze wymaga się przewidywalnego zachowania, w takim przypadku nie jest to system czasu rzeczywistego. Jednak nawet pobieżne spojrzenie na możliwe systemy wbudowane sugeruje, że większość systemów wbudowanych wymaga przewidywalnego zachowania, twierdzi co najmniej, dla niektórych funkcjonalności, dlatego też systemy te można zaliczyć do systemów czasu rzeczywistego.

Zwyczajowo rozróżnia się miękkie i twarde systemy czasu rzeczywistego. W systemach trudne, prawdziwe czas niemożności udzielenia odpowiedzi na jakiekolwiek zdarzenia w określony czas prowadzi do niepowodzeń i niemożności wykonania zadania. W większości literatury rosyjskojęzycznej takie systemy nazywane są systemami z czasem deterministycznym. Na praktyczne zastosowanie czas reakcji powinien być minimalny. Miękkie systemy czasu rzeczywistego to systemy, które nie mieszczą się w definicji „twardych”, ponieważ W literaturze nie ma jeszcze ich jednoznacznej definicji. Miękkie systemy czasu rzeczywistego mogą nie mieć czasu na rozwiązanie problemu, ale nie prowadzi to do awarii systemu jako całości. W systemach czasu rzeczywistego konieczne jest wprowadzenie pewnego terminu (w literaturze anglojęzycznej – termin), przed upływem którego zadanie musi koniecznie (w przypadku miękkich systemów czasu rzeczywistego – najlepiej) zostać wykonane. Termin ten jest wykorzystywany przez planistę zadań zarówno do przypisania priorytetu zadaniu w momencie jego uruchomienia, jak i przy wyborze zadania do wykonania.

Martin Timmerman sformułował co następuje niezbędne wymagania dla RTOS-u:

  • System operacyjny musi być wielozadaniowy i możliwy do wywłaszczenia,
  • System operacyjny musi mieć koncepcję priorytetu wątków,
  • System operacyjny musi obsługiwać przewidywalne mechanizmy synchronizacji,
  • System operacyjny musi zapewniać mechanizm dziedziczenia priorytetów,
  • Zachowanie systemu operacyjnego musi być znane i przewidywalne (opóźnienia w przetwarzaniu przerwań, opóźnienia w przełączaniu zadań, opóźnienia sterowników itp.); oznacza to, że we wszystkich scenariuszach obciążenia systemu należy określić maksymalny czas odpowiedzi.

W ciągu ostatnich 25-30 lat struktura systemów operacyjnych ewoluowała od monolitycznej do wielowarstwowej struktury systemu operacyjnego, aż do architektury klient-serwer. W strukturze monolitycznej system operacyjny składa się z zestawu modułów, a zmiany w jednym module wpływają na inne moduły. Im więcej modułów, tym większy chaos podczas pracy takiego systemu. Ponadto nie jest możliwa dystrybucja systemu operacyjnego w systemie wieloprocesorowym. W strukturze wielowarstwowej zmiany w jednej warstwie wpływają na warstwy sąsiednie; ponadto inwersja przez warstwę nie jest możliwa. W przypadku systemów czasu rzeczywistego należy zapewnić bezpośredni dostęp do każdej warstwy systemu operacyjnego, a czasami bezpośrednio do sprzętu.

Główny pomysł technologii klient-serwer w systemie operacyjnym polega na ograniczeniu podstawy systemu operacyjnego do minimum (podstawy harmonogramu i synchronizacji). Cała pozostała funkcjonalność zostaje przeniesiona na inny poziom i zaimplementowana poprzez wątki lub zadania. Zestaw takich zadań serwera odpowiada za wywołania systemowe. Aplikacje to klienci żądający usług za pośrednictwem wywołań systemowych.

Technologia klient-serwer pozwala na tworzenie skalowalnych systemów operacyjnych i upraszcza dystrybucję w systemie wieloprocesorowym. Podczas obsługi systemu wymiana jednego modułu nie powoduje efektu „kuli śnieżnej”; Ponadto awaria modułu nie zawsze oznacza awarię systemu jako całości. Mieć okazję obciążenie dynamiczne i wysyłka modułów. Główną kwestią w tym modelu jest ochrona pamięci, ponieważ procesy serwera muszą być chronione. Za każdym razem, gdy tworzone jest żądanie usługi, system musi przełączyć się z kontekstu aplikacji do kontekstu serwera. Dzięki wsparciu ochrony pamięci czas przełączania z jednego procesu do drugiego wzrasta.

Z reguły większość nowoczesnych systemów RTOS zbudowana jest w oparciu o mikrojądro (jądro lub jądro), które zapewnia planowanie i przydzielanie zadań, a także ich interakcję. Mimo że jądro minimalizuje abstrakcje systemu operacyjnego, mikrojądro nadal musi rozumieć abstrakcje procesów. Wszystkie inne koncepcyjne abstrakcje systemów operacyjnych są przenoszone poza jądro, wywoływane na żądanie i wykonywane jako aplikacje.

Czas rzeczywisty? Zwróćmy uwagę na szczegółowe badanie RTOS. Przede wszystkim to specjalne typy które różnią się od systemów operacyjnych ogólnego przeznaczenia wydajnością i wydajnością w najgorszych sytuacjach. Istnieje wiele koncepcji ujawniających szczegóły:

RTOS to system, który jest w stanie zapewnić wymagana usługa przez pewien okres czasu;

System czasu rzeczywistego, który charakteryzuje się stałą dostępnością, a czas przetwarzania informacji jest niewidoczny dla użytkowników;

- “szybki system”, gdzie na pierwszy plan wysuwa się nie czas reakcji RTOS-u, ale wystarczająca ilość czasu na pracę z aplikacją.

Aby dopełnić obraz, warto zwrócić na to uwagę cechy systemy operacyjne czasu rzeczywistego. Bardzo ważna cecha to gwarantowana i stabilna reakcja na bieżące wydarzenia. Zadania dowolnego poziomu (wysoki i niski priorytet) nie powinny ze sobą kolidować i wypierać się. Wysoki poziom wymagań dotyczących czasu reakcji konkretne wydarzenie w czasie rzeczywistym.

Czas rzeczywisty

Dzielą się one w zależności od programów: twarde, miękkie i interaktywne. Przyjrzyjmy się pokrótce każdemu typowi.

Twarde systemy RTOS mają ściśle określony czas reakcja na zdarzenie w czasie rzeczywistym. Przykład: przerwanie sprzętowe, należy przetworzyć wyświetlenie poleceń sterujących, co ma miejsce w 100% przypadków.

Miękkie systemy czasu rzeczywistego pozwalają w 80-90% przypadków na odchylenie od określonych ram czasowych o jeden rząd wielkości. Ale najważniejsze jest to, że opóźnienia te nie prowadzą do nieodwracalnych konsekwencji.

Interaktywny RTOS obejmuje (kiedy osoba oczekuje na odpowiedź z systemu po wydanych przez nią instrukcjach lub poleceniach).

Najpopularniejsze systemy operacyjne czasu rzeczywistego i ich charakterystyka

Większość systemów RTOS jest zamkniętych i trudno jest uzyskać o nich informacje. dokładna informacja. Firma WindRiver Systems opracowała VxWorks (twardy system RTOS) do tworzenia oprogramowania na komputerach wbudowanych. Opiera się na działaniu komputera hosta, na którym prowadzony jest rozwój oprogramowanie oraz komputer kliencki, na którym jest on używany pod kontrolą VxWorks.

Te systemy operacyjne czasu rzeczywistego można w dużym stopniu dostosowywać, ale moduły oprogramowania nie można ich używać w innych środowiskach, co sprawia, że ​​są one dość ograniczone w użyciu. Zalety obejmują:

Nieograniczona liczba zadań do rozwiązania.

Liczba zadań priorytetowych wynosi aż 256.

Zadania układane są cyklicznie lub priorytetowo.

Semafory pomagające kontrolować krytyczne zasoby systemowe.

Systemy operacyjne czasu rzeczywistego QNX Neutrino Realtime System operacyjny- pomysł QNX Software Systems. Opiera się na architekturze międzyserwerowej i charakteryzuje się dużą wielozadaniowością w trybie priorytetu. Każdy element systemu działa niezależnie: w przypadku awarii i nieprawidłowego działania każde łącze może samodzielnie zrestartować się bez wpływu na działanie jądra lub innych komponentów. Posiada również głęboką konfigurację, powiązaną z jądrem bazowym, co wyklucza pracę w innym środowisku.

ChorusOS jest przykładem wbudowanego systemu operacyjnego, który jest szeroko stosowany w telekomunikacji. Obsługuje różne protokoły telekomunikacyjne i technologie Java, co pozwala na wdrażanie nowych rozwiązań i aplikacji.

Różnica w stosunku do ogólnego zastosowania i przeznaczenia systemu operacyjnego

RTOS-y różnią się od systemów ogólnego przeznaczenia deterministycznym charakterem ich pracy, co wynika ze ścisłej kontroli czasu poświęconego na przetwarzanie zadań. Pojęcie „wyznaczanie” opisuje z góry określony przedział czasu, w którym wykonywany jest jeden program czasu rzeczywistego.

Charakterystyczne cechy RTOS z systemu operacyjnego ogólnego przeznaczenia

Celem są systemy operacyjne ogólnego przeznaczenia, zwłaszcza te przeznaczone dla wielu użytkowników, takie jak UNIX optymalna dystrybucja zasoby komputera pomiędzy użytkownikami i zadaniami. W systemach operacyjnych czasu rzeczywistego takie zadanie schodzi na dalszy plan – wszystko wcześniej się oddala główne zadanie- mieć czas na reakcję na zdarzenia zachodzące na obiekcie.Inną różnicą jest to, że korzystanie z systemu operacyjnego czasu rzeczywistego jest zawsze powiązane ze sprzętem, z obiektem, ze zdarzeniami zachodzącymi na obiekcie. System operacyjny czasu rzeczywistego koncentruje się na przetwarzaniu zdarzeń zewnętrznych. System operacyjny czasu rzeczywistego może działać podobnie interfejs użytkownika na systemie operacyjnym ogólnego przeznaczenia, ale ma on zupełnie inną strukturę. Ponadto użycie systemów operacyjnych czasu rzeczywistego jest zawsze specyficzne. Jeśli system operacyjny ogólnego przeznaczenia jest zwykle postrzegany przez użytkowników (a nie programistów) jako gotowy zestaw aplikacji, to system operacyjny czasu rzeczywistego służy jedynie jako narzędzie do tworzenia określonego kompleksu sprzętu i oprogramowania czasu rzeczywistego. Dlatego też najszerszą klasę użytkowników systemów operacyjnych czasu rzeczywistego stanowią twórcy systemów czasu rzeczywistego, osoby projektujące systemy sterowania i akwizycji danych. Projektując i rozwijając konkretny system czasu rzeczywistego, programista zawsze dokładnie wie, jakie zdarzenia mogą wystąpić na obiekcie oraz zna krytyczne ramy czasowe obsługi każdego z tych zdarzeń.System RT musi mieć czas, aby zareagować na zdarzenie, które miało miejsce w obiekcie w krytycznym dla zdarzenia terminie. Wartość czasu krytycznego dla każdego zdarzenia jest określona przez obiekt i samo zdarzenie i może być różna, ale czas reakcji systemu należy przewidzieć (obliczyć) podczas tworzenia systemu. Brak reakcji w przewidywanym czasie jest uważany za błąd w przypadku systemów czasu rzeczywistego.System musi być w stanie zareagować na jednocześnie zachodzące zdarzenia. Nawet jeśli jednocześnie wystąpią dwa lub więcej zdarzeń zewnętrznych, system musi mieć czas na reakcję na każde z nich w krytycznych dla tych zdarzeń przedziałach czasowych.

System operacyjny czasu rzeczywistego

System operacyjny ogólnego przeznaczenia

Główne zadanie

Miej czas na reakcję na zdarzenia zachodzące na sprzęcie

Optymalnie rozdzielaj zasoby komputera pomiędzy użytkownikami i zadaniami

Na czym się skupia?

Obsługa zdarzeń zewnętrznych

Przetwarzanie działań użytkownika

Jak jest umiejscowiony

Narzędzie do tworzenia konkretnego kompleksu sprzętu i oprogramowania czasu rzeczywistego

Postrzegany przez użytkownika jako zestaw aplikacji gotowych do użycia

Dla kogo jest przeznaczony?

Wykwalifikowany programista

Użytkownik średniozaawansowany

Twarde i miękkie systemy czasu rzeczywistego

Istnieją dwa rodzaje systemów czasu rzeczywistego – twarde systemy czasu rzeczywistego i miękkie systemy czasu rzeczywistego.

Twarde systemy czasu rzeczywistego w żadnym wypadku nie dopuszczają opóźnienia w reakcji systemu, ponieważ:

  • wyniki mogą być bezużyteczne, jeśli są spóźnione
  • Jeśli reakcja zostanie opóźniona, może dojść do katastrofy
  • Koszt spóźnienia może być nieskończony.

Przykłady twardych systemów czasu rzeczywistego - systemy pokładowe systemy sterowania, systemy zabezpieczeń awaryjnych, rejestratory zdarzeń awaryjnych.

Miękkie systemy czasu rzeczywistego charakteryzują się tym, że opóźnienie reakcji nie jest krytyczne, chociaż może prowadzić do wzrostu kosztu wyników i spadku wydajności całego systemu.Przykładem jest praca w sieci. Jeśli system nie miał czasu na przetworzenie następnego zaakceptowany pakiet, doprowadzi to do przekroczenia limitu czasu po stronie wysyłającej i ponownego wysłania (oczywiście w zależności od protokołu). Dane nie są tracone, ale wydajność sieci spada.Główną różnicę pomiędzy twardymi i miękkimi systemami czasu rzeczywistego można wyrazić w następujący sposób: twardy system czas rzeczywisty nigdy nie będzie spóźniał się z reakcją na zdarzenie, miękki system czasu rzeczywistego nie powinien spóźniać się z reakcją na zdarzenie

Jądro systemu operacyjnego

Rdzeń - Środkowa część system operacyjny (OS), który zapewnia aplikacjom skoordynowany dostęp do zasobów komputera, pamięci zewnętrznej Sprzęt komputerowy, zewnętrzne urządzenie wejścia i wyjścia, tłumaczące polecenia języka aplikacji na kod binarny zrozumiały dla komputera.Jako podstawowy element systemu operacyjnego, jądro jest najbardziej niski poziom abstrakcje umożliwiające aplikacjom dostęp do zasobów systemowych niezbędnych do ich działania. Zwykle jądro zapewnia taki dostęp do procesów wykonawczych odpowiednich aplikacji poprzez wykorzystanie mechanizmów komunikacji międzyprocesowej i dostęp aplikacji do wywołania systemowe system operacyjny.

Rdzeń monolityczny

Jądro monolityczne zapewnia bogaty zestaw abstrakcji sprzętowych. Wszystkie części monolitycznego jądra działają w tej samej przestrzeni adresowej. Jest to projekt systemu operacyjnego, w którym znajdują się wszystkie komponenty jego jądra składniki jeden program, użyj struktury ogólne danych i współdziałają ze sobą poprzez bezpośrednie wywoływanie procedur. Rdzeń monolityczny - najstarszy sposób organizacja systemów operacyjnych. Przykładem systemów z jądrem monolitycznym jest większość systemów UNIX.

Zalety: Szybkość działania, uproszczony rozwój modułów.

Wady: Ponieważ całe jądro działa w tej samej przestrzeni adresowej, awaria jednego z komponentów może zakłócić pracę całego systemu.

Niektóre stare jądra monolityczne, zwłaszcza systemy klasy UNIX/Linux, wymagały ponownej kompilacji przy każdej zmianie składu sprzętowego. Większość nowoczesnych jąder umożliwia ładowanie modułów podczas pracy, które wykonują część funkcji jądra. W tym przypadku komponenty systemu operacyjnego nie są niezależnymi modułami, ale komponentami jednego duży program zwane jądrem monolitycznym, które jest zestawem procedur, z których każda może wywołać każdą. Wszystkie procedury działają w trybie uprzywilejowanym.

Mikrojądro

Mikrojądro zapewnia jedynie podstawowe funkcje zarządzania procesami i minimalny zestaw abstrakcje do pracy ze sprzętem. Większość pracy jest wykonywana poprzez specjalne procesy użytkownika zwane usługami. Decydującym kryterium „mikrokernelizmu” jest umieszczenie wszystkich lub prawie wszystkich sterowników i modułów w procesach usługowych.

Zalety: Odporność na awarie sprzętu i błędy w elementach systemu. Główną zaletą architektury mikrojądra jest wysoki stopień modułowość jądra systemu operacyjnego. Dzięki temu znacznie łatwiej jest dodawać do niego nowe komponenty. W systemie operacyjnym mikrojądro można ładować i wyładowywać nowe sterowniki, systemy plików itp. bez przerywania jego działania. Proces debugowania komponentów jądra jest znacznie uproszczony, ponieważ nowa wersja sterowniki można załadować bez ponownego uruchamiania całego systemu operacyjnego. Komponenty jądra systemu operacyjnego nie różnią się zasadniczo od programów użytkownika, dlatego do ich debugowania można używać zwykłych narzędzi. Architektura mikrojądra poprawia niezawodność systemu, ponieważ awaria na poziomie nieuprzywilejowanego programu jest mniej niebezpieczna niż awaria na poziomie trybu jądra.

Wady: Przekazywanie danych pomiędzy procesami wymaga narzutu.

Środowisko wykonawcze

Wymagania dotyczące środowiska wykonawczego systemów czasu rzeczywistego są następujące:

  • mała pamięć systemowa - ze względu na możliwość jej osadzenia;
  • system musi być całkowicie rezydentny w pamięci, aby uniknąć zamiany lub zamiany stron pamięci;
  • system musi być wielozadaniowy - aby zapewnić maksimum efektywne wykorzystanie wszystkie zasoby systemowe;
  • rdzeń z priorytetem obsługi przerwań. Priorytet przerwania oznacza, że ​​proces, który jest gotowy do uruchomienia i ma określony priorytet, koniecznie ma pierwszeństwo w kolejce przed procesem o niższym priorytecie, szybko zastępuje go i przechodzi do wykonania. Jądro kończy wszelkie prace serwisowe, gdy tylko nadejdzie zadanie o najwyższym priorytecie. Zapewnia to przewidywalność systemu;
  • menedżer priorytetów - umożliwia twórcy aplikacji przypisanie każdemu modułowi startowemu priorytetu, który nie podlega systemowi. Przypisanie priorytetu służy do określenia kolejności wykonywania programów gotowych do wykonania. Alternatywą dla tego typu planowania jest harmonogram karuzelowy, w którym każdy program, który jest gotowy do kontynuowania, ma równe szanse na uruchomienie. Dzięki tej metodzie nie ma kontroli nad tym, który program zostanie wykonany i kiedy. Jest to niedopuszczalne w środowisku czasu rzeczywistego. Wysyłanie oparte na priorytetach i jądro z priorytetem przerwań dają twórcy aplikacji pełną kontrolę nad systemem. Jeśli wystąpi zdarzenie o wyższym priorytecie, system przestaje przetwarzać zadanie o niższym priorytecie i odpowiada na nowo otrzymane żądanie.

Połączenie właściwości opisanych powyżej tworzy potężny i efektywne środowisko wykonanie w czasie rzeczywistym.

Oprócz właściwości środowiska uruchomieniowego należy również wziąć pod uwagę usługę świadczoną przez jądro systemu operacyjnego czasu rzeczywistego. Rdzeniem każdego środowiska wykonawczego czasu rzeczywistego jest jądro lub moduł rozsyłający. Jądro kontroluje sprzęt komputera docelowego: centralny procesor, pamięć i urządzenia wejścia/wyjścia; kontroluje działanie wszystkich innych systemów i oprogramowanie o charakterze stosowanym. W systemie czasu rzeczywistego dyspozytor znajduje się pomiędzy sprzętem komputera docelowego a oprogramowaniem aplikacji. To zapewnia usługi specjalne, niezbędne do uruchamiania aplikacji czasu rzeczywistego. Usługa świadczona przez jądro zapewnia programy użytkowe dostęp do zasobów systemowych, takich jak pamięć lub urządzenia wejścia/wyjścia.

Jądro może zapewniać różne typy usług:

  • Wymiana międzyzadaniowa. Często konieczne jest przesyłanie danych pomiędzy programami w ramach tego samego systemu.Ponadto wiele aplikacji musi komunikować się z innymi systemami poprzez sieć. Komunikacja wewnętrzna może odbywać się poprzez system powiadamiania. Komunikację zewnętrzną można zorganizować albo za pomocą datagramu (najlepsza metoda dostarczania), albo za pośrednictwem linii komunikacyjnych (dostawa gwarantowana). Wybór jednej lub drugiej metody zależy od protokołu komunikacyjnego.
  • Separacja danych. W aplikacjach czasu rzeczywistego gromadzenie danych zajmuje najwięcej czasu. Dane często są niezbędne do działania innych programów lub są potrzebne systemowi do realizacji niektórych swoich funkcji. Wiele systemów zapewnia dostęp do sekcji pamięci współdzielonej. Kolejkowanie danych jest powszechne. W użyciu jest wiele rodzajów kolejek, z których każdy ma swoje zalety.
  • Przetwarzanie żądań z urządzeń zewnętrznych. Każdy program użytkowy jest podłączony w czasie rzeczywistym do jakiegoś urządzenia zewnętrznego. Jądro musi zapewniać usługi we/wy, które umożliwiają aplikacjom odczytywanie i zapisywanie na tych urządzeniach. W przypadku aplikacji czasu rzeczywistego często stosuje się plik ta aplikacja zewnętrzne urządzenie. Jądro musi zapewniać usługę ułatwiającą pracę ze sterownikami urządzeń. Na przykład umożliwij nagrywanie w językach wysoki poziom- takie jak C lub Pascal.
  • Postępowanie w sytuacjach specjalnych. Wyjątek to zdarzenie, które ma miejsce podczas wykonywania programu. Może być synchroniczny, jeśli jego wystąpienie jest przewidywalne, na przykład dzielenie przez zero. Może być również asynchroniczny, jeśli wystąpi w sposób nieprzewidywalny, na przykład spadek napięcia. Zapewnienie możliwości obsługi tego typu zdarzeń pozwala aplikacjom działającym w czasie rzeczywistym szybko i przewidywalnie reagować na zdarzenia wewnętrzne i zewnętrzne. Istnieją dwie metody obsługi wyjątków – użycie wartości stanu do wykrycia warunków błędu oraz użycie procedury obsługi wyjątków do przechwytywania warunków błędów i ich naprawienia.

Przegląd architektur RTOS

Na przestrzeni swojej historii architektura systemów operacyjnych uległa znacznemu rozwojowi. Jedna z pierwszych zasad konstrukcji, monolityczny System operacyjny (rysunek 1) polegał na przedstawieniu systemu operacyjnego jako zestawu modułów, które współdziałają ze sobą na różne sposoby w obrębie rdzenia systemu i zapewniają aplikacjom interfejsy wejściowe umożliwiające dostęp do sprzętu.

Level OS (Rysunek 2).Przykładem takiego systemu operacyjnego jest dobrze znany System MS-DOS. W systemach tej klasy aplikacje aplikacyjne mogły uzyskiwać dostęp do sprzętu nie tylko poprzez jądro systemu lub rezydentne w nim usługi, ale także bezpośrednio. Systemy RTOS budowane są na tej zasadzie od wielu lat. W porównaniu z monolitycznymi systemami operacyjnymi architektura ta zapewnia znacznie większy stopień przewidywalności reakcji systemu, a także pozwala na szybki dostęp aplikacje sprzętowe. Niekorzyść

To, co czyni takie systemy tak złymi, to brak wielozadaniowości. W ramach tej architektury problem przetwarzania zdarzeń asynchronicznych został zredukowany do buforowania komunikatów, a następnie sekwencyjnego odpytywania buforów i ich przetwarzania. Jednocześnie wysoka wydajność zapewniła dotrzymanie krytycznych terminów świadczenia usług kompleks obliczeniowy w porównaniu z szybkością procesów zewnętrznych.

Rysunek 2. Warstwowa architektura systemu operacyjnego

Jedną z najbardziej efektywnych architektur do budowy systemów operacyjnych czasu rzeczywistego jest architektura klient-serwer. Schemat ogólny System operacyjny działający w tej technologii pokazano na rysunku 3. Główną zasadą tej architektury jest przeniesienie usług systemu operacyjnego w postaci serwerów na poziom użytkownika, a mikrojądro realizuje funkcje menedżera wiadomości pomiędzy klientem programy użytkownika i serwery - usługi systemowe. Architektura ta zapewnia wiele korzyści pod względem wymagań dla systemów RTOS i systemów wbudowanych. Wśród tych zalet są:

1. Niezawodność systemu operacyjnego wzrasta, ponieważ każda usługa jest w zasadzie samodzielna aplikacja i łatwiej jest debugować i śledzić błędy.

2. Taki system lepiej się skaluje, ponieważ niepotrzebne usługi można wyłączyć z systemu bez wpływu na jego działanie.

3. Zwiększa się odporność systemu na uszkodzenia, ponieważ Zamrożoną usługę można uruchomić ponownie bez

zrestartuj system.

Rysunek 3. Budowa systemu operacyjnego w architekturze klient-serwer

Niestety, obecnie niewiele jest systemów operacyjnych wdrażanych na zasadzie klient-serwer. Do dobrze znanych systemów RTOS wdrażających architekturę mikrojądra należą OS9 i QNX.

Lista wykorzystanej literatury:

1) http://ru.wikipedia.org/wiki/Real_time_system operacyjny

2) http://www.asutp.ru/?p=600591

3) http://www.mka.ru/?p=40774

4) http://www.4stud.info/rtos/lecture1.html

5)http://www.ozon.ru/context/detail/id/3092042/

Witaj, Habro!
Dzisiaj o tym opowiem interesująca rzecz jako system operacyjny czasu rzeczywistego (RTOS). Nie jestem pewien, czy będzie to interesujące dla doświadczonych programistów, ale myślę, że nowicjuszom się spodoba.

Co to jest RTOS?

Jeśli zajrzymy do Wikipedii, zobaczymy aż 4 definicje.
Krótko mówiąc, RTOS to system operacyjny, który reaguje na zdarzenia zewnętrzne w określonym przedziale czasu. Stąd możemy zrozumieć główny cel RTOS - urządzenia, które wymagają szybkiej reakcji na zdarzenia (jednak w żadnym wypadku nie należy mylić działania RTOS z przerwaniami).

Dlaczego tego potrzebujemy?

Powodów jest całkiem sporo.
Po pierwsze, RTOS obsługuje wielozadaniowość, priorytety procesów semaforowych i wiele więcej.
Po drugie, jest bardzo lekki i prawie nie wymaga żadnych zasobów.
Po trzecie, to wszystko możemy uzyskać na niemal każdym sprzęcie (przykładowo FreeRTOS działa nawet na 8-bitowym AtMega).
I po czwarte: po prostu graj i baw się dobrze.

Przegląd 3 dobrze znanych systemów RTOS.

Uwaga: poniżej jest moja osobista opinia.
FreeRTOS
Jeden z najpopularniejszych obecnie systemów RTOS. Przeniesiony na ogromną ilość sprzętu. Oficjalna strona internetowa.
plusy
1) Bezpłatne
2) Przeniesiony do duża liczba gruczoł
3) Potężna funkcjonalność
4) Istnieją różne biblioteki: grafika, Internet i inne.
5) Dobra dokumentacja.
Minusy
1) Dość skomplikowany proces przenoszenia na nowy sprzęt.

Wniosek: To naprawdę profesjonalny RTOS z dobrą dokumentacją. Dla początkującego będzie dobrze, jeśli jego sprzęt ma już port.

KeilRTX
Do niedawna ten RTOS był komercyjny, ale ostatnio stał się oprogramowaniem typu open source. Działa tylko na architekturze ramienia. Oficjalna strona internetowa.
plusy
1)Za darmo
2) Łatwe przenoszenie na nowy sprzęt (w ramach architektury ramienia).
3) Istnieją różne biblioteki: grafika, Internet i inne.
Minusy
1) Praca z nią w Keil jest prawie niemożliwa
2) Nieznacznie zmniejszona funkcjonalność
3) Obsługiwane jest tylko ramię.
4)(wł osobiste doświadczenie) Przegrywa z wieloma RTOS-ami pod względem szybkości.
Wniosek: idealny dla początkujących i małych projektów.
uc/os
Potężny komercyjny system RTOS. Strona internetowa .
plusy
1) Świetna ilość funkcje i biblioteki.
2) Obsługuje dużo żelaza
Minusy
1) Komercyjne.
2) Trudne w użyciu.

Wniosek: nazywanie tego RTOS-em dla początkującego jest nadużyciem.

Inne ciekawe RTOS-y

RTLinux RTOS oparty na zwykłym Linuksie.
QNX RTOS oparty na systemie Unix.

Funkcje programowania przy użyciu RTOS

Cóż, przede wszystkim musisz zrozumieć, co następuje: RTOS to nie Windows. Nie można go zainstalować. Ten system po prostu kompiluje się z Twoim programem.
Podczas pisania programów w systemie RTOS funkcje w zwykłym znaczeniu nie są używane. Zamiast funkcji używane są procesy (lub zadania), z tą różnicą, że procesy, w przeciwieństwie do funkcji, są niekończące się pętle i nigdy się nie kończy (chyba, że ​​ktoś lub on sam go zabije – czyli wyładuje z pamięci).
Jeśli włączonych jest kilka procesów, RTOS przełącza je, zapewniając po kolei czas i zasoby maszyny. Tutaj pojawia się koncepcja priorytetu procesu – jeśli dwa procesy potrzebują czasu maszynowego w tym samym czasie, to RTOS przydzieli go temu, który ma wyższy priorytet.
RTOS posiada specjalne funkcje opóźniające - dzięki temu nie marnuje się czasu, gdy jeden proces jest opóźniony, a drugi jest wykonywany.
Porozmawiajmy teraz o czymś takim jak semafor – jest to element kontrolujący dostęp procesu do zasobów aplikacji. Dla każdego zasobu znajduje się znacznik - gdy proces potrzebuje zasobu, bierze go i wykorzystuje ten zasób. Jeśli nie ma tokena, proces będzie musiał poczekać, aż zostanie zwrócony. Dam ci przykład: różne procesy przesyłaj informacje przez jeden UART. Gdyby nie było semafora, wysyłaliby po kolei bajty i byłoby zamieszanie. I tak pierwszy proces wziął token na UART, wysłał wiadomość i przekazał ją drugiemu (i tak w nieskończoność).

Dodatkowe biblioteki RTOS.

RTOS-y często oferują różne biblioteki do pracy np. z grafiką, Internetem itp. Są naprawdę wygodne i nie wahaj się ich użyć. Należy jednak pamiętać, że bez RTOS-u, dla którego są napisane, nie będą działać.
Oto przykłady:
Dla RTX-a

Szybkość sterownika PLC (komputera) wpływa na wielkość błędu dynamicznego systemu automatyki i margines jego stabilności, jeśli występuje informacja zwrotna. Aby poprawić te właściwości, zastosowano szybkie moduły we/wy i komputer (PLC) z procesorem o wysokiej wydajności. Pozwala to poprawić charakterystykę dynamiczną systemu, jednak większość systemów operacyjnych (OS) nie może zapewnić tego samego czasu wykonania zadania, gdy jest ono uruchamiane wielokrotnie, to znaczy czas wykonania jest losowy rozmiar.

Aby wyeliminować ten problem, opracowano klasę systemów operacyjnych, które zapewniają deterministyczne (tj. nielosowe) czasy wykonania zadań i czasy reakcji na przerwania sprzętowe. Takie systemy operacyjne nazwano systemami operacyjnymi czasu rzeczywistego OS RV i podzielono na systemy operacyjne twardy i miękki w czasie rzeczywistym.

W trudnych systemach czasu rzeczywistego istnieje trudny próg czasowy. Jeśli zostanie przekroczony, następują nieodwracalne, katastrofalne skutki.

W miękkich systemach czasu rzeczywistego wydajność systemu pogarsza się wraz ze wzrostem czasu reakcji sterowania. System może działać słabo, ale bez katastrofalnych konsekwencji.



Do rozwiązywania trudnych problemów w czasie rzeczywistym stosuje się podejście klasyczne, tj. budowanie systemu sterowanego zdarzeniami. Gdzie dla każdego zdarzenia w systemie ustalony jest jasno określony czas reakcji i określony priorytet. Praktyczna realizacja takich systemów jest złożona i zawsze wymaga starannego projektowania i modelowania.

W związku z tym systemy operacyjne RT różnią się zachowaniem, a nie zasada wewnętrzna budowa. Na przykład sala operacyjna System Windows XP przy zarządzaniu procesami powolnymi (termicznymi) można uznać za RT OS, czyli jeżeli prawdopodobieństwo wystąpienia jest niedopuszczalne duże opóźnienia wystarczająco niski, aby osiągnąć wymagany poziom usług.

W twardym systemie operacyjnym RT proces jest przekazywany do wykonania jednocześnie ze wskazaniem wymaganego czasu wykonania. Harmonogram systemu operacyjnego albo pozwala na wykonanie, gwarantując wymagany czas, albo odrzuca proces jako niemożliwy do wykonania. Aby to zrobić, osoba planująca musi dokładnie wiedzieć, ile czasu zajmuje wykonanie zadania każdej funkcji systemu operacyjnego.

Podstawowe wymagania dotyczące zapewnienia trybu czasu rzeczywistego są następujące:

1) zadania o wysokim priorytecie należy zawsze zakończyć w pierwszej kolejności;

2) należy wykluczyć inwersję priorytetów;

3) procesy i wątki, których czasu wykonania nie można zaplanować, nie powinny nigdy całkowicie zajmować zasobów systemowych.

Odwrócenie priorytetów odnosi się do sytuacji, w której wątek o wysokim priorytecie żąda zasobu, który jest już zajęty przez wątek o niższym priorytecie.

Główną metodą rozwiązania tego problemu w systemie operacyjnym RT jest dziedziczenie priorytetów, co jest następujące. Jeśli wątek o niskim priorytecie blokuje wykonanie kilku wątków o wysokim priorytecie, wątek o niskim priorytecie ignoruje swój pierwotny priorytet i wykonuje się z najwyższym priorytetem w bloku oczekujących na niego wątków. Po zakończeniu swojej pracy wątek powraca do pierwotnego priorytetu.

Aby zapewnić tryb czasu rzeczywistego, w systemie operacyjnym można wdrożyć następujące wymagania

1) obsługa dynamicznych priorytetów, które można zmieniać w trakcie wykonywania zadania, w trybie wielozadaniowym z jądrem z wywłaszczaniem (zarówno dla procesów, jak i wątków);

2) możliwość dziedziczenia priorytetów;

3) możliwość wywłaszczania zadań przez jądro systemu operacyjnego;

4) ograniczone opóźnienie przerwania (czas, w którym przerwanie jest wyłączone – podczas przetwarzania krytycznej części kodu);

5) realizacja usług OS z priorytetem nadanym przez Klienta usługi.

Systemy RT zazwyczaj nie mają pamięci wirtualnej, ponieważ ta metoda wykorzystuje stronicowanie dysku, które ma nieprzewidywalny czas wykonania.

Najpopularniejszymi systemami operacyjnymi w sterownikach PLC i komputerach do rozwiązywania problemów z automatyzacją są Windows CE, QNX Neutrino i OS-9.

QNX Neutrino

QNX Neutrino firmy QNX Software Systems to system operacyjny czasu rzeczywistego, który zapewnia wielozadaniowość z priorytetami. Obsługuje mikroprocesory z rodziny ARM, StrongARM, xScale, x86, MIPS, PowerPC, SH-4 i jest w stanie wykonać do 250 zadań na jednym węźle.

QNX odnosi się do systemu operacyjnego opartego na mikrojądrze, tj. tylko narzędzia podstawowe funkcje jądra - zarządzanie przestrzenią adresową pamięci RAM i pamięci wirtualnej, procesami i wątkami, zapewnia komunikację międzyprocesorową. Składa się z jądra, harmonogramu procesów i usług. Jest zbudowany w oparciu o usługi - małe zadania, które wykonują główne funkcje systemu operacyjnego. Ta struktura pozwala wyłączyć niepotrzebne funkcje bez zmiany jądra. Każdy sterownik, aplikacja, protokół lub system plików działa poza jądrem, w chronionej przestrzeni adresowej.

Odwrócenie priorytetów można przezwyciężyć za pomocą rozproszonego dziedziczenia priorytetów. System operacyjny QNX znalazł zastosowanie zarówno na niższym poziomie systemu sterowania procesem (OS dla sterowników), jak i na wyższym poziomie (OS dla oprogramowania SCADA).

System operacyjny OS-9 firmy Microware System jest wielozadaniowy i obsługuje wielu użytkowników, działając w miękkim czasie rzeczywistym. Używany w aplikacjach wbudowanych na platformach ARM, StrongARM, MIPS, PowerPC, Hitachi SuperH, x86, Pentium, XScale, Motorola 68K.

OS-9 to klasa systemów operacyjnych czasu rzeczywistego typu Unix, oferująca wiele znanych funkcji środowiska Unix. Wszystko elementy funkcjonalne OS-9, łącznie z jądrem, hierarchiczny menedżery plików, system wejścia/wyjścia i narzędzia programistyczne są zaimplementowane jako niezależne moduły. Łącząc te moduły, programista może tworzyć systemy o szerokiej gamie konfiguracji - od miniaturowych, samodzielnych jąder, kontrolerów opartych na pamięci ROM, po pełnowymiarowe systemy programistyczne dla wielu użytkowników.

OS-9 zapewnia wszystkie podstawowe funkcje systemów operacyjnych czasu rzeczywistego: zarządzanie przerwaniami, wymianę informacji między zadaniami i synchronizację zadań.

OKNA OC

system operacyjny Okna znany każdemu jako system stacjonarny. Ale to dotyczy przede wszystkim Platformy Windowsowe 3.xx/95, którym naprawdę brakuje obsługi czasu rzeczywistego. Sytuacja zmieniła się radykalnie wraz z pojawieniem się systemu Windows NT.

Sam Windows NT nie jest systemem operacyjnym czasu rzeczywistego ze względu na szereg swoich funkcji. System obsługuje przerwania sprzętowe, a nie programowe, nie ma priorytetowego przetwarzania procedur odroczonych itp.

Jednak pod koniec XX wieku wiele firm podjęło poważne próby przekształcenia Windows NT w twardy system operacyjny czasu rzeczywistego. I te próby zakończyły się sukcesem. Firma VenturCom opracowała moduł Real Time Extension (RTX), podsystem czasu rzeczywistego (RT) dla systemu Windows NT. Podsystem ten posiada własny harmonogram ze 128 priorytetami przerwań, niezależnymi od NT. Maksymalny czas reakcji na przerwanie wynosi 20-80 µs, niezależnie od obciążenia procesora. Teraz przy każdym przerwaniu timera priorytet jest przekazywany do zadań krytycznych czasowo. A w czasie pozostałym do ich pracy można wykonywać procesy „wolne”: wejście/wyjście, praca z dyskiem, praca sieciowa, interfejs graficzny i tak dalej.

Windows CE.NET

Wielozadaniowy system operacyjny Microsoft Windows CE.NET, pracujący w czasie rzeczywistym, obsługuje mikroprocesory z Architektura ARM, StrongARM i xScale, MIPS, SH, kompatybilne z X86. 32-bitowy OknaCE powstał przez Microsoft dla małych komputerów (kalkulatorów), ale ze względu na szereg zalet zaczął uzurpować sobie rolę standardowego systemu operacyjnego czasu rzeczywistego. Te zalety obejmują:

1) otwartość i łatwość dokowania z innymi systemami operacyjnymi Rodzina Windowsów;

2) czas reakcji rzędu 500 μs;

3) znacznie mniejszy w porównaniu do innych systemów operacyjnych Wymagania Windowsa do zasobów pamięci i możliwości budowania systemów bezdyskowych.

4) pozwala na jednoczesną realizację do 32 procesów;

5) ma 256 poziomów priorytetów;

6) obsługuje wielozadaniowość z wywłaszczaniem;

7) zapewnia karuzelowe wykonanie łańcuchów o tym samym priorytecie;

8) obsługuje zagnieżdżone przerwania;

9) ma średni czas przetwarzania przerwania 2,8 μs, obsługuje przerwania zagnieżdżone;

10) zapewnia czas przetwarzania wątku przerwań (Interrupt Service Thread, IST) równy 17,9 μs;

11) w minimalnej konfiguracji można zainstalować z pamięcią RAM o wielkości 200 KB.

Planowanie odbywa się w oparciu o priorytety, a dziedziczenie priorytetów służy do eliminacji inwersji. Pomimo możliwości pracy z pamięć wirtualna, aby zapewnić twardy tryb czasu rzeczywistego, jest on wyłączony.

Windows CE .NET obsługiwany przez Microsoft Studio wizualne Języki .NET i Microsoft eMbedded Visual C++ Programowanie wizualne C++, Visual C# i Visual Basic.INTERNET

A w 1999 r przez Directa firmy Koyo Windows CE został po raz pierwszy zainstalowany na platformie microPLC.

Dobór oprogramowania i sprzętu systemu operacyjnego Najwyższy poziom System sterowania procesem jest określony przez zadanie aplikacji (OS ogólnego zastosowania lub RTOS). Ale najbardziej popularny i powszechny różne opcje System operacyjny Windows (Windows NT/2000). Wyposażone są w narzędzia programowe i sprzętowe prezentowanego najwyższego poziomu zautomatyzowanych systemów sterowania procesami komputery osobiste(komputer) inna moc i konfiguracje - stacje robocze operatorów/dyspozytorów i specjalistów, serwery baz danych (DB) itp.

Sytuacja ta powstała w wyniku szeregu przyczyn i trendów w rozwoju nowoczesnych technologii informatycznych i mikroprocesorowych.

Oto niektóre z głównych argumentów przemawiających za systemem Windows:

Windows jest bardzo rozpowszechniony na świecie, w tym w Rosji, dlatego łatwo jest znaleźć specjalistę, który mógłby utrzymać systemy oparte na tym systemie operacyjnym;

Ten system operacyjny ma wiele aplikacji, które zapewniają rozwiązania różnych problemów związanych z przetwarzaniem i prezentacją informacji;

System operacyjny Windows i aplikacje Windows są łatwe do nauczenia i mają standardowy, intuicyjny interfejs;

Aplikacje działające pod Sterowanie Windowsem, wspierać publicznie dostępne standardy wymiany danych;

Systemy oparte na systemie Windows są łatwe w obsłudze i rozwoju, co czyni je opłacalnymi zarówno pod względem wsparcia, jak i stopniowego rozwoju;

Microsoft się rozwija technologia informacyjna(IT) za Okna wysokie w tempie, które pozwala firmom korzystającym z tej platformy „nadążać za duchem czasu”.


Planowanie zadań to jedna z kluczowych koncepcji wielozadaniowości i wieloprocesorowości, zarówno w systemach operacyjnych ogólnego przeznaczenia, jak i systemach operacyjnych czasu rzeczywistego. Planowanie polega na przypisywaniu priorytetów procesom w kolejce priorytetów. Kod programu Osoba wykonująca to zadanie nazywana jest planistą