Um processador multi-core pode executar vários processos ao mesmo tempo?

9

Eu entendo que um processador multi-core pode executar vários threads do mesmo processo ao mesmo tempo usando seus diferentes núcleos. Também pode executar vários processos ao mesmo tempo (cada núcleo executando um processo diferente)?

    
por NimsDotNet 14.03.2011 / 12:37

3 respostas

12

No que diz respeito ao sistema operacional e aplicativos, cada núcleo é um processador separado e está sujeito à mesma afinidade regras como tendo múltiplos processadores.

Qual processador (real, núcleo ou hyperthreaded) em que um processo é executado depende inteiramente do sistema de agendamento do sistema operacional. É este sistema de agendamento (influenciado pelas configurações de afinidade ) que decide onde um processo deve ser executado e quando. Processos e threads podem alternar entre processadores e núcleos à vontade conforme o planejador julgar adequado.

    
por 14.03.2011 / 12:45
6

De meu conhecimento limitado de sistemas operacionais, acredito que o processo every tem pelo menos um thread, e são esses threads que são programados, não os processos em si. O processo simplesmente contém informações sobre o programa e os encadeamentos que ele configurou em execução. Dessa forma, um único aplicativo encadeado recebe o mesmo tratamento de um aplicativo multithread, mas o aplicativo multithread pode usar melhor os recursos.

Por exemplo, vamos assumir que temos dois processos com dois threads cada e um único aplicativo segmentado, todos trabalhando muito em um processador dual core (ou dual CPU, não faz diferença aqui)

 Process A
    |_Thread A-1
    |_Thread A-2

 Process B
    |_Thread B-1
    |_Thread B-2

 Process C
    |_Thread C

Cada thread é escalonável em todos os núcleos da CPU e a carga é balanceada pelo agendador do sistema operacional.

Se, em seguida, formos configurar a afinidade do processador para o Processo B para limitá-la a uma CPU, todos os threads desse processo também serão vinculados a essa CPU e não serão executados em nenhuma outra CPU. Fazer o mesmo com o Processo C não resultará em nenhuma mudança real, pois ele só pode ser executado em uma CPU por vez.

    
por 14.03.2011 / 13:07
2

Resposta curta:

  1. Sim, desde que o SO seja compatível.
  2. Atualmente, todos os sistemas operacionais suportam isso.

Processos e threads (como em multi-threading) são construções no nível do sistema operacional. Uma vez que você obtenha um nível baixo o suficiente no planejamento, eles desaparecem e você só tem um monte de threads de execução para obter o tempo de execução.

    
por 14.03.2011 / 13:29