Alexandre Rupert Arpini Skyrme. Um Modelo Alternativo para Programação Concorrente em Lua. Dissertação de Mestrado

Documentos relacionados
Adriano Francisco Branco. Um modelo de programação para RSSF com. Dissertação de Mestrado

Renato Figueiró Maia. Um Framework para Sistemas Baseados em Componentes Distribuídos. Informática DEPARTAMENTO DE INFORMÁTICA

Um Estudo Sobre Middlewares Adaptáveis

Bruno Siqueira Silva. Workflows dinâmicos em gerência de projetos ágeis. Dissertação de Mestrado

Adriano Medeiros dos Santos. Suporte a Componentes Compostos Para o Middleware SCS. Dissertação de Mestrado

Controle da Execução e Disponibilização de Dados para Aplicativos sobre Seqüências Biológicas: o Caso BLAST

Francisco Eduardo Torres Cursino de Moura. Uma proposta para Rendering Baseado em Imagens em celulares

Sérgio Queiroz de Medeiros. Correspondência entre PEGs e Classes de Gramáticas Livres de Contexto. Tese de Doutorado

Sistema para Consultas sobre Banco de Dados Relacional Baseado em Palavras-Chave

UMA IMPLEMENTAÇÃO DO SERVIÇO WMS SOBRE A BIBLIOTECA TERRALIB

Modelos de Concorrência e Coordenação para o Desenvolvimento de Aplicações Orientadas a Eventos em Lua

Bruno Loureiro Rezende. Um Framework para a Automação de Testes com Linguagens de Especificação Configuráveis DISSERTAÇÃO DE MESTRADO

Regysane Botelho Cutrim Alves. A crítica de traduções na teoria e na prática: o caso da Versão Brasileira. Dissertação de mestrado

Um ambiente de suporte para uma linguagem de modelagem de sistemas multi-agentes

Mauricio Kreczmarsky Guimarães Meinicke. Opacidade 3D na Visualização Volumétrica de Dados Sísmicos

Usando a abordagem MDA no desenvolvimento de sistemas multi-agentes

Carla Jardim Dias. Um modelo estocástico para o fluxo de caixa de um plano de previdência de um indivíduo. Dissertação de Mestrado

Estudo de Viabilidade da Implementação de Software de Roteamento para Transporte de Funcionários de Refinaria da Petrobras

MAURICIO LANE ESCOAMENTO DE FLUIDOS NÃO NEWTONIANOS ATRAVÉS DE CANAIS CONVERGENTES-DIVERGENTES DISSERTAÇÃO DE MESTRADO

Vinci Pegoretti Amorim. Uma Arquitetura Flexível para Replicação de Bases Distribuídas Heterogêneas. Dissertação de Mestrado

Gerenciamento de projetos no âmbito da Economia Criativa Um estudo de caso das Incubadoras Rio Criativo

Uma meta-ferramenta de geração de diagramas utilizada na engenharia reversa de sistemas legados.

Previsão da Produção Industrial do Brasil: Uma Aplicação do Modelo de Índice de Difusão Linear

Geraldo da Silva Rocha Netto. Escalonamento Flexível de Workflows com Restrições Temporais. Dissertação de Mestrado

Proposta de um sistema de suporte à decisão para programação de navios baseado em otimização: um caso prático

Elicitação de requisitos de software através da utilização de questionários

Iam Vita Jabour. O Impacto de Atributos Estruturais na Identificação de Tabelas e Listas em Documentos HTML. Dissertação de Mestrado

Leonardo Sant Anna Antunes Maciel. Um Estudo sobre Instrumentação da Máquina Virtual de Lua para Análise de Desempenho. Dissertação de Mestrado

João Coutinho Machado. Um estudo sobre o desenvolvimento orientado a serviços

Uma abordagem baseada em SPH para animação interativa de águas rasas em jogos

Natália Moreira Félix

Bruno Baère Pederassi Lomba de Araujo. Um estudo sobre adaptatividade dinâmica de dificuldade em jogos. Dissertação de Mestrado

Matchmaking Uma infraestrutura para alinhamento de esquemas

