Please enable JavaScript.
Coggle requires JavaScript to display documents.
Threads - Coggle Diagram
Threads
Visão Geral
Unidade básica de utilização de CPU
Individual
ID de thread
uma pilha
Contador de programa
Conjunto de registradores
Compartilhado
Seção de dados
Outros recursos do SO
Arquivos abertos
Sinais
Seção de código
Processo tradicional
Uma única thread
“Miniprocessos”
Motivação
Processo separado
+
várias threads de controle
=
Aplicações modernas
Navegador web
Threads separadas para cada aba...
Processador de texto
Threads lidando
3 more items...
Benefícios
Responsividade
Compartilhamento de recursos
Economia
Utilização de arquiteturas multiprocessadas
Programação Multicore
Permite paralelismo real
Paralelismo
pode executar mais de uma tarefa simultaneamente
Concorrência
CPU alterna rapidamente entre os processos
Desafios da programação multicore
Necessário que os programas sejam
adaptados
Identificação de tarefas e divisão das atividades
Teste e depuração (debug)
Equilíbrio
Divisão de dados
Dependência de dados
Tipos de Paralelismo
Paralelismo de Dados
Paralelismo de Tarefas
Modelos de Geração de
Multithreads
Threads do usuário
feito pela biblioteca de threads em nível de usuário
Threads do kernel
Threads admitidos diretamente
pelo kernel
Modelos de relacionamentos entre threads de usuário e kernel
Muitos para Um (N:1)
Muitos threads em nível de
usuário
mapeados para
único thread do kernel
Modelo eficiente
bloqueado se uma thread
fizer uma chamada de
sistema bloqueante
Imprópria para sistemas
multiprocessadores
somente uma thread pode
acessar o kernel por vez
Um para Um (1:1)
Cada thread em nível de usuário é mapeado para thread do kernel
Maior concorrência e uso de MP
custoso criar muitas threads de
kernel
Usado pelo Linux e Windows
Muitos para Muitos (M:N)
Permite que muitos
threads em 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
Bibliotecas de Threads
Banco de Threads
uma série de threads em um pool onde esperam
trabalho
Servidor recebe uma requisição e acorda uma thread do banco