Melhorando o Desempenho de Sistemas de Memória Compartilhada Distribuída Abordagens e Técnicas

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

Download "Melhorando o Desempenho de Sistemas de Memória Compartilhada Distribuída Abordagens e Técnicas"

Transcrição

1 UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM COMPUTAÇÃO Melhorando o Desempenho de Sistemas de Memória Compartilhada Distribuída Abordagens e Técnicas por EDVAR BERGMANN ARAUJO Trabalho Individual II Prof. Dr. Cláudio Fernando Resin Geyer Orientador Porto Alegre, janeiro de 2000

2 2 CIP CATALOGAÇÃO NA PUBLICAÇÃO Araujo, Edvar Bergmann Melhorando o Desempenho de Sistemas de Memória Compartilhada Distribuída Abordagens e Técnicas / por Edvar Bergmann Araujo Porto Alegre: PPGC da UFRGS, f.:il. Trabalho orientado pelo Prof. Cláudio Fernando Resin Geyer. 1. Memória compartilhada distribuída. 2. Sistemas distribuídos. I. Geyer, Cláudio Fernando Resin. II. Título. UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL Reitora: Profa. Wrana Panizzi Pró-Reitor de Pós-graduação: Prof. Franz Rainer Semmelmann Diretor do instituto de Informática: Prof. Philippe Olivier Alexandre Navaux Coordenadora do PPGC: Profa. Carla Freitas Bibliotecária-Chefe do Instituto de Informática: Beatriz Haro

3 3 Lista de Abreviaturas CPU CVM D-CVM DSM LRC NOW PC RAHM RSD VPM Central Processing Unit Coherent Virtual Machine Dynamic Coherent Virtual Machine Distributed Shared Memory Lazy Release Consistency Network of Workstations Pernonal Computer Remote Access Historiy Mechanism Regular Section Descriptor Virtual Parallel Machine

4 4 Sumário Lista de Abreviaturas 3 Lista de Figuras 6 Lista de Tabelas 7 Resumo 8 Abstract 9 1 Introdução Tema Motivação Objetivos Estrutura do Texto 12 2 Suporte de Compilação Suporte de Compilação para o TreadMarks Introdução Compilador e Ambiente de Execução Análise de Compilação Ambiente de Execução Incrementado Suporte de Compilação para o CVM Introdução Compilador e Ambiente de Execução Interface Compilador / Software DSM Reduzindo o Overhead de Sincronização Comparação 22 3 Técnicas para Evitar Falso Compartilhamento Efeitos do Falso Compartilhamento Agregação de Páginas Introdução Agregação Dinâmica Adaptable View Introdução MultiView Várias Granularidades de Compartilhamento Comparação 30 4 Escalonamento de Threads Introdução RAHM O Mecanismo Escalonamento de Threads 33

5 Tratamento de Ping-Pong Correlation Tracking Ambiente de Execução Paralelismo e Balanceamento de Carga Correlação entre Threads Mecanismos de Identificação de Correlações Heurísticas de Mapeamento de Threads Comparação 46 5 Técnicas de Tolerância à Latência Introdução Multithreading Introdução Modelo de Programação Implementação Combinação de Prefetching e Multithreading Prefetching Multithreading Combinando Prefetching e Multithreading Comparação 53 6 Ferramentas de Visualização Introdução PAPP Interface do Usuário Coleta dos Dados Carnival A Ferramenta Análise do Tempo em Espera Análise da Comunicação Visualização de Desempenho com Carnival Comparação 64 7 Conclusão 66 Bibliografia 68

6 6 Lista de Figuras FIGURA 2.1 Modelo de programação 14 FIGURA 2.2 Modelo de paralelização SUIF/CVM 17 FIGURA 2.3 Otimizações identificadas pelo compilador 20 FIGURA 3.1 Várias visões 26 FIGURA 3.2 Vários níveis de compartilhamento 28 FIGURA 4.1 Efeito ping-pong 38 FIGURA 4.2 Curva de speedup 40 FIGURA 4.3 Cálculo da quantidade de trabalho 41 FIGURA 4.4 Bits de correlação por página 44 FIGURA 4.5 Bitmap de acesso por thread 44 FIGURA 5.1 Diferentes overheads de uma requisição remota 48 FIGURA 6.1 Janela de Visualização da PAPP 57 FIGURA 6.2 Legenda de cores da PAPP 57 FIGURA 6.3 Análise de um intervalo específico 58 FIGURA 6.4 Janela de visualização do Carnival 63

7 7 Lista de Tabelas TABELA 6.1 Overheads identificados 59

8 8 Resumo Este trabalho apresenta um estudo comparativo de técnicas que podem ser utilizadas para melhorar o desempenho de sistemas de memória compartilhada distribuída (DSM). Os sistemas DSM permitem a integração da escalabilidade das arquiteturas de memória distribuída com a maior facilidade de programação do paradigma de memória compartilhada. No entanto, o desempenho alcançado pelos sistemas DSM é normalmente menor do que o alcançado com bibliotecas de troca de mensagens. O objetivo central deste trabalho é apresentar técnicas que procuram aproximar o desempenho alcançado pelos sistemas DSM ao das bibliotecas de troca de mensagens. A utilização de um suporte de compilação procura melhorar o desempenho através da inclusão no código fonte de primitivas que informam antecipadamente ao ambiente de execução sobre ações futuras. As técnicas que baseiam-se na mudança dinâmica do tamanho da unidade de coerência de acordo com o comportamento dos dados compartilhados almeja evitar o falso compartilhamento. O escalonamento de threads preocupa-se com a distribuição de threads para nodos buscando a localidade dos acessos à memória. Técnicas de tolerância à latência, como prefetching e multithreading, tentam reduzir o tempo que o processador fica sem trabalho útil a realizar. As ferramentas de visualização permitem ao programador observar o comportamento da execução, identificando os pontos onde existem anomalias. Palavras-chave: memória compartilhada distribuída, sistemas distribuídos.