João Clemente A. Quaresma de Moura. O poder na obra de Foucault e as Estratégias do Contemporâneo. Dissertação de Mestrado

Geração semi-automática de massas de testes funcionais a partir da composição de casos de uso e tabelas de decisão

Framework para coordenação e mediação de Web Services modelados como Learning Objects para ambientes de aprendizado na Web

Thomas de Campos Tsuchida. Modelagem da localização de pólos de venda de derivados de petróleo. Dissertação de Mestrado (Opção Profissional)

Utilização de uma estratégia para identificação de fontes de informação na fase de elicitação

Pedro Tiago Barbosa do Couto. Resolução de problemas de transporte rodoviário de cargas utilizando programação inteira DISSERTAÇÃO DE MESTRADO

Bruno de Figueiredo Melo e Souza. Modelos de fatoração matricial para recomendação de vídeos. Dissertação de Mestrado

Avaliação Preliminar dos Movimentos Aéreos no Aeroporto Internacional Antônio Carlos Jobim Galeão

Vanessa Ribeiro Ferreira. Mongólia: uma narrativa caótica? Dissertação de Mestrado

Davi Romero de Vasconcelos. Análise de Estratégias Utilizando Verificação Formal de Modelos. Dissertação de Mestrado

Lucas Euzébio Machado. Jogos Multijogador em Massa DISSERTAÇÃO DE MESTRADO. Informática DEPARTAMENTO DE INFORMÁTICA

Guilherme de Sousa Neves. Previsão de estoque de peças eletrônicas sobressalentes. Dissertação de Mestrado

Análise e Avaliação do Equity Premium Puzzle no Mercado Acionário Brasileiro sob diferentes Contextos Econômicos

Realce de Imagens no Domínio da Transformada

Considerações sobre a terceirização da logística e uma metodologia de classificação para os Party Logistics

Otávio de Pinho Forin Braga. Uma Arquitetura para Síntese de Imagens Fotorrealistas baseada em Técnicas de Monte Carlo DISSERTAÇÃO DE MESTRADO

Marcos Borges Pessoa. Geração e execução automática de scripts de teste para aplicações web a partir de casos de uso direcionados por comportamento

Compras de itens não críticos: implementação no nível operacional e práticas em uma empresa de petróleo

SQLLOMining: Obtenção de Objetos de Aprendizagem utilizando técnicas de Aprendizado de Máquina

João Paulo de Freitas Araujo. Algoritmos para acelerar a computação de Árvores de corte de Gomory e Hu. Dissertação de Mestrado

QEEF-G: Execução Paralela Adaptativa de Consultas Iterativas

Experimentos de Previsão da Estrutura a Termo da Taxa de Juros Americana: Reversão à Media, Inércia e Influência de Variáveis Macroeconômicas

Luzia da Costa Tonon. O Teorema de Cramér-Lundberg via martingais DISSERTAÇÃO DE MESTRADO. Programa de Pós Graduação em Matemática

OPERADORES LOGÍSTICOS E SEUS CLIENTES: UM ESTUDO EMPÍRICO

Pontifícia Universidade Católica do Rio de Janeiro

Alexandra de Almeida. A noção de sublime em Kant e a questão da comoção na arte. Dissertação de Mestrado

Um Framework de Jogos Sérios para Mercado de Informações com Aplicação em Ética Empresarial

Uma Proposta de Sistema de Dependência a Distância Usando a Plataforma Moodle

Mercados Futuros Agropecuários no Brasil: Análise dos Contratos e da Formação dos Preços Futuros

A competência comunicativa nas provas de redação do Deutsches Sprachdiplom e do Exame Nacional do Ensino Médio

Theo Cotrim Martins. Leis de dividendo mínimo obrigatório protegem acionistas minoritários? Dissertação de Mestrado

Avaliação da Licitação de Lotes de Frequência para LTE Utilizando a Teoria de Opções Reais

Patrícia Teixeira de Sá

Integração de Ontologia com Modelagem de Processo: Um Método para Facilitar a Elicitação de Requisitos

Carlos Roberto da Costa Ferreira. Interpolação Modificada de LSF's. Dissertação de Mestrado

