Atribuição de instrução com várias CPUs

2

Talvez essa seja uma pergunta estúpida, mas estou tentando entender melhor o funcionamento interno do hardware ...

Se uma máquina tiver duas ou mais CPUs, qual componente de hardware é realmente responsável por distribuir a execução de instruções (processa ou thread-level) entre CPUs diferentes? Ou outra maneira de colocar isso, o que determina qual CPU faz o que uma vez um conjunto de instruções chega? Existe algo equivalente a um balanceador de carga que distribui a carga de trabalho em um ambiente de computação de cluster.

Obrigado

    
por amphibient 06.12.2012 / 19:36

2 respostas

2

O sistema operacional cria "threads" ou "tarefas" para cada unidade seqüencial de trabalho (ou seja, um programa simples). O sistema operacional mantém uma fila de threads / tarefas que estão prontas para serem executadas e, cada vez que uma CPU se torna disponível, o sistema operacional atribui a ela um thread / tarefa "pronta".

Uma CPU fica disponível porque o encadeamento / tarefa executado anteriormente foi finalizado ou porque precisa aguardar a E / S do disco ou a resposta da rede ou a entrada do usuário ou o que for. Quando um tópico / tarefa em espera satisfaz o motivo de sua espera, ele é colocado de volta na fila "pronto".

Em essência, cada thread / tarefa é uma "CPU virtual", e o SO atribui essas "CPUs virtuais" a CPUs reais.

    
por 06.12.2012 / 21:09
1

É uma combinação do sistema operacional e da unidade de controle na CPU. O sistema operacional é responsável por criar encadeamentos e atribuí-los aos núcleos. A unidade de controle na CPU direciona o fluxo de dados dentro do processador. Ele pode reordenar comandos e atribuí-los dinamicamente a diferentes unidades lógicas.

    
por 06.12.2012 / 19:41