Ты прав; в DOS (и фактически во время POST/BIOS) загрузка процессора составляет 100%.
Это связано с тем, что в те времена, когда впервые была написана DOS (а также старый код BIOS, на котором основывались более поздние версии), процессоры были не так уязвимы для перегрева, как сегодня. В «старые времена» процессор с частотой 100 МГц выделял очень мало тепла, и зачастую для его охлаждения не требовалось ничего, кроме простого вентилятора. (Старые, такие как 66-мегагерцовые процессоры, часто справлялись с радиатором, а даже более старые, например, 20-мегагерцовые, вообще ничего не имели!)
Из-за этого многие старые программы не беспокоили работу процессора с помощью инструкции HLT
во время циклов (которые являются сердцем любой полезной программы). Сам DOS ничем не отличается. Когда вы видите приглашение DOS, оно находится в цикле while, например:
while (!done) {
getkey();
process();
}
Это не сильно отличается от бесконечного цикла, подобного while(1);
который мгновенно увеличивает нагрузку на процессор до 100% и нагревает его.
(Вот почему я стараюсь проводить как можно меньше времени в POST/BIOS/DOS на своей «современной» системе, или, по крайней мере, я проверяю, что вентилятор вращается на 100%, прежде чем я это сделаю.)
К счастью, есть несколько вариантов, в том числе один от самих Microsoft. С появлением виртуальных машин появился интерес к DOS, и эта проблема была замечена. Одно из решений было предоставлено Microsoft в форме idle.com
которое они упаковали вместе с Virtual PC. Другое решение, dosidle.exe
, приходит со страницы, ориентированной на VMWare.
По сути, эти программы загружают TSR, который вводит инструкции HLT
, в результате чего ЦП ничего не делает и не охлаждается. Некоторые из них просты, в то время как другие имеют дополнительные опции.
Если вы подключите свою систему к измерителю мощности, такому как Kill-a-Watt, вы сможете наблюдать это в цифровом виде, поскольку система будет потреблять значительно больше энергии, находясь в редакторе BIOS или DOS, в режиме POST или даже в меню загрузки ОС. Тем не менее, когда ОС загружается с учетом энергопотребления, энергопотребление падает (на самом деле, даже если запустить idle.com
в DOS, оно уменьшится до той же величины). Конкретная разница будет варьироваться, но 30-50 Вт не редкость.
Другой способ увидеть это в действии - с виртуальной машиной. Если вы приостановите работу виртуальной машины в режиме POST или войдете в инструмент настройки BIOS, вы увидите высокую нагрузку на процессор на хосте (100% на одноядерном процессоре, 50% на двухъядерном / потоковом и т.д.) Если вы загрузитесь в DOS на ВМ, загрузка ЦП хоста будет оставаться высокой до тех пор, пока вы не запустите idle.com
, после чего она упадет до ~ 0%. Он также сбрасывается при загрузке гостя в Windows или другую современную ОС.