Обычные процессоры для смартфонов, ноутбуков и даже настольных ПК имеют переменную тактовую частоту. Когда планировщик обнаруживает, что у него время простоя, он может уменьшить тактовую частоту и снова увеличить ее, если есть больше процессов, конкурирующих за процессорное время.
Процессоры, оптимизированные для устройств с батарейным питанием, как правило, состоят из множества функциональных компонентов, каждый из которых имеет свои собственные часы (пример: ARM Cortex A8 ). Когда один компонент простаивает, операционная система может отключить его (или уменьшить его тактовую частоту), что экономит электроэнергию. Например, во многих многоядерных процессорах (например, в высокопроизводительных мобильных устройствах) каждое ядро можно включать или выключать отдельно. ARM особенно хорош в этой игре, что является одной из причин, по которой большинство смартфонов имеют процессоры ARM.
Изменение тактовой частоты или выключение часов электронных компонентов называется управлением питанием . Это сложная часть написания и оптимизации операционной системы для устройства с батарейным питанием, во многом зависящая от конкретной аппаратной модели.
То, что идет на процессор, идет и на периферию. Дисплей с подсветкой является основным потребителем энергии на смартфоне, например, а затем радио. Операционная система ЦП может играть роль в управлении питанием периферийных устройств; вторичные микросхемы также работают со своей собственной микропрограммой, которая также выполняет управление питанием
Приложения играют свою роль в снижении энергопотребления: они должны позволять операционной системе делать свое дело. Худшее, что может сделать приложение, это опрос - выполнение цикла while (not_ready()) {}
. Даже введение небольшой задержки, как в while (not_ready()) {usleep(100);}
, не помогает, поскольку не позволяет процессору переходить в режим пониженного энергопотребления, или, если это происходит, каждый бесполезный пробуждение означает потерю энергии. Таким образом, API-интерфейсы операционной системы должны быть спроектированы таким образом, чтобы приложениям никогда не приходилось опрашивать, а вместо этого можно было бы подписаться на какой-либо механизм событий и оставаться в режиме ожидания до тех пор, пока они не будут уведомлены о соответствующем событии. Приложения, в свою очередь, должны использовать преимущества таких механизмов, поэтому проектирование всего программного стека влияет на энергопотребление.
Вы можете получить некоторую информацию о том, что отвечает за потребление электроэнергии вашего ПК с Intel, PowerTOP утилитами. Смартфоны обычно имеют возможность увидеть , как много приложений питания потребляли , а также. Учет потребления энергии приложением точно затруднителен: если компонент активируется для двух приложений, время активации может быть отнесено к одному из них несколько произвольно или ни к одному; Потребляемая мощность периферийных устройств также не всегда легко отслеживается ответственным приложением.
Чип ОЗУ не знает, какие из его битов хранят данные активного процесса, поэтому его нельзя выборочно отключить таким образом. Энергопотребление процесса не связано с объемом используемой памяти (за исключением случаев, когда доступ к ОЗУ потребляет энергию, но повторное использование одной и той же памяти или использование разных областей ОЗУ не влияет на энергопотребление).