Técnica de Engenharia de Software para desenvolvimento de aplicativos paralelos e distribuídos

Tamanho: px
Começar a partir da página:

Download "Técnica de Engenharia de Software para desenvolvimento de aplicativos paralelos e distribuídos"

Transcrição

1 CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS PROGRAMA DE PÓS-GRADUAÇÃO EM MODELAGEM MATEMÁTICA E COMPUTACIONAL Vitor Tavares Gontijo Técnica de Engenharia de Software para desenvolvimento de aplicativos paralelos e distribuídos Belo Horizonte 2013

2 Vitor Tavares Gontijo Técnica de Engenharia de Software para desenvolvimento de aplicativos paralelos e distribuídos Dissertação apresentada ao Curso de Mestrado em Modelagem Matemática e Computacional do Centro Federal de Educação Tecnológica de Minas Gerais, como requisito parcial à obtenção do título de Mestre em Modelagem Matemática e Computacional. Orientador: Prof. Dr. Gray Farias Moita Belo Horizonte CEFET/MG 2013

3 DEDICATÓRIA Dedico este trabalho aos meus pais pelo apoio aos estudos sempre e a minha esposa pelo amor e companheirismo.

4 AGRADECIMENTOS Aos professores do Programa de Pós-graduação em Modelagem Computacional, em especial aos que estiveram mais próximo neste projeto, Bruno Santos, Paulo Almeida e Henrique Borges. A todos os colegas de mestrado. Aos colegas de trabalho do CEFET-MG. Ao meu professor e orientador Gray Farias Moita. À minha querida esposa que tanto me apoiou e tolerou momentos difíceis nesta fase. Se tudo passa, como se explica o amor que fica? (Zeca Baleiro) Aos meus pais que sempre me deram plenas condições e incentivo aos estudos. Aos amigos e todos aqueles que contribuíram de alguma forma com este trabalho meus sinceros agradecimentos.

5 Alguns homens veem as coisas como são, e dizem 'Por quê?' Eu sonho com as coisas que nunca foram e digo 'Por que não?' (George Bernard Shaw)

6 RESUMO Recentemente, computação paralela e distribuída tem se mostrado tema amplamente estudado. Também, arquiteturas de hardware de múltiplos núcleos (multicore) já estão bem consolidadas e são largamente utilizadas em diferentes campos de aplicações. No entanto, ainda não existe um consenso a respeito das melhores práticas ou da maneira de utilização da Engenharia de Software no desenvolvimento específico de softwares para tais arquiteturas e uma avaliação cuidadosa do atual estado da arte no assunto pode ser uma interessante maneira de seguir adiante neste campo de pesquisa. No presente trabalho de pesquisa, buscase promover a concepção de softwares eficientes para aproveitar ao máximo o potencial do hardware multicore ou distribuído disponível usando para isto técnicas de Engenharia de Software como ponto de partida. Existem várias soluções para processamento de aplicações paralelas e distribuídas, porém, para obter uso satisfatório do potencial oferecido por cada solução, o software deve ser concebido em arquitetura paralela. Portanto, para se desenvolver softwares paralelos de alta qualidade, que tornem a programação paralela mais compreensível e mais fácil de desenvolver e manter, são necessárias pesquisas em análise e projeto de software paralelo. Este trabalho propõe técnicas específicas de Engenharia de Software a serem utilizadas no desenvolvimento de aplicações para computadores multicores e de processamento distribuído, e, em especial, para softwares científicos, devido às suas características intrínsecas, como, por exemplo, a habitual necessidade de alto desempenho computacional e a frequente inexperiência com programação dos desenvolvedores dos projetos. Nesta pesquisa são aplicadas as técnicas propostas em diferentes arquiteturas paralelas como Multicores, Clouds, Grids e Clusters, e uma abordagem otimizada, controlada e sistemática da Engenharia de Software para aplicativos paralelos e distribuídos é investigada. No final, uma nova técnica para desenvolvimento deste tipo de software é proposta. PALAVRAS-CHAVE: Computação Paralela e Distribuída, Engenharia de Software, Arquitetura Multicore, Software Científico, Computação de Alto Desempenho.

7 ABSTRACT Parallel and distributed computing has been a topic largely studied in the last few years. Also, multicore architectures can be easily found and are widely used in different fields of application. However, best practices and the correct use of software engineering to develop such applications are not yet common place and a careful evaluation of the current state-of-the-art in the subject can be a useful way forward. In the present work, the main idea is to conceive efficient software to make the best of the multicore or distributed hardware available; software engineering techniques can be a good starting point. There exist several solutions for parallel and distributed processing applications, but to obtain satisfactory use of the potential offered by each solution, the actual software must be parallel designed. Therefore, to attain higher quality products, parallel software design patterns, that make the parallel programming more understandable and easier to develop and maintain, are necessary and should be considered. This work proposes specific techniques of software engineering to be applied in the development of distributed and concurrent computer processing, especially for scientific software, due to their inherent characteristics and the usual need for higher performance in their applications. In this study the techniques proposed are implemented in different parallel architectures such as multicore, cloud computing, grid computing and cluster, and an optimized, controlled and systematic approach is sought. At the end, a new model for management of this kind of software is proposed. Keywords: Parallel and Distributed Computing, Software Engineering, Multicore Architecture, Scientific Software, High Performance Computing.

8 LISTA DE FIGURAS Figura 1: Gráfico de desempenho com utilização de Multicores e Multiprocessadores Figura 2: Gráfico comparativo de desempenho e eficiência de CPU s Multicores Figura 3: Apresentação gráfica da organização da dissertação em capítulos Figura 4: Configurações de sistemas Figura 5: Diferenças entre as configurações de Cluster e Grid Figura 6: Cloud Computing Figura 7: Etapa de identificação do aplicativo Figura 8: Etapa de identificação do ambiente Figura 9: Definição do modelo de controle Figura 10: Níveis de granularidade Figura 11: Métodos de comunicação Figura 12: Sincronia e plano de testes Figura 13: Visão geral da técnica proposta Figura 14: Estrutura do Grid JPPF Figura 15: Gráfico comparativo de performance Arquitetura Multicore Figura 16: Gráfico comparativo de Speed-up Arquitetura Multicore Figura 17: Gráfico comparativo de performance Arquitetura Grid Computing Figura 18: Gráfico comparativo de Speed-up Arquitetura Grid Computing Figura 19: Gráfico comparativo de performance Arquitetura Cluster Figura 20: Gráfico comparativo de Speed-up Arquitetura Cluster Figura 21: Gráfico comparativo de variação de granularidade - Arquitetura Cloud Computing Figura 22: Gráfico comparativo de performance Arquitetura Cloud Computing Figura 23: Comparativo entre o tempo de execução em diferentes arquiteturas... 88

9 LISTA DE TABELAS Tabela 1: Comparativo entre interfaces de programação paralela Tabela 2: Tempo de execução sem paralelismo Arquitetura Multicore Tabela 3: Tempo de execução com paralelismo sem técnica Arquitetura Multicore Tabela 4: Tempo de execução com aplicação da técnica proposta Arquitetura Multicore Tabela 5: Comparativo de valores de tempo de execução Arquitetura Multicore Tabela 6: Resultados da execução cálculo de PI em arquitetura Grid Computing Tabela 7: Comparativo de valores de tempo de execução Arquitetura Grid Computing Tabela 8: Comparativo de valores de tempo de execução detalhado Arquitetura Cluster Tabela 9: Comparativo de valores de tempo de execução Arquitetura Cluster Tabela 10: Resultados da execução cálculo de PI em arquitetura Cloud Computing Tabela 11: Comparativo de valores de tempo de execução Arquitetura Cloud Computing

