O que é a utilização da CPU e como ela é calculada? Como funciona o agendamento do SO?

0

Eu estudei a linguagem assembly x86_64, em algum momento de meus estudos aprendi que a CPU não pode parar de fazer coisas, ela deve constantemente executar / executar algo.

Pergunta 1) Eu estou querendo saber então, como é que existe um gráfico no "gerenciador de tarefas" que mostra quanta CPU está sendo utilizada atualmente, nem sempre faz alguma coisa, nem sempre executa algum binário ( montagem de baixo nível) instrução?

Pergunta 2) Eu li na Wikipedia que a CPU executa o processo do sistema "ocioso", por quê? Não pode simplesmente repetir a fila de agendamentos?

Deixe-me explicar, vamos assumir hipoteticamente a nossa CPU tem 100 ciclos por segundo:

PROCESS1 is run for 10 cycles, PROCESS1 is preempted
PROCESS2 is run for 20 cycles, PROCESS2 is preempted
SYSTEM_IDLE is run for 70 cycles, SYSTEM_IDLE is preempted
loop

A CPU não pode ser totalmente utilizada exclusivamente por PROCESS1 e PROCESS2?

Como:

PROCESS1 is run for 40 cycles, PROCESS1 is preempted
PROCESS2 is run for 60 cycles, PROCESS2 is preempted
loop
Por último, estou usando um computador bastante antigo, a memória não está faltando (ou seja, há muito disponível), a utilização da CPU é de no máximo 40%, geralmente 10%.

Este é o problema:

Quando eu executo meu navegador da Web sozinho, apenas 1 guia tudo é bom CPU em 7%, memória de 50%

Quando eu executo meu navegador junto com um tocador de música, 20 abas, tudo está atrasado, não posso nem rolar (para cima ou para baixo) páginas da web, fico com 3 quadros por segundo, o estranho é que CPU a utilização é de apenas 30% raramente indo para 35% e memória de cerca de 70% cheia

Última pergunta: Por que o navegador da Web não pode usar mais CPU? Eu não me importaria se pudesse funcionar tão bem quanto quando eu corro o navegador com apenas 1 aba

Tanques para suas explicações:)

[EDIT1] PS: Estou executando o Windows 10 x64, o navegador é: Firefox (última versão), memória disponível = 500mb, o Firefox usa cerca de 270mb. CPU Speed 2.77Ghz 2 núcleos lógicos, ATI Radeon X1000 256mb dedicados O computador está recém-formatado, instalou o sistema operacional do zero há cerca de 10 dias, a partir deste post

    
por Fresco 06.08.2015 / 23:38

1 resposta

0

A maioria dos processos gasta seu tempo esperando (esperando por um pacote de rede, esperando pelo usuário, esperando por algum outro processo / thread, ...). Não faz sentido que o sistema operacional agende esse processo - ele simplesmente retorna imediatamente e continua aguardando. Loop inutilmente consome energia.

Em vez disso, se todos os processos estiverem aguardando (mais precisamente: se estiverem bloqueados ), o sistema operacional desligará a CPU, colocando-a em um estado de suspensão. O "segmento" que faz isso é chamado de tarefa ociosa. A CPU irá então parar as instruções de processamento até que uma interrupção seja acionada (informando ao SO que alguma coisa aconteceu).

Enquanto a CPU não está funcionando, o relógio continua a rodar no entanto. Então, se você desligar a CPU a cada 100ms e a CPU acordar 50ms depois de colocá-la em suspensão, sua CPU estará 50% carregada. A mesma ideia se aplica a CPUs com vários núcleos.

    
por 07.08.2015 / 01:18