Algoritmos Distribuídos. AD Modelo Computacional 1

Documentos relacionados
Algoritmos Distribuídos Modelo Computacional

Introdução. Matemática Discreta. Prof Marcelo Maraschin de Souza

Tolerância a Falhas. Sumário. Acordo Distribuído. December 18, Grupos de Processos

Sistemas Distribuídos

AEDI Introdução Revisão 2

AGT0001 Algoritmos Aula 01 O Computador

Projeto e Análise de Algoritmos Análise de Complexidade. Prof. Luiz Chaimowicz

Preliminares. Profa. Sheila Morais de Almeida. agosto

Módulo 3 - Estrutura e configuração de Sistemas Operativos monoposto

15/03/2018. Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções. Prof. Ariel da Silva Dias -

Sabe-se que as unidades de entrada e saída são dos dispositivos que possibilitam a comunicação entre o usuário e o computador.

FACULDADE PITÁGORAS PRONATEC

Arranjo de Processadores

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Sistema Computacional

Teoria da Computação Prof. Lucília Figueiredo Prova 03 - ENTREGA DIA 24/06/2015. (a) Descreva o programa da MT usando um pseudocódigo.

Algoritmos Distribuídos para Roteamento em Redes Ad Hoc

Sistemas Distribuídos: Conceitos e Projeto Resiliência de Processos

Classificações. Alberto Felipe Friderichs Barros

Elementos básicos de uma Arquitetura Computacional

Construção de Algoritmos II Aula 06

Complexidade de Tempo e Espaço

MER Modelo de entidade e Relacionamento. Prof. Me. Hélio Esperidião

Introdução as Redes de Computadores

ANÁLISE DE COMPLEXIDADE

Computador (arquitetura básica): b

Redes de Computadores

Conceitos sobre Computadores

Aula 05. Figuras Interrupção

Programação Concorrente. Prof. Hugo Vieira Neto

Introdução as Redes de Computadores

Teoria da Computação Aula 9 Noções de Complexidade

Controle de acesso ao meio

Introdução à Programação Aula 02. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução à Ciência da Computação

Computação L. Apresentação da Disciplina e Conceitos Básicos de Computadores

ALP Algoritmos e Programação. . Um modelo de Computador

Parte I Multiprocessamento

Modelos para Concorrência

Sincronização e Comunicação

Introdução à Informática

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

CAI Fluxograma Revisão 7

Prof. Samuel Henrique Bucke Brito

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

Circuitos Seqüenciais

BC1424 Algoritmos e Estruturas de Dados I Aula 05 Custos de um algoritmo e funções de complexidade

Algoritmos e Estruturas de Dados II. Projeto e Análise de Algoritmos. Algoritmos. Antonio Alfredo Ferreira Loureiro. Origem do vocábulo algoritmo

18/08/2015. Capítulo 1: Armazenamento de dados. Bits e padrões de Bit. Capítulo 1: Armazenamento de Dados

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES SISTEMAS DE COMPUTAÇÃO. Cristina Boeres

Sistemas Distribuídos Aula 19

Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:

Redes de Computadores

Micro-Arquiteturas de Alto Desempenho. Introdução. Ementa

Principais Componentes do Gabinete. Componentes Básicos de um Computador. CPU ou UCP (Processador) 17/02/2017

Modelos de Programação de Tempo Real

Organização de Sistemas Computacionais Processadores: Organização da CPU

Ivinhema-MS. Prof. Esp. Carlos Roberto das Virgens.

Disciplina: Arquitetura de Computadores

Faculdade de Estudos Avançados do Pará Disciplina: Algoritmos Professor: Armando Hage. Introdução à Programação

Redes de Computadores

Comunicação de Dados e Teleprocessamento. Estrutura de um Rede de Comunicações. Tarefas realizadas pelo sistema de comunicação

Arquitetura de Computadores. Processamento Paralelo

ARQUITETURA DE COMPUTADORES

Algoritmos e Lógica de Programação Componentes e Arquitetura

Elementos Físicos do SC e a Classificação de Arquiteturas

Introdução a Tecnologia da Informação

Modelo de Programação Paralela

GERENCIAMENTO DE TAREFAS. Prof. Me. Hélio Esperidião

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado

Arquitetura e organização de computadores Uma visão geral

Escola Secundária de Emídio Navarro

MAC2166 Introdução à Computação Aula 1 Como Funciona um Computador

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES BARRAMENTOS DE SISTEMA. Prof. Dr. Daniel Caetano

