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

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

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

} 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software

Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Curso Técnico em Informática ENGENHARIA DE SOFTWARE Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Clayton Maciel Costa

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

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Cluster, Grid e computação em nuvem Slide 8 Nielsen C. Damasceno Introdução Inicialmente, os ambientes distribuídos eram formados através de um cluster. Com o avanço das tecnologias

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

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

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

Gestão em Sistemas de Informação. Profa.: Me. Christiane Zim Zapelini E-mail: christianezapelini@nwk.edu.br

Gestão em Sistemas de Informação. Profa.: Me. Christiane Zim Zapelini E-mail: christianezapelini@nwk.edu.br Gestão em Sistemas de Informação Profa.: Me. Christiane Zim Zapelini E-mail: christianezapelini@nwk.edu.br Gestão em Sistemas de Informação Cloud Computing (Computação nas Nuvens) 2 Cloud Computing Vocês

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

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

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

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

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

Proposta de Avaliação de Empresas para o uso do SAAS

Proposta de Avaliação de Empresas para o uso do SAAS 1 INSTITUTO DE EDUCAÇÃO TECNOLÓGICA PÓS-GRADUAÇÃO Gestão e Tecnologia da Informação/ IFTI 1402 Turma 25 09 de abril de 2015 Proposta de Avaliação de Empresas para o uso do SAAS Raphael Henrique Duarte

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

CLOUD COMPUTING NAS EMPRESAS: NUVEM PÚBLICA OU NUVEM PRIVADA? nubeliu.com

CLOUD COMPUTING NAS EMPRESAS: NUVEM PÚBLICA OU NUVEM PRIVADA? nubeliu.com CLOUD COMPUTING NAS EMPRESAS: NUVEM PÚBLICA OU NUVEM PRIVADA? nubeliu.com SUMÁRIO Introdução... 4 Nuvem pública: quando ela é ideal... 9 Nuvem privada: quando utilizá-la... 12 Alternativas de sistemas

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

Fábrica de Software 29/04/2015

Fábrica de Software 29/04/2015 Fábrica de Software 29/04/2015 Crise do Software Fábrica de Software Analogias costumam ser usadas para tentar entender melhor algo ou alguma coisa. A idéia é simples: compara-se o conceito que não se

Leia mais

A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer

A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer lugar e independente da plataforma, bastando para isso

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

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

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

CLOUD COMPUTING: COMPARANDO COMO O MUNDO ONLINE PODE SUBSTITUIR OS SERVIÇOS TRADICIONAIS

CLOUD COMPUTING: COMPARANDO COMO O MUNDO ONLINE PODE SUBSTITUIR OS SERVIÇOS TRADICIONAIS CLOUD COMPUTING: COMPARANDO COMO O MUNDO ONLINE PODE SUBSTITUIR OS SERVIÇOS TRADICIONAIS João Antônio Bezerra Rodrigues¹, Claudete Werner¹, Gabriel Costa Silva² ¹Universidade Paranaense (Unipar) Paranavaí

Leia mais

CONCEITOS E APLICAÇÕES DA COMPUTAÇÃO EM NUVEM

CONCEITOS E APLICAÇÕES DA COMPUTAÇÃO EM NUVEM CONCEITOS E APLICAÇÕES DA COMPUTAÇÃO EM NUVEM Rogério Schueroff Vandresen¹, Willian Barbosa Magalhães¹ ¹Universidade Paranaense(UNIPAR) Paranavaí-PR-Brasil rogeriovandresen@gmail.com, wmagalhaes@unipar.br

Leia mais

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Aula 1 Conceitos da Computação em Nuvem A computação em nuvem ou cloud computing

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos I: Threads, virtualização e comunicação via protocolos Prof. MSc. Hugo Souza Nesta primeira parte sobre os Processos Distribuídos iremos abordar: Processos e a comunicação

Leia mais

Consolidação inteligente de servidores com o System Center

Consolidação inteligente de servidores com o System Center Consolidação de servidores por meio da virtualização Determinação do local dos sistemas convidados: a necessidade de determinar o melhor host de virtualização que possa lidar com os requisitos do sistema

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

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

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

SERVIÇO DE ANÁLISE DE REDES DE TELECOMUNICAÇÕES APLICABILIDADE PARA CALL-CENTERS VISÃO DA EMPRESA

SERVIÇO DE ANÁLISE DE REDES DE TELECOMUNICAÇÕES APLICABILIDADE PARA CALL-CENTERS VISÃO DA EMPRESA SERVIÇO DE ANÁLISE DE REDES DE TELECOMUNICAÇÕES APLICABILIDADE PARA CALL-CENTERS VISÃO DA EMPRESA Muitas organizações terceirizam o transporte das chamadas em seus call-centers, dependendo inteiramente

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

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento HOME O QUE É TOUR MÓDULOS POR QUE SOMOS DIFERENTES METODOLOGIA CLIENTES DÚVIDAS PREÇOS FALE CONOSCO Suporte Sou Cliente Onde sua empresa quer chegar? Sistemas de gestão precisam ajudar sua empresa a atingir

