ERLANG, SCALA, PYTHON, RUBY E OOERLANG UTILIZANDO INTEL MPI BENCHMARK

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

Download "ERLANG, SCALA, PYTHON, RUBY E OOERLANG UTILIZANDO INTEL MPI BENCHMARK"

Transcrição

1 UNIVERSIDADE DO ESTADO DO AMAZONAS - UEA ESCOLA SUPERIOR DE TECNOLOGIA ENGENHARIA DE COMPUTAÇÃO DANIEL HENRIQUE BRAZ DE AQUINO COMPARAÇÃO DO DESEMPENHO DA PROGRAMAÇÃO CONCORRENTE ENTRE JAVA, ERLANG, SCALA, PYTHON, RUBY E OOERLANG UTILIZANDO INTEL MPI BENCHMARK Manaus 2013

2 DANIEL HENRIQUE BRAZ DE AQUINO COMPARAÇÃO DO DESEMPENHO DA PROGRAMAÇÃO CONCORRENTE ENTRE JAVA, ERLANG, SCALA, PYTHON, RUBY E OOERLANG UTILIZANDO INTEL MPI BENCHMARK Trabalho de Conclusão de Curso apresentado à banca avaliadora do Curso de Engenharia de Computação, da Escola Superior de Tecnologia, da Universidade do Estado do Amazonas, como pré-requisito para obtenção do título de Engenheiro de Computação. Orientador: Prof. Dr. Jucimar Maia da Silva Júnior Manaus 2013

3 ii Universidade do Estado do Amazonas - UEA Escola Superior de Tecnologia - EST Reitor: Cleinaldo de Almeida Costa Vice-Reitor: Raimundo de Jesus Teixeira Barradas Diretor da Escola Superior de Tecnologia: Cleto Cavalcante de Souza Leal Coordenador do Curso de Engenharia de Computação: Raimundo Correa de Oliveira Coordenador da Disciplina Projeto Final: Tiago Eugenio de Melo Banca Avaliadora composta por: Data da Defesa: 18/11/2013. Prof. Dr. Jucimar Maia da Silva Júnior (Orientador) Prof. Dr. Raimundo Correa de Oliveira Prof. Dr. Ricardo da Silva Barboza CIP - Catalogação na Publicação A657c AQUINO, Daniel Comparação do desempenho da programação concorrente entre Java, Erlang, Scala, Python, Ruby e ooerlang utilizando Intel MPI Benchmark / Daniel Aquino; Prof. Dr. Jucimar Maia da Silva Júnior - Manaus: UEA, p.: il.; 30cm Inclui Bibliografia Trabalho de Conclusão de Curso (Graduação em Engenharia de Computação). Universidade do Estado do Amazonas, CDU: 004.2

4 iii DANIEL HENRIQUE BRAZ DE AQUINO COMPARAÇÃO DO DESEMPENHO DA PROGRAMAÇÃO CONCORRENTE ENTRE JAVA, ERLANG, SCALA, PYTHON, RUBY E OOERLANG UTILIZANDO INTEL MPI BENCHMARK Trabalho de Conclusão de Curso apresentado à banca avaliadora do Curso de Engenharia de Computação, da Escola Superior de Tecnologia, da Universidade do Estado do Amazonas, como pré-requisito para obtenção do título de Engenheiro de Computação. BANCA EXAMINADORA Aprovado em: / /2013 Prof. Jucimar Maia da Silva Júnior, Doutor UNIVERSIDADE DO ESTADO DO AMAZONAS Prof. Raimundo Correa de Oliveira, Doutor UNIVERSIDADE DO ESTADO DO AMAZONAS Prof. Ricardo da Silva Barboza, Doutor UNIVERSIDADE DO ESTADO DO AMAZONAS

5 iv Agradecimentos Após um ano de dedicação ao trabalho de conclusão de curso, agradeço a todos que estiveram relacionados ao meu desenvolvimento pessoal e acadêmico. Em primeiro lugar a Deus, que me deu oportunidade de cursar Engenharia de Computação na UEA. Ao Prof. Dr. Jucimar Maia da Silva Júnior, que sempre esteve presente em dar direção e suporte para a execução deste trabalho. A minha família, em especial à Vera Lúcia de Souza Braz e à Lucila de Souza Braz. Aos meus colegas de curso, com os quais compartilharmos o desenvolvimento de nossos trabalhos de conclusão de curso. E em especial à Heloíza de Lima Cavalcante, que sempre me apoiou e me incentivou. A todos sou muito grato.

6 v Resumo Este trabalho de conclusão de curso apresenta um estudo do desempenho da programação concorrente entre as linguagens Java, Erlang, Scala, Python e Ruby, utilizadas para o desenvolvimento de back-ends na WEB 2.0 e ooerlang, uma extensão orientada a objetos para Erlang. Utiliza-se um conjunto de testes disponibilizados pela Intel, conhecido como IMB (Intel MPI Benchmark) para manter um caráter idôneo na execução deste trabalho, visando avaliar o desempenho das linguagens. Existe uma descrição do IMB e uma descrição específica para cada benchmarck utilizado. Estes benchmarcks foram projetados para avaliar o desempenho de máquinas; os mesmos foram reescritos para avaliar o desempenho e o comportamento das linguagens. Palavras-Chave: Java, Erlang, Scala, Python, Ruby, ooerlang, IMB, Concorrência, Benchmarck

7 vi Abstract This completion of course work presents a study of performance between concurrent programming languages Java, Erlang, Scala, Python and Ruby, used for developing backends WEB 2.0 and ooerlang an object-oriented extension to Erlang. It uses a set of tests provided by Intel, known as IMB (Intel MPI Benchmark) to maintain a suitable character in the execution of this work, to evaluate the performance of languages. There is a description of IMB and a specific description for each benchmarck used. These benchmarcks were designed to evaluate the performance of machines; they were rewritten to evaluate the performance and behavior of languages. Key-words: Java, Erlang, Scala, Python, Ruby, ooerlang, IMB, Concurrency, Benchmarck