O Design de Sinalização no Brasil: a introdução de novos conceitos de 1970 a 2000

O conceito de terrorismo nos jornais americanos

Criação Automática de Visões Materializadas em SGBDs Relacionais

Relação entre Governança Corporativa e Remuneração de Executivos no Brasil

Remo Mannarino Filho. O método das divisões: a última proposta dialética de Platão. Dissertação de mestrado

Estabilidade e Densidade dos Difeomorfismos Morse-Smale do Círculo

Isabela Maria Lyra Zyro

Gerenciando Conflitos em Reuniões: Uma Estratégia para a Elicitação de Requisitos de Software

Estudo Comparativo de Estratégias de Classificação de Páginas Web

Uma investigação reflexiva sobre uma abordagem de ensino-aprendizagem baseada em gêneros discursivos: o caso de turma 601

APLICAÇÃO DE CONCEITOS DE ENGENHARIA DE FATORES HUMANOS: UM ESTUDO DE CASO EM UMA EMPRESA DE OPERAÇÕES LOGÍSTICAS

Joana da Costa Macedo. Reforma Política: antigas questões novos sentidos da governabilidade à corrupção. Dissertação de Mestrado

Pontifícia Universidade Católica do Rio de Janeiro

Uma Avaliação Empírica de um Ambiente Favorável para o Desenvolvimento Dirigido por Testes

Efeito do erro de apontamento de antenas fixadas em plataformas móveis no desempenho de sistemas de comunicação digital por satélite

A importância da dívida cambial no endividamento público brasileiro

Política Monetária e Investimento no Brasil

Sandra Maria Costa Viola. O trabalho de luto e a experiência analítica: transitoriedade e contingência. Dissertação de Mestrado

Alberto Santos Junqueira de Oliveira. Essa vez que não chega: fila e drama social no Brasil. Dissertação de Mestrado

Risco Soberano, Volatilidade e Padrão-ouro

Finalizadores e Ciclos em Tabelas Fracas

Ana Beatriz Frischgesell Fonseca. O Simbolismo Alquímico na Obra de C. G. Jung DISSERTAÇÃO DE MESTRADO

UM MODELO DE GERENCIAMENTO DE PROJETOS BASEADO NAS METODOLOGIAS ÁGEIS DE DESENVOLVIMENTO DE SOFTWARE E NOS PRINCÍPIOS DA PRODUÇÃO ENXUTA

Ricardo Fukasawa. Resolução de problemas de logística ferroviária utilizando programação inteira DISSERTAÇÃO DE MESTRADO

Memes: Conceito de Conteúdo de Informação Como Alternativa de Pesquisa de Posicionamento de Marca

Considerações sobre a flutuação no emprego do subjuntivo em contextos orais do Português do Brasil

Metáforas para linguagem no Curso de Saussure

Lourival Vieira Neto. Lunatik: Scripting de Kernel de Sistema Operacional com Lua. Dissertação de Mestrado

Debora Carvalho Capella. Um estudo descritivo do vocativo em linguagem oral para Português L2. Dissertação de Mestrado

Transcrição:

Alexandre Rupert Arpini Skyrme Um Modelo Alternativo para Programação Concorrente em Lua Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do grau de Mestre pelo Programa de Pós graduação em Redes e Sistemas Distribuídos do Departamento de Informática da PUC Rio Orientador: Prof. Noemi de La Rocque Rodriguez Rio de Janeiro Junho de 2008

Alexandre Rupert Arpini Skyrme Um Modelo Alternativo para Programação Concorrente em Lua Dissertação apresentada como requisito parcial para obtenção do grau de Mestre pelo Programa de Pós graduação em Redes e Sistemas Distribuídos do Departamento de Informática do Centro Técnico-Científico da PUC Rio. Aprovada pela Comissão Examinadora abaixo assinada. Prof. Noemi de La Rocque Rodriguez Orientador Departamento de Informática PUC Rio Prof. Roberto Ierusalimschy PUC Rio Prof. Renato Fontoura de Gusmão Cerqueira PUC Rio Prof. Ana Lúcia de Moura RNP Prof. José Eugênio Leal Coordenador Setorial do Centro Técnico-Científico PUC Rio Rio de Janeiro, 06 de Junho de 2008

