threads

9

Click here to load reader

Upload: nayron-fernandes

Post on 04-Jul-2015

118 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Threads

23/10/2013

1

Depende!

Agilidade

◦ Se o objetivo é agilidade, deve-seimplementá-los no espaço do usuário.

Espaço do usuário:

◦ Refere-se ao conjunto de programas querodam com o processador em modo usuário.Existem certas instruções que não podem sercolocadas à disposição das aplicações, pois asua utilização indevida ocasiona sériosproblemas à integridade do sistema.

O controle de processos

◦ Nesse caso o controle do processo é feitodiretamente pelo sistema operacional,mas os threads são controlados porprocedimentos em tempo de execuçãoque serve como interface entre a máquinavirtual (processos) onde rodam os threads.

Page 2: Threads

23/10/2013

2

Neste caso, o S.O. não “enxerga” os threads,pois eles são implementados no espaço dousuário, sendo submissos ao processo que oscriou.

Os threads não podem usufruir do sistema deinterrupções do sistema operacionais eportanto 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

Page 3: Threads

23/10/2013

3

Eficiência

◦ Se o objetivo é eficiência, então os threadspodem ser implementados no núcleo dosistema operacional, podendo serem vistospelo SO e usufruindo de seu sistema deinterrupções.

◦ Portanto passam a serem preemptíveis.

Nesse sentido os threads passam a sertratados como processos, possibilitando obloqueio de outros threads e tambémeficiência no escalonamento.

Agora não há necessidade de interromper oprocesso que o gerou (processo pai), uma vezque o thread “é um processo”.

Page 4: Threads

23/10/2013

4

Com isso o Sistema Operacional podeinterromper um thread sem interromper oprocesso pai, e também outras ramificaçõesem execução.

O thread também irá competir igualmentecom os processos os ciclos do processador.

Vantagens de implementação no núcleo

◦ Maior autonomia dos threads

Desvantagens

◦ Sistema perde em portabilidade, asmudanças de contexto dos threads temagora a mesma complexidade dosprocessos.

Page 5: Threads

23/10/2013

5

Quando terminam sua execução;

Quando o tempo alocado a seu processo pai foi esgotado

Ou se solicitou algum recurso do sistema.

Page 6: Threads

23/10/2013

6

Programas multithread são programas quecontém várias threads, executando tarefasdistintas, simultaneamente. O browserHotJava, implementado em Java, é umexemplo.

O browser poderá fazer um scroll em umapágina enquanto carrega uma imagem ouexecuta 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.

Page 7: Threads

23/10/2013

7

Implementação de processos servidores queprestam serviços a processos clientes.

O emprego de ramificações na estrutura decontrole do servidor, permite oagrupamento dos threads num mesmoespaço de endereçamento, admitindoacesso 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 enquantoestiverem conectados

Page 8: Threads

23/10/2013

8

Como a ramificação fica no sistema enquantoo usuário estiver conectado, ela ocupa oespaço de memória mesmo que o cliente nãorequisite 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 voltanovamente ao processo que a criou.

Page 9: Threads

23/10/2013

9

◦ Ex: se forem feitas várias operações de leitura,serão geradas várias ramificações do processoresponsável pela operação de leitura.

É importante ressaltar novamente que essasramificações (threads) serão executadas“independentes” uma das outras, e serãoextintas assim que o serviço para qual foramcriadas, também termine.

Conclusão

A utilização do mecanismos de ramificaçõespermite que a memória seja otimizada etambém reaproveitada assim que essasterminem sua execução, levando a umaredução considerável no custo do sistema.