10 SUMÁRIO 1 INTRODUÇÃO Caracterização do Problema / Motivação Objetivos: Geral e Específico Estrutura do trabalho FUNDAMENTAÇÃO TEÓRICA Programação paralela Softwares científicos Arquiteturas paralelas Multicore Cluster Grid Computing Cloud Computing Visão geral da Engenharia de Software PRINCIPAIS PROBLEMAS RELACIONADOS AO PARALELISMO Levantamento bibliográfico Bloqueios em Programas de memória compartilhada Escalonamento de tarefas Escalabilidade TÉCNICA PROPOSTA Considerações Iniciais Proposta para uma Engenharia de Software paralelo Etapa de identificação Etapa de definição Documento de identificação de paralelismo Visão geral da técnica proposta DESENVOLVIMENTO Aplicação escolhida Implementação Métricas de software Implantação em Multicore Documento de Identificação de Paralelismo Implementação Implantação em Grid Computing Grid Computing com JPPF Grid Documento de Identificação de Paralelismo Implementação Implantação em Cluster Cluster com Rocks Documento de Identificação de Paralelismo Implementação Implantação em Cloud Computing Cloud Computing com Jelastic.com Documento de Identificação de Paralelismo Implementação RESULTADOS OBTIDOS Multicore Grid Computing Cluster de Computadores Cloud Computing Observações gerais CONCLUSÕES E CONSIDERAÇÕES FINAIS Conclusões, limitações e contribuições Trabalhos Futuros REFERÊNCIAS BIBLIOGRÁFICAS... 92

11 11 1 INTRODUÇÃO Atualmente, a tendência dos hardwares dos computadores serem mais simples, com frequência de operação mais baixa e integração em um mesmo chip de dois ou mais núcleos de processamento arquiteturas conhecidas como de múltiplos núcleos (multicore) já está consolidada e é utilizada amplamente nos mais diversos campos de aplicações (RIGO et al., 2007). Com isso, a computação paralela e distribuída tem se mostrado tema amplamente estudado. Entretanto, somente com estas arquiteturas, sem softwares eficientes e adequados, o potencial de hardware disponível poderá ser subutilizado. Assim, é real a necessidade de adequação dos modelos tradicionais de desenvolvimento de softwares sequenciais para um modelo paralelo. O grande desafio atual, então, é descobrir como tornar a programação paralela mais simples e acessível para a grande maioria dos programadores, principalmente pesquisadores, uma vez que este trabalho tem como principal abordagem o desenvolvimento de software científico. Desta maneira, o enfoque principal deste trabalho foram os softwares científicos. Entretanto, em princípio, nada impede que a técnica seja usada para desenvolvimento de aplicativos paralelos e distribuídos em geral. Ao final deste trabalho é disponibilizado para a comunidade acadêmica um conjunto de técnicas de Engenharia de Software voltadas ao desenvolvimento de aplicações paralelas, incentivando, facilitando e proporcionando esta evolução na qualidade dos softwares produzidos principalmente por cientistas. 1.1 Caracterização do Problema / Motivação Não é possível notar um volume significativo de produções acadêmicas (ou comerciais) que envolvam a Engenharia de Software aplicada ao desenvolvimento de software paralelo. Neste sentido, busca-se, a partir da presente pesquisa, estudar e propor novas estratégias para a melhoria da qualidade no desenvolvimento desse tipo de software. Assim, além de melhorar o desenvolvimento de novas aplicações e proporcionar melhorias também nos aplicativos já desenvolvidos, este estudo procura incentivar a identificação de padrões de projeto que tornem a programação paralela mais compreensível e, principalmente, mais fácil de desenvolver e manter.

12 12 Em complementação, não se percebe um consenso a respeito das melhores práticas ou da maneira de utilização da Engenharia de Software no desenvolvimento específico para arquiteturas paralelas e distribuídas. Portanto, o trabalho realiza, também, uma avaliação cuidadosa do atual estado da arte no assunto, avaliando as técnicas a serem utilizadas em projetos de engenharia de desenvolvimento de software especificamente paralelos, e principalmente software científico, devido às suas características peculiares e necessidade de alto desempenho, e, então, seguir adiante neste campo de pesquisa. Segundo Lee et al. (2010), de acordo com a Lei de Amdahl, o desempenho do código é limitado por sua parte serial. Neste sentido, é algo interessante, quando se tem um hardware com processamento paralelo, o projeto de sistema possuir um núcleo para acelerar regiões de códigos não seriais através da utilização de threads, que seria a paralelização do código. Isto já vem sendo pesquisado, conforme se vê abaixo no gráfico apresentado por Jason (2012), o qual apresenta os ganhos de desempenho conquistados através da utilização de uma arquitetura multicore e multiprocessada (Figura 1). Figura 1: Gráfico de desempenho com utilização de Multicores e Multiprocessadores. Fonte: Adaptado de Jason (2012). O problema da dificuldade de desenvolver software paralelo não é novo e através do aproveitamento das pesquisas e descobertas já realizadas até hoje, pode-se partir para a busca de novas descobertas, já considerando que a

13 13 automatização do paralelismo não é muito interessante e a criação de uma nova linguagem de programação é inviável. Assim, acredita-se que uma maneira de resolver este problema é primeiramente entender como arquitetar o software paralelo da melhor maneira (KEUTZER E MATTSON, 2010). Isto pode ser verificado quando Rigo et al. (2007) dizem que para fazer uso do potencial oferecido pelo hardware atual, o software deve ser paralelizado, e confirmado também por Pankratius (2010), quando diz que todas as aplicações de alto desempenho, não apenas as aplicações de supercomputadores, devem ser paralelas para explorar melhor o potencial do hardware. Dessa forma, o modelo sequencial de programação deve ser alterado para um modelo paralelo. Segundo Keutzer e Mattson (2010), a chave para escrever software paralelo de alta qualidade é desenvolver uma análise robusta para este software: o sucesso de qualquer produto de software de qualidade está na base em que ele foi desenvolvido - sua arquitetura, análise e desenho que, consequentemente, irá influenciar diretamente o bom desenvolvimento e implantação. A evolução das arquiteturas de hardware já trouxe avanços significativos para o desempenho, por exemplo, o speed-up dos aplicativos, que é entendido como o ganho em velocidade de processamento através da adição de núcleos de processamento. O gráfico da Figura 2, apresentado por Geonumerics (2012) indica a possibilidade de avanços na utilização dos recursos de hardware disponíveis. Ele ilustra a perda de eficiência na atual utilização dos computadores multicores, comparando o speed-up alcançado com diferentes tecnologias de implementação de paralelismo, como o algoritmo de gerenciamento de tarefas H-Dispatch, o modelo de endereçamento de memória Scatter-Gather e a interface de comunicação MPI, com o que denotaria o speed-up ideal.

14 14 Figura 2: Gráfico comparativo de desempenho e eficiência de CPU s Multicores Fonte: Adaptado de Geonumerics (2012) Uma vez que seja perceptível uma melhoria na qualidade, reusabilidade e eficiência dos softwares produzidos, acredita-se que o presente projeto se tornará um multiplicador para uma melhor utilização dos ambientes multiprocessados e de processamentos distribuídos disponíveis para pesquisas, ampliando assim o conhecimento e evoluindo os estudos na área de Engenharia de Software voltada para a computação paralela. Assim, ao final desta pesquisa, fazendo-se uso do suporte de uma abordagem otimizada, controlada e sistemática da Engenharia de Software para sistemas paralelos e distribuídos, pretende-se apresentar uma nova técnica para desenvolvimento deste tipo de sistema. 1.2 Objetivos: Geral e Específico O objetivo geral da presente investigação é propor um modelo baseado em técnicas específicas de Engenharia de Software a serem utilizadas no desenvolvimento de softwares, especialmente científicos, para computadores multicores e de processamento distribuído. Para que seja possível alcançar o objetivo geral acima descrito, os seguintes objetivos específicos podem ser elencados:

