Ignorando a sobrecarga dos outros processos (você marcou o Windows 7). O kernel irá enfileirar cada thread na ordem em que estão prontos. Há muito mais lá, mas essa é a essência geral.
Cada programa fará muitas coisas, como fazer leituras ou gravações no disco ou na memória, cada uma delas é a sua própria tarefa. Se cada processo usar apenas 20% da CPU; P1
conseguirá executar uma tarefa e, em seguida, P2
executará uma. Se P2
ficar pronto primeiro no segundo turno, P2
executará um seguido por P1
. Isso continuará até que cada um termine e saia.
Agora, a utilização do processo de 100% significa que a cada tempo medido (neste exemplo, 1 segundo), a cada segundo, o processador estará SEMPRE ocupado e sempre computando. No seu exemplo de uso de 40% a cada segundo o processador está trabalhando, fazendo cálculos, por 400 milissegundos. Então, após 10 segundos, o processador ficou em espera por 6 segundos no total. (Ignorando outros programas e acima da cabeça)
-
Efetivamente sim. Se você entregar apenas uma corrida de cada vez, a sobrecarga de alternância não se aplica, mas se o processador estiver apenas a 40%, isso não é realmente um problema.
-
Se cada programa precisasse de 100% do processador, você notaria algum tempo de atraso para a troca e para a frente. Lembre-se, um único núcleo pode realmente fazer apenas uma coisa de cada vez, parece que faz mais porque é muito rápido em ir e voltar. Cada um com 50% mais cerca de 0,01% de overhead significa 100,01%, então você estará "aguardando" por 10 milissegundos.
-
Sim, na introdução, cada programa tinha um número de tarefas, com vários threads em cada tarefa que o programa tinha que fazer (ler e depois escrever) entraria na fila mais cedo, então o tempo de "espera" ser menor e você seria capaz de empacotar o uso de 40% da CPU nos primeiros 400 milissegundos, em vez de ter que incluir o tempo de espera forçando o trabalho a ser espalhado em algo como 600 milissegundos. É efetivamente o mesmo com mais programas, há mais sobrecarga para cada um, mas ainda é insignificante. (A menos que você entre em sistemas em tempo real.)
Novamente, isso é super geral, mas é mais ou menos como vários programas compartilham uma única CPU. Os problemas surgem quando a lógica / programa / agendador é ruim em ordenar a fila de tarefas, isso causa mais sobrecarga, mais sobrecarga o tempo de espera, então mesmo que seu programa precise de apenas 40% cada, a sobrecarga de comutação causará 30% mais tempo trocando tarefas ou esperando.