Think of a traditional operating system like a big factory where everything happens in one huge building. A microkernel is like having a small management office that coordinates many smaller, specialized workshops.
In CMRX, the microkernel is tiny and only does the most essential jobs:
Everything else runs as separate, protected programs.
In a traditional system, if any part breaks, everything can crash. Even if you use traditional partition-based memory protection a kernel-resident driver can still crash the kernel. With a microkernel:
Security experts have a saying: “smaller is more secure.” CMRX’s kernel is so small that it’s much easier to verify it works correctly. This matters for safety-critical devices like medical equipment or industrial controls.
All other services run as regular processes:
This means even critical services like drivers are protected from each other. The fact that these services are running separately means they can easily be removed if they are not needed.
Since programs can’t directly access each other’s memory, they communicate through well-defined APIs (Application Programming Interfaces). APIs are used everywhere:
You can update one part without touching others. Need to fix the WiFi driver? Update just that program. The rest of your system keeps running with the old, working code.
Test each program separately. You don’t need to test every combination of every feature. Each program has clear boundaries and responsibilities.
Programs are self-contained with clear APIs. You can reuse a sensor program in different products without changes.
When something goes wrong, you know exactly which program caused it. No more hunting through millions of lines of code to find a bug.
Traditional RTOS (like FreeRTOS):
CMRX:
Full-scale microkernels:
CMRX:
People worry that microkernels are slow because programs have to send messages instead of directly calling functions. CMRX solves this by relying on remote procedure calling instead of message passing.
Message passing can be done fast if memory mapping unit is available, which allows zero-copy message reception. Microcontrollers are not equipped by mapping unit so copy is not avoidable. To avoid doing so CMRX performs remote procedure call which transfers calling thread into context of called process. This removes the need of copying data used for the call.