View
49
Download
0
Category
Preview:
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
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
• 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
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
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
Paralelismo funciona!
• Programa não paralelo
Paralelismo funciona!• Programa paralelo
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
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
Ok.... Mas e a programação concorrente ?!?!?
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
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
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
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.
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
Concorrência
Disciplinas envolvidas: Arquiteturas de Computadores Sistemas Operacionais Paradigmas de Programação Programação Paralela e Distribuída Sistemas Distribuídos
Programação concorrente e paralela representam a mesma coisa ?
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
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
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
Um programa determinístico...
Um programa não determinístico...
Programas não-determinísticos podem passar a ilusão de determinismo
Entrelaçamento (interleaving) de execuções
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.
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.
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.
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
Concorrente: atividades simultâneas que colaboram entre si
Paralela: atividades simultâneas independentes
Resumindo....
Programar concorrente é diferente de programar sequencial ?
Alguns problemas comuns em programas concorrentes
• Erros de consistência de memória• Deadlock (impasse)• Starvation• Depuração e teste• (entre outros...)
Erros de consistência de memória
Deadlocks (impasses)
• Situação onde um sistema não pode progredir• Dependência circular entre processos que
precisam reservar certos recursos
Deadlocks (cont.)
Starvation
• Decorre de políticas injustas de escalonamento
• Consequência: alguns processos nunca têm acesso aos recursos desejados
Recommended