Sistemas Distribuídos - Multithreading

2,323 views

Published on

Published in: Technology, Business
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
2,323
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
104
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Sistemas Distribuídos - Multithreading

  1. 1. MultithreadingProf. Adriano Teixeira de Souza
  2. 2.  Thread (lightweight process) é uma unidade básica de utilização da CPU, compreendendo um id, um contador de programa, registradores e pilha Compartilha seção de código, seção de dados e outros recursos do SO pertencentes ao um mesmo processo Prof. Adriano Teixeira de Souza
  3. 3.  Capacidade de Resposta Compartilhamento de Recursos Economia na criação de processos Uso de Arquiteturas Multiprocessador Prof. Adriano Teixeira de Souza
  4. 4.  Threads de Usuário ◦ Implementadas por bibliotecas Threads de Kernel ◦ Suportadas diretamente pelo SO Prof. Adriano Teixeira de Souza
  5. 5.  A maioria das linguagens de programação não permite programação de atividades concorrentes Normalmente as linguagens disponibilizam chamadas ao SO ◦ A biblioteca Win32 fornece um conjunto de APIs para efetuar multithreading em aplicações nativas Windows ◦ Pthreads fornece uma biblioteca para threads em sistemas POSIX, como linux ◦ C-threads no Mach ◦ Threads no Solaris Prof. Adriano Teixeira de Souza
  6. 6.  Historicamente a linguagem ADA (DoD) disponibilizou primitivas de concorrência porém a linguagem não popularizou-se no meio acadêmico e comercial Java notavelmente é a única linguagem de uso geral e popular a disponibilizar as primitivas de concorrência para o programador de aplicativos (threads) ◦ Linguagens como C, C++ e Delphi fazem chamadas a primitivas de multithreading do SO Todo programa java possui pelo menos um thread de controle ◦ main executa num thread na JVM Prof. Adriano Teixeira de Souza
  7. 7.  Explicitamente pode-se criar uma classe derivada da classe Thread, do package java.lang É necessário redefinir o método run(), que realmente realiza o trabalho O método start() cria efetivamente a thread ◦ Aloca memória e inicializa um novo thread na JVM ◦ Chama run() para tornar o thread passível de execução Construtores: ◦ public Thread (String threadName) ◦ public Thread() Prof. Adriano Teixeira de Souza
  8. 8.  Alternativamente pode-se criar uma classe que implementa a interface Runnable public interface Runnable { public abstract void run(); } Toda classe que implementa Runnable deve definir o método run() class Teste implements Runnable { public void run() { } } Prof. Adriano Teixeira de Souza
  9. 9.  start(): inicia a execução da thread (método run) suspend(): suspende a execução da thread que está executando sleep(): faz a thread que está executando dormir por um tempo determinado yield(): faz a thread que está executando dormir por um tempo indeterminado resume(): resume a execução de uma thread suspensa stop(): termina a execução de uma thread; a thread não pode ser mais executada. Prof. Adriano Teixeira de Souza
  10. 10.  join(): método que espera o término da THREAD para qual foi enviada a mensagem para ser liberada. interrupt(): método que interrompe a execução de uma THREAD. interrupted(): método que testa se uma THREAD está ou não interrompida. Prof. Adriano Teixeira de Souza
  11. 11. nascimento start pronto Notify Notifyall Conclusão E/S yeld Despachar (alocar Processador)Tempo expira wait Inicia E/S executando esperando bloqueado completo sleep adormecido morto morto Prof. Adriano Teixeira de Souza
  12. 12.  Além do programa multithread, outros threads executam assincronamente para a JVM ◦ Gerência de memória: coleta de lixo ◦ Eventos de temporização ◦ Controles gráficos Prof. Adriano Teixeira de Souza
  13. 13.  Tipicamente a JVM é implementada sobre um SO host, ocultando detalhes de implementação Não indica como threads serão mapeados ◦ Windows NT modelo 1-1 ◦ Solaris 2 modelo N-1 e M-n posteriormente Prof. Adriano Teixeira de Souza
  14. 14. Prof. Adriano Teixeira de Souza
  15. 15. Prof. Adriano Teixeira de Souza

×