Ambientes de Programação Paralela

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

Download "Ambientes de Programação Paralela"

Transcrição

1 UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM COMPUTAÇÃO CLAUDIO SCHEPKE Ambientes de Programação Paralela Trabalho Individual I TI-0 Prof. Dr. Nicolas Maillard Orientador Porto Alegre, março de 2009

2 SUMÁRIO LISTA DE ABREVIATURAS E SIGLAS LISTA DE FIGURAS RESUMO ABSTRACT INTRODUÇÃO ARQUITETURAS PARALELAS Classificação de Flynn Multiprocessadas Multicomputadores Vetoriais Multi-core Cluster Grid PROGRAMAÇÃO PARALELA EM AMBIENTES DE PARALELISMO MULTI-NíVEL Paradigmas de Programação Paralela Paralelismo Multi-nível Interfaces Clássicas de Programação Paralela Ferramentas de Programação Multi-Nível APLICAÇÕES Método de Lattice Boltzmann Equação de Lattice Boltzmann Algoritmo Paralelização em Multi-níveis Ocean-Land-Atmosphere Model Algoritmo Implementação Paralela em Multi-níveis CONCLUSÃO REFERÊNCIAS

3 LISTA DE ABREVIATURAS E SIGLAS API CAF GPPD HPF MIMD MISD MLB NUMA MPI OLAM PAD PGAS RAMS RMI SIMD SISD SMP SPMD UMA UPC Application Programming Interface Co-Array Fortran Grupo de Processamento Paralelo e Distribuído High Performance Fortran Multiple Instruction Multiple Data Multiple Instruction Single Data Método de Lattice Boltzmann Non-Uniform Memory Access Message Passing Interface Ocean-Land-Atmosphere Model Processamento de Alto Desempenho Partitioned Global Address Space Regional Atmospheric Modeling System Remote Method Invocation Single Instruction Multiple Data Single Instruction Single Data Simetric Multi-Processor Single Program Multiple Date Uniform Memory Access Unified Parallel C

4 LISTA DE FIGURAS Figura 2.1: Esquema das arquiteturas multiprocessador e multicomputador Figura 2.2: Funcionamento de uma máquina vetorial Figura 2.3: Exemplo de um chip quad-core Figura 2.4: Ilustração do funcionamento de uma estrutura de cluster Figura 2.5: Ilustração do funcionamento de um grid Figura 3.1: Paralelismo Multi-nível Figura 4.1: Passos conduzidos durante a integração numérica do modelo OLAM. 25

5 RESUMO A necessidade de capacidades computacionais cada vez mais elevadas tem estimulado a busca por novas alternativas para agregar desempenho às arquiteturas. Computadores com alto poder de processamento tem sido elaborados utilizando estratégias paralelas. Tais estratégias envolvem, atualmente, a concepção de arquiteturas multi-core, passando pelo uso de multiprocessadores e culminando com o uso de clusters e grids, o que compreende diversos níveis de paralelismo. O uso de paralelismo multi-nível é, portanto, uma solução para aumentar o poder de processamento das máquinas em seu atual estágio de desenvolvimento. No entanto, programar paralelamente todos esses níveis não é uma tarefa trivial. Por um lado, já existem diversas soluções para a programação eficiente de um determinado nível de paralelismo. Por outro lado, diversos trabalhos tem buscado incorporar mais de um nível de paralelismo através de recursos de linguagem de programação que abstraem as diversas camadas. Neste sentido, este trabalho apresenta o estado da arte em termos de arquiteturas e de técnicas de programação paralelas, correlacionando, ainda, algumas aplicações reais, onde a adoção desta abordagem de programação pode trazer benefícios. Palavras-chave: Programação paralela, paralelismo multi-nível, aplicações de alto desempenho.

6 ABSTRACT The necessity of large computational resources has stimulated the search for new alternatives to add performance to computer architectures. Parallel approach are used to increase the power of processing of computers. This approaches include the use of multicore, multiprocessors and clusters and grids architectures. The use of multi-level parallelism is a solution to increase the power of computers processing in the actual stage of computers development. However, parallel programming all this levels is not a trivial work. In other hand, there are many solutions to program efficiently a specific parallel level. More this, there are some works that show solutions to program more than one parallel level. In this way, this work presents the state of the art in terms of parallel architecture and parallel programming techniques, and a relation with some real applications, where this approach can be improve more performance. Keywords: parallel programming, multi-level parallelism, high performance computing.

7 7 1 INTRODUÇÃO O uso de ambientes de Processamento de Alto Desempenho (PAD) tem sido recorrente para a execução de aplicações que exijam uma significativa capacidade de processamento de dados (SIMS et al., 2000; BUYYA, 1999; DONGARRA et al., 1991; SHAMEEM; RO- BERTS, 2005). São inúmeras as aplicações encontradas no cenário atual que fazem uso de PAD. Além disso, muitas outras estão em desenvolvimento, sob forma de pesquisa, especialmente na área da saúde, biologia, engenharia do petróleo e climatologia (XA- VIER et al., 2007; PANETTA et al., 2007; SOUTO et al., 2007). Tais aplicações, sob o ponto de vista computacional, são muito diferentes entre si em termos de implementação, execução, recursos de software e recursos computacionais. A todas essas observações adiciona-se ainda a forma como os processos da aplicação são executados, uma vez que estes são dependentes de uma série de fatores, tais como parâmetros de entrada e leitura de dados durante o fluxo de execução, ou seja, um processo pode ser executado dinamicamente. No transcorrer dos últimos anos tem-se visto um grande número de sistemas computacionais à disposição no mercado, com uma considerável gama de recursos que satisfaça as necessidades dos desenvolvedores de software. Isto pode ser claramente visto quando se observa a composição das 500 máquinas com maior capacidade de processamento do mundo, as quais são compostas por inúmeros unidades de processamento (processadores) interligadas, seja através de um barramento comum, seja através de redes especiais, as quais são destinadas a uma infinidade de aplicações (Top 500, 2008). Geralmente, tais soluções estão baseadas no desenvolvimento de arquiteturas paralelas (DONGARRA et al., 2002; FOSTER; KESSELMAN, 2003; ANDREWS, 2001; WILKINSON; ALLEN, 1998; FOSTER, 1995). O uso de máquinas vetoriais, multiprocessadas e, atualmente, de sistemas multi-core tem sido algumas das alternativas. Tais tecnologias podem ainda ser combinadas através da formação de clusters e grids. Chega-se, dessa forma, a composição de plataformas com múltiplos níveis de paralelismo. Ao mesmo tempo em que há um progresso no desenvolvimento de hardware, especialmente de arquiteturas paralelas, existe a necessidade de se oferecer recursos de programação compatíveis com os diferentes ambientes computacionais disponíveis. Além disso, é importante também que haja mecanismos de programação capazes de integrar as diferentes arquiteturas paralelas existentes, simplificando o processo de programação. Desta forma, cria-se uma camada de abstração entre a aplicação em si e a sua plataforma de execução, podendo esta ser feita através de bibliotecas de programação específicas. A maneira com que isto pode ser feito na prática, por mais que já existam soluções aparentemente satisfatórias, especialmente para sistemas homogêneos, esbarra na dificuldade em se explorar ao máximo os recursos computacionais existentes em cada uma das diferentes máquinas paralelas que compõem o sistema. Mecanismos de programação efi-

