CPU funcionando a plena capacidade ao inicializar em DOS?

5

A CPU é executada a 100% ou perto da capacidade total quando o computador é inicializado no MS-DOS? A temperatura da CPU aumentará mesmo que não estejamos executando nenhum programa no modo DOS?

No Windows, podemos ver o uso da CPU em% de utilização no Gerenciador de Tarefas. Pelo que ouvi, a CPU está funcionando com quase 100% da capacidade no DOS OS ou na tela BIOS MAIN.

Isso é causado pela falta de otimização da CPU no sistema operacional DOS?

    
por Kevin H 18.12.2011 / 06:02

3 respostas

8

O DOS (pelo menos qualquer MS-DOS) não roda a CPU com a instrução x86 HLT como a maioria dos sistemas operacionais modernos quando não está fazendo nada.

Não tenho certeza da função específica do MS-DOS que espera por um pressionamento de tecla, mas que provavelmente seria onde a CPU está efetivamente "girando" em um loop quando não está fazendo nada, no MS-DOS. Ainda está buscando instruções e funcionando, simplesmente não sendo produtivo.

Parece que as versões mais recentes do FreeDOS serão faça isso, no entanto.

Você pode encontrar este útil.

    
por 29.05.2012 / 20:51
1

A CPU está sempre funcionando com capacidade de 100% se estiver sendo executada. Em alguns casos, pode ser desligado para economizar energia.

Sistemas operacionais modernos têm coisas como agendadores de tarefas que rotacionam programas que estão sendo executados na CPU, então uma porcentagem da CPU pode não estar fazendo nenhum trabalho produtivo (por exemplo, executando NOPs, saltando no lugar ou qualquer que seja o processo ocioso do sistema) ). Portanto, o que o gerenciador de tarefas mostra ao mostrar a carga da CPU é, na verdade, a porcentagem de tempo durante a qual o processo ocioso do sistema não está sendo executado. Isso é completamente normal porque alguns processos simplesmente não precisam de mais tempo de CPU, já que poderiam estar esperando por algo mais.

Em sistemas operacionais mais antigos, como várias versões do DOS, há apenas um processo sendo executado por vez e não temos "gerenciador de tarefas" porque não há necessidade dele, pois você pode executar apenas um programa de cada vez * . Mesmo quando você pensa que não está executando nenhum programa, está executando o shell do SO, que está realmente ocupando todos os recursos da CPU disponíveis. Na prática, isso não leva a temperaturas mais altas da CPU. Para simplificar, instruções diferentes usam partes diferentes da CPU e as instruções usadas para esperar pela entrada não aquecem muito a CPU.

Quanto à falta de otimização, bem, esse é um tópico realmente grande que depende principalmente do que você considera ideal. Como eu disse, a CPU está sempre sob carga e não pode funcionar, digamos, 50% de energia (se você, por exemplo, diminuir a frequência, ela ainda está funcionando a 100%, mas agora cada instrução demora mais). Em alguns casos, é um requisito para o computador focar apenas em um único programa e, nesse caso, se a sua CPU estiver executando alguma outra coisa, está perdendo tempo. Se você quer a ilusão de ter 50 programas diferentes rodando ao mesmo tempo, então você diz que o uso da CPU está abaixo do ideal. Tenha em mente que a tarefa de mudar a si mesma, que acontece nos sistemas operacionais modernos, está tirando alguns recursos da CPU e voltando quando o DOS era novo, você simplesmente não tinha recursos suficientes para vários programas (e o agendador de tarefas) rodarem em uma casa computador ao mesmo tempo.

* Sim, houve coisas como encerrar e manter programas residentes, mas não eram experiências reais de vários programas. É claro que existem coisas como manipuladores de interrupções que mudam o que está sendo executado na CPU, mas como eles não têm sua própria pilha, eu não os chamaria de processos reais.

    
por 19.12.2011 / 07:22
0

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.

    
por 01.09.2012 / 23:48

Tags