15 15 - Levantamento detalhado do estado da arte em computação e técnicas de programação paralela, arquiteturas paralelas e desenvolvimento de softwares científicos, com foco principal nos problemas enfrentados durante o desenvolvimento de software paralelo. - Estudo da Engenharia de Software aplicada ao desenvolvimento de software paralelo. - Proposta de um conjunto de técnicas de Engenharia de Software a serem utilizadas neste tipo específico de arquitetura, proporcionando opções simples e eficazes de documentação para os pesquisadores utilizarem o modelo de programação paralela em seus aplicativos. - Estabelecimento de um modelo com técnicas e formalização de uma proposta de abordagem sistematizada da Engenharia de Software para aplicativos a serem implementados em arquiteturas paralelas e distribuídas. - Escolha de uma aplicação paralelizável, no caso, o cálculo da constante PI, para verificação e validação das técnicas propostas no presente estudo. - Implementação e execução de aplicativos específicos, de cálculo de PI, desenvolvidos com base nas técnicas propostas, para arquiteturas de Multicores, Cloud Computing, Grid Computing e Cluster. - Avaliação, sistematização e conclusão dos resultados obtidos. 1.3 Estrutura do trabalho O presente trabalho foi distribuído em sete capítulos. Após o capítulo introdutório, segue o Capítulo 2 com a fundamentação teórica relevante para o desenvolvimento da dissertação. No Capítulo 3 é apresentado um levantamento bibliográfico a respeito dos principais problemas relacionados à programação paralela. No Capítulo 4, as técnicas desenvolvidas são apresentadas juntamente com o modo de utilização. Nos Capítulos 5 e 6 são propostas a implementação de

16 16 um aplicativo de testes e a aplicação da técnica em seu desenvolvimento para implantação em diferentes arquiteturas paralelas, ao final são apresentados os resultados obtidos e uma análise a respeito deles. Finalmente, no sétimo e último capítulo são apresentadas as conclusões a respeito do trabalho desenvolvido. Ao final, são apresentadas as referências utilizadas e os anexos. A organização dessa dissertação é apresentada graficamente pela Figura 3: Figura 3: Apresentação gráfica da organização da dissertação em capítulos.

17 17 2 FUNDAMENTAÇÃO TEÓRICA 2.1 Programação paralela Pode-se dizer que a programação paralela é, hoje em dia, desenvolvida e estudada de maneira independente da Engenharia de Software, ou melhor, utilizando basicamente a Engenharia de Software tradicional. Ritter e Bordin (2009), em seu trabalho de pesquisa bibliográfica e laboratorial, identificaram e avaliaram algumas bibliotecas e linguagens utilizadas na programação, chegando ao seguinte quadro comparativo de interfaces (Tabela 1). Tabela 1: Comparativo entre interfaces de programação paralela Fonte: Ritter e Bordin (2009) POSIX threads (PThreads) é uma interface de programação em linguagem C padronizada que foi especificada pelo IEEE POSIX. Define uma API padrão para criar e manipular threads. As bibliotecas que implementam a POSIX threads são chamadas Pthreads, sendo muito difundidas no universo Unix e outros sistemas operacionais semelhantes como Linux e Solaris (BARNEY, 2012). Cilk Plus é um produto da Intel, de código aberto. Essencialmente, o projeto está trabalhando em extensões para as linguagens C e C++, tornando a programação paralela eficiente mais fácil. O produto inclui três simples palavras chave e notações de array que permitem aos desenvolvedores C e C++ fazerem uso produtivo de processadores modernos que contém tanto múltiplos núcleos quanto unidades vetoriais (CAMPOS, 2011).

18 18 Intel Threading Building Blocks (Intel TBB) oferece uma abordagem rica e completa para expressar paralelismo em um programa C++. É uma biblioteca que ajuda o desenvolvedor a tirar proveito do desempenho dos processadores multicore sem ter que ser um especialista em paralelismo. Intel TBB não é apenas uma biblioteca para substituição de threads. Ela representa um nível mais alto; é paralelismo baseado em tarefas que abstrai detalhes da plataforma e mecanismos de segmentação para escalabilidade e desempenho. (INTEL, 2012) Em relação à autoparalelização, estudos já demonstraram não ser uma boa opção, pois os compiladores podem especular, ordenar dados e reordenar instruções para equilibrar a carga entre os componentes de um sistema, mas eles não conseguem reescrever um algoritmo serial criando um algoritmo diferente mais adequado para execução paralela. (KEUTZER E MATTSON, 2010) OpenMP (Open Multi-Processing) é uma interface de programação de aplicativo para a programação paralela de memória compartilhada em múltiplas plataformas. Permite acrescentar aos programas escritos em C, C++ e Fortran um método de paralelização no qual o "master thread", parte serial do código, bifurca (forks) um específico número de threads escravos e uma tarefa é dividida entre eles. As threads são então executadas simultaneamente. Esta interface está disponível em muitas arquiteturas, incluindo as plataformas Unix e Microsoft Windows. High Performance Fortran (HPF) é uma extensão do Fortran 90 com construções que suportam a computação paralela, publicada pelo High Performance Fortran Fórum (HPFF) em seu primeiro fórum em Com base na matriz de sintaxe introduzido em Fortran 90, HPF usa um modelo de dados de computação paralela para apoiar a distribuição da execução de uma matriz de trabalhos em múltiplos processadores. Isso permite uma execução eficiente em arquiteturas SIMD e MIMD, que serão abordadas mais a frente. (RICE UNIVERSITY, 2006) CUDA é uma plataforma de computação paralela e um modelo de programação desenvolvido pela NVIDIA. Ela permite aumentos significativos de desempenho computacional ao aproveitar a potência da unidade de processamento gráfico (GPU). Com a CUDA, você pode enviar código em C, C++ e Fortran diretamente à GPU, sem precisar usar uma linguagem de compilação. (NVIDIA, 2012) Ao final de seu trabalho, Ritter e Bordin (2009) chegaram à conclusão de que em seus experimentos, CUDA se apresentou como melhor opção em fase de testes,

19 19 devido à memória compartilhada rápida, porém o modelo sofre alguns gargalos em relação à comunicação e é utilizada somente em Unidades de Processamento Gráfico de Propósito Geral ou GPGPU. HPF e OpenMP continuam sendo as principais alternativa para aplicações paralelas devido à relativa simplicidade de implementação. Por sua vez, TBB surgiu com enfoque principal em multicore. Assim, não existe uma única interface melhor para todos os casos, sendo que uma avaliação específica da aplicação ainda é necessária e indispensável para definir bem a ferramenta que será melhor aproveitada. Outras interfaces de desenvolvimento paralelo poderiam ser abordadas, como, por exemplo, o MPI, Message Passing Interface, que é um padrão para comunicação de dados em computação paralela. O MPI tem por objetivo prover um padrão para escrever programas paralelos com comunicação através de troca de mensagens de forma prática, portátil, eficiente e flexível. Existem diversas implementações de MPI, sendo o Open MPI a maior e mais ampla delas. O Open MPI é um projeto open source mantido por um conjunto de universidades e entidades de pesquisa, que proporciona a fácil utilização do MPI. (OPEN MPI PROJECT, 2013) Além das tecnologias abordadas por Ritter e Bordin (2009), a programação paralela em Java, hoje em dia, vem se desenvolvendo através da biblioteca Java Threads, nativa. A implementação de códigos paralelos é realizada através da Classe Thread (java.lang.thread). O uso desta classe permite definir algumas configurações, como, por exemplo, de prioridade de execução das Threads, início e parada de processamento e tipos de Thread. (JEVEAUX, 2012) A partir da versão 1.5 do Java, ele passou a fornecer um melhor suporte para o paralelismo de processamento através do pacote java.util.concurrent. Este novo pacote fornece ferramentas mais simples para implementação de aplicativos concorrentes, como, por exemplo, o bloqueio para proteger certas partes do código a serem executadas por vários segmentos, ao mesmo tempo. (VOGEL, 2012) Viry (2010) aborda a utilização do Java em computação de alta performance (HPC - High-Performance Computing) e cita como vantagens da utilização do Java o desenvolvimento mais ágil, maior confiabilidade do código, portabilidade e a possibilidade de otimizações em tempo de execução. Na mesma linha da linguagem Java, de linguagens de programação gerenciadas, a Microsoft vem trabalhando em seu principal produto de