8 8 cientes para uma determinada forma de paralelismo não se aplicam às demais, visto que esses são geralmente bastante específicos. Integrá-los em uma mesma aplicação, isto é, usá-los de forma combinada em um mesmo código, parece ser a solução mais indicada como forma de potencializar aquilo que cada mecanismo oferece individualmente. O desafio é determinar a melhor forma de realizar essa integração dinamicamente em um ambiente com paralelismo multi-nível, escalonando os processos de maneira a maximizar o uso dos recursos. Nesse contexto, esta Trabalho Individual apresenta como tema de pesquisa a programação paralela em ambientes com múltiplos níveis de paralelismo, o qual envolve a convergência de diversas formas de paralelismo como solução de alto desempenho para o desenvolvimento de aplicações. A proposta inclui o estudo de ferramentas e recursos de programação paralela que consigam realizar uma abstração de diferentes níveis de paralelismo.

9 9 2 ARQUITETURAS PARALELAS Um dos motivos pelos quais a evolução dos sistemas computacionais tem conseguido manter seu ritmo de crescimento nos últimos anos deve-se à exploração e a concepção de arquiteturas paralelas. Arquiteturas paralelas estão baseadas na utilização de múltiplas unidades de processamento. Atualmente estão sendo explorados diferentes níveis de paralelismo, que vão desde o núcleo de processamento das arquiteturas multi-core e multiprocessadores, passando pelo uso de multicomputadores, através do uso de clusters, até a organização de um grid em escala mundial. Com isso, pode-se obter um desempenho muito mais elevado do que o estimado em arquiteturas mais simples. Devido à relevância do assunto, neste capítulo são revistas as principais arquiteturas paralelas em uso no momento, relatando as suas características básicas. 2.1 Classificação de Flynn Para melhor entender a concepção das diferentes arquiteturas paralelas pode-se utilizar uma técnica de classificação. Uma das maneiras de se realizar isso é utilizar a classificação de Flynn, a qual é amplamente adotada (WILKINSON; ALLEN, 1998). Esta classificação está baseada na relação que existe entre o fluxo de instruções e o fluxo de dados. Neste sentido quatro classes podem existir: Single Instruction Single Data (SISD) - Onde para cada instrução há um único dado sendo operado. Geralmente computadores pessoais possuem essa configuraçào. Multiple Instruction Single Data (MISD) - Neste caso, hipoteticamente haveria várias instruções sendo operadas sobre o mesmo dado. Single Instruction Multiple Data (SIMD) - São as máquinas vetoriais, ou seja, uma única instrução é executada sobre múltiplos dados de forma paralela. Multiple Instruction Multiple Data (MIMD) - Aqui mútiplas instruções são executadas sobre múltiplos dados. Tais execuções paralelas podem ocorrer através de multiprocessadores ou multicomputadores. A seguir serão vistos detalhes de como as arquiteturas paralelas podem ser organizadas. 2.2 Multiprocessadas Uma forma simples de formar uma máquina paralela é agregar processadores a um barramento comum. Desta forma, todos os processadores poderiam ter acesso à memória.

10 10 P P P P P BARRAMENTO M M M M M P P P P P M M M M M REDE Figura 2.1: Esquema das arquiteturas multiprocessador e multicomputador Esta solução é a base para a concepção de uma máquina multiprocessada. Uma máquina multiprocessada é, portanto, um conjunto de processadores que opera sobre um conjunto de memória, sendo que a memória pode ser acessada uniformemente (Uniform Memory Access - UMA), ou seja, mesma latência de acesso, ou não uniformemente (Non-Uniform Memory Access - NUMA) (WILKINSON; ALLEN, 1998). Uma das características de uma máquina multiprocessada é de que a escalabilidade é limitada. Assim, uma vez concebida a arquitetura, não é possível adicionar um maior número de processadores. Além disso, o uso de um número elevado de processadores torna mais difícil o gerenciamento da arquitetura como a coerência de cache e o controle do acesso ao barramento comum. 2.3 Multicomputadores Uma arquitetura Multicomputador pode ser vista como um conjunto de computadores independentes interconectados através de uma rede (ANDREWS, 2001). Cada computador é formado por unidade processamento e memória próprios, sendo que a memória não pode ser acessada diretamente por outro computador. Conseqüentemente, a memória é distribuída entre os computadores e cada computador tem seu próprio espaço de endereçamento, que lhe permite acessar somente a sua própria memória. É através de uma rede de interconexão que é possível para os processadores enviar mensagens para outros processos. Estas mensagens podem incluir dados que outros proessadores podem requerer para o seu correto processamento. Multicomputadores podem ser vistos como um sistema baseado em troca de mensagens. As mensagens trocadas entre os processos são ditadas pelo código do programa. A idéia, com isso, é dividir o problema em várias partes e, durante a execução, realizar a troca de mensagens entre os processos quando necessário. Uma comparação entre arquiteturas multiprocessador e multicomputador pode ser vista na Figura 2.1. Nesta ilustração, os processos P de uma máquina multiprocessada acessam a memória (M) através de um barramento comum. Já em uma arquitetura multicomputador, cada processador tem sua memória local e só pode acessar os dados de outra máquina através de uma interconexão de rede. 2.4 Vetoriais Uma arquitetura Vetorial provê instruções de alto-nível sobre vetores de dados (DON- GARRA et al., 1991). Desta forma é possível, por exemplo, realizar operações aritméticas em um vetor ou entre vetores, sem a necessidade de implementar um laço, como é o

11 11 C P P P P P M M M M M Figura 2.2: Funcionamento de uma máquina vetorial caso de arquiteturas não vetoriais. A motivação básica para a construção de arquiteturas vetoriais está na exploração do paralelismo de dados ao invés do paralelismo de tarefas, diferindo de outras arquiteturas. Na Figura 2.2 é mostrada um esquema de funcionamento de uma máquina vetorial, no qual uma unidade de controle C é responsável pelo gerenciamento dos processadores, os quais podem executar sobre regiões de memória distintas. Processadores vetoriais são ideais para o cálculo científico, o qual envolve, geralmente, diversos cálculos sobre um conjunto de dados, os quais poderiam ser devidamente particionados ou organizados em forma de pipeline. Além do cálculo científico, processadores vetoriais podem ser usados em outras áreas, como no processamento de imagens e em mineração de dados, uma vez que as operações nesta áreas são altamente vetorizáveis. Procesadores vetoriais possuem uma série de vantagens em termos de implementação. Entre as vantagens estão a redução do número de instruções por programa, custo de decodificação e de falhas de cache. Como cada instrução envolve um número maior de funcionalidades, há um número menor de falhas na cache. Por outro lado, as tarefas são geralmente atômicas e executadas sobre dados que se encontram de forma contínua na memória, sem a presença de saltos condicionais e controle de repetidores. Por isso, com o carregamento prévio dos dados da memória para a cache também há um número menor de falhas de cache de dados. 2.5 Multi-core Arquiteturas Multi-core são formadas por processadores com múltiplos núcleos de processamento (GEPNER; KOWALIK, 2006; SHAMEEM; ROBERTS, 2005). Atualmente é possível encontrar no mercado processadores duo-core e quad-core. Além disso, já estão previstos os lançamentos de processadores com um número maior de núcleos de processamento e a tendência é de que o número de núcleos em um mesmo chip aumente. Em arquiteturas de processadores tradicionais, com apenas um núcleo de processamento, existe apenas um conjunto de recursos (unidade de controle, operações aritméticas e lógicas, etc) concebido para a execução das instruções. Logicamente, esta estrutura pode ser bastante complexa, com a existência de pipelines e de replicações de pequenas unidades de processamento. Já em uma arquitetura multi-core, todo esse conjunto de recursos é replicado, como se vários processadores estivessem integrados em um único chip. Com isso, múltiplos programas ou fluxo de execuções podem ser executados simultaneamente, de acordo com o número de núcleos existente. A Figura 2.3 apresenta um processador P formado internamente por quatro núcleos de processamento. Um aspecto particularmente importante em arquiteturas Multi-core é o fato de que recursos de cache podem ser compartilhados entre os diferentes núcleos de processamento.

12 12 Núcleo Núcleo P Núcleo Núcleo Figura 2.3: Exemplo de um chip quad-core Com isso, diferentes fluxos de instrução podem ser executados sobre os mesmos dados em cache. Atualmente existem múltiplos níveis de cache, buscando agilizar o processo de acesso de instruções e de dados em memória por parte das instruções. Uma vez que em arquiteturas multi-core o tamanho do chip aumenta, questões ligadas ao aquecimento do processador têm sido continuamente estudadas, a fim de que estas possam ser contornadas. O desligamento de partes do processador quando estes não são utilizados ou a redução da freqüência quando a temperatura aumenta são algumas das técnicas atualmente empregadas como forma de reduzir o calor gerado. A adoção de tecnologias na concepção de circuitos que reduzam a largura do canal de silício e a pesquisa de novos materiais também faz parte deste contexto, Arquiteturas multi-core exploram o paralelismo em nível de fluxos de execução. Isto significa que um programa tem uma maior eficiência quando este é formado por diversos processos leves. Um processo leve pode ser visto como a decomposição de um programa sem que o mesmo deixe de ser um único processo sob ponto de vista do sistema operacional. A implementação de programas para esse tipo de arquitetura precisa levar em consideração este fato, pois alto desempenho deixa de ser sinônimo de computação com multiprocessadores ou multicomputadores, mas passa a ser viável em um único chip. 2.6 Cluster A arquitetura de Cluster pode ser definida como um conjunto de máquinas ou nós, que cooperam entre si na execução de aplicações utilizando a troca de mensagens pela rede (BUYYA, 1999). Esta é uma forma simples de se obter o compartilhamento de recursos para prover um maior desempenho. Geralmente o acesso ao ambiente é restrito e dedicado. Além disso, a arquitetura é escalonável e flexível. Isso significa que máquinas podem ser adicionadas ou removidas, sem a interferência no restante do conjunto. Na maioria das vezes as máquinas de um Cluster são homogêneas, possuindo os mesmos recursos de memória, processamento, cache e rede. Um dos principais aspectos referentes à arquitetura de cluster é o gerenciamento dos recursos. O gerenciamento de clusters envolve diversos fatores, desde a instalação do sistema operacional, até a definição de ferramentas para a configuração, manutenção, monitoramento e escalonamento de tarefas. Do ponto de vista da aplicação, o escalonamento de tarefas pode ser considerado a parte principal do gerenciamento de um cluster. O escalonamento define como são utilizados os nós de um cluster, fornecendo, mediante requisição, a possibilidade de uso do mesmo por parte dos usuários. Os objetivos de um escalonador são maximizar a utili-

13 13 C C C C C REDE Figura 2.4: Ilustração do funcionamento de uma estrutura de cluster zação do cluster, maximizar a quantidade de aplicações executadas, reduzir o tempo de resposta, mesclar requisições dos usuários com as ordens administrativas e dar a ilusão de uma máquina única e dedicada. Para tanto, existem algumas ferramentas disponíveis, tais como PBS, CCS, Condor e OAR (HENDERSON, 1995; KELLER; REINEFELD, 1998; THAIN; TANNENBAUM; LIVNY, 2005; CAPIT et al., 2005). 2.7 Grid Um Grid é uma infra-estrutura de hardware e software capaz de prover uma grande capacidade de processamento (TeraFlops), a qual é necessária para a resolução de aplicações que necessitam dessa soma de recursos (BERNHOLDT et al., 2005; FOSTER; KESSELMAN, 2003). Em um primeiro momento, essa arquitetura foi proposta para possibilitar o compartilhamento de recursos computacionais de instituições científicas. No entanto, com a popularização das redes, a computação em grid também passou a ser utilizada como um ambiente de execução de aplicações que necessitam de uma capacidade computacional geralmente indisponível. Atualmente a computação em grid é uma das áreas que mais recebe atenção na Computação em termos de pesquisa. O ambiente de grid possui várias propriedades que contribuem para o aumento de sua complexidade. Por isso, existem diversos projetos em várias áreas que se esforçam para tornar a infra-estrutura de grid popular, assim como é o caso de clusters. Entre as dificuldades para a construção de uma infra-estrutura de grid, pode-se destacar o gerenciamento dos recursos, a grande heterogeneidade de máquinas e de conexões de rede, a grande escalabilidade, o controle de acesso aos administradores e usuários e as interfaces de programação (FOSTER; KESSELMAN, 2003). Na literatura existem diversos projetos de pesquisa em todas essas áreas. O mais popular e utilizado é o sistema Globus (FOSTER; KESSELMAN, 2003). Globus define um conjunto de serviços para facilitar a computação em grids, tanto para o desenvolvimento de aplicações, quanto para o de ferramentas. Além do Globus, também existem outros projetos com expressiva utilização, como o sistema MyGrid, EGEE, DataGrid, Grid5000, DAS2, PlanetLab e Naregi (QUéTIER; CAPPELLO, 2005). Ilustrativamente, as Figuras 2.4 e 2.5 descrevem o funcionamento de um cluster e de um grid. Neste sentido, percebe-se que o que difere um cluster de um grid é basicamente a infra-estrutura da rede, a qual tem uma dimensão local (e restrito) no caso de um cluster, mas que atinge proporções globais para um grid. Conseqüentemente pode=se imaginar que um grid pode envolver um conjunto de clusters de diversas configurações, ou mesmo um conjunto muito grande de máquinas geograficamente distribuídas.

14 14 C C C C C REDE C C C C C REDE INTERNET C REDE C C C C C C Figura 2.5: Ilustração do funcionamento de um grid

