Comment by ducktective
3 years ago
1- What's the FOSS alternative that is as good as QNX nowadays? FreeRTOS, NuttX, Zephyr etc are used for MCUs not general purpose computation AFAIK
2- What tech stack (language) you used for those challenges?
3- Your idea on Lisp (for these applications)?
QNX was a true microkernel architecture that worked, and worked well. The basic building block was called IIRC Send/Receive/Reply: Every "system" call looked like a regular function call, but would "Send" a message to a different process, and (usually) suspend the caller; The other process would "Receive", do whatever was requested, and "Reply", at which point control went back (with the response) to the calling process. IIRC it was also possibly to do async calls, but in that case the other process would call ("Send") the response back, rather than "Reply". I might be confusing this with another system though.
device drivers weren't privileged - they were just another process you called into, and could be restarted in the case of a fault (rather than kernel panic or blue screen).
A system that doesn't provide this is not an alternative to QNX; It's just another operating system (which are all, in some ways, alternative to each other and thus QNX, but ...)
Sounds like Erlang !
1. Nothing. Someone was writing a QNX-type kernel in Rust. What happened to that? There's L4, but it's too low-level. It's more of a hypervisor. People usually run another OS, usually a stripped-down Linux, on top of L4. QNX offers a POSIX API, so you can run applications directly.
2. C++. Here's the source code. [1]
3. No.
[1] https://github.com/John-Nagle/Overbot/
>People usually run another OS, usually a stripped-down Linux, on top of L4.
Look into Genode.
> 3. No.
Why? No hope for real RT? (Or otherwise more generally due to the GC?)
>What's the FOSS alternative that is as good as QNX nowadays? FreeRTOS, NuttX, Zephyr etc are used for MCUs not general purpose computation AFAIK
SeL4 with CAmkES, or Genode.
How about WindRiver Linux? https://www.windriver.com/products/linux
Excluded, because it's Linux, with all its issues.
Huge TCB being the main one.
3 replies →
In automotive infotainment systems, where QNX was used a lot in the past, it mostly had been replaced with combinations of Linux or Android on the non-realtime critical systems, and smaller microcontrollers which run realtime OS (OSEK and autosar derivates). The latter are usually not open source.
QNX is NVidia's deployment target OS with DRIVE OS for critical systems, with Linux used for development.
Dunno if it’s an alternative but Linux had RT_PREEMPT and you can build a kernel that’s fully preemptable.
It's good, but ... there's "fully preemptable" and there's "fully preemptable". QNX is one of those, RT_PREEMPT kernels are the other.
I just remembered that I've been running my desktop machine with `preempt=full` for a while now. I wonder why it's not the default for consumer distros yet.
RT_PREEMT has nothing to do with "real" realtime. You never know WHEN the preemtion is gonna happen. Might be in 20ms, might be in 200.
Minix 3 is closest to "as good as" minus the realtime support.