Algoritmos Computacionais

PC Fluxograma Revisão 8

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES

DECivil Departamento de Engenharia Civil, Arquitectura e Georrecursos. Apresentação. Computação e Programação (CP) 2013/2014.

Arquitetura de Computadores. Aula 6

CP Introdução à Informática Prof. Msc. Carlos de Salles

Estrutura da Apresentação. Introdução ao Processamento Paralelo e Distribuído. Conceitos em PPD. Conceitos em PPD 4/26/09.

Conceitos sobre Computadores

SSC510 Arquitetura de Computadores. 6ª aula

Estrutura e Funcionamento dos Computadores (Conceitos Básicos)

Programação Concorrente

Memória. Arquitetura de Computadores I. DCC-IM/UFRJ Prof. Gabriel P. Silva

Guia del Laboratório 2 Desenho e Implementação de algoritmos paralelos Introdução

NOÇÕES DE REDES E INTERNET

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Máquinas de Turing - Computabilidade

Informática I. Aula 2. Ementa

6 ESCALONAMENTO DE CPU

Transcrição:

Algoritmos Distribuídos Modelo Computacional Antonio Alfredo Ferreira Loureiro loureiro@dcc.ufmg.br http://www.dcc.ufmg.br/~loureiro AD Modelo Computacional 1

Modelo Computacional Modelo: Esquema que possibilita a representação de uma entidade (Houaiss). No modelo, só se deve incluir o que for relevante para a modelagem do objeto em questão. Computacional: Relativo ao processamento (Houaiss). Definição (nosso contexto): Esquema que descreve como é o modelo abstrato do processamento de algoritmos. Importância: Um algoritmo não existe, ou seja, não é possível escrevê-lo, se antes não for definido o modelo computacional onde será executado. Conceito básico no projeto de qualquer algoritmo. AD Modelo Computacional 2

Modelo Computacional Que modelos existem? Literalmente dezenas deles. Se não estiver satisfeito, invente o seu!. O mais popular (usado) de todos: RAM Random Access Machine. Mundo distribuído: Normalmente nós que seguem o modelo RAM interconectados entre si através de troca de mensagens. Não existe compartilhamento de memória. Elementos desse modelo: Nó computacional representado pelo modelo RAM. Canal normalmente representado pelo modelo FIFO. AD Modelo Computacional 3

Modelo RAM Elementos do modelo: um único processador; memória. Observações: Podemos ignorar os dispositivos de entrada e saída (teclado, monitor, etc) assumindo que a codificação do algoritmo e os dados já estão armazenados na memória. Em geral, não é relevante para a modelagem do problema saber como o algoritmo e os dados foram codificados e armazenados na memória. AD Modelo Computacional 4

Modelo RAM Computação nesse modelo: Processador busca instrução/dado da memória. Uma única instrução é executada de cada vez. Cada instrução é executada seqüencialmente. Cada operação executada pelo processador, incluindo cálculos aritméticos, lógicos e acesso a memória, implica num custo de tempo: Função de complexidade de tempo. Cada operação e dado armazenado na memória, implica num custo de espaço: Função de complexidade de espaço. AD Modelo Computacional 5

Complexidade de tempo e espaço A complexidade de tempo não representa tempo diretamente, mas o número de vezes que determinada operação considerada relevante é executada. A complexidade de espaço representa a quantidade de memória (numa unidade qualquer) que é necessário para armazenar as estruturas de dados associadas ao algoritmo. Usa-se a notação assintótica para representar essas complexidades O, Ω, Θ, o, ω. AD Modelo Computacional 6

Modelos computacionais para o mundo distribuído Um espectro bastante largo! Pergunta importante: Todo algoritmo distribuído pode ser implementado em qualquer modelo computacional? Definitivamente NÃO! AD Modelo Computacional 7

Problema dos dois exércitos Na Grécia antiga, lugares maravilhosos como este...... podiam se transformar em cenários de guerra. Vale perto de Almfiklia, Grécia É quando algum filósofo propõe o Problema dos dois exércitos. AD Modelo Computacional 8

Problema dos dois exércitos Cenário inicial Exército Alfa está em maior número que o exército Gama mas está dividido em duas metades, cada uma numa lateral do vale. Cada metade do exército Alfa está em menor número que o exército Gama. Objetivo do exército Alfa: coordenar um ataque ao exército Gama para ganhar a guerra. AD Modelo Computacional 9