15 15 3 PROGRAMAÇÃO PARALELA EM AMBIENTES DE PA- RALELISMO MULTI-NÍVEL Existem diversas arquiteturas paralelas no mercado, sob diversas concepções de implementação. Ao mesmo tempo, faz-se necessário o uso de ferramentas apropriadas para cada tipo de máquina. Neste sentido, o presente capítulo faz uma descrição do estado da arte da programação paralela relacionado ao contexto deste Trabalho Individual. Para tanto são analisados os principais recursos de programação utilizados para o desenvolvimento de aplicações em arquiteturas paralelas. A análise compreende os paradigmas de programação existentes, bem como os recursos de programação em desenvolvimento para um paralelismo multi-nível. 3.1 Paradigmas de Programação Paralela Diferentes estratégias de programação podem ser adotadas para o desenvolvimento de aplicações paralelas (FOSTER, 1995). Alguns paradigmas atualmente utilizados para o desenvolvimento de aplicações, especialmente em larga escala são: Divisão e Conquista - A idéia dessa técnica é sub-dividir um problema até atingir uma granularidade mínima, mas mantendo a forma do problema original. Esta técnica pode ser implementada através do uso da recursividade: um processo mestre é responsável por sub-dividir o problema, repassando estes a outros processadores. Posteriormente os resultados são recolhidos, integrando-se novamente no processo mestre. Exemplos de algoritmos típicos que utilizam Divisão e Conquista são os métodos de ordenação Quicksort e MergeSort. Decomposição de dados ou Decomposição de Domínios - Nesse modelo de programação o volume de dados a ser operado é dividido e distribuído entre um determinado número de processos. Em geral, os resultados parciais precisam ser correlacionados ou existe uma dependência de dados entre as diversas partes segmentadas. Neste caso, em uma arquitetura paralela distribuída são criadas regiões de contorno, as quais armazenam parte dos dados dos processos vizinhos (borda de sobreposição), situação esta que não ocorre em um modelo de memória compartilhada. Como existe a manipulação dos dados, é necessário que haja regularmente a interação entre os processos vizinhos, a fim de que as regiões de contorno sejam atualizadas. Um exemplo típico de aplicação desse tipo é a técnica de Multigrid, na qual o volume de dados é particionado, são feitos os processamentos e, por fim, a sincronização dos dados entre os processos, acessando os dados através de troca de mensagens (WESSELING, 1992).

16 16 Decomposição de Tarefas - Neste modelo de Decomposição as funções de um programa são divididas. Essas funções podem ser aplicadas tanto concorrentemente sobre os dados ou mesmo especificamente sobre partes dos mesmos. Do ponto de vista prático, é mais difícil encontrar um problema que possa ter duas ou mais funções executando concorrentemente sobre um conjunto de dados. Pipeline - Em uma técnica de Pipeline o problema é dividi em uma série de tarefas que precisam ser completadas uma depois da outra. Aparentemente é muito similar à programação seqüencial. Cada tarefa é executada por um processo ou processador como um estágio de uma fila de execuções. Cada estágio opera sobre todo o problema, passando as informações necessárias para os estágios subseqüentes, similarmente à Decomposição Funcional, só que de forma sucessiva. Como exemplo de aplicação, pode-se considerar a manipulação de uma imagem, que precisa de diversos tipos de tratamento consecutivos para melhorar a qualidade visual. Mestre-Escravo - O modelo Mestre-Escravo é formado por uma processo servidor e por diversos processos clientes, sendo, desta forma, também conhecido como modelo Cliente-Servidor. É uma forma simples de paralelismo, visto que normalmente o processo mestre é responsável por distribuir as tarefas, coordenar a execução e, por fim, receber os resultados. Muitas vezes o modelo também é visto como uma técnica de programação distribuída e não paralela. Um exemplo comum de funcionamento do modelo Mestre-Escravo pode ser visto em um servidor Web, responsável por atender solicitações de diversos clientes. Peer-to-Peer - No modelo Peer-to-Peer cada processo interage diretamente com outros processos sem haver uma hierarquia entre os processos. A idéia é que cada processo realize a troca de informações com seus processos vizinhos, conforme as necessidades, não havendo a obrigatoriedade de interação com todo o conjunto de processos. Um exemplo de utilização desta abordagem é encontrado no compartilhamento de arquivos distribuídos. Bag of Task - Considera um conjunto de tarefas paralelas que podem ser executadas independentemente uma das outras. Tais tarefas podem estar dispostas em um repositório, sendo invocadas a medida que existe a disponibilidade de execução das mesmas. Este modelo de paralelismo é ideal para a execução de tarefas em arquiteturas grids, pois diferentes tarefas podem ser direcionadas para diferentes recursos alocados em um grid, oferecendo o melhor uso da capacidade computacional disponível. Tais estratégias de paralelização dependem essencialmente do formato da aplicação. 3.2 Paralelismo Multi-nível Além da aplicação em si e da estratégia de paralelização adotada, o ambiente de programação e execução também precisam ser considerados para o desenvolvimento de uma aplicação concorrente. Os ambientes de computação paralela, especialmente de cluster e grid, são cada vez mais heterogêneos em sua composição. No outro extremo, começam a surgir arquiteturas multi-core com diferentes quantidades de núcleos de processamento. Conseqüentemente, esses ambientes acabam provendo também um paralelismo multi-nível.

17 17 Granularidade Grids Multi computadores Multi processadores Multi core Figura 3.1: Paralelismo Multi-nível Um paralelismo multi-nível é aquele no qual existem diversos níveis de abstração de paralelismo. Os diferentes níveis de abstração de paralelismo podem estar nos próprios processadores (multi-core), interno a um computador (multiprocessadores) ou entre vários computadores (clusters e grids), criando uma hierarquia, conforme apresentado na Figura 3.1. Nesta figura, destaque-se também que a granularidade do processo ou tarefa aumenta à medida que níveis mais elevados de paralelismo são adotados. O gerenciamento de cada um dos níveis de abstração paralela é feito através de mecanismos específicos: Em nível de processador - O fluxo de instruções é definido pelo núcleo ou pela implementação dos registradores necessários em hardware. Assim, o controle é feito por instruções em assembler. Em nível de núcleo do sistema operacional - O fluxo de instruções é definido através processos ou de threads. O controle desse fluxo de instruções é feito através de chamadas ao sistema operacional. Em nível de middleware de gerenciamento - O fluxo de instruções é um processo comunicante. O controle é feito através de bibliotecas de comunicação interprocessos. Cabe, portanto, ao programador fazer uso de diferentes ferramentas, durante a implementação de um programa, para explorar os vários níveis de paralelismo. Pode-se imaginar, por exemplo, um programa implementado com a técnica de divisão e conquista, que lance processos pesados nas primeiras divisões e que, posteriormente, passe a disparar threads como forma de usar eficientemente processadores multi-core em um ambiente de cluster. Garantir a portabilidade das aplicações e o uso eficiente dos recursos é a grande dificuldade existente em ambientes de execução paralelos, já que as ferramentas de programação atualmente existentes se destinam especificamente a apenas um nível de paralelismo, o que limita as potencialidades de seu uso em outro nível. Além disso, é difícil controlar a forma como uma aplicação paralela irá ser executada, uma vez que, independente do nível de abstração, diferentes formas de mapeamentos do fluxo de instruções podem ocorrer. Quem decide isso é uma biblioteca de comunicação ou um compilador. 3.3 Interfaces Clássicas de Programação Paralela Quanto às interfaces ou Application Programming Interfaces (APIs) de programação paralela, estas são bastante específicas, focando apenas um determinado nível de parale-

