Using a preemptive RTOS (“real-time operating system”) can help make a system schedulable (i.e. help all of its tasks meet their deadlines) but it comes at a cost: race conditions and other strange problems. In part, this is because humans have difficulty thinking about things that happen concurrently. Using the venerable superloop can help avoid this problem entirely and, in some cases, it can actually make a system work that wouldn’t work at all using an RTOS!