Buscar

09 Fundamentos e S.O Threads

Prévia do material em texto

FUNDAMENTOS DA 
COMPUTAÇÃO
Threads
Bacharelado em Ciências da Computação
Prof. Renato Leite
renatoleite@unipe.br
1
OBJETIVOS
• Conceituar threads;
• Conhecer as implementações de threads;
• Formular uma tabela comparativa para estudos entre as 
diferentes implementações de threads.
2
THREAD
• De forma simplificada, uma thread pode ser definida como 
uma sub-rotina de um programa que pode ser executada de 
forma assíncrona, ou seja, executada paralelamente ao 
programa chamados. O programador deve especificar as 
thread, associando-as às sub-rotinas assíncronas. Dessa forma, 
um ambiente multithread possibilita a execução concorrente 
de sub-rotinas dentro de um mesmo processo. (Berenger, 
2007).
3
MONOTHREADS
• Ambientes que suportem apenas uma rotina em execução 
por processo são chamados ambientes mono-thread;
• Exemplos: Processos independentes e sub-processos.
• Problemas? Já vimos na aula passada!
4
(MULTI)THREADS
• A partir da divisão do processo em diversos módulos, pode-se 
definir a execução assíncrona de cada um desses módulos afim 
de tornar melhor o desempenho da aplicação;
• Threads compartilham o mesmo espaço de endereçamento, 
facilitando a comunicação entre as tarefas assíncronas e 
diminuindo o overhead na mudança de contexto;
• Thread é um fluxo de execução dentro de um processo, 
ambientes multi-thread possuem para um mesmo processo, 
diversos fluxos de execução ocorrendo paralalamente.
5
(MULTI)THREADS
6
ESTRUTURA 
DE UM 
PROCESSO 
MULTITHREAD
7
(MULTI)THREADS
• Em um ambiente monothread, a unidade de escalonamento é vista como 
o próprio processo, ao passo que em um ambiente multithread, cada um 
dos fluxos de execução (thread) é escalonado de forma individual;
• Não existindo qualquer tipo de proteção quanto a espaço de 
endereçamento disponível para uma thread, é preciso que haja 
tratamento da aplicação quanto ao acesso a recursos compartilhados de 
memória (variáveis);
• Não só o espaço de endereçamento é compartilhado, mas também 
alguns recursos como: acesso a dispositivos de E/S e descritores de 
arquivos;
8
COMPARAÇÃO DE 
PERFORMANCE
9
CASO DE USO MULTITHREAD
10
IMPLEMENTAÇÕES 
MULTITHREAD
11
THREAD DE USUÁRIO
• Thread de usuário:
• Para o sistema operacional, só é visto um processo com fluxo único de execução. Toda 
gerência de paralelismo é feita inteiramente pela implementação do programador;
• Tratamento de sinais são enviados para o processo, cabendo ao programador criar 
rotinas de interceptação ou seja: bloqueios devem ser tratados por rotinas que não 
parem a aplicação como um todo (sob o risco de se perder todo o benefício do 
multithread).
• Em caso de múltiplos processadores, é impossível escalonar duas threads entre duas 
cpu’s;
• Apesar de tudo isso, oferece o melhor desempenho na criação de threads e na 
portabilidade, pois se adequa até mesmo em sistemas monothread.
12
THREAD DE NÚCLEO
• Thread de usuário:
• Unidade de escalonamento é a própria thread;
• Sinais são enviados para cada thread;
• Oferece desempenho de criação de novos fluxos lento 
(devido a chamadas em núcleo);
• Melhor desempenho de execução: pode ser escalonada em 
múltiplos processadores.
13
COMPARATIVO ENTRE 
IMPLEMENTAÇÕES
14
Pedro F, 2014
REFERÊNCIAS
• MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de 
Sistemas Operacionais. 3a ed. Rio de Janeiro : LTC, 2002.
• Baseado em partes nas notas de aula do professor Pedro 
Filho, IFPB, Campus Patos;
15
DÚVIDAS?
16

Continue navegando