18 18 lismo. Neste sentido, existem alguns padrões de programação para cada nível de paralelismo, conforme segue: Multi-core: utiliza-se o padrão Posix Threads, como forma de criar processos leves (threads) (ANDREWS, 2001). Multiprocessadores: faz-se uso da biblioteca OpenMP, que permite a chamada de operações paralelas de forma simples através de comandos (palavras reservadas) durante a escrita do código (CHANDRA, 2001). Multicomputadores: para a comunicação interprocessos são adotados os padrões Message Passing Interface (MPI), especialmente nas linguagens Fortran e C, sendo que é possível fazer comunicações síncronas e assíncronas, coletivas e mapeamento e comunicações usando coordenadas cartesianas (GROPP et al., 1996), e Java Remote Method Invocation (Java RMI), o qual permite a chamada remota de métodos, garantindo a execução distribuída de uma aplicação (FARLEY, 1998). Outro padrão clássico de programação que não pode deixar de ser mencionado é High Performance Fortran (HPF). HPF é uma extensão e modificação da linguagem padrão Fortran. Os principais objetivos para o desenvolvimento da linguagem HPF são: O suporte à programação utilizando paralelismo de dados; Portabilidade para diferentes arquiteturas; Alta performance para arquiteturas paralelas baseadas em multicomputadores; Interfaces abertas e interoperabilidade com outras linguagens, particularmente C, e paradigmas de programação, como MPI; Provisão para futuras melhorias na linguagens de maneira consistente, bem como nas implementações padrões de Fortran e C. Devido a essas características, muitas aplicações de PAD, especialmente da climatologia, foram implementadas usando HPF. Embora os recursos apresentados anteriormente tenham se tornado um padrão para cada tipo de ambiente ao qual foram propostos, dificilmente eles oferecem o mesmo desempenho quando portados para outros ambientes. O mesmo vale para outras APIs semelhantes e menos populares de programação paralela. Desta forma, pode-se concluir que não é possível programar eficientemente, com uma mesma interface, diferentes níveis de abstração. 3.4 Ferramentas de Programação Multi-Nível Algumas tentativas de superar as limitações impostas pelas interfaces de programação paralelas clássicas já foram propostas (BERNHOLDT, 2007). Estas soluções estão baseadas em modelos de programação Single Program Multiple Data (SPMD) ou em linguagens de visão global conhecidas como Partitioned Global Address Space (PGAS). O modelo de programação SPMD oferece mecanismos para especificar a computação paralela e as estruturas de dados distribuídas. Os dados distribuídos precisam ser definidos manualmente, bem como a sua alocação em cada processador. Também ocorrem etapas de comunicação e sincronização durante a execução do programa. Assim, pode-se dizer

19 19 que há uma multi-cooperação da aplicação, uma vez que o programador está ciente de todas as interações do programa. A principal vantagem do modelo SPMD é a simplicidade. Com este modelo de linguagem de programação a compreensão do funcionamento da implementação paralela é clara. Com isso, é possível obter um alto nível de transparência da execução, possibilitando também um alto nível de portabilidade. Por outro lado, o gerenciamento explícito ofusca a compreensão de algoritmos, contribuindo para a introdução de erros de programação. Também é exigido ao usuário controlar manualmente a fragmentação dos dados, comunicação e sincronização entre as instâncias do programa. No modelo PGAS as linguagens são desenvolvidas sobre um modelo de memória em que um espaço de endereço global é logicamente particionado de maneira que uma porção fique a cargo de cada processador local. Este tipo de linguagem é tipicamente implementado em máquinas de memória distribuídas e implementa o espaço de endereçamento virtual usando bibliotecas de comunicação. Linguagens do tipo PGAS provêm abstrações para a construção de estruturas de dados distribuídas, bem como a comunicação entre instâncias cooperativas de código. Embora o objetivo dessas linguagens é aumentar a capacidade de escrita de códigos, elas ainda estão limitadas em termos de prover uma visão global da computação paralela. A seguir são apresentadas algumas linguagens de programação que permitem que o programador considere um ambiente computacional de larga escala como um sistema unificado, semelhante a um ambiente de memória compartilhada Unified Parallel C (UPC) - É uma extensão da linguagem de programação C, para a computação de alto desempenho em máquinas paralelas de larga escala, desenvolvida em Berkeley (YELLICK; BONACHEA; WALLACE, 2004). A linguagem disponibiliza um modelo de programação uniforme tanto para sistemas de memória compartilhada como distribuída. UPC abstrai o modelo de programação (SPMD) onde o paralelismo é pré-definido antes da execução, sendo que cada fluxo de execução é destinado a um processador. Assim, o ambiente é visto como um único sistema de memória compartilhada no qual os processadores podem ler e escrever as variáveis, embora estas sejam fisicamente associadas a um único processador. Co-Array Fortran (CAF) - Possui propriedades semelhantes a implementação UPC, sendo implementada em Fortran (NUMRICH; REID, 1998). CAF é uma extensão elegante de Fortran, suportando o modelo de programação SPMD. Além disso, a linguagem inclui recursos da próxima versão padrão de Fortran. O nome da linguagem vem da implementação de um novo tipo de array chamado co-array. Este recurso é utilizado para referenciar imagens (múltiplas instâncias cooperativas) de um programa em um modelo SPMD. Cada imagem pode acessar instâncias remotas de uma variável pela indexação de uma dimensão de co-array. Uma variável declarada em uma dimensão co-array aloca em cada imagem uma cópia da variável. A forma de criação de uma co-array é similar a criação de arrays em Fortran. A linguagem oferece ainda rotinas de sincronização para coordenar as imagens cooperativas. Titanium - É uma linguagem desenvolvida em Berkeley como um paradigma SPMD para Java (YELICK et al., 1998). Titanium incrementa diversas características de Java, incluindo suporte a iterações com vetores multi-dimensionais, sub-vetores e

20 20 operações de cópia, classes com valores inalteráveis e regions que suportam gerenciamento de memória orientado a performance como um coletor de lixo alternativo. A linguagem oferece suporte entre as instâncias do programa desenvolvido em SPMD através de primitivas de sincronização e comunicação, métodos e variáveis que possibilitam a sincronização de forma isolada, e uma noção de referência privada ou compartilhada. Chapel - É uma linguagem de programação desenvolvido pela Cray, sendo parte de um projeto maior conhecido como Cascade (CHAMBERLAIN; CALLAHAN; ZIMA, 2007). Chapel prove um nível mais alto de abstração para a expressão de programas paralelos do que outras linguagens de programação. Além disso, a linguagem oferece uma separação entre o desenvolvimento do algoritmo e os detalhes da implementação das estruturas de dados. Chapel suporta um modelo de programação multithreaded, oferecendo abstrações para paralelismo de dados e tarefa. Fortress - É uma ferramenta para a programação de alta performance projetada pela SUN, para a programação eficiente e segura (WEILAND, 2007). A linguagem é baseada em Fortran. Embora sua sintaxe seja inovadora, Fortress foi desenvolvida possibilitando uma programação similar a notação matemática. Com isso, acredita-se que o desenvolvimento do código seja mais simples para cientistas. Os componentes fundamentais de um código Fortress são os objects que definem as variáveis e os métodos, e os traits, que declaram um conjunto de métodos, tanto abstratos, como concretos. Fortress é uma linguagem interpretada, sendo que o interpretador roda sobre a Máquina Virtual Java, implementando uma pequena parta da especificação da linguagem. X10 - É uma linguagem de programação experimental desenvolvida pela IBM em parceria com instituições acadêmicas (CHARLES et al., 2005). O objetivo da linguagem é oferecer novas técnicas de implementação que ofereçam um paralelismo escalável e optimizado para um ambiente gerenciado em tempo de execução. X10 oferece todos os recursos clássicos da linguagem de programação Java, tanto para ambiente Simetric Multi-Processors (SMP), como para clusters. Todas essas ferramentas acabam funcionando como uma camada de abstração, tornando homogêneo o mecanismo de implementação. Ao mesmo tempo, não é possível extrair paralelismo em todas as camadas, visto que estas nem sempre foram abstraídas adequadamente, como para o caso das arquiteturas multi-core. No entanto, soluções para este problema podem ser feitas utilizando, por exemplo, a inclusão de threads na criação de novos processos. Um exemplo disso é a combinação de MPI e threads para o desenvolvimento de aplicações, tanto em nível de usuário como em nível de implementação MPI citelima08. Caso isto seja feito de forma transparente, tem-se mais um nível de paralelismo incluído nas ferramentas de abstração. Um outro aspecto que não pode deixar de ser mencionado é a possibilidade de criação dinâmica de processos, ou seja a criação e lançamento em tempo de execução de novos processos. Assim, é possível realizar balanceamento de carga em tempo de execução, ou mesmo distribuir melhor a granularidade dos processos. Neste sentido, já foram desenvolvidas diversas melhorias e implementações dos recursos existentes na biblioteca de comunicação interprocessos MPI2 (GROPP; EWING; THAKUR, 1999; MPICH2 HOME PAGE, 2006), especialmente para o mecanismo de lançamento dinâmico de processos

