qual é a razão pela qual a utilização da CPU fica alta?

-1

Por simplicidade, vamos considerar que tenho um único processador central. Eu tenho 2 tarefas em execução em paralelo. Meu entendimento é que o processador executará as tarefas na forma round robin isto é, uma a tempo.

Agora, se alguma das tarefas usar mais ciclos, a utilização será maior. Isso está correto? Se sim, quando grandes números de ciclos são requeridos por qualquer tarefa ou em outras palavras, o que os ciclos realmente significam aqui?

    
por user3198603 24.08.2016 / 16:13

1 resposta

4

Resposta curta, pois as pessoas escreveram livros sobre este assunto:

Os ciclos geralmente são expressos com a terminologia "Tempo de CPU". Um processo recebe um certo número de 'quantums' na CPU. Tenha em mente que nas arquiteturas CISC (como x86), uma única 'instrução' pode levar vários ciclos.

Nos escalonadores mais simples do round-robin, 50% do tempo da CPU seria alocado para cada processo (se houvesse 2), então cada tarefa levaria o dobro do tempo se dependesse apenas da CPU.

No entanto, todos os sistemas operacionais modernos têm algoritmos de escalonamento mais avançados, que levam em consideração um ou mais dos seguintes parâmetros:

  • Prioridade
  • Estado (bloqueado para E / S, executável, interrompido, etc.)
  • Última vez que o processo foi executado na CPU

Dependendo do algoritmo de agendamento, os processos poderão ser executados na CPU até:

  • Ele solicita E / S e será bloqueado por ele
  • Um processo com maior prioridade precisa de tempo de CPU ( preempção )
  • Uma interrupção de hardware é acionada.
  • O quantum do processo se esgota.

Como o enfileiramento final é organizado depende do agendador. O agendador do Linux é descrito aqui .

Pensar em ciclos não é realmente útil no contexto de um computador do mundo real. Uma instrução única, como dito acima, pode levar vários ciclos em arquiteturas CISC. A CPU também usará ciclos para alternar entre processos (alteração de registros, atualização da MMU, etc.). Os ciclos, como tal, não são uma boa métrica para usar ao descrever o uso da CPU.

A saída útil de uma CPU é determinada principalmente pela rapidez com que ela pode manipular solicitações de processamento. Quando os processos estão prontos para serem processados, eles são enfileirados na fila de execução , até que possam ser manipulados pela CPU. Enquanto os processos não precisarem esperar mais do que um quantum (~ 200ms) para ser executado, o sistema será essencialmente tão rápido quanto o esperado. No sistema operacional, isso é exibido como um número (como float (Linux: top / uptime ) ou porcentagem (Gerenciador de Tarefas do Windows).

Para dar uma resposta curta à pergunta que você colocou no título: a utilização fica alta porque a fila de execução está aumentando. A 'utilização' que você vê no Windows ou no Linux é apenas uma média da duração da fila de execução ao longo do tempo.

    
por 24.08.2016 / 16:53