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