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

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

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

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

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

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

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

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

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

Escalonamento no Linux e no Windows NT/2000/XP

Escalonamento no Linux e no Windows NT/2000/XP Escalonamento no Linux e no Windows NT/2000/XP 1 Escalonamento no Linux Os requisitos do escalonador do Linux eram: Apresentar boa performance em programas interativos, mesmo com carga elevada; Distribuir

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

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

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento Professor Rene - UNIP 1 Roteamento Dinâmico Perspectiva e histórico Os protocolos de roteamento dinâmico são usados

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

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

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Tecnologia de Redes de Computadores - aula 5

Tecnologia de Redes de Computadores - aula 5 Tecnologia de Redes de Computadores - aula 5 Prof. Celso Rabelo Centro Universitário da Cidade 1 Objetivo 2 3 4 IGPxEGP Vetor de Distância Estado de Enlace Objetivo Objetivo Apresentar o conceito de. Conceito

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

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

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

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais Sistemas Operacionais Prof.: Roberto Franciscatto Capítulo 1.2 Aspectos Gerais Estrutura do Sistema Operacional Principais Funções do Sistema Operacional Tratamento de interrupções e exceções Criação e

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

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS Quando falamos em arquitetura, normalmente utilizamos esse termo para referenciar a forma como os aplicativos computacionais são estruturados e os hardwares

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

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

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

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

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

4 Segmentação. 4.1. Algoritmo proposto

4 Segmentação. 4.1. Algoritmo proposto 4 Segmentação Este capítulo apresenta primeiramente o algoritmo proposto para a segmentação do áudio em detalhes. Em seguida, são analisadas as inovações apresentadas. É importante mencionar que as mudanças

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

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

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

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior MRP II Introdução A lógica de cálculo das necessidades é conhecida há muito tempo Porém só pode ser utilizada na prática em situações mais complexas a partir dos anos 60 A partir de meados da década de

Leia mais

Bancos de Dados III. Replicação de Dados. Rogério Costa rogcosta@inf.puc-rio.br. Replicação

Bancos de Dados III. Replicação de Dados. Rogério Costa rogcosta@inf.puc-rio.br. Replicação Bancos de Dados III Replicação de Dados Rogério Costa rogcosta@inf.puc-rio.br 1 Replicação Processo de criar e manter réplicas de versões dos objetos da base de dados (como tabelas) em um ambiente de banco

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

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas

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

Profs. Deja e Andrei

Profs. Deja e Andrei Disciplina Sistemas Distribuídos e de Tempo Real Profs. Deja e Andrei Sistemas Distribuídos 1 Conceitos e Projetos de Sistemas Distribuídos Objetivos: Apresentar uma visão geral de processamento distribuído,

Leia mais

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

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 1. Prof. Rafael Dias Ribeiro. M.Sc. MODELAGEM DE DADOS PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS Aula 1 Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord 1 Objetivos: Apresenta a diferença entre dado e informação e a importância

Leia mais

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação Multiplexadores Permitem que vários equipamentos compartilhem um único canal de comunicação Transmissor 1 Receptor 1 Transmissor 2 Multiplexador Multiplexador Receptor 2 Transmissor 3 Receptor 3 Economia

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

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

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

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Modelo cliente e servidor Slide 2 Nielsen C. Damasceno Modelos Cliente - Servidor A principal diferença entre um sistema centralizado e um sistema distribuído está na comunicaçã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

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

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

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

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 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 Introdução Um sistema operacional é um programa que atua como intermediário entre o usuário e o hardware de um computador. O propósito

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

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

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

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

Módulo 4. Construindo uma solução OLAP

Módulo 4. Construindo uma solução OLAP Módulo 4. Construindo uma solução OLAP Objetivos Diferenciar as diversas formas de armazenamento Compreender o que é e como definir a porcentagem de agregação Conhecer a possibilidade da utilização de

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

7.Conclusão e Trabalhos Futuros

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

Leia mais

Memória Virtual. Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto

Memória Virtual. Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto Memória Virtual Prof Dr José Luís Zem Prof Dr Renato Kraide Soffner Prof Ms Rossano Pablo Pinto Faculdade de Tecnologia de Americana Centro Paula Souza Tópicos Introdução Espaço de Endereçamento Virtual

Leia mais

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET 1 IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET Daniel da Silva Carla E. de Castro Franco Diogo Florenzano Avelino daniel.silva1@ext.mpsa.com

Leia mais

BARRAMENTO DO SISTEMA

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

Leia mais

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande região de armazenamento formada por bytes ou palavras, cada

Leia mais

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva Arquitetura de Computadores - Arquitetura RISC por Helcio Wagner da Silva Introdução RISC = Reduced Instruction Set Computer Elementos básicos: Grande número de registradores de propósito geral ou uso

Leia mais

Márcio Leandro Moraes Rodrigues. Frame Relay

Márcio Leandro Moraes Rodrigues. Frame Relay Márcio Leandro Moraes Rodrigues Frame Relay Introdução O frame relay é uma tecnologia de chaveamento baseada em pacotes que foi desenvolvida visando exclusivamente a velocidade. Embora não confiável, principalmente

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

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

www.leitejunior.com.br 29/06/2012 14:30 Leite Júnior QUESTÕES CESPE BACKUP