21 oferecido pela função spawn (CERA et al., 2006, 2007; PEZZI et al., 2007). Cabe lembrar ainda, que a norma MPI2 oferece outros recursos importantes para a área de PAD, como a leitura paralela de arquivos, o que é útil especialmente para o pré e pós processamento dos dados. 21

22 22 4 APLICAÇÕES Neste capítulo são descritas duas aplicações de Computação Científica que possuem características de execução que possibilitam a adoção de paralelismo múlti-nível. Para tanto, foram selecionadas uma técnica numérica de simulação de fluxos de fluidos conhecida como Método de Lattice Boltzmann e um programa para a simulação da climatologia em escala mundial denominado de Ocean-Land-Atmosphere Model. 4.1 Método de Lattice Boltzmann O Método de Lattice Boltzmann (MLB) pode ser definido com um método numérico iterativo para a modelagem e simulação de propriedades físicas em fluidos (SUCCI, 2001; CHEN; DOOLEN, 1998; WOLF-GLADROW, 2000). Diferente de outros modelos numéricos, baseados na discretização de equações macroscópicas contínuas, tais como o método dos Elementos Finitos ou o método dos Volumes Finitos, o MLB está fundamentado em modelos microscópicos e equações de velocidade mesoscópica. A principal idéia do MLB é construir um modelo cinético simplificado, que incorpore a essência física dos processos microscópicos ou mesoscópicos, a fim de que a média dessas propriedades obedeça à equação macroscópica desejada. A dinâmica macroscópica de um fluido é o resultado da coleção de estruturas microscópicas de um sistema. No entanto, ela não é sensível aos detalhes existentes na dinâmica microscópica. Esse é um dos motivos para o uso de métodos simplificados em lugar de fluxos macroscópicos. Através do desenvolvimento de uma versão simplificada da equação cinética, busca-se evitar a resolução de equações complicadas, como a equação completa de Boltzmann, ou considerar cada partícula como uma simulação molecular (SCHEPKE; MAILLARD, 2007). A representação das partículas é feita através de uma estrutura de reticulado. Embora o MLB seja baseado em um representação de partículas, seu principal foco é a obtenção da média da estrutura macroscópica. A equação cinética do método prove muitas das vantagens da dinâmica molecular, incluindo uma clara representação física, simplicidade de implementação das condições de contorno e algoritmos completamente paralelos, já que as operações são estritamente locais (SCHEPKE, 2007) Equação de Lattice Boltzmann A Equação de Lattice Boltzmann pode ser vista como um conjunto de operações de propagação e relaxação das partículas: f i (x + e, t + 1) f i (x, t) = Ω(f i (x, t)) i = 0,..., d (4.1) Onde f i é uma função de distribuição de velocidade das partículas no reticulado para

23 23 cada uma das d direções possíveis i = 1,...,d, e é o vetor de velocidade, x é o espaço de deslocamento, t é a variação de tempo e Ω é o operador de relaxação. O operador de relaxação é definido de acordo com a conservação de massa e momento e é dado por: Ω(f i (x, t)) = 1 τ (f i(x, t) f eq i (ρ, u)) (4.2) Nessa equação τ representa a escala do tempo de relaxação que controla a taxa de aproximação ao equilíbrio, f eq i (ρ, u) é a função de distribuição de equilíbrio, ρ e u são valores macroscópicos para a densidade e velocidade. A Equação 4.3 define a função de distribuição de equilíbrio, onde o valor de w depende da geometria do reticulado e c = x/ t. [ f eq i (ρ, u) = ρw i c 2e i.u + 9 2c 4(e i.u) 2 3 ] 2c 2u.u (4.3) Os valores macroscópicos de densidade ρ e momento ρu podem ser desenvolvidos respectivamente, como: N N ρ = f j j=0 j=0 f eq j (4.4) N N ρu = e j f j e eq j f j (4.5) j=0 j=0 Onde a velocidade macroscópica u pode ser diretamente calculada. Para as condições de contorno, uma das possibilidades é usar um mecanismo conhecido como bounce back. A idéia é inverter as direções dos vetores de velocidades em caso de colisão com os pontos estáticos das fronteiras: fi out (x, t) = fi in (x, t) (4.6) Assim, e i = e i, ou seja, e i é rotacionado para cada direção de velocidade da borda, garantindo o retorno para o fluido na próxima iteração do laço, com o momento contrário. Isso garante que o fluxo não ultrapassa as bordas, tendo velocidades nulas nessas regiões Algoritmo A estrutura principal do algoritmo do MLB é composta pelas seguintes operações: 1. Determinar as condições iniciais para todos os pontos, escolher adequadamente a densidade ρ e a velocidade e das células externas (condições de contorno), além de definir a escala do tempo de relaxação τ. 2. Calcular a densidade ρ e velocidade u das variáveis macroscópicas para cada célula usando as Equações 4.4 e Calcular os valores da função de equilíbrio usando a Equação 4.3 e, a partir disso, obter os valores da função de relaxação através da Equação 4.2; 4. Utilizar o valor de equilíbrio para calcular a função de distribuição para cada ponto, segundo a Equação 4.1; 5. Propagar a distribuição das partículas para todas as células vizinhas; 6. Modificar a distribuição local dos pontos para satisfazer as condições de contorno através da Equação 4.6; 7. Retornar ao passo 2 enquanto o número de iterações for menor que o máximo estimado.