9 9 Abstract This work presents a comparative study of techniques that can be used to improve the performance of distributed shared memory systems (DSM). DSM systems allows the integration of distributed memory architectures scalability with largest facilities of shared memory programming paradigm. However, the performance reached by the DSM systems is usually smaller than reached with message passing libraries. This work main goal is to present techniques that close the performance of DSM systems with the performance of message passing libraries. The use of a compilation support tries to improve the performance adding calls in the source code that inform to run-time about future actions. The techniques based on the dynamic resizing of the coherence unit in agreement with the behavior of the shared data may avoid false sharing. The thread scheduling worries about distributing threads to nodes looking for the locality of the memory accesses. Latency tolerance techniques, as prefetching and multithreading, try to reduce the time in which the processor is without useful work to accomplish. The visualization tools allow the programmer to observe the execution behavior, identifying the points where anomalies exist. Keywords: distributed shared memory, distributed systems

10 10 1 Introdução 1.1 Tema O tema deste trabalho é o estudo de técnicas que procuram melhorar o desempenho de sistemas de Memória Compartilhada Distribuída (DSM Distributed Shared Memory). 1.2 Motivação Nos últimos anos tem crescido o interesse por sistemas de memória compartilhada distribuída. Estes sistemas permitem a integração da escalabilidade das arquiteturas de memória distribuída com a maior facilidade de programação do paradigma de memória compartilhada. Um sistema DSM oferece a abstração de um espaço de endereçamento lógico, a que todos os processadores de uma arquitetura distribuída têm acesso, apesar de, fisicamente, a memória ser local a cada um deles. Implementado tanto em software como em hardware, os sistemas DSM controlam a distribuição física dos dados, oferecendo ao programador acesso transparente à memória virtual compartilhada. Portanto, o objetivo principal dos mecanismos de DSM é ocultar a comunicação do programador e fornecer um modelo de programação baseado em dados compartilhados ao invés de troca de mensagens. Além disso, aproveitam a escalabilidade e a relação custo/eficiência inerentes aos sistemas de memória distribuída. No que diz respeito ao software paralelo, em geral, o programador deve preocupar-se em estabelecer a interação entre os processos paralelos. Os dois principais paradigmas de programação paralela são troca de mensagens e memória compartilhada. A programação no paradigma de memória compartilhada é considerada mais simples, pois evita que o programador preocupe-se com a comunicação entre processos, através de troca explícita de mensagens. No paradigma de troca de mensagens a comunicação é realizada através de primitivas que explicitamente controlam o particionamento e o deslocamento dos dados. Os sistemas DSM permitem que aplicações desenvolvidas para arquiteturas de memória compartilhada possam ser modificadas de forma relativamente fácil para executarem em memória distribuída. Além disso, a conversão de aplicações seqüenciais para o modelo de memória compartilhada é mais natural do que o seu desenvolvimento com troca de mensagens. No entanto, o desempenho alcançado por estas aplicações em sistemas DSM normalmente é menor do que o desempenho alcançado com bibliotecas de troca de mensagens. Isso deve-se principalmente ao overhead adicionado pelo sistema DSM para localizar e buscar os dados e para manter a consistência entre eles. A característica dos sistemas DSM de fornecer uma interface transparente e um ambiente de programação conveniente para aplicações paralelas e distribuídas tem feito o assunto foco de numerosas pesquisas nos últimos anos. Atualmente, as pesquisas realizadas nesta área estão voltadas para o desenvolvimento de técnicas que minimizem o tempo de acesso aos dados compartilhados e os overheads gerados pelo ambiente de

11 11 execução. Neste trabalho são abordados vários mecanismos que têm sido desenvolvidos para superar a diferença de desempenho entre as aplicações que executam em sistemas DSM e com bibliotecas de troca de mensagens, sem exigir muito envolvimento do programador. Os sistemas DSM implementam a abstração da memória compartilhada através do ambiente de execução. Com o auxílio de técnicas de análise estática, pode ser possível identificar o comportamento de parte dos acessos à memória. O código fonte da aplicação pode ser alterado com diretivas que informem ao ambiente de execução sobre o comportamento futuro dos acessos à memória, evitando assim que os dados sejam buscados sob-demanda. O problema de falso compartilhamento [ARA 99] e [PRO 98] causa comunicação desnecessária. A comunicação em sistemas fracamente acoplados é uma questão crítica. Esse problema pode ser reduzido se for possível adaptar dinamicamente o tamanho da unidade de coerência (normalmente a página da memória virtual) às necessidades da aplicação. O escalonamento de threads em sistemas DSM tem um desafio adicional, o de procurar manter a localidade das threads em relação à distribuição das páginas da memória compartilhada pelas memórias locais. Para isso deve ser considerado o comportamento dos acessos as páginas de memória pelas threads. O escalonador deve decidir por alocar no mesmo processador threads que acessem o mesmo conjunto de dados, diminuindo assim o número de falhas remotas de página. No momento que requisições remotas são realizadas, o processador que realizou a requisição fica sem trabalho útil a realizar. As técnicas de tolerância a latência procuram fazer com que o processador fique ocupado durante o tempo no qual a requisição é resolvida. Entender o desempenho de uma aplicação que executa em uma arquitetura distribuída é uma tarefa árdua. Existem muitas variáveis dinâmicas que podem levar a um determinado comportamento. As ferramentas de visualização propõem-se a fornecer meios para que o programador possa entender o desempenho que suas aplicações DSM obtiveram. 1.3 Objetivos O objetivo geral deste trabalho consiste no estudo de técnicas que melhorem o desempenho de sistemas DSM. Como objetivos específicos podem ser destacados: 1 Estudar propostas de suporte de compilação; 2 Estudar propostas que adaptem dinamicamente a granularidade da unidade de coerência às necessidades da aplicação; 3 Estudar escalonamento de threads; 4 Estudar técnicas de tolerância à latência; 5 Estudar ferramentas de visualização; 6 Comparar as características das técnicas estudadas;

12 12 7 Criar um texto com os resultados do trabalho. 1.4 Estrutura do Texto O capítulo dois aborda mecanismos de suporte a compilação. No capítulo três são apresentadas técnicas que adaptam a granularidade da unidade de coerência às necessidades da aplicação. O capítulo quatro trata de questões relativas ao escalonamento de threads. No capítulo cinco são estudos mecanismos de prefetching e multithreading para tolerar a latência de memória e a latência de sincronização. O capítulo seis discorre sobre ferramentas de visualização. Finalmente, o capítulo sete conclui o trabalho.