www.leitejunior.com.br 29/06/2012 14:30 Leite Júnior QUESTÕES CESPE BACKUP QUESTÕES CESPE BACKUP QUESTÃO 01 - Analise as seguintes afirmações relativas a cópias de segurança. I. No Windows é possível fazer automaticamente um backup, em um servidor de rede, dos arquivos que estão

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

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

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

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

PPD: Balanceamento de Carga e Scheduling 2

PPD: Balanceamento de Carga e Scheduling 2 PPD: Balanceamento de Carga e Scheduling 2 Fernando Silva DCC-FCUP 2 (Alguns dos slides são baseados nos de Kathy Yelick, www.cs.berkeley.edu/ yelick) Fernando Silva (DCC-FCUP) PPD: Balanceamento de Carga

Leia mais

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho. Computação Paralela Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Outubro 2005 Desenvolvimento de Aplicações Paralelas Uma Metodologia

Leia mais

Recursos. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou Solicitar o recurso: esperar pelo recurso, até obtê-lo.

Recursos. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou Solicitar o recurso: esperar pelo recurso, até obtê-lo. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou um conjunto de informações, que deve ser exclusivamente usado. A impressora é um recurso, pois é um dispositivo dedicado, devido ao fato

Leia mais

As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes:

As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes: SGBD Características do Emprego de Bancos de Dados As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes: Natureza autodescritiva

Leia mais

28/9/2010. Unidade de Controle Funcionamento e Implementação

28/9/2010. Unidade de Controle Funcionamento e Implementação Arquitetura de Computadores Unidade de Controle Funcionamento e Implementação Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Operação da Unidade de Controle Unidade de controle: parte do

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

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 TCP/IP. Parte IV Mapeamento de endereços IP em endereços físicos (ARP) Fabrízzio Alphonsus A. M. N. Soares

Arquitetura TCP/IP. Parte IV Mapeamento de endereços IP em endereços físicos (ARP) Fabrízzio Alphonsus A. M. N. Soares Arquitetura TCP/IP Parte IV Mapeamento de endereços IP em endereços físicos (ARP) Fabrízzio Alphonsus A. M. N. Soares Tópicos Problema de resolução de endereço Mapeamento direto Associação dinâmica ARP

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

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Programação com acesso a BD Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br 1 Introdução BD desempenha papel crítico em todas as áreas em que computadores são utilizados: Banco: Depositar ou retirar

Leia mais

Banco de Dados I. Apresentação (mini-currículo) Conceitos. Disciplina Banco de Dados. Cont... Cont... Edson Thizon (edson@esucri.com.

Banco de Dados I. Apresentação (mini-currículo) Conceitos. Disciplina Banco de Dados. Cont... Cont... Edson Thizon (edson@esucri.com. Sistemas da Informação Banco de Dados I Edson Thizon (edson@esucri.com.br) 2008 Apresentação (mini-currículo) Formação Acadêmica Mestrando em Ciência da Computação (UFSC/ ) Créditos Concluídos. Bacharel

Leia mais

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010) SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010) OBJETIVO GERAL Este trabalho possui o objetivo de exercitar a lógica de programação dos alunos do Terceiro ano do Curso de BSI e também desenvolver

Leia mais

Software de rede e Modelo OSI André Proto UNESP - São José do Rio Preto andre.proto@sjrp.unesp.br O que será abordado Hierarquias de protocolos (camadas) Questões de projeto relacionadas às camadas Serviços

Leia mais

EA960 Redundância e Confiabilidade: RAID

EA960 Redundância e Confiabilidade: RAID EA960 Redundância e Confiabilidade: RAID Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1 Motivação Revisitando a lei de Amdahl:

Leia mais

Tabela de roteamento

Tabela de roteamento Existem duas atividades que são básicas a um roteador. São elas: A determinação das melhores rotas Determinar a melhor rota é definir por qual enlace uma determinada mensagem deve ser enviada para chegar

Leia mais

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia ADDRESS RESOLUTION PROTOCOL Thiago de Almeida Correia São Paulo 2011 1. Visão Geral Em uma rede de computadores local, os hosts se enxergam através de dois endereços, sendo um deles o endereço Internet

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

Arquitetura e Organização de Computadores I

Arquitetura e Organização de Computadores I Arquitetura e Organização de Computadores I Interrupções e Estrutura de Interconexão Prof. Material adaptado e traduzido de: STALLINGS, William. Arquitetura e Organização de Computadores. 5ª edição Interrupções

Leia mais

Arquitetura de Computadores I

Arquitetura de Computadores I Arquitetura de Computadores I Pipeline -- Conflito de dados paradas e adiantamentos -- Conflito de controle detecção de desvios e descarte de instruções -- Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno

Leia mais

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2. Pg. 1 Universidade Federal do Espírito Santo - UFES Mestrado em Informática 2004/1 Projetos O Projeto O projeto tem um peso maior na sua nota final pois exigirá de você a utilização de diversas informações

Leia mais

Arquitetura de Banco de Dados

Arquitetura de Banco de Dados Arquitetura de Banco de Dados Daniela Barreiro Claro MAT A60 DCC/IM/UFBA Arquitetura de Banco de dados Final de 1972, ANSI/X3/SPARC estabeleceram o relatório final do STUDY GROUP Objetivos do Study Group

Leia mais

Subcamada MAC. O Controle de Acesso ao Meio

Subcamada MAC. O Controle de Acesso ao Meio Subcamada MAC O Controle de Acesso ao Meio Métodos de Acesso ao Meio As implementações mais correntes de redes locais utilizam um meio de transmissão que é compartilhado por todos os nós. Quando um nó

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

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