RTOS Selection Guide: Choosing the Right Real-Time Operating System
Comparing FreeRTOS, Zephyr, VxWorks and other real-time operating systems. When you need an RTOS and how to choose the right one for your embedded project.
Comparing FreeRTOS, Zephyr, VxWorks and other real-time operating systems. When you need an RTOS and how to choose the right one for your embedded project.
A Real-Time Operating System provides deterministic task scheduling. It guarantees that tasks complete within defined time windows. That matters for control systems, safety-critical devices, and anything where missing a deadline causes real problems.
But here's the thing: most embedded projects don't actually need one. A bare-metal approach (no OS at all, just an event loop and interrupts) works perfectly for single-purpose devices with straightforward timing requirements. An RTOS adds complexity, and complexity adds bugs.
Consider an RTOS when:
When to stay bare-metal: Simple, single-purpose devices. Systems with under 4KB of RAM. Projects where you can meet all timing requirements with interrupt-driven design. Situations where you need absolute control over every CPU cycle.
These are independent units of execution. Each task gets its own stack and runs as if it owns the processor entirely. The RTOS scheduler handles the illusion, switching between tasks fast enough that they all appear to run simultaneously.
Preemptive priority-based is the standard model: the highest-priority ready task always runs. If something more urgent wakes up, it immediately takes over from whatever was running. Round-robin shares time equally among same-priority tasks. Rate-monotonic assigns priorities based on task period: shorter period gets higher priority.
This is the whole point. An RTOS provides predictable, bounded response times. You know the worst-case latency and can guarantee it. That determinism is what enables certification for safety-critical systems where "usually fast enough" isn't acceptable.
The most popular open-source RTOS by a wide margin. Now owned by Amazon and integrated with AWS IoT. Runs on practically every microcontroller out there.
A Linux Foundation project with backing from Intel, Nordic, and NXP among others. Modern architecture with extensive built-in subsystems for connectivity, security, and device management.
The commercial heavyweight from Wind River. Industry standard for aerospace, defence, and safety-critical applications. Certified for DO-178C, IEC 62304, and other safety standards.
Acquired by Microsoft, now open source under MIT licence. Known for tiny footprint and fast context switching.
A mature RTOS recently open-sourced by Silicon Labs. The codebase reads like a textbook, literally, because it was written alongside one.
Before picking an RTOS, answer these questions:
| Criteria | FreeRTOS | Zephyr | VxWorks | ThreadX |
|---|---|---|---|---|
| Footprint | ~5KB | ~10KB+ | Varies | ~2KB |
| Licence | MIT | Apache 2.0 | Commercial | MIT |
| Safety certs | Available | In progress | Extensive | Available |
| Networking | Add-on | Built-in | Built-in | Add-on |
| Learning curve | Low | Medium | Medium | Low |
If your team is new to RTOS development, start with FreeRTOS. It teaches the core concepts without burying you in configuration and build system complexity. You can always migrate later if you outgrow it.
The RTOS kernel is just the starting point. You'll also need networking stacks, file systems, USB drivers, crypto libraries, and debugging tools. Evaluate the complete package. A fantastic kernel with no networking support isn't helpful if your device needs WiFi.
An RTOS adds a layer of complexity that brings its own class of bugs: race conditions, priority inversion, stack overflow, deadlocks. If you can solve the problem with a simple super-loop and a few interrupts, that's often the better choice.
RTOS bugs are notoriously difficult to reproduce and diagnose. Before committing to an RTOS, make sure it has decent trace and debugging tools. SystemView (SEGGER), Percepio Tracealyzer, and similar tools can save weeks of head-scratching.
Yes, but it's easier if you plan for it. Structure your bare-metal code as discrete tasks with clear interfaces, and the migration to an RTOS is mostly mechanical. If the code is a single monolithic loop, the refactoring effort can be significant.
Yes. FreeRTOS uses the MIT licence, which imposes no restrictions. Amazon monetises through AWS IoT services, not the RTOS itself.
If your device needs Bluetooth/BLE, built-in networking, or advanced peripheral support, Zephyr is worth the steeper learning curve. If you want simplicity and wide MCU support, FreeRTOS. For AWS IoT specifically, FreeRTOS has the better integration.
Embedded Linux is a different category. It's for devices with enough resources to run a full OS (typically 32MB+ RAM, MMU-capable processor). It's not real-time by default, though RT-PREEMPT patches or a co-processor running an RTOS can help. If you have the hardware for it, Linux gives you a much richer environment.
Testing strategies for firmware where traditional approaches don't apply.
OTA and manual update approaches for deployed devices.
Evaluating IIoT platforms for manufacturing and industrial applications.
Ask the author
Ask it here and it comes straight to the founder. No sales call, no obligation, and a real answer even if the answer is that you do not need us.
Kasun Wijayamanna
Founder, replies within one business day
Tell us what you're working on. We'll come back with a practical recommendation and clear next steps.
Built here. Your data stays here.
Thanks for reaching out. We will get back to you within one business day.
See what else we do