Threads

216 views
152 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
216
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Threads

  1. 1. 23/10/2013     Depende! Agilidade ◦ Se o objetivo é agilidade, deve-se implementá-los no espaço do usuário. Espaço do usuário: ◦ Refere-se ao conjunto de programas que rodam com o processador em modo usuário. Existem certas instruções que não podem ser colocadas à disposição das aplicações, pois a sua utilização indevida ocasiona sérios problemas à integridade do sistema. O controle de processos ◦ Nesse caso o controle do processo é feito diretamente pelo sistema operacional, mas os threads são controlados por procedimentos em tempo de execução que serve como interface entre a máquina virtual (processos) onde rodam os threads. 1
  2. 2. 23/10/2013  Neste caso, o S.O. não “enxerga” os threads, pois eles são implementados no espaço do usuário, sendo submissos ao processo que os criou.  Os threads não podem usufruir do sistema de interrupções do sistema operacionais e portanto são não-preemptíveis.  Vantagens ◦ Agilidade ◦ O gerenciamento é menos complicado Desvantagens ◦ Não preempção ◦ Impedidos de utilizar interrupções do sistema operacional  2
  3. 3. 23/10/2013  Eficiência ◦ Se o objetivo é eficiência, então os threads podem ser implementados no núcleo do sistema operacional, podendo serem vistos pelo SO e usufruindo de seu sistema de interrupções. ◦ Portanto passam a serem preemptíveis.  Nesse sentido os threads passam a ser tratados como processos, possibilitando o bloqueio de outros threads e também eficiência no escalonamento.  Agora não há necessidade de interromper o processo que o gerou (processo pai), uma vez que o thread “é um processo”. 3
  4. 4. 23/10/2013     Com isso o Sistema Operacional pode interromper um thread sem interromper o processo pai, e também outras ramificações em execução. O thread também irá competir igualmente com os processos os ciclos do processador. Vantagens de implementação no núcleo ◦ Maior autonomia dos threads Desvantagens ◦ Sistema perde em portabilidade, as mudanças de contexto dos threads tem agora a mesma complexidade dos processos. 4
  5. 5. 23/10/2013    Quando terminam sua execução; Quando o tempo alocado a seu processo pai foi esgotado Ou se solicitou algum recurso do sistema. 5
  6. 6. 23/10/2013       Programas multithread são programas que contém várias threads, executando tarefas distintas, simultaneamente. O browser HotJava, implementado em Java, é um exemplo. O browser poderá fazer um scroll em uma página enquanto carrega uma imagem ou executa vários aplicações ao mesmo tempo. Exemplos: Programação Reativa: aplicação responde a eventos de entrada. Exemplo: interfaces com o usuário, onde cada evento corresponde a uma ação Paralelismo físico/ distribuição: para tirar vantagem de múltiplas CPUs centralizadas ou distribuídas. 6
  7. 7. 23/10/2013  Implementação de processos servidores que prestam serviços a processos clientes.  O emprego de ramificações na estrutura de controle do servidor, permite o agrupamento dos threads num mesmo espaço de endereçamento, admitindo acesso concorrente de vários clientes a um único servidor. Há dois tipos de ramificações:  Ramificações Estáticas:  Criadas em tempo de compilação  Exemplo: Servidores de terminais  ◦ Servidor cria ramificações ◦ Essas ramificações são locais ao servidor ◦ Ramificações atendem usuários enquanto estiverem conectados 7
  8. 8. 23/10/2013  Como a ramificação fica no sistema enquanto o usuário estiver conectado, ela ocupa o espaço de memória mesmo que o cliente não requisite nenhuma operação do servidor.  Ramificações Dinâmicas: Criadas e destruídas de acordo com as necessidades. Exemplo: Servidores de arquivos   ◦ Cada vez que um cliente solicita uma operação, o servidor cria uma ramificação que ficará responsável por determinada tarefa (leitura/escrita) e terminado sua execução o controle volta novamente ao processo que a criou. 8
  9. 9. 23/10/2013 ◦ Ex: se forem feitas várias operações de leitura, serão geradas várias ramificações do processo responsável pela operação de leitura.  É importante ressaltar novamente que essas ramificações (threads) serão executadas “independentes” uma das outras, e serão extintas assim que o serviço para qual foram criadas, também termine.  Conclusão A utilização do mecanismos de ramificações permite que a memória seja otimizada e também reaproveitada assim que essas terminem sua execução, levando a uma redução considerável no custo do sistema.  9

×