In short: FreeRTOS, Zephyr, and VxWorks all give you deterministic, priority-driven preemptive scheduling, but they trade off footprint, feature breadth, and certification pedigree very differently — from a ~6 KB microkernel to a full POSIX-grade platform used in avionics and Mars rovers.
A real-time operating system (RTOS) is not judged by how fast it is but by how predictable it is. The defining metric is worst-case response time: if an interrupt fires, can you guarantee the matching task runs within a bounded window — every single time, under every load? That guarantee is why RTOSes power pacemakers, motor controllers, flight computers, and base-station radios. This tour compares three of the most widely deployed examples and shows where each one belongs.
What "real-time" actually buys you
General-purpose kernels like Linux optimise average throughput and fairness; an RTOS optimises the tail of the latency distribution. The three pillars are a fixed-priority preemptive scheduler, bounded interrupt latency, and priority-inheritance mutexes to defeat priority inversion — the failure mode that famously stalled the 1997 Mars Pathfinder, which ran VxWorks. If a low-priority task holds a lock a high-priority task needs, inheritance temporarily boosts the holder so it releases quickly.
Rule of thumb: a hard-real-time deadline missed once is a system failure. A soft-real-time deadline missed occasionally only degrades quality (a dropped audio sample). Your deadline class decides how much kernel you can afford to tolerate.
FreeRTOS — the microkernel default
FreeRTOS (now stewarded by AWS) is the most ported RTOS in the embedded world, running on everything from an 8-bit AVR to Arm Cortex-M and RISC-V. Its appeal is minimalism: the scheduler, queues, and timers compile to roughly 6–12 KB of flash and under 1 KB of RAM. It uses fixed-priority preemptive scheduling with optional round-robin time-slicing between equal-priority tasks, plus a tickless idle mode that is essential for coin-cell battery life.
You get tasks, queues, binary/counting semaphores, and mutexes with priority inheritance. What you do not get out of the box is memory protection or a full network/filesystem stack — those arrive as add-ons (FreeRTOS+TCP, FreeRTOS+FAT) or the "MPU" variant. It is ideal for a motor-control loop, a BLE sensor node, or a Wi-Fi SoC where you own the whole application.
Zephyr — the modern, scalable platform
Zephyr, a Linux Foundation project, is what you reach for when FreeRTOS feels too bare but Linux is too heavy. It scales from ~8 KB builds up to richly featured images with a native IP stack, Bluetooth LE controller, USB, file systems, a device-tree-driven driver model, and a Kconfig build system that will feel familiar to kernel developers. Zephyr supports over 750 boards across Arm, RISC-V, x86, ARC, and Xtensa.
Its scheduler is more configurable than FreeRTOS: cooperative and preemptive threads coexist, with optional earliest-deadline-first (EDF) scheduling and meta-IRQ threads. Crucially for safety work, Zephyr offers thread-level memory domains via an MPU/MMU and is pursuing IEC 61508 and ISO 26262 certification. See our deep dive on FreeRTOS task scheduling and the companion Zephyr device-tree basics to compare the two models hands-on.
VxWorks — the certified heavyweight
Wind River's VxWorks is the commercial, proprietary RTOS behind decades of aerospace, defense, and industrial systems — the James Webb Space Telescope, numerous Mars rovers, and countless avionics boxes. It provides SMP and AMP multicore scheduling, a full POSIX PSE52 interface, networking, file systems, and a mature debug/trace toolchain (Wind River Workbench). Its differentiator is pre-built safety and security certification evidence: DO-178C for avionics, IEC 61508, and Common Criteria. That pedigree, not raw features, is what customers pay for.
Side-by-side comparison
| Dimension | FreeRTOS | Zephyr | VxWorks |
|---|---|---|---|
| License | MIT (open) | Apache 2.0 (open) | Commercial |
| Typical footprint | 6–12 KB | 8 KB → several MB | Hundreds of KB → MB |
| Scheduler | Fixed-prio + round-robin | Coop/preempt + optional EDF | Prio preempt, SMP/AMP |
| Memory protection | Optional MPU port | Thread-level domains | Full MMU + partitions |
| Certification | SafeRTOS variant | In progress | DO-178C, 61508, CC |
| Sweet spot | SoC / sensor nodes | Connected IoT, BLE | Avionics, defense, rail |
Others worth knowing: Azure RTOS/ThreadX (tiny, picokernel), Micrium µC/OS-III, QNX Neutrino (microkernel in automotive infotainment), and SCL/Nucleus. The three above simply span the widest slice of the design space.
Whichever kernel you pick, the hardware verification flow around it is the same discipline VLSI engineers practice daily — timing closure, worst-case analysis, and sign-off. Teams building the silicon these RTOSes run on often lean on specialist semiconductor design services for that rigor.
Want to write and debug real RTOS firmware on real Cortex-M hardware? CourseTron's Embedded Systems track takes you from bare-metal interrupts to a multi-task FreeRTOS and Zephyr application. Explore the full catalogue on our courses page.
FAQ
Is FreeRTOS good enough for safety-critical products?
Plain FreeRTOS is not certified, but its sibling SafeRTOS carries IEC 61508 and ISO 26262 evidence and shares the same API, so prototypes port cleanly to the certified kernel.
Why choose Zephyr over FreeRTOS?
Pick Zephyr when you need a built-in networking/BLE stack, a device-tree driver model, memory-protected threads, and broad board support without stitching together third-party libraries.
What makes VxWorks worth its license cost?
Primarily its certification artefacts (DO-178C, IEC 61508) and mature multicore SMP/AMP support — buying that evidence off the shelf is far cheaper than generating it yourself for avionics or rail.
How is an RTOS different from Linux with PREEMPT_RT?
PREEMPT_RT lowers Linux's worst-case latency into the tens of microseconds, but a true RTOS offers a smaller, auditable kernel with sub-microsecond, provable interrupt latency — essential for hard deadlines.