- From Another EPOC
- A Tiny Kernel
- Building a Real OS
- Symbian Security
- Power to the People
- Drivers
- A Modern System
Power to the People
The most important constraint for mobile devices is power consumption. It doesn't matter what your mobile device is capable of doing, if the battery is flat by the time that you come to use it. A mobile operating system must be able to leave everything, from the CPU to the screen, in the lowest power setting possible to provide the service required. If you're making a telephone call with the handset held by your ear, the screen can be off. If you're listening to music, the network stack might be in standby mode. If the decoder runs on the DSP, the CPU might be powered down, waking up only occasionally to copy more data into memory for the DSP to use. If there's no signal, the network stack might be powered down, and only awakened occasionally to check whether the signal has returned.
With this restriction in mind, every driver in Symbian is designed to support various power-saving statesactive at one extreme, deactivated at the other. The driver must be able to move the device between these states as required, independently of the state of other components.
Note that the Symbian kernel is tickless. Some kernels schedule a regular timer interrupt (for example, at 100 Hz) and do periodic processing, such as performing context switches, when this interrupt is received. The Symbian kernel, like very recent Linux kernels, schedules a timer interrupt for the next time that the kernel needs to do something. If the kernel doesn't need to do anything for a while, the CPU will automatically enter a low power state until the timer expires and wakes it up. Like everything else in Symbian, this scheduling is handled in an architecture-independent way, behind an abstraction layer that handles differences in timers.