Please enable JavaScript.
Coggle requires JavaScript to display documents.
Threads - Coggle Diagram
Threads
Benefícios
Compartilhamento de recursos
threads compartilham recursos do pai
Economia
gerir threads > gerir processos
Responsividade
parte funciona; parte bloqueada
Utiliz. de arquit. multiprocessadas
Programação multicore
uso eficiente de CPUs com múltiplos núcleos
permite paralelismo real
Paralelismo
pode executar mais de uma tarefa simultaneamente
Concorrência
suporte a mais de uma tarefa; com alternância
Desafios
Divisão de dados
Dependência de dados
Equilíbrio
Teste e debug
Identificação de tarefas e divisão das atividades
Tipos de paralelismo
de dados
distribui um dado em subconjuntos
faz a mesma operação sobre eles
de tarefas
diferentes tarefas são distribuídas
sobre os mesmos dados ou não
Modelos de Geração de Multithreads
(N:1)
N threads de usuário -> 1 de kernel
se uma thread fizer chamada bloqueante
bloqueia todo o processo
Somente uma thread pode acessar o kernel por vez
imprópria para sist. multiprocess
(1:1)
1 thread de usuário -> 1 de kernel
maior concorrência e uso de MP
é custoso criar threads de kernel
Usado por Windows e Linux
(M:N)
muitas threads de usuários para muitas de kernel
SO cria nº suficiente threads de kernel
Tipos
do usuário
feito pela biblioteca de threads em nível de usuário
de kernel
Threads admitidos diretamente
pelo kernel
Bibliotecas de Threads
API para criação e gerenciamento de threads
APIs nativas do SO
através da própria linguagem de programação
POSIX Pthreads
Linux, Mac OS X, Windows
Java threads
Herda Classe Theads
Implementa Interface Runnable
ou
Windows Threads (Windows API)
em C: windows.h
Pool de threads
um nº threads esperando trabalho
thread é chamada; trabalha; retorna ao banco
vantagens
limita nº de threads
chamar é + rápido que criar
Cancelamento de Threads
assíncrono
termina thread imediatamente
problema se recursos foram alocados
adiado
cancellation points
terminar de maneira ordenada
Manipulação de sinais
notifica um processo de
que ocorreu algo específico
Entregar o sinal ao thread ao qual o sinal se aplica
a cada thread no processo
a certos threads no processo
Atribuir uma área específica para receber todos os sinais para o processo
Ativações do escalonador
upcalls
manter o nº correto de threads do kernel
modelos de 2 níveis
Criação
Síncrona
espera filhos
concorrência entre filhos
fork-join
Assíncrona
pai cria
retoma execução
concorrência
independência