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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(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

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

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

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

} 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

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

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

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

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

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

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd. Apresentação Este curso tem como objetivo, oferecer uma noção geral sobre a construção de sistemas de banco de dados. Para isto, é necessário estudar modelos para a construção de projetos lógicos de bancos

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

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

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

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

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

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

ESTUDO DE CASO WINDOWS VISTA

ESTUDO DE CASO WINDOWS VISTA ESTUDO DE CASO WINDOWS VISTA História Os sistemas operacionais da Microsoft para PCs desktop e portáteis e para servidores podem ser divididos em 3 famílias: MS-DOS Windows baseado em MS-DOS Windows baseado

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

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

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

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

Sistemas Operacionais Processos e Threads

Sistemas Operacionais Processos e Threads Sistemas Operacionais Processos e Threads Prof. Marcos Monteiro, MBA http://www.marcosmonteiro.com.br contato@marcosmonteiro.com.br 1 Estrutura de um Sistema Operacional 2 GERÊNCIA DE PROCESSOS Um processo

Leia mais

Conceitos de Banco de Dados

Conceitos de Banco de Dados Conceitos de Banco de Dados Autor: Luiz Antonio Junior 1 INTRODUÇÃO Objetivos Introduzir conceitos básicos de Modelo de dados Introduzir conceitos básicos de Banco de dados Capacitar o aluno a construir

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 Computadores. Introdução aos Sistemas Operacionais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais Arquitetura de Computadores Introdução aos Sistemas Operacionais O que é um Sistema Operacional? Programa que atua como um intermediário entre um usuário do computador ou um programa e o hardware. Os 4

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

Sistemas Operativos - 2005/2006. Trabalho Prático v1.0

Sistemas Operativos - 2005/2006. Trabalho Prático v1.0 Instituto Politécnico de Viseu Escola Superior de Tecnologia de Viseu Engenharia de Sistemas e Informática Sistemas Operativos - 2005/2006 Trabalho Prático v1.0 Introdução O presente trabalho prático visa

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 Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores

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

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

Introdução à Programação. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

Introdução à Programação. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR Introdução à Programação Orientada a Objetos Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR Fev/2014 Histórico das linguagens de programação ENIAC (1944) Programação

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

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

EMENTA DO CURSO. Tópicos:

EMENTA DO CURSO. Tópicos: EMENTA DO CURSO O Curso Preparatório para a Certificação Oracle Certified Professional, Java SE 6 Programmer (Java Básico) será dividido em 2 módulos e deverá ter os seguintes objetivos e conter os seguintes

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

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

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

Aula 2: RIA - Aplicações Ricas para Internet Fonte: Plano de Aula Oficial da Disciplina

Aula 2: RIA - Aplicações Ricas para Internet Fonte: Plano de Aula Oficial da Disciplina Programação para Internet Rica 1 Aula 2: RIA - Aplicações Ricas para Internet Fonte: Plano de Aula Oficial da Disciplina Objetivo: Identificar as principais características de uma Aplicação Internet Rica.

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

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Revisão dos conceitos básicos O processador é o componente vital do sistema de

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

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

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

Exemplos práticos do uso de RMI em sistemas distribuídos

Exemplos práticos do uso de RMI em sistemas distribuídos Exemplos práticos do uso de RMI em sistemas distribuídos Elder de Macedo Rodrigues, Guilherme Montez Guindani, Leonardo Albernaz Amaral 1 Fábio Delamare 2 Pontifícia Universidade Católica do Rio Grande

Leia mais

Tipos de Sistemas Distribuídos (Cluster e Grid)

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

Leia mais

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

Orientação a Objetos com Java

Orientação a Objetos com Java Orientação a Objetos com Java Julio Cesar Nardi julionardi@yahoo.com.br 2011/2 Aula 01: Começando com Java Objetivos: Compreender o que é Java, OO e suas vantagens; Entender os procedimentos para criação

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

15 Computador, projeto e manufatura

15 Computador, projeto e manufatura A U A UL LA Computador, projeto e manufatura Um problema Depois de pronto o desenho de uma peça ou objeto, de que maneira ele é utilizado na fabricação? Parte da resposta está na Aula 2, que aborda as

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

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

5.1 Exemplos de uso Mediante a instanciação de componentes específicos, o OiL pode ser configurado

5.1 Exemplos de uso Mediante a instanciação de componentes específicos, o OiL pode ser configurado 5 Avaliação Decidimos avaliar a arquitetura de componentes para o OiL proposta neste trabalho em duas dimensões diferentes. Na primeira, demonstramos a capacidade de configuração do middleware com alguns

Leia mais

Capítulo 2 Introdução à ferramenta Flash

Capítulo 2 Introdução à ferramenta Flash Capítulo 2 Introdução à ferramenta Flash Índice 1. O uso da ferramenta Flash no projeto RIVED.... 1 2. História do Flash... 4 1. O uso da ferramenta Flash no projeto RIVED. É importante, antes de iniciarmos

Leia mais

6 - Gerência de Dispositivos

6 - Gerência de Dispositivos 1 6 - Gerência de Dispositivos 6.1 Introdução A gerência de dispositivos de entrada/saída é uma das principais e mais complexas funções do sistema operacional. Sua implementação é estruturada através de

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

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

Comparativo de desempenho do Pervasive PSQL v11

Comparativo de desempenho do Pervasive PSQL v11 Comparativo de desempenho do Pervasive PSQL v11 Um artigo Pervasive PSQL Setembro de 2010 Conteúdo Resumo executivo... 3 O impacto das novas arquiteturas de hardware nos aplicativos... 3 O projeto do Pervasive

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

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

TRIBUNAL DE CONTAS DO DISTRITO FEDERAL

TRIBUNAL DE CONTAS DO DISTRITO FEDERAL TRIBUNAL DE CONTAS DO DISTRITO FEDERAL TÉCNICO EM ADMINISTRAÇÃO PÚBLICA E ANALISTA (EXCETO PARA O CARGO 4 e 8) GABARITO 1. (CESPE/2013/MPU/Conhecimentos Básicos para os cargos 34 e 35) Com a cloud computing,

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

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

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

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

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

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

Paradigma Cliente/Servidor

Paradigma Cliente/Servidor Paradigma Cliente/Servidor Mário Meireles Teixeira UFMA Departamento de Informática Dezembro, 2012 Comunicação em Sistemas Distribuídos! Os processos em um SD estão lógica e fisicamente separados. Precisam

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

Leia mais

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional Introdução à Linguagem JAVA Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação Laboratório de Visão Computacional Vantagens do Java Independência de plataforma; Sintaxe semelhante às linguagens

Leia mais