Pierwszą rzeczą, jaka przychodzi nam na myśl, gdy słyszymy słowo „system operacyjny”, jest oprogramowanie używane w komputerach stacjonarnych i laptopach, takich jak Microsoft Windows, Linux, Ubuntu itp. Oraz Android na smartfony. W rzeczywistości większość cyfrowych urządzeń elektronicznych ma jakiś system operacyjny, który został opracowany przez program mikrokontrolera. Ewolucja mikrokontrolera utorowała drogę dla wielu wbudowanych aplikacji systemowych, które odgrywają kluczową rolę w naszym codziennym życiu w ten czy inny sposób.
Jednym z takich systemów, o których ostatnio słyszeliśmy, jest system operacyjny czasu rzeczywistego lub po prostu określany jako „RTOS”. RTOS to system operacyjny używany w aplikacjach czasu rzeczywistego, co oznacza aplikacje przetwarzające dane w określonym czasie. QNX i VxWorks to dwa różne systemy operacyjne czasu rzeczywistego, w dużej mierze stosowane w środowiskach przemysłowych i akademickich. Celem tego artykułu jest dokonanie obiektywnego porównania między nimi.
QNX jest komercyjnym systemem operacyjnym czasu rzeczywistego, pierwotnie opracowanym dla systemów wbudowanych i pierwotnie opracowanym przez Quantum Software Systems na początku lat 80. Firma z siedzibą w Kanadzie została później przemianowana na QNX Software Systems i ostatecznie przejęta przez Research in Motion (RIM) do użytku jako podstawa dla ich systemu operacyjnego BlackBerry 10 i popularnego wówczas Blackbooka Playbook. Wersja systemu operacyjnego użyta w Playbook to QNX Neutrino, która została zbudowana na prawdziwej architekturze mikrojądra. QNX był pierwszym komercyjnym systemem operacyjnym opartym na mikrojądrze. QNX jest w zasadzie uniksowym systemem operacyjnym opartym na prawdziwym projekcie mikrojądra i architekturze modułowej, w której elementy systemu operacyjnego działają jako zadania, znane jako Resource Managers, co pozwoliłoby programistom wyłączyć wszelkie funkcje, które ich zdaniem nie są wymagane już w danym systemie. Najlepsze w QNX jest to, że opiera się ono na komunikacji międzyprocesowej opartej na komunikatach.
VxWorks to system operacyjny w czasie rzeczywistym, specjalnie zaprojektowany do przetwarzania rozproszonego dla aplikacji w czasie rzeczywistym z systemami wbudowanymi. Jest to zastrzeżony system operacyjny czasu rzeczywistego opracowany przez Wind River Systems, kalifornijską firmę specjalizującą się w tworzeniu oprogramowania wbudowanego dla inteligentnych systemów połączonych. VxWorks to wiodący w branży system RTOS, który buduje systemy i urządzenia wbudowane od ponad trzech dekad. Jest to monolityczne jądro z rozbudowaną komunikacją między procesami i funkcjami synchronizacji. Każda kompilacja VxWorks jest unikalna ze względu na architekturę, w której cały system operacyjny działa w przestrzeni jądra, co oznacza, że wszystkie usługi jądra i usługi użytkownika istnieją w tej samej przestrzeni adresowej, co przyspiesza działanie systemu operacyjnego. Zapewnia funkcje debugowania, monitorowanie wydajności, zarządzanie pamięcią, planowanie procesora i inne funkcje systemu operacyjnego za pośrednictwem wywołań systemowych.
Oba są bardzo unikalnymi systemami operacyjnymi w czasie rzeczywistym, specjalnie przeznaczonymi do aplikacji w czasie rzeczywistym z systemami wbudowanymi, każdy z mnóstwem różnych komponentów o różnych funkcjach. Oba systemy są szeroko stosowane w dużych środowiskach przemysłowych i akademickich i działają od ponad dziesięcioleci. QNX to komercyjny system RTOS opracowany przez kanadyjską firmę Quantum Software Systems na początku lat 80. XX wieku, którą później nabył RIM w 2010 r. VxWorks to autorskie oprogramowanie opracowane przez kalifornijską firmę Wind River Systems, lidera w branży specjalizującej się w tworzeniu oprogramowania wbudowanego dla inteligentnych połączonych produktów i systemów.
Oba systemy operacyjne używają jądra w czasie rzeczywistym do krytycznych aplikacji, które przetwarzają dane, co oznacza, że system podlega ograniczeniom w czasie rzeczywistym, które gwarantują reakcję w ramach wcześniej określonych ograniczeń czasowych, zwanych również „terminami”. Główna różnica polega na architekturze - podczas gdy QNX opiera się na architekturze przekazywania komunikatów, VxWorks nadaje się do architektury pamięci współdzielonej. Przekazywanie wiadomości ma fundamentalne znaczenie dla konstrukcji jądra, która pozwala systemowi przekazywać informacje z jednego zadania do drugiego lub do kilku innych w systemie. Architektura pamięci współdzielonej odnosi się do systemu, który ma własną prywatną przestrzeń adresową dla fizycznie rozproszonych pamięci.
Jedną z kluczowych różnic między dwoma systemami operacyjnymi w czasie rzeczywistym jest to, że QNX jest systemem operacyjnym opartym na mikrojądrze, podczas gdy VxWorks to jądro monolityczne. Mikrojądro jest jak mały system operacyjny, który wykorzystuje wywołania systemowe do zarządzania podstawowymi usługami, takimi jak zarządzanie przestrzenią adresową, zarządzanie wątkami i komunikacja międzyprocesowa. Odnosi się do systemu, który wymaga ograniczonego zestawu prymitywów i minimalnej zależności oprogramowania do wdrożenia systemu operacyjnego. Z kolei monolityczne jądro zarządza wszystkimi podstawowymi usługami i usługami zdefiniowanymi przez użytkownika, w tym komunikacją między procesami w chronionej przestrzeni jądra. Jako monolityczne jądro, VxWorks jest samodzielne.
Każdy wątek lub proces ma własny priorytet w QNX. W QNX wszystkie procesy są uruchamiane na zasadzie zapobiegawczej opartej na priorytetach, co oznacza, że proces o najwyższym priorytecie uzyskuje najpierw dostęp do procesora, a priorytety mieszczą się w zakresie od 0 do 31. Planowanie odbywa się w czasie rzeczywistym, a każdy wątek dziedziczy priorytet jego rodzica domyślnie. Gdy dwa wątki mają ten sam priorytet, QNX stosuje inne metody planowania, takie jak FIFO, Round-Robin i Sporadic Scheduling. Z drugiej strony VxWorks wykorzystuje tylko dwa typy algorytmów planowania: zapobiegawcze oparte na priorytecie i Round-Robin. Razem zapewniają one większy stopień kontroli użytkowników w celu wydajnego planowania.
Oba są opartymi na jądrze systemami operacyjnymi czasu rzeczywistego przeznaczonymi do aplikacji w czasie rzeczywistym, które wymagają przetworzenia i ukończenia zadań w miarę, jak nadchodzą w ramach wcześniej określonego ograniczenia czasowego, zwanego inaczej terminami. Obie działają na rynku od ponad 25 lat i specjalizują się w opracowywaniu wbudowanych produktów i systemów, ale tutaj kończą się wszystkie podobieństwa. QNX jest systemem operacyjnym czasu rzeczywistego opartym na mikrojądrze, który sam w sobie jest dość fascynujący, dzięki architekturze opartej na przekazywaniu komunikatów, która jest idealna do tworzenia niezawodnych systemów rozproszonych. VxWorks to monolityczne jądro oparte na architekturze pamięci wspólnej, dzięki czemu idealnie nadaje się do dużych środowisk przemysłowych, takich jak systemy motoryzacyjne, awionika, elektronika użytkowa itp..