1 / 40

Linguagem de Programação IV

Linguagem de Programação IV. Introdução Professor: M.Sc . Carlos Oberdan Rolim. Introdução ao processamento paralelo e distribuido. *baseado no material de: Prof. Gerson Cavalheiro / Unisinos Benito Fernandes et al - UFPE. Processadores multi-núcleo.

connie
Download Presentation

Linguagem de Programação IV

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linguagem de Programação IV Introdução Professor: M.Sc. Carlos Oberdan Rolim

  2. Introdução ao processamento paralelo e distribuido • *baseado no material de: • Prof. Gerson Cavalheiro / Unisinos • Benito Fernandes et al - UFPE

  3. Processadores multi-núcleo • Incluem vários núcleos em uma única pastilha • Número de instruções simultâneas = número de núcleos • Cache compatilhada ou não • Memória compartilhada ou passagem de mensagens

  4. Por que multi-núcleo? • Antigamente, apenas aumentar o número de transistores era suficiente • Juntamente com o aumentos de cache • E aumento da frequência de clock • Hoje em dia, não é mais o caso • Número de transistores continua crescendo • Mas a frequência de clock está estagnada • Consumo de energia e aquecimento são os fatores limitantes

  5. Por que multi-núcleo (cont.)? • Novas abordagens tornaram-se necessárias • Solução encontrada: paralelismo • Diversos núcleos em uma mesma pastilha • Memória única • Reaproveitamento de outros componentes • Localidade propicia melhor desempenho • Alternativa: diversos processadores • Supercomputadores usam essa abordagem • Mais cara

  6. Paralelismo funciona! • Programa não paralelo

  7. Paralelismo funciona! • Programa paralelo

  8. Paralelismo: O Bom, o Mau e o Feio • Processadores multi-núcleo podem propiciar grandes aumentos de desempenho • Melhor caso: aplicações N vezes mais rápidas, onde N é o número de núcleos • Entretanto, o aumento costuma ser menor que isso • Lei de Amdahl • Aumento de desempenho é limitado pela porção não-paralelizável da aplicação

  9. Paralelismo: O Bom, o Mau e o Feio (cont.) • Faltou o Feio: • Responder a pergunta do slide anterior não é o suficiente • É necessário saber tornar paralela a aplicação • Criar aplicações paralelas é difícil • Exige técnicas específicas • Pois tem problemas específicos • Alguns tipos de aplicação se prestam melhor à paralelização do que outros

  10. Ok.... Mas e a programação concorrente ?!?!?

  11. Sistemas concorrentes • Execução particionada em unidades de computação • Independentes ou inter-dependentes • Executadas simultaneamente ou sequencialmente • Ilusão de simultaneidade • Exemplos: • Sistemas operacionais, servidores (web, de aplicação, de DNS, etc.), simuladores

  12. Sistemas paralelos • Sistemas concorrentes desenvolvidos para ser executados em hardware paralelo • Supercomputadores • Máquinas multi-núcleo • Aglomerados (clusters) • Técnicas para construir sistemas concorrentes frequentemente aplicam-se aos paralelos • Exceto quando a alocação de processos de software aos elementos de hardware é importante

  13. Sistemas distribuídos • Sistemas paralelos executados em uma rede de processadores autônomos que não compartilham memória • Normalmente dispersos geograficamente • Redes não tão rápidas • E não tão confiáveis • Técnicas mais específicas são necessárias

  14. Concorrência • Concorrência: • Tradicionalmente: disputa por recursos; • Dicionário: juntar-se para uma ação ou fim comum; contribuir; cooperar; • Outra abordagem: independência temporal • Programação concorrente: • Técnica de programação que explora a interação de atividades concorrentes (simultâneas) definidas por uma aplicação • Objetiva compartilhamento de dados ou cooperação para evolução da execução.

  15. Concorrência Técnica de programação que explora a independência temporal (simultaneidade) de atividades definidas por uma aplicação. Compartilhamento de dados Cooperação Para execução

  16. Concorrência • Disciplinas envolvidas: • Arquiteturas de Computadores • Sistemas Operacionais • Paradigmas de Programação • Programação Paralela e Distribuída • Sistemas Distribuídos

  17. Programação concorrente e paralela representam a mesma coisa ?

  18. Em que os sistemas concorrentes são diferentes? • Não-determinismo • Interação entre processos (ou processadores ou threads ou atores ou tarefas ...) • Comunicação • Sincronização • Controle de acesso a recursos compartilhados (gerenciamento) • E os sistemas paralelos? • Alocação de elementos de processamento a unidades de hardware • Infraestrutura de execução frequentemente cuida disso

  19. Não-determinismo • Programas sequenciais produzem as mesmas saídas quando executados com as mesmas entradas • Dado que não realizam escolhas aleatórias • Esta característica os torna determinísticos • Um programa não-determinístico pode produzir saídas diferentes para uma mesma entrada • Em execuções subsequentes

  20. Não-determinismo (cont.) • Programas paralelos e concorrentes são intrinsecamente não-determinísticos • São necessárias técnicas para torná-los determinísticos • Dependendo de quais ações são relevantes • Fontes possíveis: • Escalonamento • Interação com o usuário • Acesso a recursos

  21. Um programa determinístico...

  22. Um programa não determinístico...

  23. Programas não-determinísticos podem passar a ilusão de determinismo

  24. Entrelaçamento (interleaving) de execuções

  25. Interação entre processos • Aspectos decorrentes da interação entre processos que devem ser tratados na programação concorrente: • Controle de acesso a recursos compartilhados (gerenciamento) • Sincronização; • Comunicação.

  26. Interação entre processos • Controle de acesso a recursos compartilhados (gerenciamento) • Proverregras e mecanismosparacompartilharrecursos de processamentodispersosrede entre todososprocessos.

  27. Interação entre processos • Sincronização • Para compartilharem recursos os processos concorrentes devem ser sincronizados Troca de informações entre duas tarefas Mecanismo que permite controlar o compartilhamento de dados entre tarefas Comunicação • Implícita na programação sequencial. • Explícita na programação concorrente.

  28. Interação entre processos • Comunicação Troca de dados através de primitivas de comunicaçãointerprocesso e eficientesprotocolos de transportequesuportemessasprimitivas

  29. Resumindo.... Concorrente: atividades simultâneas que colaboram entre si Paralela: atividades simultâneas independentes

  30. Programar concorrente é diferente de programar sequencial ?

  31. Alguns problemas comuns em programas concorrentes • Erros de consistência de memória • Deadlock (impasse) • Starvation • Depuração e teste • (entre outros...)

  32. Erros de consistência de memória

  33. Deadlocks (impasses) • Situação onde um sistema não pode progredir • Dependência circular entre processos que precisam reservar certos recursos

  34. Deadlocks (cont.)

  35. Starvation • Decorre de políticas injustas de escalonamento • Consequência: alguns processos nunca têm acesso aos recursos desejados

More Related