24 Paralelização em Multi-níveis A implementação paralela do método de LBM pode ser feita através de estratégias que sub-dividam o conjunto dos dados a serem processados. Devido às características mencionadas anteriormente percebe-se claramente que há um processamento em cada ponto do reticulado que envolve informações dos pontos vizinhos. Assim, é natural que as informações de todos os pontos vizinhos do ponto que precisa ser processado estejam disponíveis ao processador ou núcleo de processamento. No entanto, nada impede que um grupo de processadores ou núcleos de processamento atue sob um sub-conjunto de dados, de maneira que as informações necessárias dos demais sub-conjuntos de dados seja obtido através de uma sobreposição dos sub-conjuntos de dados ou através de mecanismos de acesso indireto a essas informações (troca de mensagens). Neste sentido, pode haver uma divisão dos dados a serem processados em nível de núcleos de processamento, entre processadores, bem como entre computadores, caso o reticulado tenha um tamanho significativo.. Assim, haveria a possibilidade de se adotar três níveis de paralelismo, configurando a granularidade de maneira a maximizar o processamento em cada nível, utilizando ferramentas de programação adequadas. 4.2 Ocean-Land-Atmosphere Model Ocean-Land-Atmosphere Model (OLAM) é um modelo de simulação numérica para a climatologia desenvolvido pela Duke University. O principal objetivo de OLAM é produzir um modelo compreensível do sistema da Terra, que seja usado para aprimorar o entendimento deste ambiente complexo. Baseado em Regional Atmospheric Modeling System (RAMS), OLAM implementa as mesmas parametrizações físicas daquele, bem como o refinamento de malhas locais de certas áreas. Com isto, OLAM oferece simulações detalhadas da micro-física e dinâmica dos processos de nuvens e sistemas de precipitação, e a interação em nível micro e meso escala entre atmosfera, terra e vegetação. A principal melhoria apresentada em OLAM é a cobertura global do domínio, enquanto que em RAMS isto era restrito a uma área geográfica limitada. Um domínio global é importante para análises de casos específicos que levam em conta o impacto da atividade humana no clima e na previsão do tempo. Exemplos de casos impactantes são a alteração da superfície da terra e a emissão de elementos poluentes. Qualquer modelo de área limitada coloca restrições na aplicabilidade dos resultados obtidos porque limita a interação entre a área do modelo e a área externa. A interação com oceanos, vegetação e hidrologia da terra é impactante na obtenção dos resultados para uma determinada região. Por causa disso, modelos dinâmicos de eco-sistemas estão sendo adicionados a OLAM, bem como de lagos e rios e sua ação no ciclo da água, e modelos de aerosóis e atmosfera química Algoritmo O algoritmo do modelo OLAM compreende diversas etapas, conforme pode ser visto na Figura 4.1. A primeira parte do algoritmo envolve o pré-processamento, o qual é composto pela leitura e aplicação de configurações, pela alocação de memória e pelo pré-processamento em si das informações sobre topologia, vegetação, solos e mar. O restante do algoritmo é composto por uma etapa iterativa, envolvendo a parametrização física. A parametrização física é similar àquela aplicada no modelo RAMS e compreende, a transferência radioativa, micro-física, esquemas bio-físicos, turbulência e

25 25 Figura 4.1: Passos conduzidos durante a integração numérica do modelo OLAM a convecção de nuvens do tipo cúmulos. Nesta parte iterativa são inseridas ainda as informações calculadas no pré-processamento. Ao final de cada iteração é feita a atualização da passagem de tempo. Lerarquivocomopesescolhidaspelousurio Conf igurargrade, nveisverticais, icosaedroglobaloucartesiana, ref inamentodegrades Alocarmemria, tensoresnoestruturados Pr processamento : topo, veg., solosetsm

26 26 Inicializa, atualiza passo de tempo Calcula fluxos de massa horizontais Estimula fluxos radiativos Calcula fluxos turbulentos de superfície Estima fluxos radiativos Paramentrização cúmulos Campos prognósticos verticais e horizontais Termodinâmica e Microfísica de Nuvens Campos prognósticos verticais e horizontais Modelo Solo-Vegetação Estimula Coeficientes para Turbulência Atualiza passo de tempo ou Finaliza o programa Implementação Paralela em Multi-níveis O modelo OLAM não se encontra atualmente paralelizado. A idéia dos desenvolvedores do código seqüencial é oferecer OLAM sob diversas formas paralelas, tanto em arquiteturas multiprocessadas e em multicomputadores, como também para máquinas vetoriais. OLAM é um ótimo exemplo de como é possível explorar paralelismo em multi-níveis. Com uma carga de processamento muito grande, envolvendo diversas etapas iterativas, conforme observado na sub-seção anterior, o modelo pode ser paralelizado em diversos níveis. Isso torna possível também refinar as malhas em determinadas regiões de interesse, distribuindo a carga de processamento extra para outros processadores.

} 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

1 http://www.google.com

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

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Arquitetura dos Sistemas de Informação Distribuídos

Arquitetura dos Sistemas de Informação Distribuídos Arquitetura dos Sistemas de Informação Distribuídos Quando se projeta um sistema cuja utilização é destinada a ser feita em ambientes do mundo real, projeções devem ser feitas para que o sistema possa

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

SISTEMAS DISTRIBUÍDOS

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

Leia mais

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

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

SISTEMAS DISTRIBUIDOS

SISTEMAS DISTRIBUIDOS 1 2 Caracterização de Sistemas Distribuídos: Os sistemas distribuídos estão em toda parte. A Internet permite que usuários de todo o mundo acessem seus serviços onde quer que possam estar. Cada organização

Leia mais

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Período letivo: 4 Semestre. Quinzena: 5ª. Faculdades Santa Cruz - Inove Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Unidade Curricular Sistemas Distribuídos Processos

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

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

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

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 17 - Fundamentos de Sistemas Operacionais

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

Leia mais

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

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

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

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

Unidade 13: Paralelismo:

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

Leia mais

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

O que é Grid Computing

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

Leia mais

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído por um conjunto de dados associados a um conjunto de programas para acesso a esses

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Comunicação coletiva Modelo Peer-to-Peer Slide 6 Nielsen C. Damasceno Introdução Os modelos anteriores eram realizado entre duas partes: Cliente e Servidor. Com RPC e RMI não é possível

Leia mais

On Scalability of Software-Defined Networking

On Scalability of Software-Defined Networking On Scalability of Software-Defined Networking Bruno dos Santos Silva bruno.silva@ic.uff.br Instituto de Computação IC Universidade Federal Fluminense UFF 24 de Setembro de 2015 B. S. Silva (IC-UFF) On

Leia mais

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com Última atualização: 20.03.2013 Conceitos Banco de dados distribuídos pode ser entendido como uma coleção de múltiplos bds

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

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

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

Leia mais

Considerações no Projeto de Sistemas Cliente/Servidor

Considerações no Projeto de Sistemas Cliente/Servidor Cliente/Servidor Desenvolvimento de Sistemas Graça Bressan Graça Bressan/LARC 2000 1 Desenvolvimento de Sistemas Cliente/Servidor As metodologias clássicas, tradicional ou orientada a objeto, são aplicáveis

Leia mais

Multiprocessamento. Multiprocessadores com memória distribuída (multicomputador)

Multiprocessamento. Multiprocessadores com memória distribuída (multicomputador) Multiprocessamento Multiprocessadores com memória distribuída (multicomputador) Conjunto de processadores, cada qual com sua memória local Processadores se comunicam por troca de mensagens, via rede de

Leia mais

Sistemas Distribuídos. Ricardo Ribeiro dos Santos ricrs@ec.ucdb.br

Sistemas Distribuídos. Ricardo Ribeiro dos Santos ricrs@ec.ucdb.br Sistemas Distribuídos Ricardo Ribeiro dos Santos ricrs@ec.ucdb.br Curso de Engenharia de Computação UCDB Agosto/2003 Tópicos Conceitos de HW em SD Multiprocessadores e Multicomputadores Conceitos de SW

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 Sistemas Distribuídos Basedos na Web Capítulo 12 Agenda Arquitetura Processos Comunicação Nomeação Sincronização Consistência e Replicação Introdução

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

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

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

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

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

