An operating system (OS) is a software layer that manages the resources of a machine and orchestrates the execution of several tasks. Most microcontrollers do without one. The program runs “bare metal”, straight on the processor: resources are tiny, and the behaviour stays perfectly deterministic. In between, some projects use an RTOS, not a full OS but a task scheduler with timing guarantees (the ESP32 under the Arduino core already runs FreeRTOS under the bonnet: Multitasking with FreeRTOS). It is where the progression of architectures set out in Firmware ends up. Finally, more powerful platforms such as the Raspberry Pi under Linux run a full OS: comfortable networking and files, but latencies with no guarantee, so no hard real time.

See also