20 20 desenvolvimento de softwares, o framework.net, com o objetivo de melhorar e facilitar as implementações paralelas através da biblioteca Task Parallel Library. Segundo Macoratti (2011), a partir da versão 4.0 do.net framework, um novo modelo de programação paralela foi introduzido, permitindo ao programador focar principalmente nas tarefas do softwares, e a criação e gerenciamento das Threads fica sob a responsabilidade do runtime. A principal desvantagem é que ao usar este recurso, o programador abre mão do controle direto do comportamento da sua aplicação e isso pode não ser o cenário ideal para aplicações que requeiram um controle e gestão mais refinado. Há quem possa questionar o valor de um subsistema avançado em linguagem gerenciada para escrever código paralelo. Afinal de contas, paralelismo e simultaneidade dizem respeito a desempenho, e desenvolvedores interessados em desempenho procuram por linguagens nativas que ofereçam acesso extremamente rápido ao hardware e controle total sobre cada manipulação de bit, de linha de cache e cada operação sincronizada...certo? Eu temo pela situação de nossa indústria se esse for realmente o caso. Linguagens gerenciadas, como C#, Visual Basic e F# existem para oferecer a todos os desenvolvedores tanto os meros mortais como os super-heróis um ambiente seguro e produtivo no qual se possa desenvolver rapidamente código poderoso e eficiente. (TOUB, 2011) Toub (2011) faz uma análise a respeito da evolução apresentada pelo.net Framework 4.0 para desenvolvimento paralelo, onde defende a simplificação e a utilização de linguagens gerenciadas no desenvolvimento de softwares de alto desempenho, principalmente paralelos. Assim, analisando comparativamente, no momento atual o.net se encontra mais avançado no sentido de proporcionar facilidade de programação paralela aos programadores do que o Java, porém este possui um maior controle dos processos paralelos desenvolvidos, gerando talvez uma maior dificuldade no desenvolvimento dos códigos fontes, mas o Java possui uma comunidade bastante sólida de programadores, que se ajudam através da internet a fim de solucionarem os problemas apresentados pelos colegas. 2.2 Softwares científicos O desenvolvimento de software científico, segundo Mohammad (2010), é um processo pelo qual o software é criado para auxiliar cientistas e pesquisadores na

21 21 procura de solução para a sua meta. Mohammad (2010) acrescenta ainda que o estudo de uma melhor abordagem de desenvolvimento de software científico está em um estágio prematuro, devido ao fato de não existir uma definição formal de levantamento de requisitos na investigação científica, dada a sua natureza muitas vezes complexa. Segundo Pressman (2006), software científico e de engenharia são principalmente algoritmos de processamento de números. Mas as aplicações de software científico e de engenharia vão muito além, da astronomia à vulcanologia, da análise automotiva de tensões à dinâmica orbital do ônibus espacial, e da biologia molecular à manufatura automatizada. Assim, softwares científicos são considerados por Pankratius (2010) como mais comuns na área da programação paralela por não necessitarem tanta robustez como os softwares comerciais ou industriais, uma vez que a maioria das simulações pode ser reiniciada, caso haja alguma falha. Contudo, os resultados dos softwares científicos precisam ser confiáveis, o que é favorecido através de uma boa engenharia software. Segundo Pereira Junior (2007), as particularidades que os softwares científicos apresentam em relação ao software comercial são principalmente: o papel do cliente, a identificação dos requisitos e a alta rotatividade dos pesquisadores. No desenvolvimento de um software científico não existe o papel do cliente. Este tipo de software geralmente é construído por um pesquisador, com a finalidade de validar ou apoiar sua própria pesquisa. Sendo assim, os pontos de validação existentes no desenvolvimento de um software comercial inexistem no desenvolvimento de um software científico. Além disso, na maioria das vezes, os pesquisadores não possuem muita experiência com desenvolvimento de software, necessitando aprender como se desenvolve em determinadas tecnologias para implementar seus aplicativos. A identificação dos requisitos ao longo do seu desenvolvimento pode mudar, por exemplo, pela evolução da pesquisa. Sendo assim, o pesquisador e desenvolvedor não tem o conhecimento dos detalhes do software científico como um todo, diferentemente do software comercial em sua maioria. E, por fim, há alta rotatividade dos pesquisadores em uma pesquisa. Geralmente, um software científico é desenvolvido para validar uma determinada

22 22 parte de uma pesquisa e, ao término da pesquisa, o desenvolvedor se desvincula da pesquisa, como acontece com os alunos de mestrado e doutorado, por exemplo. No entanto, os próximos alunos frequentemente continuam o desenvolvimento do software. Já no caso de softwares comerciais, frequentemente existe uma equipe de desenvolvimento pré-definida e não se altera, ou se altera minimamente, até o término do projeto. Além disso, no desenvolvimento de um software comercial existem pessoas com funções distintas, como analistas de sistemas, administradores da base de dados, engenheiros de testes, e programadores. No desenvolvimento de um software científico, o pesquisador tende a desempenhar todas estas atividades, e muitas das vezes apenas com o mínimo de conhecimento em cada um dos papeis citados acima. 2.3 Arquiteturas paralelas Uma arquitetura paralela de computador pode ser definida como aquela que permite a computação ou execução de vários cálculos simultaneamente. Isto se torna possível devido à presença de várias unidades de processamento dedicadas ao ambiente de execução. Segundo Rose (2010), as arquiteturas paralelas contribuem para o ganho de desempenho em relação às arquiteturas convencionais, sendo alternativa quando os limites físicos são alcançados. Hoje, já existe demanda de aplicações de alto desempenho como simulações de previsão de tempo, modelos físicos ou biológicos, computação gráfica, entre outros. As arquiteturas de computadores são classificadas segundo o modelo, pelo fluxo de instruções e pelos dados que se apresentam. Essa classificação é definida como taxonomia de Flynn e fica divida em quatro categorias, conforme listadas abaixo: (FLYNN, 1966, apud COSTA, 2006). SISD (Single Instruction stream and Single Data stream): Arquitetura onde uma unidade de processamento pode executar uma única instrução em um único conjunto de dados, não há paralelismo. Corresponde a arquitetura de Von Neumann. Há aproximadamente uma década, essa arquitetura tem deixado de ser o padrão na construção de computadores, sendo substituída por computadores com arquitetura do tipo SIMD e MIMD. SIMD (Single Instruction stream and Multiple Data stream): Arquitetura onde uma unidade de processamento pode executar uma mesma instrução e operar em

4 Computação Paralela 4.1. Introdução

4 Computação Paralela 4.1. Introdução 4 Computação Paralela 4.1. Introdução Nos últimos anos observa-se uma tendência cada vez maior do aumento da demanda computacional na resolução de grandes problemas. Exemplos de aplicações que exigem alto

Leia mais

Resumo. Introdução Cluster Cluster Beowulf Curiosidades Conclução

Resumo. Introdução Cluster Cluster Beowulf Curiosidades Conclução Cluster Resumo Introdução Cluster Cluster Beowulf Curiosidades Conclução Introdução Sua empresa esta precisando fazer um grande processamento; As Nuvens existentes não são suficientes para sua empresa;

Leia mais

Tipos de Sistemas Distribuídos (Cluster e Grid)

Tipos de Sistemas Distribuídos (Cluster e Grid) Tipos de Sistemas Distribuídos (Cluster e Grid) Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência

Leia mais

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 6 - ALGORÍTIMOS PARALELOS MPI - Parallel Virtual Machine e PVM - Parallel Virtual Machine 1. INTRODUÇÃO Inicialmente é necessário conceber alguns conceitos para entendimento dos algoritmos paralelos:

Leia mais

} Monolíticas Aplicações em um computador centralizado. } Em Rede Aplicações com comunicação em rede. } Distribuídas Comunicação e cooperação em rede

} Monolíticas Aplicações em um computador centralizado. } Em Rede Aplicações com comunicação em rede. } Distribuídas Comunicação e cooperação em rede Prof. Samuel Souza } Monolíticas Aplicações em um computador centralizado } Em Rede Aplicações com comunicação em rede } Distribuídas Comunicação e cooperação em rede } Aplicações que são funcionalmente

Leia mais

Desenvolvimento de um Cluster de Alto Desempenho com PVM

Desenvolvimento de um Cluster de Alto Desempenho com PVM Desenvolvimento de um Cluster de Alto Desempenho com PVM Daniel Cândido de Oliveira 1, Yzaac Gonçalves da Silva 1, Madianita Bogo 1 1 Centro Universitário Luterano de Palmas Universidade Luterana do Brasil

Leia mais

Introdução às arquiteturas paralelas e taxonomia de Flynn

Introdução às arquiteturas paralelas e taxonomia de Flynn Introdução às arquiteturas paralelas e taxonomia de Flynn OBJETIVO: definir computação paralela; o modelo de computação paralela desempenhada por computadores paralelos; e exemplos de uso da arquitetura

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

Cluster HPC High Performance Computing.

Cluster HPC High Performance Computing. Faculdade de Tecnologia de Guaratinguetá. doze, março de 2009. Cluster HPC High Performance Computing. Diogo Salles, Thiago Pirro, Camilo Bernardes, Paulo Roberto, Ricardo Godoi, Douglas, Fauzer. Sistemas

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de I Organização Básica B de (Parte V, Complementar)

Leia mais

LCAD. ALGORÍTMOS PARALELOS (Aula 6) Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES.

LCAD. ALGORÍTMOS PARALELOS (Aula 6) Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES. ALGORÍTMOS PARALELOS (Aula 6) Neyval C. Reis Jr. OUTUBRO/2004 LCAD Laboratório de Computação de Alto Desempenho DI/UFES Tópico 20 janeiro 27 janeiro 3 fev 10 fev 17 fev 24 fev 3 março Paradigma de Paralelismo

Leia mais

SISTEMAS DISTRIBUIDOS. Prof. Marcelo de Sá Barbosa

SISTEMAS DISTRIBUIDOS. Prof. Marcelo de Sá Barbosa Prof. Marcelo de Sá Barbosa CLUSTER: Um cluster é um conjunto de computadores independentes conectados por rede que formam um sistema único através do uso de software. Um cluster, ou aglomerado de computadores,

Leia mais

Instituto Superior de Engenharia do Porto Administração de Sistemas Informáticos I Clusters

Instituto Superior de Engenharia do Porto Administração de Sistemas Informáticos I Clusters Instituto Superior de Engenharia do Porto Administração de Sistemas Informáticos I Clusters Trabalho elaborado por: 980368 - Sérgio Gonçalves Lima 1010949 - Nisha Sudhirkumar Chaganlal Clusters O que é

Leia mais

Computação Heterogênea Programação paralela, clusters e GPUs

Computação Heterogênea Programação paralela, clusters e GPUs Computação Heterogênea Programação paralela, clusters e GPUs Profa. Dra. Denise Stringhini (ICT- Unifesp) Primeiro Encontro do Khronos Chapters Brasil Belo Horizonte, 20/09/2013 Conteúdo Computação heterogênea:

Leia mais

7 Processamento Paralelo

7 Processamento Paralelo 7 Processamento Paralelo Yes, of course, who has time? Who has time? But then if we do not ever take time, how can we ever have time? (The Matrix) 7.1 Introdução Classificação de Sistemas Paralelos Diversas

Leia mais

hvbacellar@gmail.com Palavras-chave Cluster; Beowulf; OpenMosix; MPI; PVM.

hvbacellar@gmail.com Palavras-chave Cluster; Beowulf; OpenMosix; MPI; PVM. Cluster: Computação de Alto Desempenho Hilário Viana Bacellar Instituto de Computação, Universidade Estadual de Campinas Av. Albert Einstein 1251, Cidade Universitária, CEP 13083-970 Campinas, SP, Brasil

Leia mais

slide 0 Algoritmos Paralelos

slide 0 Algoritmos Paralelos slide 0 Algoritmos Paralelos Slide 2 Demanda por Velocidade Computational Demanda contínua por maior rapidez computational das máquinas que as atualmente disponíveis. As áreas que exigem maior rapidez

Leia mais

Paralelização Introdução a vetorização, OpenMP e MPI

Paralelização Introdução a vetorização, OpenMP e MPI 1/45 Paralelização Introdução a vetorização, OpenMP e MPI 1 Conceitos Paulo Penteado IAG / USP pp.penteado@gmail.com Esta apresentação: Arquivos do curso: Artigo relacionado: http://www.ppenteado.net/ast/pp_para_on/pp_para_on_1.pdf

Leia mais

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas Arquitetura de Sistemas Operacionais Capítulo 4 Estrutura do Sistema Operacional Cap. 4 Estrutura do Sistema 1 Sistemas Operacionais Pitágoras Fadom Divinópolis Material Utilizado na disciplina Sistemas

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais SISTEMAS COM MÚLTIPLOS PROCESSADORES LIVRO TEXTO: CAPÍTULO 13, PÁGINA 243 Prof. Pedro Luís Antonelli Anhanguera Educacional INTRODUÇÃO Arquiteturas que possuem duas ou mais CPUs interligadas

Leia mais

Arquitetura NUMA 1. Daniel de Angelis Cordeiro. INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França

Arquitetura NUMA 1. Daniel de Angelis Cordeiro. INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França Arquitetura NUMA 1 Daniel de Angelis Cordeiro INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França 6 de Outubro de 2010 1 Baseado em slides feitos por Christiane Pousa

Leia mais

Single-Chip Cloud Computer

Single-Chip Cloud Computer IME-USP Departamento de Ciência da Computação Single-Chip Cloud Computer Diogo de Jesus Pina 6798294 (diogojpina@gmail.com) Everton Topan da Silva 6514219 (everton.topan.silva@usp.br) Disciplina: Organização

Leia mais

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro Introdução Sistemas Operacionais 1 Sistema Operacional: Um conjunto de programas, executado pelo computador como os outros programas. Função: Controlar o funcionamento do computador, disponibilizando seus

Leia mais

Computação em cluster

Computação em cluster Computação em cluster Por Marcos Pitanga em 30 de maio de 2003 Introdução Este artigo tem por finalidade dar ao leitor uma visão mais integrada do que vem a ser a computação em cluster e como esta a cada

Leia mais

ATIVIDADES PRÁTICAS SUPERVISIONADAS

ATIVIDADES PRÁTICAS SUPERVISIONADAS ATIVIDADES PRÁTICAS SUPERVISIONADAS Ciência da Computação 5ª série Sistemas Operacionais A atividade prática supervisionada (ATPS) é um método de ensinoaprendizagem desenvolvido por meio de um conjunto

Leia mais

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 4 - CLUSTER DE COMPUTADORES 1. INTRODUÇÃO Grande parte do tempo, os computadores que utilizamos encontram-se ociosos, ou seja, sem nada para processar. Isso se deve, em grande parte, pelas aplicações

Leia mais

Máquinas Multiníveis

Máquinas Multiníveis Infra-Estrutura de Hardware Máquinas Multiníveis Prof. Edilberto Silva www.edilms.eti.br edilms@yahoo.com Sumário Conceitos básicos Classificação de arquiteturas Tendências da tecnologia Família Pentium

Leia mais

COMPUTAÇÃO PARALELA. uma visão geral. Guilherme Galante. v.2.0

COMPUTAÇÃO PARALELA. uma visão geral. Guilherme Galante. v.2.0 COMPUTAÇÃO PARALELA uma visão geral Guilherme Galante v.2.0 Guilherme Galante Bacharel em Informática Unioeste (2003) Mestre em Ciência da Computação UFRGS (2006) Professor Assistente do curso de Informática/Ciência

