Mobile computing is dramatically changing our day-to-day lives, especially with the popularity of small devices such
as personal digital assistants (PDAs) and with the embedding of substantial processing capabilities in
devices such as telephones and cameras. Reducing the energy consumed in using these devices, thereby
extending the lifetime of the batteries that power them (and reducing the weight of carrying spares), is one of the major challenges in designing such systems. Power
consumption is an issue that extends well beyond the realm of battery-powered mobile devices to any
computing platform in which heat or fan noise production may be factors (e.g. medical applications). Finally, energy
efficiency of computers is desirable in its own right from both the economic and environmental points of view.
This problem can be addressed at various levels: by improving battery technology, by engineering more efficient electronics and components, and by designing computer architectures and software with power as a primary measure of performance. Power is a critical, limited, and shared system resource. Traditionally, the operating system plays a major role in managing such resources. We believe that the applications hold an important key, in the application-specific constraints and opportunities for saving energy that can be known only at that level. Therefore, our approach is to have the needs of the applications be the driving force for the development of power-aware architectures that cooperate with power management functions in the operating system and of a power-based API that allows a partnership between applications and the system in setting energy use policy.