FACULDADE PITÁGORAS DE TECNOLOGIA Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012 Prof. Robert Gans [email protected] Prof. Robert Gans 1 FACULDADE PITÁGORAS DE TECNOLOGIA Introdução (Threads) • Partes de um processo que compartilham mesmo espaço de endereçamento; • Sub-rotina de um programa executado paralelamente ao programa chamador (execução concorrente de sub-rotinas); • Mais uma definição: – Enquanto processos permitem que o sistema operacional execute mais de uma aplicação ao mesmo tempo, as threads permitem que a aplicação execute mais de um método ao mesmo tempo. Prof. Robert Gans 2 FACULDADE PITÁGORAS DE TECNOLOGIA Definição de thread Thread ■ ■ ■ ■ É às vezes chamado de processo leve (LWP - light-weight process). Existem threads de instrução ou threads de controle. Os threads compartilham espaço de endereço e outras informações globais com seu próprio processo. Registradores, pilha, máscaras de sinal e outros dados específicos de thread são nativos a cada thread. Os threads devem ser gerenciados pelo sistema operacional ou pela aplicação de usuário. Exemplos: threads Win32, C-threads, threads em java, etc. Prof. Robert Gans 3 FACULDADE PITÁGORAS DE TECNOLOGIA Definição de thread Figura 4.1 Relação entre thread e processo. Prof. Robert Gans 4 FACULDADE PITÁGORAS DE TECNOLOGIA Vantagens/Desvantagens de threads • Vantagens: – Desempenho: • não existe necessidade de comunicação entre processos; • utilização de multiprocessadores para um mesmo processo; • um programa pode continuar sendo executado mesmo se parte dele estiver bloqueada (um navegador pode permitir a interação do usuário em um thread enquanto uma imagem é carregada em outro thread); • Desvantagem: o desenvolvimento de aplicações não é simples; Prof. Robert Gans 5 FACULDADE PITÁGORAS DE TECNOLOGIA Threads • Mais exemplos: – Navegador Web: • um thread para exibir imagens • um thread para recuperar dados da rede – Processador de texto: • um thread para seqüência de teclas • um thread para verificação ortográfica e gramatical • Para obter benefícios do uso de threads, aplicação deve permitir que partes do seu código sejam executadas em paralelo de forma independente; Prof. Robert Gans 6 FACULDADE PITÁGORAS DE TECNOLOGIA Threads • Por que não dividir em vários outros processos? – A criação de um processo e a mudança de contexto consome muito mais recurso do que a criação de uma thread; – Como cada processo possui espaço de endereçamento comunicação entre processos é difícil e lenta; • próprio, a Exemplos de sistemas monothreads: – MS-DOS e primeiras versões do Windows; Prof. Robert Gans 7 FACULDADE PITÁGORAS DE TECNOLOGIA Ambiente Multithreads • Cada processo possui pelo menos um thread; • Exemplo: programa independentes Prof. Robert Gans com duas sub-rotinas 8 FACULDADE PITÁGORAS DE TECNOLOGIA Ambiente Multithreads • Processo fica responsável pela alocação de recursos, mas a unidade escalonada é a thread; • TCB: armazena contexto de hardware e informações sobre a thread (prioridade, estado...) • O TCB está para a thread assim como o PCB está para o processo! Prof. Robert Gans 9 FACULDADE PITÁGORAS DE TECNOLOGIA Ambiente Multithreads • Threads de um mesmo processo compartilham contexto de software e espaço de endereçamento, mas não compartilham contexto de hardware; Contexto de Hardware Contexto de hardware Contexto de hardware Contexto de hardware Thread 1 Thread 2 Thread 3 Contexto de software Contexto de Software Programa Espaço de Endereçamento Estrutura do processo Prof. Robert Gans Espaço de endereçamento Processo MULTITHREAD 10 FACULDADE PITÁGORAS DE TECNOLOGIA Ambiente Multithreads Processo Variáveis Programa Principal Thread_1 PC SP Contexto de Hardware ... Espaço de endereçamento Call Sub_1 Thread_2 Sub_1 Ret PC SP Thread_3 Sub_2 PC SP Contexto de Hardware Fim Contexto de Hardware Call Sub_2 ... Ret Prof. Robert Gans 11 FACULDADE PITÁGORAS DE TECNOLOGIA Ambiente Multithreads • Threads são extremamente cliente/servidor. Ex: SGBD; utilizadas em ambientes • Um único processo no servidor gera uma thread para cada solicitação de cliente; Prof. Robert Gans 12 FACULDADE PITÁGORAS DE TECNOLOGIA Ambiente Multithreads Processo servidor Solicitações Prof. Robert Gans Thread Thread Thread Processo cliente Processo cliente Processo cliente 13 FACULDADE PITÁGORAS DE TECNOLOGIA Motivação na criação de threads Os threads tornaram-se proeminentes por causa de tendências subseqüentes em relação: ■ Ao projeto de software ● Maior simplicidade para exprimir tarefas inerentemente paralelas. ■ Ao desempenho ● Maior escalonamento para sistemas com múltiplos processadores. ■ À cooperação ● O custo operacional do espaço de endereço compartilhado é menor que o da IPC. Prof. Robert Gans 14 FACULDADE PITÁGORAS DE TECNOLOGIA Motivação na criação de threads Todo thread transita entre uma série de estados de thread distintos. Os threads e os processos têm muitas operações em comum (por exemplo, criar, sair, retomar e suspender). A criação de thread não requer que o sistema operacional inicialize recursos compartilhados entre os processos-pai e os respectivos threads. ■ Prof. Robert Gans Isso reduz o esforço de criação e término de threads, em comparação à criação e ao término de processo. 15 FACULDADE PITÁGORAS DE TECNOLOGIA Estados de thread: ciclo de vida de um thread Estados de thread ■ ■ ■ ■ ■ ■ ■ Estado Estado Estado Estado Estado Estado Estado nascido pronto (estado executável) em execução morto bloqueado de espera adormecido ● O período de sono especifica por quanto tempo um thread ficará adormecido. Prof. Robert Gans 16 FACULDADE PITÁGORAS DE TECNOLOGIA Estados de thread: ciclo de vida de um thread Figura 4.2 Ciclo de vida do thread. Em sistemas operacionais, preemptividade ou preempção é a capacidade de alterar a ordem de (ou tirar de execução) um processo em detrimento de outro com uma prioridade maior. Prof. Robert Gans 17 FACULDADE PITÁGORAS DE TECNOLOGIA Operações de thread As operações de thread não correspondem precisamente às operações de processo. ■ Cancelar ● Indica que um thread deve ser terminado, mas não garante que o thread será terminado. ● Os threads podem mascarar o sinal de cancelamento. ■ Associar ● Para que um thread primário aguarde até que todos os outros threads terminem, ele se associa a esses threads. ● O thread que se associa é bloqueado até que o thread ao qual ele se associou termine. Prof. Robert Gans 18 FACULDADE PITÁGORAS DE TECNOLOGIA Modelos de thread Três são os modelos de thread mais conhecidos: ■ ■ ■ Prof. Robert Gans Threads de usuário Threads de núcleo Uma combinação de ambos 19 FACULDADE PITÁGORAS DE TECNOLOGIA Threads de usuário Os threads de usuário executam operações de suporte a threads no espaço do usuário. ■ Isso significa que os threads são criados por bibliotecas em tempo de execução que não podem executar instruções privilegiadas nem acessar as primitivas do núcleo diretamente. Implementação de thread de usuário ■ Mapeamentos de thread muitos-para-um ● O sistema operacional mapeia todos os threads de um processo multithread para um único contexto de execução. ● Vantagens → As bibliotecas de usuário podem escalonar seus threads para otimizar o desempenho. → A sincronização é realizada fora do núcleo, e isso evita chaveamento de contexto. → É mais portável. Thread 4 Thread 3 Thread 2 Thread 1 Thread 0 ● Desvantagens → O núcleo considera o processo multithread como um único thread de controle. ▪ Isso pode fazer com que o desempenho fique abaixo do ideal se um thread requisitar uma operação E/S. ▪ Não pode ser escalonado para executar em múltiplos processadores ao mesmo tempo.empo. Modo usuário Biblioteca Kernel Prof. Robert Gans Modo kernel 20 FACULDADE PITÁGORAS DE TECNOLOGIA Threads de usuário Figura 4.3 Threads de usuário. Prof. Robert Gans 21 FACULDADE PITÁGORAS DE TECNOLOGIA Threads de núcleo Os threads de núcleo tentam resolver as limitações dos threads de usuário mapeando cada thread para o seu próprio contexto de execução. ■ O thread de núcleo oferece mapeamento de thread um-paraum. ● Vantagens: maior escalabilidade, interatividade e rendimento. ● Desvantagens: sobrecarga decorrente do chaveamento de contexto e menor portabilidade em virtude de as APIs serem específicas ao sistema operacional. Kernel Prof. Robert Gans Thread 4 Thread 3 Thread 2 Thread 1 Thread 0 Os threads de núcleo nem sempre são a solução ideal para as aplicações. Modo usuário Modo kernel 22 FACULDADE PITÁGORAS DE TECNOLOGIA Threads de núcleo Figura 4.4 Threads de núcleo. Prof. Robert Gans 23 FACULDADE PITÁGORAS DE TECNOLOGIA Combinação de threads de usuário e de núcleo Implementação da combinação de threads de usuário (TMU) e de núcleo (TMK) ■ Mapeamento de threads muitos-para-muitos (mapeamento de threads m-to-n) TMU 5 TMU 4 TMU 3 TMU 2 TMU 1 TMU 0 ● Em comparação com os mapeamentos de threads um-para-um, esse mapeamento consegue reduzir a sobrecarga implementando o reservatório de threads. Modo usuário Biblioteca TMK 0 TMK 1 TMK 2 TMK 3 Modo kernel Kernel Prof. Robert Gans Um processo pode ter vários TMKs, e por sua vez, um TMK pode ter vários TMUs. O núcleo do SO reconhece os TMKs e pode escalona-los individualmente. Um TMU pode ser executado em um TMK,em um determinado momento, e no instante seguinte ser executado em outro. 24 FACULDADE PITÁGORAS DE TECNOLOGIA Combinação de threads de usuário e de núcleo Figura 4.5 Modelo de operação de thread híbrido. Prof. Robert Gans 25 FACULDADE PITÁGORAS DE TECNOLOGIA Término de threads Término de threads (cancelamento) ■ ■ ■ Prof. Robert Gans É diferente de implementação de threads. Se for terminado prematuramente, o thread pode provocar erros sutis nos processos, porque vários threads compartilham o mesmo espaço de endereço. Determinadas implementações de thread permitem que um thread determine quando ele pode ser terminado, a fim de evitar que o processo entre em um estado inconsistente. 26