Concorrência em LF1 Paradigmas de Linguagens de Programação 20 de junho de 2006 Aline Timóteo Carlos Rodrigues Flávia Falcão Tiago Rolim.

Slides:



Advertisements
Apresentações semelhantes
Programação de jogos MMO com DALua
Advertisements

Tipos Explícitos e Tipos Polimórficos para LF1
Bruno M. Carvalho Sala: 3B2 Horário: 35T34
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Algoritmos Distribuídos
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Sistemas Distribuídos
Sistemas Operacionais
Sistemas operacionais
Sistemas distribuídos
O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.
Modelos de Comunicação em Sistemas Distribuídos
Algoritmos Distribuídos Professora: Lúcia Drummond
Sistemas Operacionais II
Sistemas Distribuídos
Sistemas Distribuídos
Fundamentals of Database Processing
Programação Concorrente
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Sincronização de Processos (6) - Troca de Mensagens -
Questões Resolvidas - A.C.-10/08/05
Sincronização e Comunicação entre Processos
Linguagem OperOR Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades.
Robson Godoi / Sandra Siebra
Mobilidade Cláudia Ribeiro.
Threads sem Sincronização
Sistemas Distribuídos
Sistemas Distribuídos
Tópicos em Sistemas Distribuídos
Google Go Pós-Graduação em Modelagem Computacional – PGMC
Implementar Listas em Linguagem Funcional II
Linguagem de Programação IV
Tópicos em redes e sistemas distribuídos B Carlos Oberdan Rolim Ciência da Computação.
Sistemas Distribuídos
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Chamada Remota de Procedimentos
Sistemas Distribuídos
Paradigmas de Linguagens de Programação Linguagem Imperativa 1
Universidade da Beira Interior Processadores Fail-Stop Trabalho realizado por: Rui ferreira Nº Eng. Informática.
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.
Troca de Mensagens Assíncronas n Canais de comunicação são filas ilimitadas de mensagens. n Processos inserem elementos nessa flia através de comandos.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Paradigmas de Linguagens de Programação Aula 2
PROGRAMAÇÃO DISTRIBUÍDA Aula 01 Prof. Henrique Mongelli
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Processos.
Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos.
Sistemas de Informação: Estrutura básica dos Sistemas Empresariais.
Troca de Mensagens Programação concorrente
Integração de Ferramentas CASE
Programação Concorrente em Erlang Grupo: Alexandre Siebra Byron Bezerra Igor Sampaio Mozart Araújo Filho Sérgio Queiroz.
Linguagem de Programação IV Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Seminário CI303 Lucas Nascimento Ferreira. Data sharing service: Propriedades Persistência Independentemente da aplicação Permitir o reutilização dos.
Abr-17 Projetar Processos Projetar distribuição.
PLP – Paradigma de Linguagens de Programação
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de.
Camada de Aplicação Prof. Horácio. Objetivo Apresentar os detalhes específicos dos tipos de aplicação; Apresentar o modelo cliente-servidor; Apresentar.
Projeto II - PLP Prof. Augusto Sampaio
Sistemas Operacionais Distribuídos
Sistemas Distribuídos Nadilma Nunes Aula Inicial – Apresentação da disciplina.
Programação Concorrente
Implementar Listas em Linguagem Funcional II Projeto I - PLP Prof. Augusto Sampaio Equipe :Ana Paula Cavalcanti (apcc2) Clélio Feitosa (cfs) Zildomar C.
Projetar Processos. Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Projetar distribuição | 2 Descrição do Projeto.
Protocolos de Comunicação e Passagem de Mensagens
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
Bruna Cavallero Martins Universidade Católica de Pelotas.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Transcrição da apresentação:

Concorrência em LF1 Paradigmas de Linguagens de Programação 20 de junho de 2006 Aline Timóteo Carlos Rodrigues Flávia Falcão Tiago Rolim

Roteiro Conceitos de concorrência –Definição –Programação concorrente X seqüencial –Formas de implementar concorrência Visão geral de Erlang Proposta de projeto

Concorrência Um programa seqüencial tem uma simples thread de controle. –Sua execução é chamada de processo Um programa concorrente tem múltiplas threads de controle –Eles podem ser executados como processos em paralelo

Por que programas concorrentes? Otimização da computação –Diminuir delay e aumentar throughput Simulação –Necessidade de modelar aspectos concorrentes do mundo real Paralelismo –Execução usando várias CPUs Distribuição –Coordenar serviços distribuídos

