Embedded operating systems
Lightweight threads
- basic locks
- fast context-switches
Input/output
- API for talking to devices
- buffering
Interrupt handling (with I/O devices and user interface)
- translate interrupts into events to be handled by user code
- trigger new tasks to run (reactive)
Real-time issues
- guarantee task is called at a certain rate
- guarantee an interrupt will be handled within a certain time
- priority or deadline driven scheduling of tasks