Pierwszą rzeczą, która przychodzi nam do głowy, gdy słyszymy słowo system operacyjny jest program używany w naszych komputerach stacjonarnych i laptopach, takich jak Microsoft Windows, Linux, Ubuntu, itp, i Android dla smartfonów. W rzeczywistości większość cyfrowych urządzeń elektronicznych uruchamia wewnątrz jakiś system operacyjny, który jest rozwijany przez program mikrokontrolera. Ewolucja mikrokontrolera utorowała drogę dla licznych aplikacji systemów wbudowanych, 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łyszymy, jest Real Time Operating System, lub po prostu określany jako „RTOS”. RTOS jest systemem operacyjnym używanym w aplikacjach czasu rzeczywistego, czyli takich, które przetwarzają dane w określonym czasie. QNX i VxWorks to dwa różne systemy operacyjne czasu rzeczywistego, w dużej mierze wykorzystywane w środowiskach przemysłowych i akademickich. Celem artykułu jest dokonanie bezstronnego porównania tych dwóch systemów.

Czym jest QNX?

QNX to komercyjny system operacyjny czasu rzeczywistego opracowany początkowo dla systemów wbudowanych, który został pierwotnie opracowany przez Quantum Software Systems na początku lat 80. Kanadyjska firma została później przemianowana na QNX Software Systems i ostatecznie przejęta przez Research in Motion (RIM) do wykorzystania jako podstawa ich BlackBerry 10 OS i popularnego wówczas BlackBerry Playbook. Wersja systemu operacyjnego zastosowana w Playbooku to QNX Neutrino, który został zbudowany na prawdziwej architekturze mikrokernela. QNX był pierwszym komercyjnie udanym systemem operacyjnym opartym na mikrokernelu. QNX to w zasadzie uniksopodobny system operacyjny oparty na prawdziwej architekturze mikrokernela i architekturze modułowej, w której elementy systemu operacyjnego są uruchamiane jako zadania, znane jako menedżerowie zasobów, co pozwoliłoby deweloperom wyłączyć każdą funkcjonalność, która ich zdaniem nie jest już potrzebna w danym systemie. Najlepszą rzeczą w QNX jest to, że opiera się on na komunikacji międzyprocesowej opartej na komunikatach.

Czym jest VxWorks?

VxWorks to system operacyjny czasu rzeczywistego zaprojektowany specjalnie do obliczeń rozproszonych dla aplikacji czasu rzeczywistego z systemami wbudowanymi. Jest to zastrzeżony system operacyjny czasu rzeczywistego opracowany przez Wind River Systems, firmę z siedzibą w Kalifornii, specjalizującą się w tworzeniu oprogramowania wbudowanego dla inteligentnych systemów połączonych. VxWorks jest wiodącym w branży systemem RTOS, który od ponad trzech dekad służy do budowy systemów i urządzeń wbudowanych. Jest to monolityczne jądro z rozbudowanymi funkcjami komunikacji międzyprocesowej i synchronizacji. Każdy build VxWorks jest unikalny 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 wykonywanie systemu operacyjnego. Zapewnia funkcje debugowania, monitorowania wydajności, zarządzania pamięcią, planowania procesora i innych funkcji systemu operacyjnego poprzez wywołania systemowe.

Różnica między QNX a VxWorks

  1. Podstawy QNX i VxWorks





Oba są bardzo unikalnymi systemami operacyjnymi czasu rzeczywistego przeznaczonymi specjalnie dla aplikacji czasu rzeczywistego z systemami wbudowanymi, z których każdy ma mnóstwo różnych komponentów o różnych funkcjonalnościach. Oba systemy są szeroko stosowane w dużych środowiskach przemysłowych i akademickich i są w użyciu od ponad dekad. QNX to komercyjny RTOS opracowany przez kanadyjską firmę Quantum Software Systems we wczesnych latach 80-tych, która została później przejęta przez RIM w 2010 roku. VxWorks jest zastrzeżonym oprogramowaniem opracowanym przez kalifornijską firmę Wind River Systems, lidera branży specjalizującego się w budowaniu oprogramowania wbudowanego dla inteligentnych połączonych produktów i systemów.

Architektura QNX i VxWorks

Oba systemy operacyjne wykorzystują jądro czasu rzeczywistego dla aplikacji krytycznych, które przetwarzają dane w miarę ich napływania, co oznacza, że system podlega ograniczeniom czasu rzeczywistego, które gwarantują odpowiedź w określonym czasie, inaczej zwanym „terminami”. Główna różnica leży w architekturze – podczas gdy QNX jest oparty na architekturze przekazywania komunikatów, VxWorks nadaje się do architektury pamięci współdzielonej. Przekazywanie wiadomości jest fundamentalne dla projektu jądra, które pozwala systemowi na przekazywanie informacji z jednego zadania do innego lub do kilku innych w systemie. Architektura pamięci współdzielonej odnosi się do systemu, który posiada własną prywatną przestrzeń adresową dla fizycznie rozproszonych pamięci.

Kernel

Jedną z kluczowych różnic pomiędzy tymi dwoma systemami operacyjnymi czasu rzeczywistego jest to, że QNX jest systemem operacyjnym opartym na mikrokernelu, podczas gdy VxWorks jest jądrem monolitycznym. Mikrokernel 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 od oprogramowania, aby wdrożyć system operacyjny. Z drugiej strony, jądro monolityczne zarządza wszystkimi podstawowymi usługami i usługami zdefiniowanymi przez użytkownika, w tym komunikacją międzyprocesową w chronionej przestrzeni jądra. Jako jądro monolityczne, VxWorks jest samowystarczalny.

Scheduling



Każdy wątek lub proces ma w QNX swój własny priorytet. W QNX, wszystkie procesy działają na zasadzie priorytetu, co oznacza, że proces o najwyższym priorytecie ma dostęp do procesora jako pierwszy, a priorytety wahają się od 0 do 31. Planowanie odbywa się w czasie rzeczywistym i każdy wątek domyślnie dziedziczy priorytet swojego rodzica. Gdy dwa wątki mają ten sam priorytet, QNX stosuje inne metody szeregowania, takie jak FIFO, Round-Robin i Sporadic Scheduling. VxWorks natomiast używa tylko dwóch typów algorytmów szeregowania, opartych na priorytecie preemptive i szeregowaniu Round-Robin. Razem zapewniają one użytkownikom większy stopień kontroli nad efektywnym szeregowaniem.

Podsumowanie QNX Vs. VxWorks

Oba są systemami operacyjnymi czasu rzeczywistego opartymi na jądrze, przeznaczonymi dla aplikacji czasu rzeczywistego, które wymagają, aby zadania były przetwarzane i wykonywane w miarę ich napływu w określonym czasie, inaczej zwanym terminami. Oba są w branży od ponad 25 lat i specjalizują się w rozwoju produktów i systemów wbudowanych, ale na tym podobieństwa się kończą. QNX to oparty na mikrokernelu system operacyjny czasu rzeczywistego, który sam w sobie jest dość fascynujący, dzięki architekturze opartej na przekazywaniu komunikatów, która idealnie nadaje się do tworzenia niezawodnych systemów rozproszonych. VxWorks jest monolitycznym jądrem opartym na architekturze pamięci współdzielonej, co czyni go idealnym dla dużych środowisk przemysłowych, takich jak systemy samochodowe, awionika, elektronika konsumencka itp.