13 13 2 Suporte de Compilação Realizando uma análise estática do código fonte de uma aplicação pode ser possível determinar o comportamento dos acessos à memória compartilhada. O ambiente de execução aproveita as modificações geradas pelo compilador para realizar otimizações visando um melhor desempenho. A seção 2.1 apresenta uma proposta de integrar um suporte de compilação para o sistema TreadMarks. Na seção 2.2 é abordado o suporte de compilação para o sistema CVM. A seção 2.3 compara as propostas apresentadas. 2.1 Suporte de Compilação para o TreadMarks O objetivo da proposta de Dwarkadas et al. [DWA 96] e [DWA 99] é desenvolver um sistema DSM que forneça ao usuário um modelo de programação baseado em memória compartilhada, mas que seja capaz de explorar as características do hardware que funciona com troca de mensagens Introdução Nos sistemas DSM os acessos à memória compartilhada são detectados dinamicamente pelo ambiente de execução, que envia mensagens de acordo com o modelo de consistência de memória implementado. Os compiladores paralelos para máquinas de memória distribuída realizam uma análise estática do padrão de acessos à memória compartilhada para gerar um programa com troca de mensagens. Sistemas baseados em compilação oferecem melhor desempenho para programas com padrão regular de acessos, pois evitam muito do overhead ocasionado pelo ambiente de execução. Entretanto, não são todos os tipos de aplicações que permitem que uma análise precisa seja realizada pelo compilador [DWA 99]. Por isso, a proposta de integrar um suporte de compilação a um sistema DSM. Nos sistemas que utilizam o ambiente de execução combinado com o compilador, o ambiente de execução mantém sua função original de detectar os acessos à memória compartilhada e enviar mensagens, se necessário, para manter a consistência. O compilador, no entanto, tem uma função diferente da que possui em um sistema baseado em compilação. Quando a análise obtém sucesso o compilador não gera um programa com troca de mensagens. Ao invés disso, gera um programa de memória compartilhada acrescido de chamadas para o ambiente de execução, que descrevem o padrão de acessos aos dados calculados pelo compilador. As informações sobre o comportamento futuro dos acessos à memória evitam assim a necessidade do ambiente de execução detectar os acessos à memória e buscá-los sob-demanda. Além disso, permitem a agregação de várias requisições de dados em uma única troca de mensagem. Um aspecto interessante desse sistema combinado é suportar eficientemente programas com acessos regulares, com acessos regulares e irregulares e somente com acessos irregulares. Se os acessos são completamente regulares, o compilador pode analisá-los e o código resultante é tão eficiente quanto código gerado pelo programador ou por compiladores para troca de mensagens [DWA 99]. Se a análise estática não obtém sucesso, o programa não é modificado, sendo executado pelo ambiente de

14 14 execução sem o suporte de compilação. Se a análise de compilação obtém sucesso apenas parcial (foi possível analisar algumas fases ou algumas estruturas de dados do programa, mas não todas), então aquelas fases ou estruturas de dados para as quais a análise obteve sucesso serão beneficiadas com execução otimizada. A figura 2.1 apresenta o modelo hierárquico de programação. O programa de memória compartilhada é submetido a um compilador, que analisa o código fonte da aplicação e insere no código diretivas que serão utilizadas pelo ambiente de execução de DSM. Programação no Paradigma de Memória Compartilhada Compilador Ambiente de DSM Arquitetura Distribuída FIGURA 2.1 Modelo de programação Compilador e Ambiente de Execução O ambiente de programação paralela PARASCOPE [KEN 93] foi estendido para analisar e transformar programas paralelos. O compilador utiliza Análise de Seções Regulares (Regular Section Analysis) [HAV91] para determinar o padrão de acesso aos dados compartilhados entre pontos de sincronização. São criados os Descritores de Seção Regular (RSD Regular Section Descriptors), usados para identificar oportunidades para agregação de comunicação, redução do overhead de consistência, união das mensagens de sincronização e de dados, e substituição de sincronização barreira por sincronização ponto-a-ponto. Também foi estendida a interface para o sistema TreadMarks para que este possa suportar as primitivas geradas pela análise de compilação [DWA 96] e [LU 97]. TreadMarks é um sistema DSM implementado em nível de software desenvolvido na Rice University [AMZ 96] e [KEL 94]. TreadMarks fornece primitivas de programação distribuída explícita similares as utilizadas em máquinas de memória compartilhada. O TreadMarks utiliza o modelo de Consistência de Liberação Preguiçosa de memória (LRC Lazy Release Consistency) [KEL 98], exigindo do programador a utilização explícita das primitivas de sincronização do sistema para garantir que mudanças nos dados compartilhados tornar-se-ão visíveis. O hardware de memória virtual é utilizado para detectar acessos à memória compartilhada. Conseqüentemente, a unidade de coerência [ARA 99] é a página de memória virtual. O protocolo de vários escritores reduz os efeitos de falso compartilhamento decorrentes do grande tamanho da unidade de coerência. Com este protocolo, dois ou mais processadores podem simultaneamente modificar sua própria

15 15 cópia da página compartilhada. As modificações são reunidas na próxima operação de sincronização, de acordo com o modelo de consistência de memória. As atualizações são realizadas com a utilização dos diffs. O diff é uma estrutura de dados criada a partir da comparação realizada entre a página modificada com uma cópia inalterada da página (chamada twin). O modelo de consistência de liberação preguiçosa permite que a propagação das modificações seja postergada até o momento da próxima operação de obtenção. Neste momento, o processador que está realizando a obtenção recebe os avisos de escrita (write notices) sobre as páginas que foram modificadas. Os avisos de escrita são aplicados causando a invalidação das páginas correspondentes. Como resultado, na próxima vez que a página for acessada irá ocorrer uma falha de página, sendo que será necessário requisitar as modificações realizadas na página para torná-la válida. Os avisos de escrita informam ao processador de onde devem ser requisitados os diffs para serem aplicados à página Análise de Compilação O intuito da análise de compilação é fornecer informações sobre o padrão dos acessos à memória para o ambiente de execução. Para isso, os comandos do código fonte da aplicação são analisados para determinar como e quais os dados são acessados. As informações coletadas pelo compilador são colocadas junto das operações de sincronização. Isso porque são nesses pontos da execução do programa distribuído que são determinados quais dados modificados em outros processadores precisam ser refletidos localmente para a memória tornar-se consistente. Portanto, é analisado o segmento de código entre duas operações consecutivas de sincronização e fornecida a descrição para o ambiente de execução na operação de sincronização inicial do segmento. A principal ferramenta para realizar a análise do comportamento dos acessos à memória é a análise de seções regulares. A partir dessa análise são criados os descritores de seções regulares que são utilizados como uma representação concisa sobre os acessos a vetores do próximo laço. Os RSDs representam os dados acessados como expressões lineares das extremidades superior e inferior do laço. Quando estão envolvidos vetores indiretos, os RSDs podem ser usados recursivamente, representando uma seção regular para o vetor indireto em questão. Contudo, o padrão de acessos que podem ser analisados são limitados às expressões lineares dos índices dos laços. Além das posições de memória acessadas, os RSDs também contém uma tag indicando, entre outras coisas, se os acessos são de leitura, de escrita, ou de leitura e escrita. Mais detalhes sobre o algoritmo de análise de compilação podem ser obtidos em [DWA 99] Ambiente de Execução Incrementado O sistema TreadMarks foi incrementado para suportar as duas primitivas que são incluídas pelo compilador para auxiliar o ambiente de execução: Validate e Push. Validate e sua variante Validate_w_sysnc suportam comunicação agregada. Permitem que sejam requisitados múltiplos diffs com uma única troca de mensagem. Além disso, Validate_w_sysnc, anexa as requisições por diffs na