Problema dos dois exércitos O problema da coordenação 1. General do exército Alfa, do lado esquerdo do vale, chama o seu melhor soldado para levar uma mensagem para o general do exército Alfa do lado direito: Vamos atacar conjuntamente o exército Gama amanhã às 6:00h? Observações: A única possibilidade de comunicação entre os dois generais é através de um mensageiro. Os dois generais têm um relógio perfeitamente sincronizado, ou seja, eles sabem pela posição do sol quando é 6:00h. AD Modelo Computacional 10

Problema dos dois exércitos O problema da coordenação 2. O soldado do exército Alfa atravessa as linhas inimigas e leva a mensagem até o general do outro lado. AD Modelo Computacional 11

Problema dos dois exércitos O problema da coordenação 3. O general do exército Alfa do lado direito concorda em atacar o exército Gama no dia seguinte às 6:00h. AD Modelo Computacional 12

Problema dos dois exércitos O problema da coordenação 4. O soldado do exército Alfa atravessa novamente as linhas inimigas e confirma com seu general o ataque para o dia seguinte. AD Modelo Computacional 13

Problema dos dois exércitos O problema da coordenação Após esses quatro passos terem sido realizados com sucesso, vai haver ataque amanhã às 6:00h? AD Modelo Computacional 14

O problema dos dois robôs Imagine dois ou mais robôs que vão carregar uma mesa de tal forma que um ficará de frente para outro. Problema: Projete um algoritmo para coordenar a velocidade e direção do movimento de cada robô para que a mesa não caia. Os robôs só podem comunicar entre si através de um canal de comunicação sem fio. Variante do problema anterior! AD Modelo Computacional 15

O problema dos dois robôs É possível projetar um algoritmo distribuído para esse problema? NÃO! Não existe um algoritmo distribuído para o problema de coordenação considerando o modelo computacional proposto! AD Modelo Computacional 16

Alguns comentários sobre algoritmos distribuídos São a base do mundo distribuído, ou seja, de sistemas distribuídos. Sistemas distribuídos podem ser: Tempo real ou não; Reativos ou não. Sistemas distribuídos podem ser especificados tomando-se como base: tempo; eventos. AD Modelo Computacional 17

Projeto de algoritmos distribuídos: Modelo de falhas Descreve as suposições sobre o comportamento funcional dos elementos do modelo computacional ao longo do tempo: nó computacional; canal. Para cada um destes elementos é possível fazer diferentes considerações. Modelo de falhas associado a um nó computacional (dois extremos): Falha e pára; Bizantino. Modelo de falhas associado ao canal: Mensagens são perdidas, duplicadas, corrompidas, entregues fora de ordem. Qual a importância do modelo de falhas no projeto de algoritmos distribuídos? AD Modelo Computacional 18

Projeto de algoritmos distribuídos: Canal de comunicação Mecanismo através do qual mensagens são trocadas entre os nós computacionais. Aspectos a considerar: Modelo de falhas; Sentido da comunicação: simplex, half-duplex, full-duplex; Sincronismo: assíncrono, síncrono; Tipo de comunicação: unicast, multicast, broadcast, anycast. Qual a importância do canal de comunicação no projeto de algoritmos distribuídos? AD Modelo Computacional 19

Projeto de algoritmos distribuídos: Topologia Define como os nós são interconectados entre si através dos canais de comunicação. Existem diferentes possibilidades: Anel; Hipercubo; Árvore; Uma outra específica. Qual a importância da topologia no projeto de algoritmos distribuídos? AD Modelo Computacional 20

Complexidade de algoritmos distribuídos Tempo; Espaço; Número de mensagens/bits enviadas(os) pelos nós. Por que esta esta outra métrica é importante? Notação usada: O, Ω, Θ AD Modelo Computacional 21

Aspecto típico de algoritmo distribuído: Não determinismo Não é possível especificar a priori qual será a ordem exata de uma computação distribuída. É possível ter não determinismo devido à: Concorrência entre os nós (veja Diagrama de Hasse); Especificação (simplificação do número de estados); Não observabilidade (falta de acesso aos estados internos dos nós). Não é possível evitar AD Modelo Computacional 22

Aspecto típico de algoritmo distribuído: Sincronização Deve-se definir como será feita. É necessário ter sincronização devido à: Competição entre recursos (exclusão mútua); Coordenação distribuída. AD Modelo Computacional 23