Você está correto; no DOS (e, de fato, durante o POST / BIOS), a carga da CPU é de 100%.
Isso ocorre porque, quando o DOS foi escrito pela primeira vez (bem como o antigo código do BIOS no qual as versões posteriores foram baseadas), as CPUs não eram tão vulneráveis ao superaquecimento como são hoje. Nos “velhos tempos”, uma CPU de 100MHz produzia muito pouco calor e muitas vezes não precisava de mais do que uma simples ventoinha para mantê-la fria. (Os mais antigos, como os de 66MHz, costumavam funcionar bem com apenas um dissipador de calor, e até os mais antigos, como 20MHz, não tinham nada!)
Por causa disso, muitos softwares antigos não se incomodaram em inutilizar a CPU com a instrução HLT
durante loops (que são o coração de qualquer tipo de programa útil). O DOS em si não é diferente. Quando você vê o prompt do DOS, ele está lá no que basicamente equivale a um loop while:
while (!done) {
getkey();
process();
}
Isso não é muito diferente de um loop infinito como while(1);
, que instantaneamente direciona a carga da CPU para 100% e a aquece.
(É por isso que tento gastar o mínimo de tempo possível no POST / BIOS / DOS no meu sistema "moderno", ou pelo menos me certifico de que o ventilador esteja girando a 100% antes de eu fazer isso.)
Felizmente, existem algumas opções, incluindo uma da própria Microsoft. Com o advento das máquinas virtuais, houve um interesse renovado no DOS e esse problema foi notado. Uma solução foi fornecida pela Microsoft na forma de idle.com
, que eles empacotaram com o Virtual PC . Outra solução, dosidle.exe
, vem de uma página orientada para VMWare .
Basicamente, o que esses programas fazem é carregar um TSR que injeta HLT
instruções, fazendo com que a CPU faça nada e esfriar. Algumas são simples, enquanto outras têm opções extras.
Se você conectar seu sistema a um medidor de energia como o Kill-a-Watt, você poderá observar isso numericamente, pois o sistema consumirá significativamente mais energia enquanto estiver no editor BIOS ou no DOS, pausa no POST ou até mesmo no boot do sistema operacional. -cardápio. No entanto, quando um sistema operacional sensível ao consumo de energia é carregado, o uso de energia cai (na verdade, mesmo rodando idle.com
no DOS, ele será reduzido para a mesma quantidade). A diferença específica irá variar, mas 30-50W não é incomum.
Outra maneira de ver isso em ação é com uma máquina virtual. Se você pausar a VM no POST ou entrar na ferramenta de configuração do BIOS, verá a carga da CPU no host alta (100% em um processador de núcleo único, 50% em um dual-core / encadeado etc.). Se você inicializar no DOS na VM, a carga da CPU do host permanecerá alta até que você execute idle.com
. Nesse ponto, ela cai para ~ 0%. Ele também cai quando você inicializa o convidado no Windows ou outro sistema operacional moderno.