16 16 próxima mensagem de sincronização. A utilização das primitivas Validate fornecem um conjunto de descritores de acessos correspondendo aos RSDs obtidos na análise (seção 2.1.3). O ambiente de execução usa estes descritores para determinar um conjunto de páginas inválidas que serão acessadas. Sendo assim, dados das páginas inválidas podem ser requisitados em uma única troca de mensagem por processador. A primitiva Validate possui como argumento vários descritores de acesso. Um descritor de acesso consiste do RSD da seção, do tipo de acesso e do schedule_number. O RSD contém o endereço base, a dimensão ou o tamanho do vetor e uma indicação informando se o acesso é direto ou indireto. Se o acesso for direto, são incluídas informações sobre a posição inferior e superior do vetor e o passo. Se for indireto, é armazenado o RSD para o vetor indireto. O tipo de acesso pode ser read, write ou read&write. Vetores compartilhados acessados diretamente ao longo de cada dimensão possuem dois tipos adicionais de acessos: write_all e read&write_all, os quais são usados quando a análise de compilação puder determinar que todos os elementos da seção anterior serão escritos. O ambiente de execução utiliza estas informações para reduzir o overhead de manutenção da consistência eliminando a criação twins e diffs para tais páginas (uma vez que todos os dados compartilhados foram modificados, não há benefício na utilização de diffs). Além disso, já que os acessos marcados como write_all não são lidos, o ambiente de execução pode evitar a comunicação para tornar estes dados consistentes antes da escrita. O schedule_number é um identificador para o escalonador ou o conjunto de páginas compartilhadas acessadas na seção. Para acesso indiretos, este conjunto é recalculado. O ambiente de execução usa o mecanismo de proteção de memória virtual para detectar quaisquer modificações nos vetores indiretos. Isso elimina a necessidade de conhecimento em tempo de compilação de quando o vetor indireto será modificado. A primitiva Validate_w_sync é similar a Validate, exceto que a requisição por dados é anexada na mensagem de sincronização. A primitiva Push é utilizada para substituir sincronização de barreira e para enviar dados para um processador antes de serem requisitados. Os argumentos do Push são as seções de dados que são escritas por processadores distintos antes da barreira e lidas após a barreira. Um Push em um processador P calcula a intersecção das seções escritas por P com aquelas que serão lidas por outro processador, e envia os dados da intersecção para o processador correspondente. P então calcula a intersecção das seções escritas por outros processadores com as seções que serão lidas por P, e fixa um receive para estes dados. Diferente do Validate, que não altera a consistência de memória (a menos que seja especificado um write_all ou um read&write_all), o Push garante consistência somente para as seções de dados recebidas através do Push. O resto do espaço de endereçamento compartilhado pode estar inconsistente até a próxima barreira. Portanto, o Push será utilizado somente quando o compilador tiver determinado com certeza que as regiões de dados compartilhadas que ficarão inconsistentes não serão lidas. Com unidades de consistência grandes, a diretiva Push poderá ser útil por eliminar comunicação de dados provenientes de falso compartilhamento. Push fornece as facilidades de uma interface de troca de mensagens dentro de um ambiente de memória compartilhada. Contudo, diferente das propostas puramente baseadas em compilação, Push pode ser utilizado seletivamente por restringir sua utilização para

17 17 fases do programa onde é possível uma análise completa. O ambiente de execução garante que todo o espaço de endereçamento estará consistente na barreira que termina a fase. O compilador transforma o código fonte do programa usando essas duas primitivas. Primeiro, o compilador tenta encontrar oportunidades para utilizar a primitiva Push, pois esta resulta em maiores ganhos de desempenho. Posteriormente, tenta encontrar oportunidades para usar o Validate. 2.2 Suporte de Compilação para o CVM O suporte de compilação para o CVM permite que aplicações seqüenciais sejam portadas para arquiteturas distribuídas com o auxílio de um compilador paralelizador em um ambiente de execução baseado em memória compartilhada distribuída Introdução A programação para máquinas que utilizam troca de mensagens (arquitetura distribuída) pode ser realizada a partir de construções explícitas (grande esforço de programação) ou por compiladores paralelizadores (aplicabilidade limitada, pois não conseguem gerar código otimizado para determinados tipos de aplicações). Uma forma de eliminar estas restrições é combinar um compilador paralelizador para memória compartilhada com um sistema DSM implementado em nível de software. A proposta de Keleher e Tseng [KEL 97] combina o compilador paralelizador SUIF [HAL 95] e o software DSM CVM (Coherent Virtual Machine Máquina Virtual Coerente) [KEL 96]. O SUIF paraleliza automaticamente aplicações seqüenciais, além de fornecer uma análise sofisticada do código. O programa é compilado para executar em CVM, o qual abstrai os detalhes da arquitetura distribuída que requer troca de mensagens (figura 2.2). Programa Seqüencial Compilador Paralelizador Ambiente de DSM Arquitetura Distribuída FIGURA 2.2 Modelo de paralelização SUIF/CVM As inovações do sistema incluem técnicas de compilação que: (i) combinam mensagens de dados da aplicação e de sincronização com a invocação de tarefas paralelas; (ii) emprega rotinas para avaliação de operações reduzidas; (iii) seleciona um

