Bruno da Silva de Oliveira. Hydra: Compilação Distribuída de código fonte

Documentos relacionados
Introdução à Computação

Informática Parte 15 Prof. Márcio Hunecke

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Noções de sistemas de computação

Aula 12. Aquisição de Hardware

4) Defina o que vem a ser um algoritmo, e porque, o mesmo depende do processo.

MATRIZ CURRICULAR BACHARELADO EM ENGENHARIA DA COMPUTAÇÃO. 1º Período

Linguagens de Programação

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Sistema Computacional

Programação de Computadores

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Programação de Computadores

2. Conceitos e Arquiteturas de um SGBD

Informática I. Aula 14. Aula 14-10/10/2007 1

Prof. Natalia Castro Fernandes Mestrado em Telecomunicações UFF 2º semestre/2012

APRESENTAÇÃO. Página: 1

Linguagem de Programação II

Introdução a Programação

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2013/1

Algoritmos e Programação

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

INFORMÁTICA: Informação automática

Sis i te t mas a O perac a i c o i nai a s um p ouco c d a a h is i tó t ria i. a... SO His i t s ó t r ó ic i o

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 1. Introdução

Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR

Figura 4.2: Matriz Curricular

INSTITUTO DE INFORMÁTICA

Quando Distribuir é bom

Algoritmos e Programação

UNIVERSIDADE FEDERAL DE CIÊNCIAS DA SAÚDE DE PORTO ALEGRE CRONOGRAMA DE AULAS

Programação de Computadores

UNIVERSIDADE FEDERAL DE ALFENAS

PROGRAMAÇÃO I. Introdução

Programação de Alto Desempenho - 2. Prof: Carla Osthoff

Introdução ao Python. Programa Computacional

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

UNIVERSIDADE FEDERAL DO PARÁ PRÓ-REITORIA DE PESQUISA E PÓS-GRADUAÇÃO DIRETORIA DE PESQUISA PROGRAMA INSTITUCIONAL DE BOLSAS DE INICIAÇÃO CIENTÍFICA

Desenvolvimento de Aplicações Desktop

Arquiteturas RISC e CISC. Adão de Melo Neto

Quando Distribuir é bom

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

Algoritmos Computacionais

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação

COMPILAÇÃO. Ricardo José Cabeça de Souza

LICENCIATURA EM ENGENHARIA DE REDES DE COMUNICAÇÃO E INFORMAÇÃO EQUIVALÊNCIAS ENTRE PLANOS CURRICULARES. Plano Curricular

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

por parte dos usuários dos sistemas de computação se tornou menos necessária e a popularidade desse tipo de linguagem diminuiu. Mais recentemente, a

1.1 Linguagens de Programação

Programação de Computadores I Introdução PROFESSORA CINTIA CAETANO

Componente de aplicação. Figura 1 - Elementos funcionais de uma aplicação sendo executados de forma distribuída

HORÁRIO ESCOLAR - CIÊNCIA DA COMPUTAÇÃO 2017 Atualizado 02/02/2017 INGRESSANTES A PARTIR DE 2010

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

Introdução à Computação MAC0110

AVALIAÇÃO DE DESEMPENHO DE PROCESSAMENTO DISTRIBUÍDO EM LARGA ESCALA COM HADOOP

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

Disciplina de Algoritmos e Programação

MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA INSTITUTO FEDERAL DO NORTE DE MINAS GERAIS CAMPUS MONTES CLAROS 1 PERÍODO

Introdução à Computação: Máquinas Multiníveis

Introdução à Programação

SSC0611 Arquitetura de Computadores

Características de Sistemas Distribuídos

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO Data: 23/09/2015 Currículo de Cursos Hora: 07:48:26

CRÉDITOS DO CURSO. Carga Horária Créditos IN1030 Seminários 30 2

A Matemática como Serviço a Ciência da Computação. Prof. Dr. Carlos Eduardo de Barros Paes Coordenador do Curso de Ciência da Computação

BOINC + R: Executando rotinas de

BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO - 1º PERÍODO - Turma

Proposta de Trabalho de Conclusão de Curso

Rede de computadores Cliente- servidor. Professor Carlos Muniz

Programação Concorrente

Grupo de Usuários Java do Noroeste Paulista. Introdução à tecnologia Java

Palavras-chave: (banco de dados; prontuário médico; paciente); deve vir logo abaixo do resumo

Introdução à Computação para Engenharia MAC2166 Prof. Dr. Paulo Miranda IME-USP. Aula 1 Introdução à Computação

Objetos e Componentes Distribuídos: EJB e CORBA

Estrutura e funcionamento básico de um computador

Bruno Ribeiro da Silva. A adaptação de um sistema operacional para a execução em uma diferente arquitetura

FACULDADE DE CIÊNCIA DE ENGENHARIA DE SOFTWARE MATRIZ CURRICULAR DO CURSO DE ENGENHARIA DE SOFTWARE PRIMEIRO PERÍODO SEGUNDO PERÍODO

Puca Huachi Vaz Penna

INTRODUÇÃO. Prof. Msc. Luis Filipe Alves Pereira 2015

MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA INSTITUTO FEDERAL DO NORTE DE MINAS GERAIS CAMPUS JANUÁRIA

GINGAWAY UMA FERRAMENTA PARA CRIAÇÃO DE APLICAÇÕES GINGA NCL INTERATIVAS PARA TV DIGITAL

MC-102 Aula 01. Instituto de Computação Unicamp

Bruno Ribeiro da Silva. O port de um sistema operacional: uma abordagem ao port do Minix 3 para o Nintendo DS (Rascunho)

DISTRIBUIÇÃO DE SALAS 1º SEMESTRE DE 2017

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

Introdução às Bases de Dados

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02

Ferramentas Programação. UDESC - Prof. Juliano Maia 1

ORGANIZAÇÃO CURRICULAR TÉCNICO NA ÁREA DE INFORMÁTICA: HABILITAÇÃO TÉCNICO EM INFORMÁTICA NA MODALIDADE A DISTÂNCIA /1

09/05/2017. Técnicas Avançadas de Programação APRESENTAÇÃO

INFORMÁTICA: Informação automática

Transcrição:

Bruno da Silva de Oliveira Hydra: Compilação Distribuída de código fonte Florianópolis SC Junho / 2004

Bruno da Silva de Oliveira Hydra: Compilação Distribuída de código fonte Orientador: Prof. Dr. Mario Dantas Co-orientador: M. Sc. Eduardo Kern Bacharelado em Cientista da Computação Departamento de Informática e Estatística Universidade Federal de Santa Catarina Florianópolis SC Junho / 2004

Rascunho do Trabalho de Final de Curso sob o título Hydra: Compilação Distribuída de código fonte, proposta por Bruno da Silva de Oliveira e revisado em 11 de junho de 2004, em Florianópolis, Santa Catarina, por: Prof. Dr. Mario Dantas Departamento de Informática e Estatística - UFSC Orientador M. Sc. Eduardo Kern ESSS - Engineering Simulation and Scientific Software Co-orientador

Sumário 1 Resumo p. 4 2 Introdução p. 5 3 Tema p. 6 3.1 Delimitação do Tema............................ p. 6 4 Justificativa p. 7 5 Objetivo p. 8 6 Metodologia p. 9 7 Resultados Esperados p. 10 Referências p. 11

4 1 Resumo A linguagem de programação C++, apesar de ser auto-nível e possibilitar a produção de um código de execução bastante eficiente, impõe ao desenvolvedor um custo relativamente alto: o tempo necessário para a compilação do seu código. Técnicas agora disponíveis, especialmente Template Metaprogramming, enquanto promovem a geração de código genérico, contribuem ainda mais para este custo. Este trabalho tem como o objetivo o estudo e a criação de uma ferramenta que distribua o processo de compilação entre várias máquinas conectadas através de uma rede local, diminuindo assim o tempo e os custos necessários para o mesmo.