8 vii Sumário Lista de Tabelas Lista de Figuras ix x 1 Introdução Objetivos gerais Objetivos Específicos Justificativa Trabalhos relacionados Trabalhos publicados Metodologia dos experimentos Concorrência Taxonomia de Flynn Single-Instruction, Single-Data (SISD) Multiple-Instruction, Single-Data (MISD) Single-Instruction, Multiple-Data (SIMD) Multiple-Instruction, Multiple-Data (MIMD) Lei de Amdahl Speedup Eficiência Memória Compartilhada e Troca de Mensagens Concorrência em Java Processos e Threads Objetos Threads Instanciando um thread Sincronização Concorrência em Erlang e ooerlang

9 viii Criação de processos Comunicação entre processos Concorrência em Scala Criação de processos Comunicação entre processos Concorrência em Python Criação de threads Sincronização Concorrência em Ruby Criação de threads Sincronização Intel MPI Benchmark Benchmark MPI Message Passing Interface Testes Intel MPI Benchmark PingPing PingPong SendRecv Experimentos Ambiente de Execução Configurações Memória Heap Análise estatística PingPing PingPong SendRecv Códigos Fontes Resultados dos experimentos Resultados - PingPing Resultados - PingPong Resultados - SendRecv Conclusão 77 Referências Bibliográficas 79

10 ix Lista de Tabelas 2.1 Benchmarks da IMB classificados segundo o padrão de comunicação PingPing - Média - 100KB Mensagem PingPing - Variância - 100KB Mensagem PingPing - Desvio padrão - 100KB Mensagem PingPing - Confiança - 100KB Mensagem PingPong - Média - 100KB Mensagem PingPong - Variância - 100KB Mensagem PingPong - Desvio padrão - 100KB Mensagem PingPong - Confiança - 100KB Mensagem SendRecv - Média - 5KB Mensagem Processos SendRecv - Variância - 5KB Mensagem Processos SendRecv - Desvio padrão - 5KB Mensagem Processos SendRecv - Confiança - 5KB Mensagem Processos