18 18 protocolo de atualização híbrido que envia dados antecipadamente (flushing) realizando atualizações nas barreiras. Atualizações antecipadas (flushing updates) eliminam várias falhas de memória não locais, aumentando assim o desempenho. Para complementar a proposta de Keleher e Tseng, Han et al. [HAN 97] e [HAN 98] propuseram algoritmos para eliminação de sincronização de barreira a partir da análise de compilação. As técnicas de compilação para reduzir o overhead de sincronização e desbalanceamento de carga foram implementados com os objetivos de: Realizar uma análise de comunicação através de análise de subscrição local (local subscript); Explorar consistência de liberação preguiçosa para eliminar barreiras guardando apenas anti-dependência; Substituir barreiras (que envolvem todos os processadores) por operações de sincronização que envolvam apenas os mais próximos. Esses objetivos são melhor explicados na seção (subseções A, B e C, respectivamente). Sendo que maiores detalhes podem ser obtidos em [HAN 97] e [HAN 98] Compilador e Ambiente de Execução O objetivo dos compiladores paralelizadores é identificar laços ou tarefas paralelas em programas seqüenciais. Isso é realizado utilizando análise das dependências e do fluxo dos dados combinada com transformações no programa. Uma vez que porções paralelas do programa são identificados, esta porção é colocada no corpo de um procedimento, o qual pode ser invocado por todos os processadores em paralelo. SUIF é um compilador paralelizador e otimizador desenvolvido em Stanford [HAL 95]. O código gerado pelo SUIF assume a semântica de memória compartilhada. Como a maioria dos compiladores paralelizadores de memória compartilhada, o SUIF emprega tipicamente o modelo de programação fork-join, onde uma thread central executa as porções seqüenciais do programa, atribuindo (forking) computações para as threads trabalhadoras. Após completar sua porção do laço paralelo, a thread central espera para que todas as threads trabalhadoras completem (join) seu trabalho para continuar a execução. Esse modelo impõe dois eventos de sincronização por laço paralelo. Primeiro, uma barreira é inserida antes do corpo do laço para acordar as threads trabalhadoras disponíveis e fornecer aos trabalhadores o endereço da computação a ser executada e os parâmetros se necessário. Uma barreira é inserida após o corpo do laço para garantir que todas as threads trabalhadoras tenham completado e a thread central possa continuar. O sistema DSM usado neste trabalho é o CVM, um software DSM que suporta vários protocolos e modelos de consistência de memória [KEL 97]. O sistema foi escrito em C++ e fornece um conjunto de classes que implementam um protocolo genérico, threads e comunicação. A comunicação é baseada em um protocolo ponto-aponto construído sobre UDP.

19 19 O CVM utiliza como modelo de consistência de memória o modelo de consistência de liberação preguiçosa em conjunto com um protocolo de múltiplos escritores. O funcionamento do protocolo de múltiplos escritores em conjunto com o modelo de consistência de liberação preguiçosa foram brevemente descritos na seção 2.1.2, sendo que para análises mais detalhadas é possível consultar [ARA 99] e [KEL 97] Interface Compilador / Software DSM Parece intuitivo que compiladores que geram código para arquiteturas de memória compartilhada e sistemas DSM complementam-se. No entanto, é preciso criar uma interface entre o compilador (SUIF) e o sistema DSM (CVM). A forma encontrada para criar a interface foi modificar o SUIF para gerar código para o CVM fornecendo uma interface baseada nas primitivas do CVM para criação de threads e sincronização. Uma das características dos softwares DSM é utilizar um protocolo de invalidação para manter a coerência. No entanto, este protocolo é ineficiente para padrão de comunicação produtor-consumidor, particularmente se houverem vários consumidores. Por exemplo, se p produz o dado X consumido pelo processador q. Se X for alterado, p invalida a cópia de X mantida por q. Usando LRC, a mensagem de invalidação é anexada a mensagem de sincronização de barreira, de modo que o overhead de invalidação é baixo. Entretanto, quando q tentar consumir X, irá ocorrer uma falha de página, sendo necessário requisitar a cópia válida de p. Se vários processadores consumirem X, o produtor p irá receber um grande número de requisições. Para eliminar esses efeitos, considera-se os lugares onde relações produtorconsumidor ocorrem no programa. Uma primeira solução para o problema é anexar junto com a mensagem de sincronização as atualizações que o compilador pode identificar que serão necessárias no próximo laço. Um processador central controla o início da fase paralela, enviando uma mensagem de broadcast para todas as threads trabalhadoras. Nesta mensagem de sincronização pode ser adicionado aquelas variáveis identificadas pelo compilador que possuem o comportamento de produtor-consumidor, fazendo com que sejam automaticamente atualizadas com novos valores. Outra oportunidade de otimização é utilizar um suporte para reduções. Reduções são ações comutativas (p.e., soma, máximo) identificadas pelo compilador que são executadas em dados locais e acumuladas em posições globais. CVM suporta reduções copiando o operador de redução e o dado de redução local em um registro de redução local. Todos os registros são adicionados na próxima mensagem de barreira, atualizando o valor do dado global compartilhado. Como vantagens de centralizar o processo de redução, tem-se eliminada a sincronização de exclusão mútua, uma vez que a thread central é que vai realizar todas as reduções. Além disso, já que as reduções são executadas na memória compartilhada, centralizando o processo na thread central evita que as páginas tenham que ser requisitadas em todas as memórias locais e que tenham que ser criados diffs em cada uma dessas máquinas. CVM controlam cópias das páginas compartilhadas utilizando copysets, que especificam quais processadores possuem na sua memória local determinada página. Esta informação pode ser utilizada para melhorar o desempenho, aplicando seletivamente um protocolo híbrido, ora utilizando invalidação ora utilizando atualização. A coerência das páginas que são normalmente comunicadas entre o mesmo