4 Um Exemplo de Implementação

4 Um Exemplo de Implementação 4 Um Exemplo de Implementação Neste capítulo será discutida uma implementação baseada na arquitetura proposta. Para tanto, será explicado como a arquitetura proposta se casa com as necessidades da aplicação

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 SISTEMAS COM MÚLTIPLOS PROCESSADORES LIVRO TEXTO: CAPÍTULO 13, PÁGINA 243 Prof. Pedro Luís Antonelli Anhanguera Educacional INTRODUÇÃO Arquiteturas que possuem duas ou mais CPUs interligadas

Leia mais

Sistemas 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

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

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO Santa Maria, 01 de Novembro de 2013. Revisão aula passada Projeto de Arquitetura Decisões de projeto de Arquitetura

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

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador> FACULDADE DE ENGENHARIA DE COMPUTAÇÃO PROJETO FINAL I e II PLANO DE TRABALHO O Trabalho de Conclusão de Curso (TCC) a ser desenvolvido

Leia mais

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc.

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc. MODELAGEM DE DADOS PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS Aula 2 Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord 1 Objetivos: Revisão sobre Banco de Dados e SGBDs Aprender as principais

Leia mais

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

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

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 1 Conceitos da Computação em Nuvem A computação em nuvem ou cloud computing

Leia mais

3 SCS: Sistema de Componentes de Software

3 SCS: Sistema de Componentes de Software 3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário

Leia mais

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Informática I Aula 5 http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação

Leia mais

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância 5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância O capítulo anterior apresentou uma discussão sobre a inclusão dos chamados learning services no processo

Leia mais

3. O NIVEL DA LINGUAGEM DE MONTAGEM

3. O NIVEL DA LINGUAGEM DE MONTAGEM 3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 Índice 1. A Organização do Computador - Continuação...3 1.1. Processadores - II... 3 1.1.1. Princípios de projeto para computadores modernos... 3 1.1.2. Paralelismo...

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

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos cpgcarlos@yahoo.com.br www.oficinadapesquisa.com.br Conceito de Computador Um computador digital é

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

Modelos de Arquiteturas. Prof. Andrêza Leite andreza.lba@gmail.com

Modelos de Arquiteturas. Prof. Andrêza Leite andreza.lba@gmail.com Modelos de Arquiteturas Prof. Andrêza Leite andreza.lba@gmail.com Agenda Introdução Arquitetura de Sistemas Distribuídos Clientes e Servidores Peer-to-Peer Variações Vários Servidores Proxy Código Móvel

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

5 Estudo de caso: utilizando o sistema para requisição de material

5 Estudo de caso: utilizando o sistema para requisição de material 61 5 Estudo de caso: utilizando o sistema para requisição de material A fim de avaliar as características da arquitetura proposta e a corretude da implementação, realizamos experiências com cenários de

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Roteiro 2 Conceitos Gerais

Roteiro 2 Conceitos Gerais Roteiro 2 Conceitos Gerais Objetivos: UC Projeto de Banco de Dados Explorar conceitos gerais de bancos de dados; o Arquitetura de bancos de dados: esquemas, categorias de modelos de dados, linguagens e

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

Eduardo Bezerra. Editora Campus/Elsevier

Eduardo Bezerra. Editora Campus/Elsevier Princípios de Análise e Projeto de Sistemas com UML 2ª edição Eduardo Bezerra Editora Campus/Elsevier Capítulo 11 Arquitetura do sistema Nada que é visto, é visto de uma vez e por completo. --EUCLIDES

Leia mais

Governança de TI. ITIL v.2&3. parte 1

Governança de TI. ITIL v.2&3. parte 1 Governança de TI ITIL v.2&3 parte 1 Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR ITIL 1 1 ITIL Gerenciamento de Serviços 2 2 Gerenciamento de Serviços Gerenciamento de Serviços 3 3 Gerenciamento de Serviços

Leia mais

Sistemas Distribuídos. Introdução

Sistemas Distribuídos. Introdução Sistemas Distribuídos Introdução Definição Processos Um sistema distribuído é um conjunto de computadores independentes, interligados por uma rede de conexão, executando um software distribuído. Executados

Leia mais

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

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

Leia mais

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis

Leia mais

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados Organização de um Computador Típico Memória: Armazena dados e programas. Processador (CPU - Central Processing

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 02 Análise e Projeto OO Edirlei Soares de Lima Análise A análise modela o problema e consiste das atividades necessárias para entender

Leia mais

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

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

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi Metodologias de Desenvolvimento de Sistemas Analise de Sistemas I UNIPAC Rodrigo Videschi Histórico Uso de Metodologias Histórico Uso de Metodologias Era da Pré-Metodologia 1960-1970 Era da Metodologia

Leia mais

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes Introdução Hardware X Software Corpo Humano Parte Física Componentes 18 Capacidade de utilizar o corpo em atividades especificas explorando seus componentes Hardware Introdução Parte física: placas, periféricos,

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

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

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

Banco de Dados Orientado a Objetos

Banco de Dados Orientado a Objetos Banco de Dados Orientado a Objetos MODELAGEM, ANÁLISE, PROJETO e CLASSIFICAÇÃO Interação combinando lógica, através de objetos que contém os dados. Estes divididos conforme seus tipos e métodos (classe),

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

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

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING http://www.uniriotec.br/~tanaka/tin0036 tanaka@uniriotec.br Bancos de Dados Distribuídos Conceitos e Arquitetura Vantagens das Arquiteturas C/S (em relação

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

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

Projetos I Resumo de TCC. Luiz Rogério Batista De Pieri Mat: 0413829 5

Projetos I Resumo de TCC. Luiz Rogério Batista De Pieri Mat: 0413829 5 Projetos I Resumo de TCC Luiz Rogério Batista De Pieri Mat: 0413829 5 MAD RSSF: Uma Infra estrutura de Monitoração Integrando Redes de Sensores Ad Hoc e uma Configuração de Cluster Computacional (Denise

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

Sistemas Operacionais Gerência de Dispositivos

Sistemas Operacionais Gerência de Dispositivos Universidade Estadual de Mato Grosso do Sul UEMS Curso de Licenciatura em Computação Sistemas Operacionais Gerência de Dispositivos Prof. José Gonçalves Dias Neto profneto_ti@hotmail.com Introdução A gerência

Leia mais

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

28/9/2010. Paralelismo no nível de instruções Processadores superescalares Arquitetura de Computadores Paralelismo no nível de instruções Processadores superescalares Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Processadores superescalares A partir dos resultados

Leia mais

Introdução ao Modelos de Duas Camadas Cliente Servidor

Introdução ao Modelos de Duas Camadas Cliente Servidor Introdução ao Modelos de Duas Camadas Cliente Servidor Desenvolvimento de Sistemas Cliente Servidor Prof. Esp. MBA Heuber G. F. Lima Aula 1 Ciclo de Vida Clássico Aonde estamos? Page 2 Análise O que fizemos

Leia mais

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) Sistemas Operativos Threads 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) Dos Processos para os Threads O conceito de thread foi introduzido na tentativa de

Leia mais

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi 5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem

Leia mais