Características de linguagens concorrentes Uma linguagem de programação concorrente deve prover mecanismos para: –Criar processo Como especificar processos concorrentes? –Comunicação Como fazer processos trocarem informações? –Sincronização Como fazer processos manterem consistência?

Formas de Implementar C oncorrência Compartilhamento de memória –A comunicação é feita ao alterar o conteúdo de áreas de memória compartilhadas. –Java e C# são linguagens que utilizam tal modelo x z y P1 P2 P3

Troca de mensagem –A comunicação é feita através das troca de mensagens –A troca de mensagens pode ser realizada assincronamente –Erlang e Occam são linguagens que utilizam tal modelo P1 P2 P3 x y z Formas de Implementar C oncorrência

Troca de Mensagem –Canal para armazenar a mensagem Buffer Fila de mensagens –A comunicação em um canal pode ser um a um ou broadcast –A mensagem trocada pode conter cópia do dado ou ponteiro para ele Formas de Implementar C oncorrência

Erlang O que é? Uma linguagem funcional, de uso geral, com suporte incorporado para concorrência, distribuição e tolerância a falhas. Para que serve? – Sistemas de Telecomunicações – Servidores de Internet – Gerenciamento de redes móveis – Aplicações de banco de dados

Erlang Características –Linguagem declarativa –Não existe declaração de tipos de dados –Concorrência –Comunicação entre processos por mensagens –Manipulação de exceções –Programação distribuída

Erlang Tipos de dados –Números: Inteiros e Floats –Àtomos –Tuplos –Listas –Pids (Process Ids) –Ports (canais de comunicação) –Referências (objetos únicos ao nível de vários nós) –Binários (pacotes ou outros conjuntos de bits)

Erlang Concorrência –Processos Pid=spawn(m,f,[Arg1,Arg2]) –Mensagens Send Pid ! Mensagem Receive receive Pattern1 -> ação1; Pattern2 -> ação2; end

Erlang – Exemplo: Echo Program -module(echo). -export([go/0, loop/0]). go() -> Pid2 = spawn(echo, loop, []), Pid2 ! {self(), hello}, receive {Pid2, Msg} -> io:format("P1 ~w~n",[Msg]) end, Pid2 ! stop. loop() -> receive {From, Msg} -> From ! {self(), Msg}, loop(); stop -> true end. Pid1Pid2 Pid2! hello Receive {From,MSG} -> stop -> Pid1! hello

Proposta de projeto Extender LF1 para incluir concorrência O modelo proposto é baseado em processos, não em threads –Não há compartilhamento de recursos Os processos se comunicam através de mensagens assíncronas

Proposta de projeto BNF original –Programa ::= Expressao –Expressao ::= Valor | ExpUnaria | ExpBinaria | ExpDeclaracao | Id | Aplicacao | IfThenElse –DeclaracaoFuncional ::= DecVariavel | DecFuncao | DeclaracaoFuncional "," DeclaracaoFuncional

Proposta de projeto BNF extendida –Programa ::= Expressao –Expressao ::= Valor | ExpUnaria | ExpBinaria | ExpDeclaracao | Id | Aplicacao | IfThenElse | EnviaMensagem | RecebeMensagem –DeclaracaoFuncional ::= DecVariavel | DecFuncao | DecProcesso | DeclaracaoFuncional "," DeclaracaoFuncional –ListaClausulas ::= “{” ListId “}” “->” ListExp | ListaClausulas “;” ListaClausulas

Proposta de projeto BNF extendida –DecProcesso ::= “proc” Id “(” Id ListExp “)” Associa o identificador do processo criado a Id –EnviaMensagem ::= Id “!” “{” ListExp “}” Retorna true se o processo identificado por Id existir, e false caso contrário –RecebeMensagem ::= “receive” ListaClausulas “end” Retorna true quando dados são recebidos –ListaClausulas ::= “{“ ListId “}” “->” ListExp | ListaClausulas “;” ListaClausulas

Proposta de projeto O mecanismo de concorrência proposto dá ao programador a possibilidade de tratar erros Exemplo: if pid ! “teste” then else

Proposta de projeto Assim como em Erlang, a função self() retorna o identificador do processo que a chama –Isto permite que o processo inicial possa enviar uma referência para si próprio a outros processos –Com isso, estes processos podem enviar o resultado de alguma computação de volta a ele