3

Что-то, чего я никогда не понимал, - это то, как компьютер может работать без использования всей его вычислительной мощности. (Вероятно, эта путаница проистекает из ужасного урока ОС в колледже.)

Насколько я знаю, поток (такой как планировщик ОС) должен что- то делать в любой момент времени. Если нечего делать, он просто зацикливается, пока не будет чего делать. Я думаю, что такой цикл всегда будет работать настолько быстро, насколько это возможно, что приведет к поглощению всей вычислительной мощности процессора.

Я предполагаю, что мое недоразумение - неправильное предположение, что «если ничего не делать, оно просто зацикливается». Однако я не знаю, что еще он мог сделать.

2 ответа2

5

Компьютеры имеют аппаратные таймеры, которые могут использоваться для сигнализации процессора, когда прошло определенное время. Одним из таких предметов является высокоточный таймер событий (HPET), и в истории вещей даже RTC мог выполнять аналогичную задачу.

ЦП также имеет возможность останавливать исполнительные блоки с помощью инструкции HLT и эффективно переводить себя в режим сна. Циклы не выполняются, и для всех намерений и целей ЦП не работает, за исключением оборудования, которое ожидает установления линий прерывания.

Вместо того, чтобы ожидать циклическое ожидание в цикле, процессор просто сообщает оборудованию, чтобы оно предупредило его об истечении определенного времени, а затем переводит основные исполнительные блоки в спящий режим. По истечении времени таймер выдает прерывание, которое, в свою очередь, пробуждает процессор, и выполнение начинается снова.

Таймеры низкой точности, такие как RTC, будут работать аналогичным образом, для каждого количества тиков вы проверяете счет на каждый тик и спите, пока не появится следующий. Это относительно недорогой (по мощности процессора) способ реализации состояний ожидания.

1

Мокубай дает правильный ответ о том, как обычно работает сон. Но даже если бы компьютер работал в режиме вращения, он все равно мог потреблять меньше энергии, чем обычно. Различные инструкции используют разное количество энергии, в зависимости от того, что они делают. Чтение из ОЗУ потребляет больше энергии, чем чтение из кеша ЦП, и пока он находится в крошечном цикле вращения, он должен просто использовать кеш. Во время зацикливания части ЦП, которые выполняют арифметику или взаимодействуют с внешними устройствами, неактивны, поэтому они не используют никакой энергии. Если это ноутбук, экран будет выключен, и это потребует огромного энергосбережения.

Это все не так хорошо, как почти полностью умереть, за исключением таймера событий. Но я думаю, что некоторые операционные системы имеют "режим пониженного энергопотребления", который находится между нормальным режимом работы и спящим режимом, что может включать в себя часть этого.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .