Operating systems for embedded applications are generally (but not always) real-time. In some cases, they may allow real-time tasks to co-exist with non-real-time tasks.
Embedded operating systems generally provide services allowing the embedded device to meet a number of non-functional requirements, that are specific to that type of application.
These non-functional requirements almost exclusively concern resource consumption. These generally imply finding appropriate trade-offs between:
- Power consumption
Any embedded system that is not connected to a permanent power source needs to conserve power to extend its autonomy. This includes nearly all mobile or battery-operated devices such as mobile phones, PDAs, satellites, alarm systems, etc.
- CPU consumption
Meeting real-time constraints implies (but is not limited to) efficient software execution.
- Memory use
The efficient use of memory is tightly linked to power and CPU consumption. In many optimized devices (such as mobile phones), memory is turned off when it is not in active use.
- Network bandwidth
In some distributed applications, such as automotive systems, network bandwidth needs to be optimized.