20 20 conjunto de processadores, podem ser atualizadas antecipadamente ao invés de atualizadas após escritas, eliminando falhas de acesso. A coerência para as outras páginas é mantida com o protocolo de invalidação para evitar comunicação excessiva. Na primeira iteração de um laço, os copysets de cada página estão vazios e falhas de acesso ocorrerão. Na segunda iteração, a informação de copyset indica os processadores que necessitam cada página, refletindo um padrão estável de compartilhamento. Com a utilização do protocolo flush, falhas de acesso podem ser eliminadas atualizando os processadores (através do copyset da página) com os dados necessários antes de serem utilizados Reduzindo o Overhead de Sincronização O modelo fork-join impõe dois eventos de sincronização por laço (figura 2.3(A)). As operações de sincronização podem degradar significativamente o desempenho. Operações de barreira causam overhead no ambiente de execução e exigem que todos os processadores esperem por um processador mais lento, desperdiçando poder computacional que poderia estar sendo utilizado por processamento. O overhead de sincronização de barreira é mais significante quando o número de processadores aumenta, já que o intervalo entre barreiras diminui devido à computação ter sido particionada entre mais processadores. A eliminação de barreiras por compilação é possível a partir da observação que sincronização entre um par de processadores é necessária somente se eles comunicam dados compartilhados [HAN 97] e [HAN 98]. Se a análise de dependência de dados puder mostrar que dois laços adjacentes acessam conjuntos disjuntos de dados, então a barreira sincronizando ambos pode ser eliminada, como na figura 2.3(B). FIGURA 2.3 Otimizações identificadas pelo compilador Se dois laços acessam os mesmos dados, mas a análise da comunicação prova que dados remotos não são acessados, baseado em informações sobre a decomposição dos dados e da computação, a barreira pode ser eliminada, como na

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

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

Roteiro. Sistemas Distribuídos. Sistemas de Arquivos Distribuídos. Sistema de arquivos distribuídos

Roteiro. Sistemas Distribuídos. Sistemas de Arquivos Distribuídos. Sistema de arquivos distribuídos Sistemas Distribuídos Sistemas de Arquivos Distribuídos Roteiro Sistema de arquivos distribuídos Requisitos Arquivos e diretórios Compartilhamento Cache Replicação Estudo de caso: NFS e AFS Sistemas Distribuídos

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

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

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

Leia mais

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

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

Capítulo 2 Processos e Threads Prof. Fernando Freitas

Capítulo 2 Processos e Threads Prof. Fernando Freitas slide 1 Capítulo 2 Processos e Threads Prof. Fernando Freitas Material adaptado de: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3ª edição. Disponível em: http://www.prenhall.com/tanenbaum_br slide

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

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

Estudo de Caso 2: Windows Vista

Estudo de Caso 2: Windows Vista Faculdades Integradas de Mineiros Curso de Sistemas de Informação Sistemas Operacionais II Estudo de Caso 2: Windows Vista Grupo 4 Helder / Wagner / Frantyeis Junho/2010 O Windows usa uma estratégia Just-In-Time

Leia mais

Sistema de Arquivos Distribuídos

Sistema de Arquivos Distribuídos Sistema de Arquivos Distribuídos Sistema de Arquivos Distribuídos A interface cliente para um sistema de arquivos é composta por um conjunto de primitivas e operações em arquivos (criar, apagar, ler, escrever)

Leia mais

Sistemas Operacionais

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

Leia mais

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

Organização de Computadores 2005/2006 Processamento Paralelo

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

Leia mais

3. Comunicação em Sistemas Distribuídos

3. Comunicação em Sistemas Distribuídos 3. Comunicação em 3.1.Troca de mensagens As mensagens são objetos de dados cuja estrutura e aplicação são definidas pelas próprias aplicações que a usarão. Sendo a troca de mensagens feita através de primitivas

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

Arquitetura de Computadores. Sistemas Operacionais IV

Arquitetura de Computadores. Sistemas Operacionais IV Arquitetura de Computadores Sistemas Operacionais IV Introdução Multiprogramação implica em manter-se vários processos na memória. Memória necessita ser alocada de forma eficiente para permitir o máximo

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

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

SISTEMA DE ARQUIVOS DISTRIBUÍDOS

SISTEMA DE ARQUIVOS DISTRIBUÍDOS SISTEMA DE ARQUIVOS DISTRIBUÍDOS Sistemas Distribuídos 331 Arquivo: objeto que existe após criação, é imune a falhas temporárias e é persistente até que seja destruído Propósito de arquivos: armazenamento

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

Características Básicas de Sistemas Distribuídos

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

Leia mais

Definindo melhor alguns conceitos

Definindo melhor alguns conceitos Definindo melhor alguns conceitos Processamento Paralelo: processamento de informação concorrente que pertencem a um ou mais processos que resolvem um único problema. Processamento Distribuído: processamento

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

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

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

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

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

Leia mais

Sistemas Operacionais

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

Leia mais

Sistemas Operacionais

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

Leia mais

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

Arquitetura de Computadores II

Arquitetura de Computadores II Universidade Federal do Rio de Janeiro Informática DCC/IM Arquitetura de Computadores II Sistemas de Troca de Mensagens O Sistema de Comunicação provê tipicamente os seguintes serviços para as aplicações:

Leia mais

Remote Procedure Call. Programação distribuída e paralela (C. Geyer) RPC 1

Remote Procedure Call. Programação distribuída e paralela (C. Geyer) RPC 1 Remote Procedure Call Programação distribuída e paralela (C. Geyer) RPC 1 Autoria Autores C. Geyer Local II-UFRGS Versão V11.4 2014-2 Disciplinas SOII Programação distribuída e paralela (C. Geyer) RPC

Leia mais

BANCO DE DADOS EM MEMÓRIA SOBRE CLUSTERS DE COMPUTADORES

BANCO DE DADOS EM MEMÓRIA SOBRE CLUSTERS DE COMPUTADORES BANCO DE DADOS EM MEMÓRIA SOBRE CLUSTERS DE COMPUTADORES Guilherme Dal Bianco, Jeison Luiz Ferreira Vieira, Nelson Duarte Filho Fundação Universidade Federal do Rio Grande FURG Rio Grande - RS gui_bianco@yahoo.com.br,

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

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

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

Leia mais

Usuários. Aplicativos e programas dos usuários. Kernel gerenciamento de processos, memória, sistema de arquivos, I/O, etc.

Usuários. Aplicativos e programas dos usuários. Kernel gerenciamento de processos, memória, sistema de arquivos, I/O, etc. 1 1.0 Kernel O kernel (núcleo) representa o coração do Sistema Operacional. Atribuições do kernel: - gerenciamento dos arquivos em disco; - inicializar programas e executá-los; - alocar e gerenciar memória

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

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

Nível 3 Sistema Operacional

