5

Процессор работает на 100% или почти на полную мощность, когда компьютер загружается в MS-DOS? Повысится ли температура процессора, даже если мы не запускаем никаких программ в режиме DOS?

В Windows мы видим загрузку процессора в% от загрузки в диспетчере задач. Из того, что я слышал, процессор работает почти на 100% в ОС DOS или на главном экране BIOS.

Это связано с отсутствием оптимизации процессора в ОС DOS?

3 ответа3

9

DOS (по крайней мере, любая MS-DOS) не работает на CPU с инструкцией x86 HLT как большинство современных операционных систем, когда она ничего не делает.

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

Похоже, что более новые версии FreeDOS сделают это, хотя.

Вы можете найти это полезным.

2

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

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

В более старых операционных системах, таких как различные версии DOS, одновременно выполняется только один процесс, и у нас нет "диспетчера задач", потому что в этом нет необходимости, поскольку вы можете запускать только одну программу за раз *. Даже если вы думаете, что не запускаете какую-либо программу, вы используете оболочку ОС, которая фактически забирает все доступные ресурсы процессора. На практике это не приводит к повышению температуры процессора. Проще говоря, разные инструкции используют разные части ЦП, а инструкции, используемые для ожидания ввода, не сильно нагревают ЦП.

Что касается отсутствия оптимизации, то это действительно большая тема, которая в основном зависит от того, что вы считаете оптимальным. Как я уже сказал, процессор всегда находится под нагрузкой и не может работать, скажем, на 50% мощности (если вы, например, понижаете частоту, он все еще работает на 100%, но теперь каждая инструкция занимает больше времени). В некоторых случаях требуется, чтобы компьютер фокусировался только на одной программе, и в этом случае, если ваш процессор выполняет что-то еще, это напрасная трата времени. Если вы хотите создать иллюзию одновременного запуска 50 различных программ, вы можете сказать, что загрузка ЦП неоптимальна. Имейте в виду, что само переключение задач, которое происходит в современных операционных системах, требует некоторых ресурсов ЦП, и назад, когда DOS был новым, у вас просто не было достаточно ресурсов для запуска нескольких программ (и планировщика задач) в домашних условиях. компьютер одновременно.

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

0

Ты прав; в 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 или другую современную ОС.

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