Buscar

Aula 05 Threads

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

Continue navegando