11 x Lista de Figuras 2.1 Taxonomia de Flynn - Single-Instruction, Single-Data (SISD) Taxonomia de Flynn - Multiple-Instruction, Single-Data (MISD) Taxonomia de Flynn - Single-Instruction, Multiple-Data (SIMD) Taxonomia de Flynn - Multiple-Instruction, Multiple-Data (MIMD) Abstração de compartilhamento de memória (ex. Java e C#) Abstração de Troca de Mensagens (ex. Erlang e Occam) Processo Pid1 e processo Pid Representação do benchmark PingPing Representação do benchmark PingPong Representação do benchmark SendRecv PingPing - Resultados - 5KB Mensagem PingPing - Resultados - 10KB Mensagem PingPing - Resultados - 50KB Mensagem PingPing - Resultados - 100KB Mensagem PingPing - Resultados - 5KB Mensagem PingPing - Resultados - 10KB Mensagem PingPing - Resultados - 50KB Mensagem PingPing - Resultados - 100KB Mensagem PingPing - Resultados - 5KB Mensagem PingPing - Resultados - 10KB Mensagem PingPing - Resultados - 50KB Mensagem PingPing - Resultados - 100KB Mensagem PingPing - Desvio Padrão - 100KB Mensagem PingPing - Desvio Padrão - 100KB Mensagem PingPing - Desvio Padrão - 100KB Mensagem PingPong - Resultados - 5KB Mensagem

12 3.17 PingPong - Resultados - 10KB Mensagem PingPong - Resultados - 50KB Mensagem PingPong - Resultados - 100KB Mensagem PingPong - Resultados - 5KB Mensagem PingPong - Resultados - 10KB Mensagem PingPong - Resultados - 50KB Mensagem PingPong - Resultados - 100KB Mensagem PingPong - Resultados - 5KB Mensagem PingPong - Resultados - 10KB Mensagem PingPong - Resultados - 50KB Mensagem PingPong - Resultados - 100KB Mensagem PingPong - Desvio Padrão - 100KB Mensagem PingPong - Desvio Padrão - 100KB Mensagem PingPong - Desvio Padrão - 100KB Mensagem SendRecv - Resultados - 5KB Mensagem Processos SendRecv - Resultados - 5KB Mensagem Processos SendRecv - Desvio Padrão - 5KB Mensagem Processos SendRecv - Desvio Padrão - 5KB Mensagem Processos SendRecv - Resultados - 10KB Mensagem Processos SendRecv - Resultados - 10KB Mensagem Processos SendRecv - Resultados - 50KB Mensagem Processos SendRecv - Resultados - 50KB Mensagem Processos SendRecv - Resultados - 5KB Mensagem Processos SendRecv - Resultados - 5KB Mensagem Processos SendRecv - Resultados - 10KB Mensagem Processos SendRecv - Resultados - 10KB Mensagem Processos SendRecv - Resultados - 50KB Mensagem Processos SendRecv - Resultados - 50KB Mensagem Processos SendRecv - Resultados - 5KB Mensagem Processos SendRecv - Resultados - 5KB Mensagem Processos SendRecv - Resultados - 10KB Mensagem Processos SendRecv - Resultados - 10KB Mensagem Processos SendRecv - Resultados - 50KB Mensagem Processos xi

13 Capítulo 1 Introdução Jogos online, redes sociais e demais aplicações da World Wide Web (WWW) requerem o acesso simultâneo e interativo de milhares ou até mesmo de milhões de pessoas. Inicialmente a maioria das plataformas web são construídas usando linguagens de script como PHP [PHP2013] ou desenvolvidas utilizando frameworks baseados em Java [Java2013], Ruby [Ruby2013] ou Python [Python2013b]. Como o acesso a essas plataformas cresce, os proprietários dos sistemas são obrigados a alocar mais e mais servidores, aumentando assim seus custos operacionais. Quando o nível de acesso a estes serviços cresce drasticamente, os projetistas são forçados a reimplementar o back-end dos sistemas, migrando para soluções mais complexas como Java Enterprise Edition (JEE), Node.js ou.net. Essas alternativas também reivindicam a alocação de mais e mais servidores. Há uma razão para este problema: as linguagens de programação utilizadas para o desenvolvimento de tais sistemas não foram projetadas para suportar a concorrência massiva. Linguagens com suporte a concorrência com base no modelo de memória compartilhada não são escaláveis de forma satisfatória [Scala2009] [Piro and Letuchy2009]. Como alternativa, os desenvolvedores dos sistemas estão voltando a sua atenção para as linguagens funcionais, com suporte a concorrência, como Scala [Scala2013a] e Erlang [Erlang2013]. LinkedIn é uma rede social para pessoas em ocupações profissionais. Lançado em 5 de maio de 2003, é usado principalmente para networking profissional. Em junho de 2012, LinkedIn relatou mais de 175 milhões de usuários registrados em mais de 200 países e

14 2 territórios. Eishay Smith [LinkedIn2012] relatou que LinkedIn é escrito em Java 99% em uma pilha Spring/Jetty/Tomcat. Facebook é uma rede social com mais de 845 milhões de usuários registrados com cerca de 483 milhões de usuários que acessam o site diariamente [Facebook2012a]. Cada usuário pode ter no máximo contatos, porém cada empresa pode ter mais. Sempre que um usuário publica uma mensagem, dependendo da política de broadcasting, a mensagem é retransmitida para todos os seus contatos que por sua vez pode voltar a ser transmitida pelo seu contato. Além deste tipo de mensagem, o Facebook tem um sistema de chat. Em 2009, o sistema de chat do Facebook processava cerca de 1 bilhão de mensagens por dia. [Facebook2012b] As primeiras versões do Facebook foram desenvolvidos em PHP/MySQL [Facebook2012c]. Como o sistema cresceu em número de usuários, os projetistas do site tiveram que mudar o back-end e criou um compilador de PHP para C++ chamado HipHop [Facebook2012c] e também criou o sistema de chat em Erlang. [Piro and Letuchy2009] É apresentado uma visão geral do serviço de chat do Facebook [Facebook2008], um anós após o seu lançamento, em 2008: Mais de 200 milhões de usuários ativos. Mais de 800 milhões de mensagens transmitidas diariamente. Mais de 7 milhões de canais de comunicação no pico. Twitter é um sistema de micro-blog com cerca de 140 milhões de usuários [Twitter2012]. Neste sistema, o usuário escreve uma mensagem curta de no máximo 140 caracteres (o tweet) e os envia para os seus seguidores. Quanto mais famoso for o usuário, maior é o seu número de seguidores. O destinatário de uma mensagem pode comentá-lo e retransmiti-lo para seus próprios seguidores. Dependendo do assunto e/ou remetente, a mensagem pode se tornar um viral e serem reenviados milhares de vezes. Isso aconteceu, por exemplo, quando o pop-star Michael Jackson morreu. O tráfego de mensagens era tão intensa que todos os servidores do Twitter foram bloqueados e o serviço ficou temporariamente indisponível. As primeiras versões do Twitter foram escritas em Ruby on Rails [on Rails2012], um framework para o desenvolvimento de aplicações web baseada na linguagem Ruby

15 3 [Ruby2013]. Como o serviço ganhou mais e mais usuários, o serviço tornou-se frequentemente indisponível devido ao gargalo danificar a confiança do site. Para resolver esse problema, os projetistas do Twitter trocaram o site back-end para outro desenvolvido utilizando Scala [Scala2013a], uma linguagem funcional, com o apoio massivo da concorrência, que roda na Java Virtual Machine (JVM) [JVM2013]. Ruby on Rails é um framework de aplicações web de código aberto que funciona na linguagem de programação Ruby. É um framework full-stack: permite desde a criação de páginas e aplicações que reúnem informações de servidores web até consulta a banco de dados. Rails rodando no Interpretador Ruby de Matz (o interpretador referência para Ruby) havia sido criticado por problemas com escalabilidade. Esses críticos frequentemente mencionam várias interrupções do Twitter em 2007 e 2008, o que estimulou a transição parcial do Twitter para Scala (que é executado no Java Virtual Machine) para o seu sistema de filas e outros middlewares. Os aspectos do site de interface de usuário continuam a executar o Ruby on Rails. Em 2011, o Gartner Research observou que apesar das críticas e comparações com o Java, muitas empresas de alto perfil de consumo na Web usam Ruby on Rails, para construir aplicações web escaláveis. Alguns dos maiores sites rodando Ruby on Rails incluem Yammer, Scribd, Groupon, Shopify e Basecamp. YouTube é um site de compartilhamento de vídeo na qual os usuários podem fazer upload, visualizar e compartilhar vídeos. Youtube usa Adobe Flash e HTML5 para exibir uma ampla variedade de conteúdo de vídeo gerado pelo usuário, incluindo clipes de filme, clipes de TV, vídeos e música, assim como conteúdo amador, como blogs de vídeo, vídeos originais, curtas e vídeos educativos. A maioria do conteúdo no YouTube é carregado individualmente, embora corporações de mídia, incluindo CBS, BBC, Vevo, Hulu e outras organizações oferecem alguma parte do seu material através do site, como parte do programa de parceria do YouTube. Usuários não cadastrados pode assistir a vídeos, enquanto usuários registrados podem enviar um número ilimitado de vídeos. YouTube é implementado em Python, desde a sua fundação, em 2005, utilizando o framework wxpython [wxpython2013]. É apresentado uma visão geral do serviço do

16 Objetivos gerais 4 Youtube: [Youtube2013] Mais de 1 bilhão de usuários únicos visitam o YouTube a cada mês. Mais de 4 bilhões de horas de vídeo são vistos a cada mês no YouTube. 72 horas de vídeo são enviadas para o YouTube a cada minuto. 70% do tráfego do YouTube vem de fora dos EUA. Em 2011, o YouTube teve mais de 1 trilhão de pontos de vista ou cerca de 140 visualizações para cada pessoa na Terra. 1.1 Objetivos gerais O objetivo deste trabalho é testar e avaliar o desempenho da execução concorrente entre as linguagens Java, Erlang, Scala, Python e Ruby, juntamente com a extensão ooerlang a partir de um conjunto de benchmarks fornecidos pela Intel (Intel MPI Benchmark) Objetivos Específicos Reescrever o software de Benchmark fornecido pela Intel em Java. Reescrever o software de Benchmark fornecido pela Intel em Erlang. Reescrever o software de Benchmark fornecido pela Intel em Scala. Reescrever o software de Benchmark fornecido pela Intel em Python. Reescrever o software de Benchmark fornecido pela Intel em Ruby. Reescrever o software de Benchmark fornecido pela Intel em ooerlang. Executar e avaliar o desempenho concorrente de cada uma das linguagens.

17 Justicativa Justificativa As linguagens de programação Java, Erlang, Scala, Python e Ruby foram escolhidas pelo fato de serem utilizadas em aplicações web que incluem situações de concorrência massiva. Escolheu-se utilizar um conjunto de benchmarks da Intel MPI Benchmark IMB, pelo fato deste benchmark ser aceito na comunidade de computação e por ser imparcial quanto a avaliação do desempenho das linguagens. Java é uma linguagem de programação de propósito geral, concorrente, baseada em classes, orientada a objetos que é especificamente projetada para ter o menor número de dependências de implementação quanto possível. Destina-se a permitir o desenvolvimento de aplicativos write once, run anywhere (WORA), o que significa que o código que é executado em uma plataforma não precisa ser recompilado para rodar em outro. As aplicações Java são tipicamente compiladas para bytecode (arquivo de classe), que pode ser executado em qualquer Virtual Java Machine (JVM), independentemente da arquitetura do computador. No aspecto da Web, Java é nos servidores Web, usado em muitos dos maiores websites interativos. Usado para criar aplicações independentes que podem ser executadas em um único computador ou em uma rede distribuída, também é usado para criar pequenas aplicações baseadas em applets, que posteriormente é usado para a página Web; applets possibilitam e facilitam a interatividade com a página web. Erlang é uma linguagem de programação de propósito geral concorrente. O subconjunto seqüencial de Erlang é uma linguagem funcional, com avaliação rigorosa de casamento de padrões, atribuição única e tipagem dinâmica. Ela foi projetada pela Ericsson para suportar aplicações distribuídas tolerantes a falhas, em tempo de execução. Erlang suporta hot-swap, para que o código possa ser alterado sem parar a execução do sistema. Enquanto threads necessitam de apoio de bibliotecas externas na maioria das linguagens de programação, Erlang fornece recursos em nível de linguagem de programação para a criação e gestão de processos com o objetivo de simplificar a programação concorrente. Embora a concorrência seja explícita em Erlang, os processos se comunicam usando passagem de mensagens em vez de variáveis compartilhadas, o que elimina a necessidade de bloqueios. A primeira versão foi desenvolvida por Joe Armstrong, em Ela era originalmente uma linguagem proprietária dentro da Ericsson, mas foi lançada como open-source em 1998.

18 Justicativa 6 Scala é uma linguagem de programação de propósito geral projetado para expressar padrões de programação comuns de uma forma concisa, elegante e type-safe. Ele integra os recursos de linguagens orientadas a objetos e funcional, permitindo que programadores Java e outros a serem mais produtivos. Tamanhos de código são normalmente reduzidos por um factor de 2-3 em relação a uma aplicação Java equivalente. Muitas empresas já existentes que dependem de Java para aplicações críticas de negócios estão se voltando para Scala para aumentar a sua produtividade de desenvolvimento, aplicativos escaláveis e confiabilidade total [Scala2013b]. Ruby é uma linguagem de programação dinâmica com uma gramática complexa, porém expressiva, e com um núcleo de bibliotecas de classes rica e poderosa. Ruby inspira-se em Lisp, Smalltalk e Perl, mas usa uma gramática que é fácil para programadores C e Java. Ruby é uma linguagem orientada a objectos puro, mas é também adequado para estilos de programação procedural e funcional. Python é uma linguagem de programação de uso geral e de alto nível, cuja filosofia de design realça a legibilidade de código. A sintaxe do Python permite que os programadores expressem conceitos em menos linhas de código do que seria possível em linguagens como C e a linguagem fornece construções destinadas a permitir programas claros, tanto pequenos quanto em grande escala. Python suporta vários paradigmas de programação, incluindo orientação a objeto, imperativo e estilos de programação funcional. Possui um sistema de tipagem dinâmica e gerenciamento automático de memória e tem uma grande biblioteca padrão e abrangente. Como outras linguagens dinâmicas, Python é frequentemente utilizado como uma linguagem de script, mas também é usado em uma ampla gama de contextos não-script. ooerlang [Silva Jr. and Lins2012] [Silva Jr. et al.2012a] é uma extensão da programação orientada a objeto em processo de desenvolvimento para Erlang. Neste trabalho será verificado se de alguma forma a extensão impacta negativamente no desempenho da concorrëncia do Erlang, segundo os benchmaks a serem utilizados da Intel (IMB - Intel MPI Beenchmark), além de se verificar o desempenho das linguagens anteriormente mencionadas.

19 Trabalhos relacionados Trabalhos relacionados Comparação de desempenho da programação concorrente entre Java e Erlang utilizando Intel MPI Benchmarck [Santos2011] e Assessing the Performance of Java and Erlang in Web 2.0 Applications [Silva Jr. et al.2012b] trazem um estudo do desempenho da concorrência entre Java e Erlang. 1.4 Trabalhos publicados Comparing the Performance of Java, Erlang and Scala in WEB 2.0 Applications [Silva Jr. et al.2013] desenvolveu um estudo do desempenho da concorrência entre Java, Erlang e Scala na WEB Metodologia dos experimentos Leitura e análise do IMB - Intel MPI Benchmark na versão original, escrito em C. Seleção de um conjunto de benchmarks e reescrevê-los em cada uma das linguagens que se deseja avaliar, no caso Java, Erlang, Scala, Python, Ruby e ooerlang. Criar scripts para cada uma das linguagens para execução de cada um dos módulos reescritos 10 (dez) vezes. Executar cada um dos módulos reescritos na mesma condição física de execução, de forma a oferecer o mínimo de interferência possível para cada teste. Salvar as saídas em arquivos de texto. Realizar os cálculos de média, variância, desvio padrão e confiança sobre os dados coletados. Gerar gráficos a partir dos cálculos realizados. Analisar os gráficos e dados estatísticos coletados.

20 Capítulo 2 Concorrência Computação concorrente é uma forma de computação em que os programas são concebidos como coleções de processos em interação que podem ser executados em paralelo. Programas concorrentes podem ser executados em um único processador intercalando as etapas de execução de cada processo, ou podem ser executados em paralelo, atribuindo a cada processo um processador de um conjunto de processadores que podem estar próximos ou distribuídos através de uma rede. Os principais desafios na concepção de programas concorrentes estão em garantir a sequência correta das interações entre diferentes execuções e coordenar o acesso aos recursos que são compartilhados ao longo das execuções dos processos. 2.1 Taxonomia de Flynn Existem diferentes maneiras de classificar arquiteturas de computadores, uma das mais clássicas é a Taxonomia de Flynn, que é uma classificação de arquiteturas de computadores proposta por Michael J. Flynn em 1966 e publicada pela IEEE em A Taxonomia de Flynn distingue as arquiteturas de computadores de acordo com o fluxo de instruções e de dados. Cada um desses fluxos pode ser simples ou múltiplo. São definidas ao todo quatro arquiteturas: Single-Instruction, Single-Data (SISD)

21 Taxonomia de Flynn 9 Multiple-Instruction, Single-Data (MISD) Single-Instruction, Multiple-Data (SIMD) Multiple-Instruction, Multiple-Data (MIMD) Single-Instruction, Single-Data (SISD) Instrução Única, Dado Único: existe um processo que tem acesso a um único programa da memória de instrução e a um único dado da memória de dados como ilustrado na figura 2.1. Em cada etapa, o processo carrega a instrução e o dado correspondente e executa a instrução. O resultado é armazenado de volta na memória de dados. Assim, esta arquitetura está de acordo com o modelo de von Neumann; SISD é a computação sequencial convencional. Figura 2.1: Taxonomia de Flynn - Single-Instruction, Single-Data (SISD) Multiple-Instruction, Single-Data (MISD) Múltipla Instrução, Dado Único: existem múltiplos processos, onde cada um possui um programa privado em memória de instrução, mas existe apenas um acesso comum a um único dado da memória de dados como ilustrado na figura 2.2. Em cada etapa, cada processo obtém o mesmo dado da memória de dados e carrega uma instrução do

22 Taxonomia de Flynn 10 programa privado da memória de instrução. Estas instruções são executadas em paralelo pelo processo, usando o dado obtido previamente como operador. Este modelo de execução é restrito e nunca foi construído um computador paralelo comercial desse tipo. Figura 2.2: Taxonomia de Flynn - Multiple-Instruction, Single-Data (MISD) Single-Instruction, Multiple-Data (SIMD) Instrução Única, Dado Múltiplo: existem múltiplos processos, onde cada um possui um acesso privado a uma memória de dados, mas existe apenas um programa em memória de instrução, do qual um processador de controle busca e despacha instruções como ilustrado na figura 2.3. Em cada etapa, cada processo obtém do processador de controle a mesma instrução e carrega um dado separado por seu acesso privado de dados no qual a instrução é executada. Assim, a instrução é síncronamente aplicada em paralelo por todos os processos para diferentes dados. Para aplicações com um significante grau de paralelismo de dados, a abordagem SIMD é muito eficiente.

23 Taxonomia de Flynn 11 Figura 2.3: Taxonomia de Flynn - Single-Instruction, Multiple-Data (SIMD) Multiple-Instruction, Multiple-Data (MIMD) Múltipla Instrução, Dado Múltiplo: existem múltiplos processos, onde cada um possui um acesso separado a instrução e a dados em uma memória de instrução e uma memória de dados respectivamente como ilustrado na figura 2.4. Em cada etapa, cada processo carrega uma instrução separada e um dado separado, aplica a instrução no dado e armazena um possível resultado de volta à memória de dados. Os processos trabalham assíncronamente entre si. Processadores multicores ou sistemas de cluster são exemplos do modelo MIMD. Figura 2.4: Taxonomia de Flynn - Multiple-Instruction, Multiple-Data (MIMD)

24 Lei de Amdahl Lei de Amdahl Existem casos de tarefas que ao serem executadas possuem porções paralelizáveis e porções que precisam ser executadas de forma sequencial. Um computador paralelo operando de forma sequencial é um grande desperdício, pois enquanto um processador trabalha no trecho serial, todos os demais ficam ociosos. Levando em consideração essa situação de ociosidade temporária, utiliza-se a Lei de Amdahl para medir qual é o ganho de desempenho do computador durante o período de tempo em que trabalha realmente de forma paralela. Esta é a lei que governa o speedup (aceleração) na utilização de processadores paralelos em relação ao uso de apenas um processador; seu nome deriva do arquiteto de computadores Gene Amdahl. O ganho de desempenho que pode ser obtido melhorando uma determinada parte do sistema é limitado pela fração de tempo que essa parte é utilizada pelo sistema durante a sua operação e depende do número de processadores usados para aplicar o paralelismo. [Sato et al.1996] Se f é a fração de operações sequenciais de uma computação a ser resolvida por p processadores, então o ganho de aceleração (speedup) S é limitado de acordo com a fórmula: S < 1 f + 1 f p (2.1) Speedup O speedup (S) obtido por um algoritmo paralelo executando sobre p processadores é a razão entre o tempo levado por aquele computador executando o algoritmo serial mais rápido (Ts) e o tempo levado pelo mesmo computador executando o algoritmo paralelo usando p processadores (Tp). S T s T p (2.2)

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

Introdução à Linguagem Java

Introdução à Linguagem Java Introdução à Linguagem Java Histórico: Início da década de 90. Pequeno grupo de projetos da Sun Microsystems, denominado Green. Criar uma nova geração de computadores portáveis, capazes de se comunicar

Leia mais

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários.

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários. Os sistemas computacionais atuais permitem que diversos programas sejam carregados na memória e executados simultaneamente. Essa evolução tornou necessário um controle maior na divisão de tarefas entre

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

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

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Introdução ao Paradigma OO

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 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 Questões Em uma rede de sobreposição (overlay), mensagens são roteadas de acordo com a topologia da sobreposição. Qual uma importante desvantagem

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

FBV - Linguagem de Programação II. Um pouco sobre Java

FBV - Linguagem de Programação II. Um pouco sobre Java FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base

Leia mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta

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

(Aula 15) Threads e Threads em Java

(Aula 15) Threads e Threads em Java (Aula 15) Threads e Threads em Java Um fluxo computacional. A programa maioria de execução, dos seqüencial programas o qual simples consiste realiza tem uma de essa um certa único tarefa Grande característica:

Leia mais

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de:

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de: i Sumário 1 Introdução 1 1.1 Linguagens....................................... 1 1.2 O que é um Compilador?................................ 2 1.3 Processadores de Programas: Compiladores, Interpretadores

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5 THREADS Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5.1 VISÃO GERAL Uma definição mais abrangente para threads é considerá-lo

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 5 PROCESSOS 1. INTRODUÇÃO Em sistemas distribuídos é importante examinar os diferentes tipos de processos e como eles desempenham seu papel. O conceito de um processo é originário do campo de sistemas

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS MACHADO/MAIA: CAPÍTULO 07, PÁGINA 101 Prof. Pedro Luís Antonelli Anhanguera Educacional sistemas multiprogramáveis Os sistemas multiprogramáveis

Leia mais

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres Linguagem de Programação Orientada a Objeto Introdução a Orientação a Objetos Professora Sheila Cáceres Introdução a Orientação a Objetos No mundo real, tudo é objeto!; Os objetos se relacionam entre si

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 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

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

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

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação III Aula 02 Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação Técnica de comunicação padronizada para enviar instruções a um computador. Assim

Leia mais

2 Modelos de Implementação

2 Modelos de Implementação 2 Modelos de Implementação Os modelos de concorrência definem como uma aplicação atende às requisições concorrentes. Os modelos de sandboxes definem como o ambiente das aplicações são criados. Os modelos

Leia mais

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Tecnologia Java Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Origem da Tecnologia Java Projeto inicial: Oak (liderado por James Gosling) Lançada em 1995 (Java) Tecnologia

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

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Sistemas de Informação Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 4 Estilos Arquitetônicos Estilos Arquiteturais Dataflow

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br

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

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Hardware Sistema de Entrada/Saída Visão Geral Princípios de Hardware Dispositivos de E/S Estrutura Típica do Barramento de um PC Interrupções

Leia mais

Sistemas distribuídos:comunicação

Sistemas distribuídos:comunicação M. G. Santos marcela@estacio.edu.br Faculdade Câmara Cascudo - Estácio de Sá 16 de abril de 2010 Formas de comunicação Produtor-consumidor: comunicação uni-direccional, com o produtor entregando ao consumidor.

Leia mais

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 05 Estrutura e arquitetura do SO Parte 2 Referência: MACHADO, F.B. ; MAIA, L.P. Arquitetura de Sistemas Operacionais. 4.ed. LTC,

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

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional O conteúdo deste documento tem por objetivo apresentar uma visão geral

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura

Leia mais

Maestro. Arthur Kazuo Tojo Costa 317497. Universidade Federal de São Carlos Campus Sorocaba Bacharelado em Ciência da Computação

Maestro. Arthur Kazuo Tojo Costa 317497. Universidade Federal de São Carlos Campus Sorocaba Bacharelado em Ciência da Computação Maestro Arthur Kazuo Tojo Costa 317497 Universidade Federal de São Carlos Campus Sorocaba Bacharelado em Ciência da Computação Introdução Sistema Operacional de Redes Detalhes do hardware Multiplexação

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Comunicação Inter-Processos Sockets e Portas Introdução Sistemas distribuídos consistem da comunicação entre processos

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

Sistemas Operacionais Arquitetura e organização de sistemas operacionais: Uma visão estrutural hardware & software. Prof. MSc.

Sistemas Operacionais Arquitetura e organização de sistemas operacionais: Uma visão estrutural hardware & software. Prof. MSc. Sistemas Operacionais Arquitetura e organização de sistemas operacionais: Uma visão estrutural hardware & software Prof. MSc. Hugo Souza Continuando nossas aulas relativas ao Módulo 1, veremos a seguir

Leia mais

Introdução a Threads Java

Introdução a Threads Java Introdução a Threads Java Prof. Gerson Geraldo Homrich Cavalheiro Universidade Federal de Pelotas Departamento de Informática Instituto de Física e Matemática Pelotas RS Brasil http://gersonc.anahy.org

Leia mais

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto Conceitos de Linguagens de Roteiro: Apresentação do plano de ensino; Apresentação do plano de

Leia mais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo 4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.

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 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

Softwares de Sistemas e de Aplicação

Softwares de Sistemas e de Aplicação Fundamentos dos Sistemas de Informação Softwares de Sistemas e de Aplicação Profª. Esp. Milena Resende - milenaresende@fimes.edu.br Visão Geral de Software O que é um software? Qual a função do software?

Leia mais

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução Arquitetura e Organização de Computadores Capítulo 0 - Introdução POR QUE ESTUDAR ARQUITETURA DE COMPUTADORES? 2 https://www.cis.upenn.edu/~milom/cis501-fall12/ Entender para onde os computadores estão

Leia mais

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 06: Threads Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o conceito de thread Discutir as APIs das bibliotecas de threads Pthreads, Win32

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 SISTEMA DE INTERCONEXÃO (BARRAMENTOS) Prof. Luiz Gustavo A. Martins Arquitetura de von Newmann Componentes estruturais: Memória Principal Unidade de Processamento Central

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

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

SO Sistemas Operacionais

SO Sistemas Operacionais GOVERNO DO ESTADO DO RIO DE JANEIRO FUNDAÇÃO DE APOIO A ESCOLA TÉCNICA ESCOLA TÉCNICA ESTADUAL REPÚBLICA SO Sistemas Operacionais Curso de Informática ETE REPÚBLICA - Rua Clarimundo de Melo, 847, Quintino

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel A linguagem JAVA A linguagem Java O inicio: A Sun Microsystems, em 1991, deu inicio ao Green Project chefiado por James Gosling. Projeto que apostava

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

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE Capítulo 6 ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE 6.1 2003 by Prentice Hall OBJETIVOS Qual é a capacidade de processamento e armazenagem que sua organização precisa para administrar suas informações

Leia mais

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS Objetos distribuídos e invocação remota Introdução Comunicação entre objetos distribuídos Chamada de procedimento remoto Eventos e notificações Objetos

Leia mais

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013 MC714 Sistemas Distribuídos 2 semestre, 2013 Tipos de comunicação Middleware: serviço intermediário na comunicação de nível de aplicação. Fig. 67 Ex.: correio eletrônico Comunicação é persistente. Middleware

Leia mais

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução Arquitetura e Organização de Computadores Capítulo 0 - Introdução POR QUE ESTUDAR ARQUITETURA DE COMPUTADORES? 2 https://www.cis.upenn.edu/~milom/cis501-fall12/ Entender para onde os computadores estão

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

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

Figura 01 Kernel de um Sistema Operacional

Figura 01 Kernel de um Sistema Operacional 01 INTRODUÇÃO 1.5 ESTRUTURA DOS SISTEMAS OPERACIONAIS O Sistema Operacional é formado por um Conjunto de rotinas (denominado de núcleo do sistema ou kernel) que oferece serviços aos usuários e suas aplicações

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

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Aula passada Threads Threads em SDs Processos Clientes Processos Servidores Aula de hoje Clusters de Servidores Migração de Código Comunicação (Cap. 4) Fundamentos

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

JAVA VIRTUAL MACHINE (JVM)

JAVA VIRTUAL MACHINE (JVM) JAVA VIRTUAL MACHINE (JVM) Por Leandro Baptista, Marlon Palangani e Tiago Deoldoto, 11 de Abril de 2009 A linguagem de programação Java proporciona o desenvolvimento aplicações que podem ser executadas

Leia mais

Visão do Usuário da DSM

Visão do Usuário da DSM Memória Compartilhada Distribuída Visão Geral Implementação Produtos 1 Memória Compartilhada Distribuída Mecanismos tradicionais de comunicação via RPC/RMI ou mensagens deixam explícitas as interaçõ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

Laudon & Laudon Essentials of MIS, 5th Edition. Pg. 6.1

Laudon & Laudon Essentials of MIS, 5th Edition. Pg. 6.1 Laudon & Laudon Essentials of MIS, 5th Edition. Pg. 6.1 6 OBJETIVOS OBJETIVOS ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE 6.1 2003 by Prentice Hall Qual é a capacidade de processamento e armazenagem

Leia mais

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2 Estrutura de Repetição. Ex. 2 A ESTRUTURA Enquanto faça{} É MELHOR UTILIZADA PARA SITUAÇÕES ONDE O TESTE DE CONDIÇÃO (V OU F) PRECISA SER VERIFICADO NO INÍCIO DA ESTRUTURA DE REPETIÇÃO.

Leia mais

Threads e Concorrência em Java (Material de Apoio)

Threads e Concorrência em Java (Material de Apoio) Introdução Threads e Concorrência em Java (Material de Apoio) Professor Lau Cheuk Lung http//www.inf.ufsc.br/~lau.lung INE-CTC-UFSC A maioria dos programas são escritos de modo seqüencial com um ponto

Leia mais

Introdução. Sistemas Operacionais

Introdução. Sistemas Operacionais FATEC SENAC Introdução à Sistemas Operacionais Rodrigo W. Fonseca Sumário Definição de um S.O. Características de um S.O. História (evolução dos S.O.s) Estruturas de S.O.s Tipos de Sistemas Operacionais

Leia mais

S.O.: Conceitos Básicos

S.O.: Conceitos Básicos S.O.: Conceitos Básicos Camada de software localizada entre o hardware e os programas que executam tarefas para o usuário; Acessa os periféricos Entrada e Saída Esconde os detalhes do hardware para o programador

Leia mais

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 03: Estruturas dos SOs Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com OBJETIVOS Descrever os serviços que um sistema operacional oferece aos usuários e outros sistemas

Leia mais

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE

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

Leia mais

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 05 Estrutura e arquitetura do SO Parte 1 Referência: MACHADO, F.B. ; MAIA, L.P. Arquitetura de Sistemas Operacionais. 4.ed. LTC,

Leia mais

A linguagem de programação Erlang. Paulo Ferreira paf(a)dei.isep.ipp.pt Jornadas Científicas do ISEP 9 de Maio de 2001

A linguagem de programação Erlang. Paulo Ferreira paf(a)dei.isep.ipp.pt Jornadas Científicas do ISEP 9 de Maio de 2001 A linguagem de programação Erlang Paulo Ferreira paf(a)dei.isep.ipp.pt Jornadas Científicas do ISEP 9 de Maio de 2001 Como ensinar programação concorrente e distribuída? Alunos sem experiência de trabalho

Leia mais

Capítulo 2. Charm++ 16

Capítulo 2. Charm++ 16 2 Charm++ O Charm++ é uma linguagem orientada a objetos para programação paralela baseada em C++ (34). Ela possui uma biblioteca de execução para suporte a computação paralela que se chama Kernel do Charm

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos e Threads Gustavo Reis gustavo.reis@ifsudestemg.edu.br - O que são Processos? Uma abstração de um programa em execução. Mantêm a capacidade de operações (pseudo)concorrentes,

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

Computação Concorrente (MAB-117) Monitores

Computação Concorrente (MAB-117) Monitores Computação Concorrente (MAB-117) Monitores Prof. Silvana Rossetto 1 Departamento de Ciência da Computação (DCC) Instituto de Matemática (IM) Universidade Federal do Rio de Janeiro (UFRJ) Maio de 2012 1.

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS SISTEMAS OPERACIONAIS Tópico 4 Estrutura do Sistema Operacional Prof. Rafael Gross prof.rafaelgross@fatec.sp.gov.br FUNÇÕES DO NUCLEO As principais funções do núcleo encontradas na maioria dos sistemas

Leia mais

Java Como Programar, 8/E

Java Como Programar, 8/E Capítulo 2 Introdução aos aplicativos Java Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os 2.1 Introdução Programação de aplicativo Java. Utilize as ferramentas do JDK para compilar

Leia mais

Desenvolvimento Web TCC-00.226 Turma A-1

Desenvolvimento Web TCC-00.226 Turma A-1 Desenvolvimento Web TCC-00.226 Turma A-1 Conteúdo Introdução ao Ambiente de Desenvolvimento Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.2/tcc-00.226

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

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

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Introdução aos modelos de comunicação Programação de Sistemas Modelos de comunicação :1/19 Introdução (1) Os sistemas operativos implementam mecanismos que asseguram independência

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Introdução aos modelos de comunicação Programação de Sistemas Modelos de comunicação :1/19 Introdução (1) Os sistemas operativos implementam mecanismos que asseguram independência

Leia mais

Módulo 4: Processos. Conceito de Processo. Diagrama de Estados de Processos. Estados de Processo

Módulo 4: Processos. Conceito de Processo. Diagrama de Estados de Processos. Estados de Processo Módulo 4: Processos Conceito de Processo Conceito de Processo Escalonamento de Processos Operações com Processos Processos Cooperativos Comunicação entre Processos Um sistema operacional executa uma variedade

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

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

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza Sistemas Distribuídos Processos I Prof. MSc. Hugo Souza Até agora vimos a organização como um todo dos SDS, com o mapeamento estrutural e suas devidas características descritas em elementos, regras, conceitos,

Leia mais

1.2 Tipos de Sistemas Operacionais

1.2 Tipos de Sistemas Operacionais 1.2 Tipos de Operacionais Tipos de Operacionais Monoprogramáveis/ Monotarefa Multiprogramáveis/ Multitarefa Com Múltiplos Processadores 1.2.1 Monoprogramáveis/Monotarefa Os primeiros sistemas operacionais

Leia mais

Sistemas Operacionais Cap 3 Estruturas de Sistemas Operacionais. Podemos analisar um sistema operacional sob diversos aspectos:

Sistemas Operacionais Cap 3 Estruturas de Sistemas Operacionais. Podemos analisar um sistema operacional sob diversos aspectos: Estruturas de Sistemas Operacionais Podemos analisar um sistema operacional sob diversos aspectos: Os serviços que o sistema operacional oferece. A interface que o sistema operacional torna disponível

Leia mais

- Aula 1 - ARQUITETURA DE COMPUTADORES

- Aula 1 - ARQUITETURA DE COMPUTADORES - Aula 1 - ARQUITETURA DE COMPUTADORES Em arquitetura de computadores serão estudados aspectos da estrutura e do funcionamento dos computadores. O objetivo é apresentar de forma clara e abrangente a natureza

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

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

7-1. Parte 6 Otimizações da Arquitetura

7-1. Parte 6 Otimizações da Arquitetura 7-1 Parte 6 Otimizações da Arquitetura 7-2 Bibliografia [1] Miles J. Murdocca e Vincent P. Heuring, Introdução à Arquitetura de Computadores [2] Andrew S. Tanenbaum, Modern Operating Systems [3] William

Leia mais

William Stallings Arquitetura e Organização de Computadores 8 a Edição

William Stallings Arquitetura e Organização de Computadores 8 a Edição William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 7 Entrada/saída Os textos nestas caixas foram adicionados pelo Prof. Joubert slide 1 Problemas de entrada/saída Grande variedade

Leia mais

Módulo 4: Processos. Conceito de Processo. Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos

Módulo 4: Processos. Conceito de Processo. Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos Módulo 4: Processos Conceito de Processo Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos 4.1 Conceito de Processo Um Sistema Operacional executa uma

Leia mais