Threads
Threads
Docente:
Rui Miguel Inácio
Introdução
Desde os primeiros momentos de surgimento
dos computadores, a preocupação sempre
foi a utilização eficiente do escasso hardware.
Para os sistemas computacionais modernos
que apresentam processadores multicores, a
utilização efectiva destes recursos são
efectivas com a utilização de Threads.
Os threads são uma unidade básica de
utilização da CPU; eles compreendem um ID
de thread, um contador de programas, um
conjunto de registros e uma pilha.
Conceito de Processo (cont.)
Programa é entidade passiva armazenada
em disco (arquivo executável); o processo
está ativo
Programa torna-se processo quando o arquivo
executável carregado na memória
Paralelismo de tarefa
▪ Consiste em executar diferentes threads em diferentes
núcleos contudo, todos executando sobre os mesmos
dados.
Paralelismo de dados e de
tarefas
Dados
Paralelismo
de
Dados
Dados
Paralelismo
de
Tarefas
Lei de Amdahl
Identifica os ganhos de desempenho da adição de
núcleos adicionais a um aplicativo que tem componentes
seriais e paralelos
S é a porção de série e N núcleos de processamento
Muitos para um
Um-para-um
Muitos para muitos
Modelos Muitos para um
Muitos threads de nível de usuário mapeados para um
único thread do kernel
Um bloqueio de thread faz com que todos bloqueiem
Vários threads podem não ser executados em paralelo no
sistema multicore porque apenas um pode estar no kernel
de cada vez
Poucos sistemas atualmente usam este modelo
Exemplo
Solaris Green Threads
GNU Portable Threads
Modelos Um-para-um
Cada thread no nível do usuário é mapeado para um
thread do kernel
Criar um thread no nível do usuário cria um thread do
kernel
Mais concorrência do que muitos-para-um
Número de threads por processo às vezes restrito
devido à sobrecarga
Exemplo
Windows
Linux
Modelos Muitos para muitos
Permite que muitos threads de nível de usuário sejam
mapeados para muitos threads do kernel
Permite que o sistema operacional crie um número
suficiente de threads do kernel
Windows com o pacote ThreadFiber
Caso contrário, não é muito comum
Modelo de dois níveis
Semelhante ao M:M, exceto que ele permite que um
thread de usuário seja vinculado ao thread do kernel
Modelo de dois níveis
A biblioteca de threads fornece ao programador uma
API para criar e gerenciar threads
Duas formas principais de implementação Biblioteca
inteiramente no espaço do usuário
Biblioteca de nível kernel suportada pelo SO
Fim