Threads: a diferença de simultaneidade entre o modelo muitos-para-um e o modelo um-para-um

5

Estou estudando a parte "Threads" com um livro-texto. Conceitos do sistema operacional escritos por Abraham Silberschatz, Peter, Greg.

Primeiro, vou dizer algo no livro relacionado à minha pergunta e fazer a pergunta. Se alguém já conhece a seguinte teoria, pule para a minha pergunta, por favor.

O livro definiu paralelismo e simultaneidade como o seguinte:

A

Concorrência dá suporte a mais de uma tarefa que está progredindo.

Execução simultânea no sistema single-core:

Paralelismoimplicaqueumsistemapoderealizarmaisdeumatarefasimultaneamente.

Paralelismoemumsistemamulti-core:

Modelo many-to-one : a verdadeira concorrência não é obtida porque o kernel pode programar apenas um thread por vez.

Modeloum-para-um:fornecemaissimultaneidadedoquemodelodemuitosparaum."

Minha pergunta é por que a simultaneidade não é obtida no modelo muitos-para-um e por que modelo um-para-um fornece mais simultaneidade do que muitos-para -um modelo .

Eu acho que o desempenho do muitos para um não é obtido, mas acho que a simultaneidade é 4 vezes maior que o segmento único. Além disso, o modelo um-para-um oferece 4 vezes mais concorrência do que o segmento único (o mesmo que o modelo muitos-para-um ). Além disso, o paralelismo é 4 vezes melhor que o modelo muitos-para-um em arquiteturas multi-processadores.

Minha conclusão é que o livro escreveu errado. Por isso, deve ser alterado como o seguinte

Modelo many-to-one : a simultaneidade é aprimorada até o número de threads do usuário, mas o desempenho não é obtido porque o kernel pode programar apenas um thread por vez.

Modelo um-para-um : a simultaneidade é aprimorada até o número de threads do usuário, e o desempenho também é aprimorado até o número de processadores.

Meu pensamento é certo ou errado? Obrigado por ler.

    
por Danny_Kim 26.10.2015 / 20:15
fonte

1 resposta

8

Seu livro didático não está errado, mas está usando o termo "simultaneidade" às vezes de forma pouco flexível.

Concorrência significa que existe a aparência de que várias tarefas estão sendo realizadas ao mesmo tempo.
Concorrência verdadeira significa que várias tarefas são realmente feitas ao mesmo tempo. Isso também é chamado de paralelismo. Seu livro parece estar usando esses termos de forma intercambiável, o que não é errado, mas pode ser enganoso se você ignorar a palavra 'verdadeiro'.

No modelo muitos-para-um, você obtém concorrência (a aparência de que as tarefas são executadas ao mesmo tempo), mas não é possível obter o paralelismo. Existe apenas um segmento do kernel e isso não pode ser espalhado por vários processadores.

No modelo on-to-one, cada thread de usuário tem um thread do kernel correspondente, o que dá ao kernel mais opções para fornecer simultaneidade ou mesmo paralelismo.

    
por 26.10.2015 / 21:28
fonte