Leia mais

Sistemas Paralelos e Distribuídos. Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN

Sistemas Paralelos e Distribuídos. Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN Sistemas Paralelos e Distribuídos Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN Conceitos preliminares Paralelismo refere-se a ocorrência simultânea de eventos em um computador Processamento

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

Arquitetura de Computadores. Professor: Vilson Heck Junior

Arquitetura de Computadores. Professor: Vilson Heck Junior Arquitetura de Computadores Professor: Vilson Heck Junior Agenda Conceitos Estrutura Funcionamento Arquitetura Tipos Atividades Barramentos Conceitos Como já discutimos, os principais componentes de um

Leia mais

Computação de Alta Perfomance com Software Livre (Clusters)

Computação de Alta Perfomance com Software Livre (Clusters) Computação de Alta Perfomance com Software Livre (Clusters) 3º Seminário de Tecnologia da Informação UCSal Marcelo Soares Souza (marcelo@cebacad.net) CEBACAD Centro Baiano de Computação de alto Desempenho

Leia mais

Comparação SDs X Scs

Comparação SDs X Scs Prof. Alexandre Lima Sistemas Distribuídos Cap 9 1/7 Comparação SDs X Scs Distribuição inerente Economia Velocidade Confiabilidade Crescimento incremental Descrição Algumas aplicações envolvem máquinas

Leia mais

Processamento Paralelo

Processamento Paralelo Processamento Paralelo Hardware Paralelo Universidade Estadual de Santa Cruz Bacharelado em Ciência da Computação Prof. Esbel Tomás Valero Orellana Portabilidade O principal problema das primeiras maquinas

Leia mais

Cornell usa computação de alto desempenho para acelerar a pesquisa e ampliar o acesso a softwares

Cornell usa computação de alto desempenho para acelerar a pesquisa e ampliar o acesso a softwares Portfólio de produtos Microsoft para servidores Estudo de caso de solução do cliente Cornell usa computação de alto desempenho para acelerar a pesquisa e ampliar o acesso a softwares Visão geral País ou

Leia mais

Capítulo 8 Arquitetura de Computadores Paralelos

Capítulo 8 Arquitetura de Computadores Paralelos Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da

Leia mais

ARQUITETURA TRADICIONAL

ARQUITETURA TRADICIONAL INTRODUÇÃO Atualmente no universo corporativo, a necessidade constante de gestores de tomar decisões cruciais para os bons negócios das empresas, faz da informação seu bem mais precioso. Nos dias de hoje,

Leia mais

Supercomputadores dominavam o mercado

Supercomputadores dominavam o mercado Clusters e Grids Introdução Supercomputadores dominavam o mercado Alto custo Requerem mão de obra muito especializada Desenvolvimento de microprocessadores poderosos a um baixo custo Desenvolvimento de

Leia mais

Características Básicas de Sistemas Distribuídos

Características Básicas de Sistemas Distribuídos Motivação Crescente dependência dos usuários aos sistemas: necessidade de partilhar dados e recursos entre utilizadores; porque os recursos estão naturalmente em máquinas diferentes. Demanda computacional

Leia mais

Universidade Agostinho Neto Faculdade de Ciências Departamento de Ciências da Computação

Universidade Agostinho Neto Faculdade de Ciências Departamento de Ciências da Computação Universidade Agostinho Neto Faculdade de Ciências Departamento de Ciências da Computação Nº 96080 - Adário de Assunção Fonseca Muatelembe Nº 96118 - Castelo Pedro dos Santos Nº 96170 - Feliciano José Pascoal

Leia mais

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro Sistemas MIMD Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Arquiteturas Paralelas (SISD) Single Instruction Stream, Single Data Stream: Monoprocessador

Leia mais

Características do Software

Características do Software Questionamentos Por que tanta demora para entregar? Por que os prazos se atrasam? Por que os custos são altos? Por que não achar todos os erros antes de entregar? Por que dificuldade em medir o progresso

Leia mais

Arquiteturas de Computadores Paralelos

Arquiteturas de Computadores Paralelos Universidade Tuiuti do Paraná UTP Faculdade de Ciências Exatas - FACET Tecnologia de Análise e Desenvolvimento de Sistemas Organização de Computadores Prof. André Luiz 1 Paralelismo O estudo de paralelismo

Leia mais

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador Sistemas de Informação Prof. Anderson D. Moura Um programa de computador é composto por uma seqüência de instruções, que é interpretada e executada por um processador ou por uma máquina virtual. Em um

Leia mais

Gerenciamento e Interoperabilidade de Redes

Gerenciamento e Interoperabilidade de Redes EN-3610 Gerenciamento e Interoperabilidade de Redes Computação em Nuvem Introdução Centralização do processamento Surgimento da Teleinformática Década de 60 Execução de programas localmente Computadores

Leia mais

Agenda do Mini-Curso. Sérgio Yoshio Fujii. Ethan Boardman. sergio.fujii@areva-td.com. ethan.boardman@areva-td.com

Agenda do Mini-Curso. Sérgio Yoshio Fujii. Ethan Boardman. sergio.fujii@areva-td.com. ethan.boardman@areva-td.com Agenda do Mini-Curso Sérgio Yoshio Fujii sergio.fujii@areva-td.com Ethan Boardman ethan.boardman@areva-td.com Agenda do Mini-Curso Evolução de sistemas SCADA/EMS nos Centros de Controle: Sistemas operacionais

Leia mais

Análise e Projeto de. Aula 01. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br

Análise e Projeto de. Aula 01. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Análise e Projeto de Sistemas I Aula 01 Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Análise e Projeto de Sistemas I Horário das Aulas: 2as feiras das 10h10 às 11h40 e 5as feiras das 08h25

Leia mais

23/05/12. Computação em Nuvem. Computação em nuvem: gerenciamento de dados. Computação em Nuvem - Características principais

23/05/12. Computação em Nuvem. Computação em nuvem: gerenciamento de dados. Computação em Nuvem - Características principais Computação em Nuvem Computação em nuvem: gerenciamento de dados Computação em nuvem (Cloud Computing) é uma tendência recente de tecnologia cujo objetivo é proporcionar serviços de Tecnologia da Informação

Leia mais

Introdução a Computação Paralela e a Montagem de Clusters.

Introdução a Computação Paralela e a Montagem de Clusters. Introdução a Computação Paralela e a Montagem de Clusters. Marcelo Souza (marcelo@cebacad.net) Granduando em Sistema da Informação CEBACAD Centro Baiano de Computação de alto Desempenho Introdução a Computação

Leia mais

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1 Engenharia de Software Introdução Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1 Tópicos Apresentação da Disciplina A importância do Software Software Aplicações de Software Paradigmas

Leia mais

Programação em Memória Compartilhada com OpenMP

Programação em Memória Compartilhada com OpenMP Programação em Memória Compartilhada com OpenMP Esbel Tomás Valero Orellana Bacharelado em Ciência da Computação Departamento de Ciências Exatas e Tecnológicas Universidade Estadual de Santa Cruz evalero@uesc.br

Leia mais

Organização de Computadores 2005/2006 Processamento Paralelo

Organização de Computadores 2005/2006 Processamento Paralelo Organização de Computadores 2005/2006 Processamento Paralelo Paulo Ferreira paf a dei.isep.ipp.pt Maio de 2006 Introdução 2 Porquê?...........................................................................................

Leia mais

Desenvolvimento de Programas Paralelos para Máquinas NUMA: Conceitos e Ferramentas

Desenvolvimento de Programas Paralelos para Máquinas NUMA: Conceitos e Ferramentas 1 Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Programa de Pós-Graduação em Ciência da Computação Desenvolvimento de Programas Paralelos para Máquinas NUMA: Conceitos

Leia mais

Balanceamento de Carga

