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

Linguagem de Programação IV

  • Upload
    connie

  • View
    49

  • Download
    0

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: Linguagem de Programação IV

Linguagem de Programação IV

Introdução

Professor: M.Sc. Carlos Oberdan Rolim

Page 2: Linguagem de Programação IV

Introdução ao processamento paralelo e distribuido

*baseado no material de:-Prof. Gerson Cavalheiro / Unisinos -Benito Fernandes et al - UFPE

Page 3: Linguagem de Programação IV
Page 4: Linguagem de Programação IV
Page 5: Linguagem de Programação IV

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

Page 6: Linguagem de Programação IV

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

Page 7: Linguagem de Programação IV
Page 8: Linguagem de Programação IV

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

Page 9: Linguagem de Programação IV

Paralelismo funciona!

• Programa não paralelo

Page 10: Linguagem de Programação IV

Paralelismo funciona!• Programa paralelo

Page 11: Linguagem de Programação IV

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

Page 12: Linguagem de Programação IV
Page 13: Linguagem de Programação IV

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

Page 14: Linguagem de Programação IV

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

Page 15: Linguagem de Programação IV

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

Page 16: Linguagem de Programação IV

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

Page 17: Linguagem de Programação IV

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

Page 18: Linguagem de Programação IV

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.

Page 19: Linguagem de Programação IV

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

Page 20: Linguagem de Programação IV

Concorrência

Disciplinas envolvidas: Arquiteturas de Computadores Sistemas Operacionais Paradigmas de Programação Programação Paralela e Distribuída Sistemas Distribuídos

Page 21: Linguagem de Programação IV

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

Page 22: Linguagem de Programação IV

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

Page 23: Linguagem de Programação IV

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

Page 24: Linguagem de Programação IV

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

Page 25: Linguagem de Programação IV

Um programa determinístico...

Page 26: Linguagem de Programação IV

Um programa não determinístico...

Page 27: Linguagem de Programação IV

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

Page 28: Linguagem de Programação IV

Entrelaçamento (interleaving) de execuções

Page 29: Linguagem de Programação IV

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.

Page 30: Linguagem de Programação IV

Interação entre processos Controle de acesso a recursos compartilhados

(gerenciamento)

Prover regras e mecanismos para compartilhar recursos de processamento dispersos rede entre todos os processos.

Page 31: Linguagem de Programação IV

Mecanismo que permite controlar o compartilhamento de dados entre tarefas

Interação entre processos Sincronização

Para compartilharem recursos os processos concorrentes devem ser sincronizados

Troca de informações entre duas tarefas

Comunicação

• Implícita na programação sequencial.• Explícita na programação concorrente.

Page 32: Linguagem de Programação IV

Troca de dados através de primitivas de comunicação interprocesso e eficientes protocolos de transporte que suportem

essas primitivas

Interação entre processos Comunicação

Page 33: Linguagem de Programação IV

Concorrente: atividades simultâneas que colaboram entre si

Paralela: atividades simultâneas independentes

Resumindo....

Page 34: Linguagem de Programação IV

Programar concorrente é diferente de programar sequencial ?

Page 35: Linguagem de Programação IV

Alguns problemas comuns em programas concorrentes

• Erros de consistência de memória• Deadlock (impasse)• Starvation• Depuração e teste• (entre outros...)

Page 36: Linguagem de Programação IV

Erros de consistência de memória

Page 37: Linguagem de Programação IV

Deadlocks (impasses)

• Situação onde um sistema não pode progredir• Dependência circular entre processos que

precisam reservar certos recursos

Page 38: Linguagem de Programação IV
Page 39: Linguagem de Programação IV

Deadlocks (cont.)

Page 40: Linguagem de Programação IV

Starvation

• Decorre de políticas injustas de escalonamento

• Consequência: alguns processos nunca têm acesso aos recursos desejados