Linguagem de Programação IV

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais
Advertisements

SISTEMAS OPERACIONAIS
Sistemas Distribuídos
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Sistemas Cliente/Servidor Introdução
Introdução aos Sistemas Distribuídos
Sistemas operacionais
Engenharia de Software
Arquitetura de Sistemas Operacionais
Sistemas Operacionais
Arquitetura de Computadores
Rganização de Computadores Multiprocessadores Capítulo 9 – Patterson & Hennessy Organização de Computadores Multiprocessadores Capítulo 9 – Patterson &
Sistemas Operacionais. Prof. André Luis Meneses Silva Página da disciplina (em breve):
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
Threads.
Arquitetura de Computadores
Sistemas Operacionais
Protocolo CMB em simulação distribuída
2- Entendendo o que é Arquitetura e Organização
REDUNDÂNCIA POR SOFTWARE
Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.
Sistemas Distribuídos
Tópicos em redes e sistemas distribuídos
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Arquitetura de computadores
Algoritmos 1º Semestre Materia: Informática Profº: Cristiano.
GESTÃO DE SISTEMAS OPERACIONAIS II
Sistemas Distribuídos
Introdução à Informática
Sistemas Operacionais
Sistemas Distribuídos Introdução. Conceito Coleção de múltiplos processos que executam sobre uma coleção de processadores autônomos interligados em uma.
Sistemas Operacionais
Processos.
Sistemas Distribuídos
BD Distribuído Conceitos Iniciais.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Sistemas Operacionais
SISTEMAS OPERACIONAIS I
Sistemas Operacionais
PROGRAMAÇÃO DISTRIBUÍDA Aula 01 Prof. Henrique Mongelli
Processos.
SISTEMAS OPERACIONAIS I
Sistemas Operacionais
Zeque - Grad. CC1 Sistemas Operacionais Curso de Ciência da Computação da UFPE Prof. José Queiroz - ZEQUE.
Troca de Mensagens Programação concorrente
Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012
Como elaborar seu currículo? 04/2006 Um currículo bem feito não garante sua contratação mas um currículo mal elaborado elimina-o do processo seletivo.
CONECTIVIDADE Prof.: Alessandro V. Soares Ferreira
Linguagem de Programação IV Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Ambientação e Introdução
SISTEMAS OPERACIONAIS
Processamento de Alto Desempenho Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Sistemas Distribuídos
Algoritmos e Programação MC102
Capítulo 6: SAD – Arquitetura e aspectos de rede e segurança
INFRA-ESTRUTURA: HARDWARE
Sistemas Operacionais Aula 2 Danielle Costa
Estilos Arquiteturais
Tipos de Sistemas Operacionais
Sistemas Operacionais Distribuídos
Arquitetura de computadores
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Projetar Processos. Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Projetar distribuição | 2 Descrição do Projeto.
Leandro Clementino Almeida.  Anos 50 - Sistemas Operacionais tipo Lote:  Aumentar a capacidade de processamento de programas  Usuário ia ao computador.
Banco de Dados Distribuídos Sílvia Cristina de Matos Soares
Sistemas Operacionais
Sistemas Operacionais de Redes
Estruturas de Sistemas Operacionais. Componentes Comuns do Sistema Administração de Processos Administração da Memória Principal Administração do Armazenamento.
Bruna Cavallero Martins Universidade Católica de Pelotas.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Professor: Gustavo Wagner.
Transcrição da apresentação:

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: Programação concorrente: 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.

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.

Interação entre processos Comunicação Troca de dados através de primitivas de comunicação interprocesso e eficientes protocolos de transporte que suportem essas primitivas

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

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