QNX RTOS
I lowkey want to try it out with Introduction to the QNX RTOS with Raspberry Pi.
Popular in the automotive market, first to power infotainment systems and then transitioning more to ADAS. It is also used as the operating system of various medical devices, robots and industrial systems.
In fact, QNX retains its origins as a general-purpose operating system that can be used anywhere and by any- one familiar with UNIX-like operating systems such as Linux and FreeBSD. Using a shell with standard tools, a C/C++ compiler or a Python interpreter, anyone familiar with those other systems can write and run programs on a QNX system. Code written to standard interfaces such as C11, C++17 or POSIX will, in most cases, require just recompilation for QNX. The API for processes, threads, file systems, sockets and more, while implemented very differently from other systems, still looks the same for those used to system-level programming on other UNIX-like operating systems.
The design of the QNX RTOS, which is intended to run on modern, full-feature CPUs, is often pulled in different directions in response to customer demands.
Is QNX a variant of Linux?
No, QNX is an operating system built around the Neutrino microkernel, which shares no code with the monolithic Linux kernel. Also, the original QNX operating system predates Linux by quite a few years.
Is QNX Neutrino a true microkernel?
Yes, QNX Neutrino provides a limited set of functionality, such as scheduling, inter-process communication, synchronization primitives and timers. Much of the functionality of a monolithic kernel is performed by user-mode processes that are completely separated from the kernel, i.e., run in a non-privileged mode, each with its own address space. That said, the kernel is bundled with a few services that do run in privileged mode and share the same address space as the kernel - the memory manager, path manager and process manager. Microkernel purists may object to such a de- sign choice, but it was felt that running these specific services as stand-alone processes would complicate the system and incur a significant performance penalty.