Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Threads Gerhard Saboia Capítulo 3 2 Threads Antigamente os SO suportavam apenas processos com um único thread (monothread); Um processo pode ter partes diferentes do seu código sendo executadas em paralelo; Menor overhead do que utilizar múltiplos processos; Threads de um mesmo processo compartilham o mesmo espaço de endereçamento; 3 Threads A comunicação entre threads não envolve mecanismos lentos de intercomunicação entre processos (maior desempenho); Implementação multithread não é simples; O paralelismo introduz um novo conjunto de problemas como a comunicação e sincronização de threads; 4 Ambiente Monothread Um processo suporta apenas um programa no seu espaço de endereçamento; A utilização de processos independentes e subprocessos permite dividir uma aplicação em partes que podem trabalhar de forma concorrente; ● Gerenciamento de emails; Cada funcionalidade do software implica a criação de um novo processo para atendê-la; 5 Ambiente Monothread Demanda consumo de diversos recursos do sistema; Sempre que um processo é criado: ● Alocar recursos para cada processo; ● Consumindo tempo de processador; Término do processo: ● Dispensa tempo para desalocar recursos previamente alocados; Comunicação ● Difícil e lenta; ● Utiliza pipes, sinais, semáforos, etc; Exemplo: ● DOS, primeiras versões do windows, versões antigas do UNIX; 6 Threads O Modelo de Thread (a) Três processos cada um com um thread (b) Um processo com três threads 1 7 O Modelo de Thread Items compartilhados por todos os threads em um processo Itens privativos de cada thread 8 O Modelo de Thread Cada thread tem sua própria pilha 9 Uso de Thread Um processador de texto com três threads 10 Uso de Thread Um servidor web com múltiplos threads 11 Ambiente Multithread Não existe a idéia de programas associados a processos, mas a threads; Processo tem pelo menos um thread de execução, e pode compartilhar seu espaço de endereçamento com inúmeros outros; Thread pode ser uma sub-rotina de um programa que pode ser executada de forma assíncrona (paralelamente ao programa chamador); Este ambiente possibilita a execução concorrente de sub- rotinas dentro de um mesmo processo; 12 Ambiente Multithread Possibilidade de minimizar a alocação de recursos do sistema; Diminui o overhead na criação, troca e eliminação de processos; Threads compartilham o processador da mesma maneira que processos, e passam pelas mesmas mudanças de estado; ● Quando um thread espera por uma operação de E/S, outro thread pode ser executado; ● Cada thread possui seu próprio contexto de hardware para permitir a troca de contexto; ● Quando um thread está sendo executado, seu contexto de hardware está armazenado nos registradores do processador; ● Quando perde a UCP, as informações são atualizadas no seu contexto de hardware; 2 13 Ambiente Multithread Dentro de um mesmo processo: ● Threads compartilham o mesmo contexto de software e espaço de endereçamento; ● Cada thread tem o seu próprio contexto de hardware; ● Estrutura de Thread: TCB – Thread Control Block: Armazena, além do contexto de hardware, algumas informações tipo: prioridade, estado de execução, 14 Ambiente Multithread Programas concorrentes multithreads são mais rápidos do que programas concorrentes implementados com múltiplos processos; ● Operações de criação, troca de contexto e eliminação de threads geram menor overhead; 15 Ambiente Multithread 16 Ambiente Multithread 17 Ambiente Multithread Threads são essenciais para solicitação de serviços remotos; ● Um thread pode solicitar um serviço remoto, enquanto a aplicação continua realizando outras atividades; ● Permite que diversos pedidos sejam atendidos simultaneamente; 18 Ambiente Multithread 3 Threads em modo Usuário - TMU São implementados pela aplicação e não pelo sistema operacional; Deve existir uma biblioteca de rotinas que possibilite à aplicação realizar tarefas como criação/eliminação de threads, troca de mensagens entre threads e política de escalonamento; O SO não sabe a existência de múltiplos threads (responsabilidade exclusiva da aplicação esse gerenciamento); Possibilidade de implementar aplicações multithreads em SO que não suportam threads; São rápidos e eficientes, evitando mudança de modo de acesso (usuário-kernel-usuário); Tratamento de sinais é complicado (os sinais encaminhados apenas aos processos devem ser direcionados para cada thread); 19 20 Implementação de Threads de Usuário Um pacote de threads de usuário 21 Threads em modo Kernel - TMK São implementados pelo núcleo do SO, através de chamadas de rotinas do sistema; SO sabe da existência de cada thread e pode escaloná-las individualmente; Baixo desempenho (vários modos de acesso); 22 Implementação de Threads de Núcleo Um pacote de threads gerenciado pelo núcleo Threads em modo Hibrido - TMH Combina vantagens de TMU e TMK; Um processo pode ter vários TMK que por sua vez pode ter vários TMU; O núcleo do sistema reconhece os TMK e pode escaloná-los individualmente; Um TMU pode ser executado em um TMK e em outro instante em um outro; Os TMU são mapeados em TMK quando o processo é executado; 23 24 Implementações Híbridas Multiplexação de threads de usuário sobre threads de núcleo 4
Compartilhar