Balanceamento de Carga 40 4. Balanceamento de Carga Pode-se entender por balanceamento de carga uma política a ser adotada para minimizar tanto a ociosidade de utilização de alguns equipamentos quanto a super utilização de outros,

Leia mais

Desempenho de um Cluster Virtualizado em Relação a um Cluster Convencional Similar

Desempenho de um Cluster Virtualizado em Relação a um Cluster Convencional Similar Desempenho de um Cluster Virtualizado em Relação a um Cluster Convencional Similar David Beserra 1, Alexandre Borba¹, Samuel Souto 1, Mariel Andrade 1, Alberto Araujo 1 1 Unidade Acadêmica de Garanhuns

Leia mais

Cursos da Escola de Engenharias e Ciências Exatas - UnP

Cursos da Escola de Engenharias e Ciências Exatas - UnP Cursos da Escola de Engenharias e Ciências Exatas - UnP Professor Nielsen Castelo Damasceno E-mail: nielsen.castelo@unp.br Web: http://ncdd.com.br Sala de Aula Online Curso Sistemas distribuídos (CH Total

Leia mais

Automação do Processo de Instalação de Softwares

Automação do Processo de Instalação de Softwares Automação do Processo de Instalação de Softwares Aislan Nogueira Diogo Avelino João Rafael Azevedo Milene Moreira Companhia Siderúrgica Nacional - CSN RESUMO Este artigo tem como finalidade apresentar

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

Professores: Aula 10. Lúcia M. A. Drummond Simone de Lima Martins. Conteúdo: Arquiteturas Avançadas. - Arquiteturas RISC - Processamento Paralelo

Professores: Aula 10. Lúcia M. A. Drummond Simone de Lima Martins. Conteúdo: Arquiteturas Avançadas. - Arquiteturas RISC - Processamento Paralelo 1 Professores: Aula 10 Lúcia M. A. Drummond Simone de Lima Martins Conteúdo: Arquiteturas Avançadas - Arquiteturas RISC - Processamento Paralelo 2 Arquiteturas RISC Reduced Instruction Set Computer se

Leia mais

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software Análise e Projeto de Sistemas Análise e Projeto de Sistemas Contextualização ENGENHARIA DE SOFTWARE ANÁLISE E PROJETO DE SISTEMAS ENGENHARIA DA INFORMAÇÃO Perspectiva Histórica Engenharia de Software 1940:

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Evolução Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Introdução Componentes de um sistema computacional Conceituação Características desejáveis Organização

Leia mais

Metodologia de Desenvolvimento de Sistemas

Metodologia de Desenvolvimento de Sistemas Metodologia de Desenvolvimento de Sistemas Aula 1 Ementa Fases do Ciclo de Vida do Desenvolvimento de Software, apresentando como os métodos, ferramentas e procedimentos da engenharia de software, podem

Leia mais

UTFPR - Sistemas Distribuídos Prof. Cesar Augusto Tacla. Anotações. Copyright Cesar Augusto Tacla 2008 - 1 -

UTFPR - Sistemas Distribuídos Prof. Cesar Augusto Tacla. Anotações. Copyright Cesar Augusto Tacla 2008 - 1 - - 1 - - 2 - - 3 - Segundo (Garg, 2004), são sistemas compostos por múltiplos processadores conectados por uma rede de comunicação, sendo a rede de comunicação uma LAN (Ethernet) ou WAN (Internet). - 4

Leia mais

Sistemas Operacionais

Sistemas Operacionais UNIVERSIDADE BANDEIRANTE DE SÃO PAULO INSTITUTO POLITÉCNICO CURSO DE SISTEMAS DE INFORMAÇÃO Sistemas Operacionais Notas de Aulas: Tópicos 7 e 8 Estrutura do Sistema Operacional São Paulo 2009 1 Sumário

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 6 - ARQUITETURAS AVANÇADAS DE COMPUTADORES 1. INTRODUÇÃO As arquiteturas dos processadores têm evoluído ao longo dos anos, e junto com ela o conceito de arquitetura avançada tem se modificado. Nos

Leia mais

Aplicações. Sistema Operacional Hardware. Os sistemas de computadores são projetados com basicamente 3 componentes: Máquinas Virtuais e Emuladores

Aplicações. Sistema Operacional Hardware. Os sistemas de computadores são projetados com basicamente 3 componentes: Máquinas Virtuais e Emuladores Máquinas Virtuais e Emuladores Marcos Aurelio Pchek Laureano Sistemas de Computadores Os sistemas de computadores são projetados com basicamente 3 componentes: hardware sistema operacional aplicações Sistemas

Leia mais

Programação Paralela Híbrida em CPU e GPU: Uma Alternativa na Busca por Desempenho

Programação Paralela Híbrida em CPU e GPU: Uma Alternativa na Busca por Desempenho 124 - Encontro Anual de Tecnologia da Informação Programação Paralela Híbrida em CPU e GPU: Uma Alternativa na Busca por Desempenho André Luís Stefanello¹, Crístian Cleder Machado1, Dioni da Rosa¹, Maurício

Leia mais

ALGORÍTMOS PARALELOS (Aula 2) LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES

ALGORÍTMOS PARALELOS (Aula 2) LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES ALGORÍTMOS PARALELOS (Aula 2) Neyval C. Reis Jr. OUTUBRO/2004 LCAD Laboratório de Computação de Alto Desempenho DI/UFES Programa do Curso LCAD 1. Introdução 2. Arquitetura de Computadores 3. Arquiteturas

Leia mais

Escalonamento de Processos em Multiprocessadores

Escalonamento de Processos em Multiprocessadores Sistemas Operacionais Escalonamento de Processos em Multiprocessadores Capítulo 10 IC - UFF 1 Processamento Paralelo e Distribuído Multiprocessadores X Multicomputadores Memória IC - UFF 2 Processamento

Leia mais

Supercomputação. Simplificada.

Supercomputação. Simplificada. Supercomputação. Simplificada. INTRODUÇÃO AO WINDOWS HPC SERVER 2008 R2 SUITE O Windows HPC Server 2008 R2, solução de HPC de terceira geração da Microsoft, oferece uma solução abrangente e econômica para

Leia mais

1 - Processamento de dados

1 - Processamento de dados Conceitos básicos sobre organização de computadores 2 1 - Processamento de dados O que é processamento? O que é dado? Dado é informação? Processamento é a manipulação das informações coletadas (dados).

Leia mais

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos Capítulo 8 Sistemas com Múltiplos Processadores 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos 1 Sistemas Multiprocessadores Necessidade contínua de computadores mais rápidos modelo

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 5 Servidores de Aplicação

Leia mais

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas: Computadores de alto-desempenho são utilizados em diversas áreas: - análise estrutural; - previsão de tempo; - exploração de petróleo; - pesquisa em fusão de energia; - diagnóstico médico; - simulações

Leia mais

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com Sistemas Operacionais 2014 Introdução Alexandre Augusto Giron alexandre.a.giron@gmail.com Roteiro Sistemas Operacionais Histórico Estrutura de SO Principais Funções do SO Interrupções Chamadas de Sistema

Leia mais

COMPUTAÇÃO EM GRID COM BANCO DE DADOS ORACLE 10g

COMPUTAÇÃO EM GRID COM BANCO DE DADOS ORACLE 10g COMPUTAÇÃO EM GRID COM BANCO DE DADOS ORACLE 10g Daniel Murara Barcia Especialista em Sistemas de Informação Universidade Federal do Rio Grande do Sul daniel@guaiba.ulbra.tche.br Resumo. Esse artigo aborda