Nível 3 Sistema Operacional Nível 3 Sistema Operacional Universidade Tuiuti do Paraná UTP Faculdade de Ciências Exatas - FACET Tecnologia de Análise e Desenvolvimento de Sistemas Organização de Computadores Prof. André Luiz 1 Nível

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 4 SUPORTE AO SISTEMA OPERACIONAL Prof. Luiz Gustavo A. Martins Sistema Operacional (S.O.) Programa responsável por: Gerenciar os recursos do computador. Controlar a execução

Leia mais

Arquitetura de Software e Atributos de Qualidade

Arquitetura de Software e Atributos de Qualidade Arquitetura de Software e Atributos de Qualidade Jair C Leite Requisitos e atributos de qualidade Requisitos Características, atributos, propriedades e restrições associadas ao software. Requisitos funcionais

Leia mais

Introdução. Nível do Sistema Operacional. Introdução. Um Sistema Operacional... Introdução a Sistemas Operacionais

Introdução. Nível do Sistema Operacional. Introdução. Um Sistema Operacional... Introdução a Sistemas Operacionais Introdução Nível do Sistema Operacional (Aula 14) Introdução a Sistemas Operacionais Hardware Provê os recursos básicos de computação (CPU, memória, E/S,etc.) Programas (aplicações) Definem as maneiras

Leia mais

Fundamentos de Sistemas Computacionais Introdução

Fundamentos de Sistemas Computacionais Introdução Fundamentos de Sistemas Computacionais Introdução Prof. Eduardo Alchieri Sistema Computacional Hardware Software Usuários Um ou mais processadores, memória, discos, impressoras, teclado, mouse, monitor,

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

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

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

SISTEMA DE BANCO DE DADOS. Banco e Modelagem de dados

SISTEMA DE BANCO DE DADOS. Banco e Modelagem de dados SISTEMA DE BANCO DE DADOS Banco e Modelagem de dados Sumário Conceitos/Autores chave... 3 1. Introdução... 4 2. Arquiteturas de um Sistema Gerenciador... 5 3. Componentes de um Sistema... 8 4. Vantagens

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

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

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

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

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

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

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

Leia mais

Resumo. Introdução Classificação Fases Curiosidades

Resumo. Introdução Classificação Fases Curiosidades Tolerância à falha Resumo Introdução Classificação Fases Curiosidades Introdução Sistemas Tolerantes a Falhas são aqueles que possuem a capacidade de continuar provendo corretamente os seus serviços mesmo

Leia mais

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

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

Leia mais

2 Trabalhos Relacionados

2 Trabalhos Relacionados 2 Trabalhos Relacionados Nesse capítulo, apresentamos os trabalhos relacionados ao GridFS, entrando em mais detalhes sobre os sistemas citados durante a introdução e realizando algumas considerações sobre

Leia mais

Um cluster de servidores de email pode ser usado para servir os emails de uma empresa.

Um cluster de servidores de email pode ser usado para servir os emails de uma empresa. CLUSTERS Pode-se pegar uma certa quantidade de servidores e juntá-los para formar um cluster. O serviço então é distribuído entre esses servidores como se eles fossem uma máquina só. Um cluster de servidores

Leia mais

2 Auto-sintonia de Bancos de Dados e Agentes de Software

2 Auto-sintonia de Bancos de Dados e Agentes de Software 2 Auto-sintonia de Bancos de Dados e Agentes de Software A uso da abordagem de agentes de software 1 pode trazer benefícios a áreas de aplicação em que é necessário construir sistemas autônomos, ou seja,

Leia mais

Sistemas Distribuídos Conceitos HW e SW. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos Conceitos HW e SW. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos Conceitos HW e SW Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Roteiro da Aula Conceitos de Hardware Conceitos de Software Combinações de SW e HW 3 Sistemas Distribuídos

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas Operacionais Um sistema operacional fornece o ambiente no qual os programas são executados. Internamente,

Leia mais

Metas de um Sistema Distribuído

Metas de um Sistema Distribuído Metas de um Sistema Distribuído Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais

Banco de Dados Distribuídos

Banco de Dados Distribuídos A imagem não pode ser exibida. Talvez o computador não tenha memória suficiente para abrir a imagem ou talvez ela esteja corrompida. Reinicie o computador e abra o arquivo novamente. Se ainda assim aparecer

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

Memória compartilhada (shared memory): - o espaço de endereçamento é único; - comunicação através de load e store nos endereços de memória.

Memória compartilhada (shared memory): - o espaço de endereçamento é único; - comunicação através de load e store nos endereços de memória. 4. Arquiteturas ID áquinas ID (ultiple Instruction ultiple Data) são arquiteturas caracterizadas pela execução simultânea de múltiplos fluxos de instruções. Essa capacidade deve-se ao fato de que são construídas

Leia mais

6 Sistema de Gerenciamento de Memória

6 Sistema de Gerenciamento de Memória 6 Sistema de Gerenciamento de Memória Os sistemas de gerenciamento de memória baseiam-se no princípio de que a quantidade de dados necessária para realizar uma operação pode ser completamente armazenada

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

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Engenharia de Software I Informática 2009 Profa. Dra. Itana Gimenes RUP: Artefatos de projeto Modelo de Projeto: Use-Case Realization-projeto

Leia mais

Paralelização de Simuladores de Hardware Descritos em SystemC

Paralelização de Simuladores de Hardware Descritos em SystemC Paralelização de Simuladores de Hardware Descritos em SystemC 18 de maio de 2011 Roteiro Motivação Introdução à SLDL SystemC O Escalonador SystemC Simulação Paralela baseada em Eventos Discretos Suporte

Leia mais

BANCO DE DADOS E BUSINESS INTELIGENCE. C/H: 20 horas (20/02, 25/02, 27/02, 04/03, 06/03)

BANCO DE DADOS E BUSINESS INTELIGENCE. C/H: 20 horas (20/02, 25/02, 27/02, 04/03, 06/03) MBA em Gestão de TI MÓDULO: BANCO DE DADOS E BUSINESS INTELIGENCE C/H: 20 horas (20/02, 25/02, 27/02, 04/03, 06/03) PROFESSOR: Edison Andrade Martins Morais prof@edison.eti.br http://www.edison.eti.br

Leia mais

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS

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

Leia mais

Capítulo 8: Gerenciamento de Memória

