Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Threads

254 views

Published on

  • Be the first to comment

  • Be the first to like this

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

×