Linked by Thom Holwerda on Thu 18th Nov 2004 10:19 UTC
QNX I think that everyone reading OSNews will have heard at least something about QNX. You can regard this article as an introduction, but also as a review, and as a "Is-QNX-Ready-For-The-Desktop? article". To start off, I put together a short explanation of the merits of using a microkernel. Let me start off by saying that QNX Software Systems (QSS) does not aim towards the desktop with their Neutrino RTOS.
Permalink for comment
To read all comments associated with this story, please click here.
by M^2 on Thu 18th Nov 2004 23:18 UTC

target and philosophy of an RTOS: having a kernel capable of granting user applications to safely satisfy deadlines, temporal constraints
(One can also think a media player has to respect a time constraint: the next frame of an MPEG4 movie must be rendered within 40 ms, otherwise artifacts will be noticeable)
in a real time environment a situation as deterministic and predictable as possible is required , so the application must be allowed to preempt other applications with lower priority, and the threads generated by her in the kernel should preempt lower priority kernel threads (if any). to enhance the deterministic factor , virtual memory and paging is typically disabled: the application is constantly kept in memory (optimal case: application in cache), scheduling times are kept as constant as possible
(anyway, if the user application computation is algorithmically too complex to be feasible within the 40 ms, the application will fail, but it will be not the kernel's fault , but of the one who didnt choose a better cpu or more memory)

With this said, RT concepts are also useful in the desktop world, because they can inspire the design of the OS kernel to achieve low or at least predictable SYSCALL latencies, and to design elegantly for kernel thread concurrency and mutual preemptability (unless the kernel has no services potentially interfering with RT user applications), and low overhead IPC

BTW, i believe IPC shouldnt be classified in "sync" or "async" only ... QNX's may be synchronous but this doesnt impede the OS's being fully realtime supportive
Mach's IPC is poorly efficient, because of an actual management overhead (one thing other OSs, for example DragonFlyBSD try to solve)