Leia mais

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN SISTEMAS OPERACIONAIS Apostila 03 Estrutura do Sistema Operacional UNIBAN 1.0 O Sistema Operacional como uma Máquina Virtual A arquitetura (conjunto de instruções, organização de memória, E/S e estrutura

Leia mais

ÁREA: CV ( ) CHSA ( ) ECET ( )

ÁREA: CV ( ) CHSA ( ) ECET ( ) ADAPTAÇÃO E INTEGRAÇÃO DO PROCESSADOR RISCO A UMA ARQUITETURA MULTI-CORE PARA SISTEMAS EMBARCADOS DE PROPOSITO GERAL Laysson Oliveira Luz (Bolsista PIBIC/CNPq), Ivan Saraiva Silva (Orientador, Departamento

Leia mais

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos cpgcarlos@yahoo.com.br www.oficinadapesquisa.com.br ESQUEMA DE UM COMPUTADOR Uma Unidade Central de

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS 1. Histórico Primeiros computadores Computadores dos anos 50 e 60 Primeiros computadores com sistemas operacionais Surgimento das redes de computadores Nos anos 70 início das pesquisas

Leia mais

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 3 - ARQUITETURA DE SISTEMAS DISTRIBUÍDOS 1 INTRODUÇÃO Considerando que os Sistemas Distribuídos são constituídos de vários processadores, existem diversas formas de organizar o hardware de tais

Leia mais

O que é Grid Computing

O que é Grid Computing Grid Computing Agenda O que é Grid Computing Grid vs Cluster Benefícios Tipos de Grid Aplicações Ferramentas e padrões Exemplos no mundo Exemplos no Brasil Grid no mundo dos negócios Futuro O que é Grid

Leia mais

Cloud Computing. Andrêza Leite. andreza.lba@gmail.com

Cloud Computing. Andrêza Leite. andreza.lba@gmail.com Cloud Computing Andrêza Leite andreza.lba@gmail.com Roteiro O que é cloud computing? Classificação O que está 'por traz' da cloud? Exemplos Como montar a sua? O que é cloud computing? Cloud Computing O

Leia mais

USE O PODER DA NUVEM. VEJA COMO A NUVEM PODE TRANSFORMAR SEUS NEGÓCIOS.

USE O PODER DA NUVEM. VEJA COMO A NUVEM PODE TRANSFORMAR SEUS NEGÓCIOS. USE O PODER DA NUVEM. VEJA COMO A NUVEM PODE TRANSFORMAR SEUS NEGÓCIOS. A computação em nuvem é uma mudança de paradigma no gerenciamento de TI e de datacenters, além de representar a capacidade da TI

Leia mais

CLOUD COMPUTING. Andrêza Leite. andreza.leite@univasf.edu.br

CLOUD COMPUTING. Andrêza Leite. andreza.leite@univasf.edu.br CLOUD COMPUTING Andrêza Leite andreza.leite@univasf.edu.br Roteiro O que é cloud computing? Classificação O que está 'por traz' da cloud? Exemplos Como montar a sua? O que é cloud computing? Cloud Computing

Leia mais

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2) Definição de um Sistema Distribuído (1) Introdução Um sistema distribuído é: Uma coleção de computadores independentes que aparecem para o usuário como um único sistema coerente. Definição de um Sistema

Leia mais

GESTÃO DE SISTEMAS OPERACIONAIS II

GESTÃO DE SISTEMAS OPERACIONAIS II GESTÃO DE SISTEMAS OPERACIONAIS II Servidores Definição Servidores História Servidores Tipos Servidores Hardware Servidores Software Evolução do Windows Server Windows Server 2003 Introdução Windows Server

Leia mais

2. Vantagens da programação concorrente. 2.1 Divisão de trabalho

2. Vantagens da programação concorrente. 2.1 Divisão de trabalho Vantagens e desvantagens do paradigma da programação concorrente: análise de hardware e software Gabriel Giuliani Baú 1 1 Curso de Sistemas de Informação - Universidade Luterana do Brasil - ULBRA BR 287,

Leia mais

Núvem Pública, Privada ou Híbrida, qual adotar?

Núvem Pública, Privada ou Híbrida, qual adotar? Instituto de Educação Tecnológica Pós-graduação Gestão e Tecnologia da Informação - Turma 25 03/04/2015 Núvem Pública, Privada ou Híbrida, qual adotar? Paulo Fernando Martins Kreppel Analista de Sistemas

Leia mais

COMPUTAÇÃO EM NUVEM. Michele Marques Costa 1,2, Julio César2 ¹Universidade paranaense (Unipar)

COMPUTAÇÃO EM NUVEM. Michele Marques Costa 1,2, Julio César2 ¹Universidade paranaense (Unipar) COMPUTAÇÃO EM NUVEM Michele Marques Costa 1,2, Julio César2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil Mih_nai@hotmail.com juliocesar@unipar.br Resumo. Este artigo contém a definição e citação

Leia mais

O que é Cloud Computing (Computação nas Nuvens)?

O que é Cloud Computing (Computação nas Nuvens)? O que é Cloud Computing (Computação nas Nuvens)? Introdução A denominação Cloud Computing chegou aos ouvidos de muita gente em 2008, mas tudo indica que ouviremos esse termo ainda por um bom tempo. Também

Leia mais

Tópicos. Engenharia de Software: Uma Visão Geral

Tópicos. Engenharia de Software: Uma Visão Geral Tópicos 2 3 Engenharia de Software: Uma Visão Geral SCE 186 - Engenharia de Software Profs. José Carlos Maldonado e Elisa Yumi Nakagawa 2 o semestre de 2002 A importância do Software Software Aplicações

Leia mais

Cálculo Aproximado do número PI utilizando Programação Paralela

Cálculo Aproximado do número PI utilizando Programação Paralela Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Cálculo Aproximado do número PI utilizando Programação Paralela Grupo 17 Raphael Ferras Renan Pagaiane Yule Vaz SSC-0143 Programação

Leia mais

Relatório de Pesquisa

Relatório de Pesquisa Relatório de Pesquisa A Vantagem da Virtualização de Mainframe: Como Economizar Milhões de Dólares Utilizando um IBM System z como um Servidor em Nuvem Linux Sumário Executivo Os executivos de TI (Tecnologia

Leia mais

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1 Engenharia de Software Introdução Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1 Tópicos Apresentação da Disciplina A importância do Software Software Aplicações de Software Paradigmas

Leia mais

JOSÉ HENRIQUE MADEIRA CIMINO ANÁLISE DE PARALELISMO EM ARQUITETURA MULTICORE COM USO DE UNIDADE DE PROCESSAMENTO GRÁFICO

JOSÉ HENRIQUE MADEIRA CIMINO ANÁLISE DE PARALELISMO EM ARQUITETURA MULTICORE COM USO DE UNIDADE DE PROCESSAMENTO GRÁFICO 1 FUNDAÇÃO DE ENSINO EURÍPIDES SOARES DA ROCHA CENTRO UNIVERSITÁRIO EURÍPIDES DE MARÍLIA UNIVEM CURSO DE CIÊNCIA DA COMPUTAÇÃO JOSÉ HENRIQUE MADEIRA CIMINO ANÁLISE DE PARALELISMO EM ARQUITETURA MULTICORE

Leia mais

Arquitetura e Sistema de Monitoramento para

Arquitetura e Sistema de Monitoramento para Arquitetura e Sistema de Monitoramento para 1 Computação em Nuvem Privada Mestranda: Shirlei A. de Chaves Orientador: Prof. Dr. Carlos Becker Westphall Colaborador: Rafael B. Uriarte Introdução Computação

Leia mais

CLOUD COMPUTING PEDRO MORHY BORGES LEAL. MAC0412 - Organização de Computadores Prof. Alfredo Goldman 7 de dezembro de 2010

CLOUD COMPUTING PEDRO MORHY BORGES LEAL. MAC0412 - Organização de Computadores Prof. Alfredo Goldman 7 de dezembro de 2010 CLOUD COMPUTING PEDRO MORHY BORGES LEAL MAC0412 - Organização de Computadores Prof. Alfredo Goldman 7 de dezembro de 2010 0 CLOUD COMPUTING 1 1. Introdução Com o grande avanço da tecnologia de processadores,

Leia mais

Programação Concorrente Processos e Threads

Programação Concorrente Processos e Threads Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por

Leia mais