Baixe o app para aproveitar ainda mais
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
Compartilhar