5 2 Introdução As linguagens de programação C e C++ têm como vantagem serem linguagens de auto-nível e de gerarem código nativo de execução muito eficiente, sendo ideal para sistemas que possuem porções custosas em termos de recursos computacionais. Mas este poder possui um custo: a compilação do código fonte. A compilação do código fonte é o trabalho realizado por um programa (chamado de Compilador) de transformar o texto da linguagem de programação em uma representação binária que pode ser então executada pelo computador; este processo normalmente é bastante custoso, tanto em tempo de processamento quanto em memória, dificultando bastante o trabalho do desenvolvedor de software.

6 3 Tema O tema deste trabalho é o desenvolvimento de uma ferramenta que distribua o processo de compilação de arquivos fonte nas linguagens de programação C e C++ entre vários computadores conectados em uma rede local, com o objetivo de reduzir sensivelmente o tempo necessário. 3.1 Delimitação do Tema Apesar de na teoria o modelo da ferramenta suportar a compilação distribuída de outras linguagens de programação, o escopo deste trabalho se limita somente às linguagens C/C++. Suporte para outras linguagens envolve diferenças sutis, princialmente em como lidar com as dependências entre os vários arquivos de um projeto, e pode ser material para um estudo futuro.

7 4 Justificativa A indústria de desenvolvimento de software vêm evoluindo cada vez mais. O mercado é ágil, sendo necessário buscar técnicas que agilizem o desenvolvimento, reduzindo o custo e principalmente o tempo para a conclusão de um projeto. Boa parte do tempo de um desenvolvedor que utiliza as linguagens C ou C++ é gasto no processo de compilação. Em grandes projetos, é comum a compilação completa do sistema levar horas, podendo chegar a até dias em sistemas muito grandes. A redução deste tempo pode ser então uma solução simples e barata para reduzir o tempo total do software, já que o preço do tempo do desenvolvedor é muito maior que o custo com o equipamento disponível.

8 5 Objetivo O objetivo deste trabalho é implementar uma ferramenta que distribua o processo de compilação entre várias máquinas conectadas em uma rede local, reduzindo substancialmente o tempo total necessário. Essa ferramenta foi batizada de Hydra, em referência à besta mitológica de várias cabeças. Além de reduzir o tempo de compilação, a ferramenta deve possuir as seguintes características: 1. Multiplataforma - Trabalhar no maior número de sistemas operacionais possível. 2. Independência de Compilador - trabalhar com qualquer compilador C/C++, atendendo apenas alguns pré-requisitos, como conhecimento dos parâmetros compreendidos pelo compilador. 3. Não Obtrusivo - O Hydra deve alterar o mínimo possível a maneira como o programador trabalha, adaptando-se ao seu ambiente.

9 6 Metodologia O Hydra deverá ser implementado na linguagem de programação interpretada Python [Rossum 2004], que é uma linguagem de auto-nível, interpretada, orientada a objetos e de código aberto. Ela atende o requisito de ser multi-plataforma e possuir ferramentas para comunicação em rede. A comunicação de rede deverá ser implementada usando o pacote Pyro (Python Remote Objects) [Jong 2003], que é um avançado e poderoso sistema de Objetos Distribuídos, facilitando em muito os detalhes de comunicação em rede. Utilizando Pyro, o usuário somente codifica como se estivesse trabalhando com objetos locais, enquanto o pacote cuida de todo o trabalho de comunicação em rede.

10 7 Resultados Esperados Supõe-se que a compilação paralela em múltiplas máquinas deve reduzir consideravelmente o tempo de compilação, com cada máquina extra diminuindo o tempo de forma proporcional. No entanto um aproveitamento de 100% é considerado impossível ([distcc 2002]), por isso ganhos de 70% a 90% são esperados.

11 Referências [distcc 2002]DISTCC. http://distcc.samba.org/, 2002. [Jong 2003]JONG, I. de. Pyro. http://pyro.sourceforge.net/, 2003. [Rossum 2004]ROSSUM, G. van. Python. http://www.python.org, 2004.