Mobile computing devices like PDAs, cell phones or laptops have become an indispensable part of everyday's life. As these systems are battery-powered and the user expects long operating times, energy-aware operation is crucial. Hardware components for mobile devices offer low-power operating modes that achieve energy savings at the cost of degraded performance or application quality, e.g., by reducing the CPU speed. This dissertation investigates software-controlled energy management and addresses these two, often conflicting goals: increasing the embedded system's runtime by saving energy and providing sufficient application quality. With a cooperative approach between the operating system and individual applications or the user, task-specific trade-offs between these goals can be made. Prototype implementations for embedded Linux are presented and evaluated with energy measurements, proving the feasibility of task-specific power management. This dissertation has a strong practical focus, being a valuable guide for computer scientists and software engineers both in academia and industry who deal with operating system design and low-power software architectures.