Capítulo 8: Gerenciamento de Memória Capítulo 8: Gerenciamento de Memória Sobre a apresentação (About( the slides) Os slides e figuras dessa apresentação foram criados por Silberschatz, Galvin e Gagne em 2005. Esse apresentação foi modificada

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

Sistemas Processadores e Periféricos Aula 9 - Revisão

Sistemas Processadores e Periféricos Aula 9 - Revisão Sistemas Processadores e Periféricos Aula 9 - Revisão Prof. Frank Sill Torres DELT Escola de Engenharia UFMG Adaptado a partir dos Slides de Organização de Computadores 2006/02 do professor Leandro Galvão

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

Os textos nestas caixas foram adicionados pelo Prof. Joubert

Os textos nestas caixas foram adicionados pelo Prof. Joubert William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 4 Memória cache Os textos nestas caixas foram adicionados pelo Prof. Joubert slide 1 Características Localização. Capacidade.

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

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

Leia mais

Infraestrutura de Hardware. Memória Virtual

Infraestrutura de Hardware. Memória Virtual Infraestrutura de Hardware Memória Virtual Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é entendido e executado pelo HW? Qual é a interface

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerenciamento de Memória Norton Trevisan Roman Marcelo Morandini Jó Ueyama Apostila baseada nos trabalhos de Kalinka Castelo Branco, Antônio Carlos Sementille, Paula Prata e nas transparências

Leia mais

Redes de Computadores (PPGI/UFRJ)

Redes de Computadores (PPGI/UFRJ) Redes de Computadores (PPGI/UFRJ) Aula 1: Apresentação do curso e revisão de interface de sockets 03 de março de 2010 1 2 O que é a Internet 3 4 Objetivos e página do curso Objetivos Apresentar a motivação,

Leia mais

Pg. Autoria. Versão atual V10, nov 2008 C. Geyer. Sistemas de Arquivos Distribuídos: DFS. Projeto de. Sistemas de Arquivos Distribuídos (DFS) Súmula

Pg. Autoria. Versão atual V10, nov 2008 C. Geyer. Sistemas de Arquivos Distribuídos: DFS. Projeto de. Sistemas de Arquivos Distribuídos (DFS) Súmula Autoria 1 versão Alunos de disciplina do PPGC Sistemas de Arquivos Distribuídos: DFS Versão atual V10, nov 2008 C. Geyer Sistemas Distribuidos Sistema de Arquivos Distribuídos 1 Sistemas Distribuidos Sistema

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas de Entrada/Saída Sistema de Entrada/Saída - Redundant Array of Independent Disks 0 - Matriz de Discos sem Tolerância a Falhas 1 - Espelhamento 2 - Código de Hamming 3 - Transferência Paralela

Leia mais

Sistemas Operacionais. Escalonamento de Processo. Prof. Dr. Márcio Andrey Teixeira

Sistemas Operacionais. Escalonamento de Processo. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais Escalonamento de Processo Prof. Dr. Márcio Andrey Teixeira Quando um computador é multiprogramado, ele muitas vezes tem variados processos que competem pela CPU ao mesmo tempo; Essa

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

Sistema Operacional Correção - Exercício de Revisão

Sistema Operacional Correção - Exercício de Revisão Prof. Kleber Rovai 1º TSI 22/03/2012 Sistema Operacional Correção - Exercício de Revisão 1. Como seria utilizar um computador sem um sistema operacional? Quais são suas duas principais funções? Não funcionaria.

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 Consistência e Replicação Capítulo 7 Agenda Razões para Replicação Replicação como técnica de escalabilidade Modelos de Consistência centrados

Leia mais

Introdução a Threads Java

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

Leia mais

Sistemas Distribuídos Comunicação. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos Comunicação. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos Comunicação Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Roteiro da Aula Comunicação entre Processos Protocolos Modelo OSI Modelo Cliente Servidor 3 Comunicação entre

Leia mais

Componentes internos de Um SGBD

Componentes internos de Um SGBD Arquitetura SBGD Gerenciamento de Processos joao@uefs.br Departamento de Ciências Exatas Universidade Estadual de Feira de Santana e sistemas paralelos 1 e sistemas paralelos Componentes internos de Um

Leia mais

Desenvolvimento de um Simulador de Gerenciamento de Memória

Desenvolvimento de um Simulador de Gerenciamento de Memória Desenvolvimento de um Simulador de Gerenciamento de Memória Ricardo Mendes do Nascimento. Ciência da Computação Universidade Regional Integrada do Alto Uruguai e das Missões (URI) Santo Ângelo RS Brasil

Leia mais

S.O.: Conceitos Básicos

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

Leia mais

Capítulo 2 Processos e Threads. 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2.

Capítulo 2 Processos e Threads. 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2. Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2.5 Escalonamento 1 Processos O Modelo de Processo Multiprogramação de quatro programas

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 16: Entrada e Saída: Estudo de Caso Diego Passos Última Aula Software de Entrada e Saída. Subsistema de E/S. Conjunto de camadas de abstração para realização de

Leia mais

1 UML (UNIFIED MODELING LANGUAGE)

1 UML (UNIFIED MODELING LANGUAGE) 1 UML (UNIFIED MODELING LANGUAGE) Segundo Tonsig (2003), para conseguir desenvolver um software capaz de satisfazer as necessidades de seus usuários, com qualidade, por intermédio de uma arquitetura sólida

Leia mais

Programação distribuída e paralela (C. Geyer) RPC 1

Programação distribuída e paralela (C. Geyer) RPC 1 Programação distribuída e paralela (C. Geyer) RPC 1 Autores C. Geyer Local II-UFRGS Versão v6 2008-2 Disciplinas SOII Programação distribuída e paralela (C. Geyer) RPC 2 Bibliografia base original dos

Leia mais

Sistemas Distribuídos. Aleardo Manacero Jr.

Sistemas Distribuídos. Aleardo Manacero Jr. Sistemas Distribuídos Aleardo Manacero Jr. Conteúdo Conceitos fundamentais Estratégias de controle: relógios e algoritmos de sincronismo Serviços: arquivos e memória Corba Processamento distribuído Sistemas

Leia mais

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação Disciplina A Disciplina B Código Disciplina C/H Curso Disciplina C/H Código Curso Ano do Currículo 66303 ESTRUTURA DE DADOS I 68/0 ENG. DE

Leia mais

4 Conversor EDTV Raw. 4.1 Arquitetura

4 Conversor EDTV Raw. 4.1 Arquitetura 4 Conversor EDTV Raw O conversor EDTV Raw é o programa que lê um documento escrito no perfil NCL EDTV e gera um documento Raw equivalente, i.e. que define a mesma apresentação. Este capítulo, apresenta

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