Leia mais

Planejamento Estratégico de TI. Felipe Pontes felipe.pontes@gmail.com

Planejamento Estratégico de TI. Felipe Pontes felipe.pontes@gmail.com Planejamento Estratégico de TI Felipe Pontes felipe.pontes@gmail.com VPN Virtual Private Network Permite acesso aos recursos computacionais da empresa via Internet de forma segura Conexão criptografada

Leia mais

4 Estrutura do Sistema Operacional. 4.1 - Kernel

4 Estrutura do Sistema Operacional. 4.1 - Kernel 1 4 Estrutura do Sistema Operacional 4.1 - Kernel O kernel é o núcleo do sistema operacional, sendo responsável direto por controlar tudo ao seu redor. Desde os dispositivos usuais, como unidades de disco,

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

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

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

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

A Evolução dos Sistemas Operacionais

A Evolução dos Sistemas Operacionais Capítulo 3 A Evolução dos Sistemas Operacionais Neste capítulo, continuaremos a tratar dos conceitos básicos com a intensão de construirmos, agora em um nível mais elevado de abstração, o entendimento

Leia mais

UMA INTRODUÇÃO SIGNIFICATIVA SOBRE COMPUTAÇÃO NAS NUVENS (CLOUD COMPUTING)

UMA INTRODUÇÃO SIGNIFICATIVA SOBRE COMPUTAÇÃO NAS NUVENS (CLOUD COMPUTING) UMA INTRODUÇÃO SIGNIFICATIVA SOBRE COMPUTAÇÃO NAS NUVENS (CLOUD COMPUTING) Thiago Batista de Oliveira¹, Júlio César Pereira¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil thiagoolyveira@gmail.com,juliocesarp@unipar.br

Leia mais

ORGANIZAÇÃO CURRICULAR

ORGANIZAÇÃO CURRICULAR ORGANIZAÇÃO CURRICULAR O curso Técnico em Informática, em Nível Médio Subseqüente, será organizado de forma semestral, com aulas presenciais, compostos por disciplinas, com conteúdos estabelecidos, tendo

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

Sistemas Operacionais 1/66

Sistemas Operacionais 1/66 Sistemas Operacionais 1/66 Roteiro Máquinas virtuais Emuladores Propriedades Benefícios Futuro 2/66 Sistemas de Computadores Os sistemas de computadores são projetados com basicamente 3 componentes: hardware

Leia mais

SAM GERENCIAMENTO DE ATIVOS DE SOFTWARE

SAM GERENCIAMENTO DE ATIVOS DE SOFTWARE SAM GERENCIAMENTO DE ATIVOS DE SOFTWARE Modelo de Otimização de SAM Controle, otimize, cresça Em um mercado internacional em constante mudança, as empresas buscam oportunidades de ganhar vantagem competitiva

Leia mais

Sistemas Operacionais. Roteiro. Sistemas de Computadores. Os sistemas de computadores são projetados com basicamente 3 componentes: Marcos Laureano

Sistemas Operacionais. Roteiro. Sistemas de Computadores. Os sistemas de computadores são projetados com basicamente 3 componentes: Marcos Laureano Sistemas Operacionais Marcos Laureano 1/66 Roteiro Máquinas virtuais Emuladores Propriedades Benefícios Futuro 2/66 Sistemas de Computadores Os sistemas de computadores são projetados com basicamente 3

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

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

CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE

CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE A proposta para o ambiente apresentada neste trabalho é baseada no conjunto de requisitos levantados no capítulo anterior. Este levantamento, sugere uma

Leia mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

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

Serviços em Nuvem: Oportunidade para Operadoras Parte III

Serviços em Nuvem: Oportunidade para Operadoras Parte III Serviços em Nuvem: Oportunidade para Operadoras Parte III Este artigo introduz os conceitos de computação em nuvem, Cloud Computing, e a insere no contexto de mercado de serviços ao apresenta-la como uma

Leia mais

Um White Paper da Websense Web Security Gateway: A Web 2.0 Protegida e Simplificada

Um White Paper da Websense Web Security Gateway: A Web 2.0 Protegida e Simplificada Um White Paper da Websense Web Security Gateway: A Web 2.0 Protegida e Simplificada Visão Geral do Mercado Embora o uso dos produtos da Web 2.0 esteja crescendo rapidamente, seu impacto integral sobre

Leia mais

EXIN Cloud Computing Fundamentos

EXIN Cloud Computing Fundamentos Exame Simulado EXIN Cloud Computing Fundamentos Edição Maio 2013 Copyright 2013 EXIN Todos os direitos reservados. Nenhuma parte desta publicação pode ser publicado, reproduzido, copiado ou armazenada

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

2 Computação na Nuvem

2 Computação na Nuvem 18 2 Computação na Nuvem 2.1 Definição A ideia essencial da computação na nuvem é permitir um novo modelo onde o consumo de recursos computacionais, e.g., armazenamento, processamento, banda entrada e

Leia mais

