0% acharam este documento útil (0 voto)
14 visualizações22 páginas

Threads

Enviado por

Amilton
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
14 visualizações22 páginas

Threads

Enviado por

Amilton
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 22

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

 Execução do programa iniciado através de


cliques do mouse GUI, entrada de linha de
comando de seu nome, etc
 Um programa pode ter vários processos
 Considere vários usuários executando o mesmo
programa
Arquitetura de servidores
multithreads
Vantagens
• Capacidade de resposta - pode permitir a
execução contínua se parte do processo for
bloqueado, especialmente importante para
interfaces de usuário
• Compartilhamento de recursos - Os threads
compartilham recursos de processo, mais fáceis do
que a memória compartilhada ou a passagem de
mensagens
• Economia – mais fáceis de criar que a criação de
processos, conversão de sobrecarga mais baixa do
que a mudança de contexto.
• Escalabilidade - o processo pode tirar proveito de
arquiteturas multiprocessador
Programação multicore
 O paralelismo implica que um sistema poça executar mais
de uma tarefa simultaneamente
 Concorrência suporta mais de uma tarefa esteja em
progresso
 Processador / núcleo único, agendador que oferece
simultaneidade
 Tipos de paralelismo
 Paralelismo de dados - distribui subconjuntos dos mesmos
dados em vários núcleos, a mesma operação em cada
um
 Paralelismo de tarefas - distribuição de threads em
núcleos, cada thread executando operação exclusiva
 À medida que o número de threads cresce, o suporte
arquitetónico para o encadeamento também
 As CPUs possuem núcleos, bem como threads de
hardware
 Considere o Oracle SPARC T4 com 8 núcleos e 8 threads
de hardware por núcleo
Concorrência vs. Paralelismo
Processos simples e
multiThreads
Lei de Amdahl’s
 Identifica ganhos de desempenho ao adicionar
núcleos a um aplicativo que possui componentes
em série e paralelos
 S é uma parcela serial
 N núcleos de processamento
Tipo de Paralelismo
 Paralelismo de dados
▪ Consiste em dividir o conjunto de dados, de onde cada
porção seja executada com um thread específica e
em núcleo específico.

 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

 Ou seja, se a aplicação for 75% paralela / 25% serial,


passar de 1 para 2 núcleos resulta em uma aceleração de
1,6 vezes
 À medida que N se aproxima do infinito, a aceleração
aproxima-se de 1 / S
 A parte serial de um aplicativo tem um efeito
desproporcional no desempenho obtido pela adição de
núcleos adicionais
 Mas será que a lei tem em conta os sistemas multicore
contemporâneos?
Lei de Amdahl
Threads de usuário e threads do
kernel
 Threads de usuário - gerenciamento feito pela biblioteca
de threads no nível do usuário
 Três bibliotecas de threads principais:
 POSIX Pthreads
 Threads do Windows
 Threads do Java
 Threads do kernel - Suportados pelo kernel
 Exemplos – praticamente todos os sistemas operativos de
uso geral, incluindo:
 Mac OS
 Aplicações Linux
 Mac OS X iOS
 Androide
Threads de usuário e threads do
kernel
Modelos Multithreading

 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

Você também pode gostar