Todos os direitos reservados. É proibida a reprodução total ou parcial do trabalho sem autorização da universidade, do autor e do orientador. Alexandre Rupert Arpini Skyrme Graduou se em Engenharia de Computação na Pontifícia Universidade Católica do Rio de Janeiro (PUC Rio). Durante a graduação trabalhou no Núcleo de Arte Eletrônica (NAE) do Departamento de Artes e Design da PUC Rio, no Laboratório de Processamento de Sinais (LPS) do Departamento de Engenharia Elétrica da PUC Rio e no Grupo de Tecnologia em Computação Gráfica (TeCGraf) da PUC Rio. Após a graduação, trabalhou como consultor de Segurança da Informação e gerente na Cipher, analista de sistemas no Serviço Federal de Processamento de Dados (SERPRO) e analista de sistemas na TMP Consultoria. Atualmente é analista da Gerência de Segurança da Informação do Banco Nacional de Desenvolvimento Econômico e Social (BNDES). Skyrme, Alexandre Ficha Catalográfica Um Modelo Alternativo para Programação Concorrente em Lua / Alexandre Rupert Arpini Skyrme; orientador: Noemi de La Rocque Rodriguez. Rio de Janeiro : PUC Rio, Departamento de Informática, 2008. v., 111 f: il. ; 29,7 cm 1. Dissertação (mestrado) - Pontifícia Universidade Católica do Rio de Janeiro, Departamento de Informática. Inclui referências bibliográficas. 1. Informática Tese. 2. Concorrência. 3. Paralelismo. 4. Lua. 5. Threads. 6. Multithreading preemptivo. 7. Multithreading não-preemptivo. 8. luaproc. I. Rodriguez, Noemi. II. Pontifícia Universidade Católica do Rio de Janeiro. Departamento de Informática. III. Título. CDD: 510

Agradecimentos À professora Noemi Rodriguez, pela simpatia, delicadeza e receptividade constantes, pela compreensão com as restrições de horário, pelo apoio na resolução de percalços da vida acadêmica, pela orientação irrepreensível e pelo interesse instigante no trabalho. A Bruno Oliveira Silvestre, pela leitura criteriosa do código-fonte, pelas sugestões extremamente pertinentes e pelo apoio na resolução de inúmeros bugs na implementação da biblioteca. À PUC Rio, pela bolsa concedida e pelo ambiente sempre acolhedor. À professora Rejane Spitz, a quem nunca poderei agradecer o suficiente, por toda a ajuda durante a graduação, pelo aprendizado e apoio no ingresso na pós-graduação. Ao professor Paulo Osório (in memoriam), pelo apoio durante a graduação e no ingresso na pós-graduação. Ao Banco Nacional de Desenvolvimento Econômico e Social (BNDES), pelo horário de trabalho flexível e, em particular, a Herilmar Pompermayer Freire, pelo apoio e pela compreensão com os ocasionais compromissos acadêmicos durante o horário do expediente. À Tia Patricia (in memoriam), a quem dedico este trabalho, pela generosidade decisiva ao meu ingresso na pós-graduação. À Clarisse Siqueira, pelo amor, carinho, compreensão e paciência, por me acalmar e me ensinar a ser uma pessoa melhor.

Resumo Skyrme, Alexandre; Rodriguez, Noemi. Um Modelo Alternativo para Programação Concorrente em Lua. Rio de Janeiro, 2008. 111p. Dissertação de Mestrado Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro. A popularização dos processadores multinúcleo e de tecnologias como o hyper-threading evidencia uma mudança de foco na evolução dos processadores. Essa mudança fomenta o interesse por programação concorrente e a exploração de paralelismo para obtenção de melhor desempenho. Entretanto, os modelos atuais para programação concorrente são alvo de críticas recorrentes, o que estimula a elaboração de propostas alternativas. Este trabalho apresenta uma análise crítica do multithreading preemptivo com compartilhamento de memória, um modelo amplamente utilizado para programação concorrente, e faz um breve apanhado de trabalhos que abordam alternativas para programação concorrente. Em seguida, propõe um modelo para programação concorrente estruturado com a linguagem de programação Lua e descreve as suas principais características e vantagens. Finalmente, apresenta os resultados da avaliação de diversos aspectos de uma biblioteca desenvolvida para implementar o modelo proposto. Palavras chave Concorrência. Paralelismo. Lua. Threads. Multithreading preemptivo. Multithreading não-preemptivo. luaproc.