Introdução à Computação

Introdução à Computação Aspectos Importantes - Desenvolvimento de Software Motivação A economia de todos países dependem do uso de software. Cada vez mais, o controle dos processos tem sido feito por software. Atualmente, os

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

Leia mais

Padrões Arquiteturais e de Integração - Parte 1

Padrões Arquiteturais e de Integração - Parte 1 1 / 58 - Parte 1 Erick Nilsen Pereira de Souza T017 - Arquitetura e Design de Aplicações Análise e Desenvolvimento de Sistemas Universidade de Fortaleza - UNIFOR 11 de fevereiro de 2015 2 / 58 Agenda Tópicos

Leia mais

Unidade 13: Paralelismo:

Unidade 13: Paralelismo: Arquitetura e Organização de Computadores 1 Unidade 13: Paralelismo: SMP e Processamento Vetorial Prof. Daniel Caetano Objetivo: Apresentar os conceitos fundamentais da arquitetura SMP e alguns detalhes

Leia mais

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Aula 3 Virtualização de Sistemas 1. Conceito Virtualização pode ser definida

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

SOBRE A CALLIX. Por Que Vantagens

SOBRE A CALLIX. Por Que Vantagens Callix PABX Virtual SOBRE A CALLIX Por Que Vantagens SOBRE A CALLIX Por Que Vantagens Por Que Callix Foco no seu negócio, enquanto cuidamos da tecnologia do seu Call Center Pioneirismo no mercado de Cloud

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

Sistemas Operacionais Introdução. Professora: Michelle Nery

Sistemas Operacionais Introdução. Professora: Michelle Nery Sistemas Operacionais Introdução Professora: Michelle Nery Área de Atuação do Sistema Operacional Composto de dois ou mais níveis: Tipo de Sistemas Operacionais Sistemas Operacionais Monotarefas Sistemas

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

Leia mais

7.Conclusão e Trabalhos Futuros

7.Conclusão e Trabalhos Futuros 7.Conclusão e Trabalhos Futuros 158 7.Conclusão e Trabalhos Futuros 7.1 Conclusões Finais Neste trabalho, foram apresentados novos métodos para aceleração, otimização e gerenciamento do processo de renderização

Leia mais

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS 1. Introdução a supercomputação 2. Visão geral de Mainframe 3. Cluster de computadores 4. Cluster Beowulf considerações de projeto 5. Cluster x Grid 6.

Leia mais

1º Estudo Dirigido. Capítulo 1 Introdução aos Sistemas Operacionais

1º Estudo Dirigido. Capítulo 1 Introdução aos Sistemas Operacionais 1º Estudo Dirigido Capítulo 1 Introdução aos Sistemas Operacionais 1. Defina um sistema operacional de uma forma conceitual correta, através de suas palavras. R: Sistemas Operacionais são programas de

Leia mais

Projeto de Arquitetura

Projeto de Arquitetura Projeto de Arquitetura Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 11 Slide 1 Objetivos Apresentar projeto de arquitetura e discutir sua importância Explicar as decisões de projeto

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

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquiteturas RISC. (Reduced Instructions Set Computers) Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina

Leia mais

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE 1 OBJETIVOS 1. Qual é a capacidade de processamento e armazenagem que sua organização precisa para administrar suas informações e transações empresariais?

Leia mais

Engenharia de Software

Engenharia de Software Universidade São Judas Tadeu Profª Dra. Ana Paula Gonçalves Serra Engenharia de O Processo Uma Visão Genérica Capítulo 2 (até item 2.2. inclusive) Engenharia de - Roger Pressman 6ª edição McGrawHill Capítulo

Leia mais

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores SISTEMAS OPERACIONAIS Maquinas Virtuais e Emuladores Plano de Aula Máquinas virtuais Emuladores Propriedades Benefícios Futuro Sistemas de Computadores Os sistemas de computadores são projetados com basicamente

Leia mais

Estratégias para avaliação da segurança da computação em nuvens

Estratégias para avaliação da segurança da computação em nuvens Academia de Tecnologia da IBM White paper de liderança de pensamento Novembro de 2010 Estratégias para avaliação da segurança da computação em nuvens 2 Proteção da nuvem: do desenvolvimento da estratégia

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

Aumente sua velocidade e flexibilidade com a implantação da nuvem gerenciada de software da SAP

Aumente sua velocidade e flexibilidade com a implantação da nuvem gerenciada de software da SAP Parceiros de serviços em nuvem gerenciada Aumente sua velocidade e flexibilidade com a implantação da nuvem gerenciada de software da SAP Implemente a versão mais recente do software da SAP de classe mundial,

Leia mais

Análise de Desempenho de um SGBD para Aglomerado de Computadores

Análise de Desempenho de um SGBD para Aglomerado de Computadores Análise de Desempenho de um SGBD para Aglomerado de Computadores Diego Luís Kreutz, Gabriela Jacques da Silva, Hélio Antônio Miranda da Silva, João Carlos Damasceno Lima Curso de Ciência da Computação

Leia mais