Abstract Skyrme, Alexandre; Rodriguez, Noemi. An Alternative Model for Concurrent Programming in Lua. Rio de Janeiro, 2008. 111p. MsC Thesis Departament of Informatics, Pontifícia Universidade Católica do Rio de Janeiro. The popularization of multi-core processors and of technologies such as hyper-threading indicates a different approach to the evolution of processors. This new approach brings about an increased interest in concurrent programming and the exploration of parallelism in order to achieve better performance. However, concurrent programming models now in use are subject to recurring criticism, which stimulates the development of alternative proposals. This work presents a critical analysis of preemptive multithreading with shared memory, which is a widely used model for concurrent programming, and briefly summarizes some studies that deal with alternatives for concurrent programming. It then, proposes a model for concurrent programming structured with the Lua programming language and describes its main characteristics and advantages. Finally, it presents the results of an evaluation of several aspects of a library developed to implement the proposed model. Keywords Concurrency. Parallelism. Lua. Threads. Preemptive multithreading. Non-preemptive multithreading. luaproc.

Sumário 1 Introdução 11 2 Multithreading 13 3 Trabalhos Relacionados 17 3.1 Sequential Object Monitors 17 3.2 Polyphonic C# 18 3.3 Concurrency and Coordination Runtime 19 3.4 Erlang 21 3.5 Programação Dirigida a Eventos sem Inversão de Controle 24 4 Modelo Proposto 28 5 Implementação do Modelo 31 5.1 Estrutura dos Processos Lua 32 5.2 Escalonador 33 5.3 Comunicação entre Processos 34 5.4 Estratégia de Bloqueio 34 5.5 Ambientes Distribuídos 35 6 Avaliação 38 6.1 Medidas de Desempenho 40 6.2 Comparativo com POSIX Threads 52 6.3 Comparativo com Erlang 55 6.4 Considerações 60 7 Conclusão 65 Referências Bibliográficas 67 A API da Biblioteca para Programação Concorrente em Lua 71 B Exemplo Simples de Serviço de Escalonamento Remoto 74 B.1 Servidor 74 B.2 Cliente 75 C Disparador de Processos Lua com Sincronização 77 D Envio e Recebimento Simples de Mensagens 79 E Anel de Mensagens 81 F Disparador de Processos Lua sem Sincronização 83 G Disparador de Processos Lua com Retardos 84

H Busca de Cadeias de Caracteres 86 H.1 Versão Processos Lua 86 H.2 Versão Lua Simples 93 I Disparador de Pthreads sem Sincronização 96 J Disparador de Pthreads com Sincronização 98 K Disparador de Processos Erlang 101 K.1 Versão Interpretada 101 K.2 Versão Compilada 102 L Envio e Recebimento Simples de Mensagens em Erlang 103 L.1 Versão Interpretada 103 L.2 Versão Compilada 105 M Anel de Mensagens em Erlang 108 M.1 Versão Interpretada 108 M.2 Versão Compilada 110

Lista de figuras 6.1 Criação sucessiva de processos Lua com estados criados com lua newthread e lual newstate. 41 6.2 Criação sucessiva de processos Lua com carga de todas as bibliotecas padrão nos estados. 42 6.3 Criação sucessiva de processos Lua sem carga de bibliotecas padrão nos estados. 43 6.4 Tempos de execução para a busca de cadeias de caracteres. 51 6.5 Criação sucessiva de Pthreads. 54 6.6 Criação sucessiva de processos Lua sem sincronização entre processos. 54 6.7 Criação sucessiva de processos Erlang. 57

Software gets slower faster than hardware gets faster. Niklaus Wirth, A Plea for Lean Software.