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

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

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

Capítulo 8 Arquitetura de Computadores Paralelos

Capítulo 8 Arquitetura de Computadores Paralelos Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da

Leia mais

Projeto de Arquitetura

Projeto de Arquitetura Projeto de Arquitetura Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 11 Slide 1 Objetivos Apresentar projeto de arquitetura e discutir sua importância Explicar as decisões de projeto

Leia mais

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Questões Em uma rede de sobreposição (overlay), mensagens são roteadas de acordo com a topologia da sobreposição. Qual uma importante desvantagem

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

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

Leia mais

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

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

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

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

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

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

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

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 Arquiteturas Capítulo 2 Agenda Estilos Arquitetônicos Arquiteturas de Sistemas Arquiteturas Centralizadas Arquiteturas Descentralizadas Arquiteturas

Leia mais

Estilos Arquiteturais. Estilos Arquiteturais. Exemplos de Estilos Arquiteturais. Estilo: Pipe e Filtros

Estilos Arquiteturais. Estilos Arquiteturais. Exemplos de Estilos Arquiteturais. Estilo: Pipe e Filtros Em geral sistemas seguem um estilo, ou padrão, de organização estrutural Os estilos diferem: nos tipos de componentes que usa na maneira como os componentes interagem com os outros (regras de interação)

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

Sistemas Operacionais

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

Leia mais

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro Introdução Sistemas Operacionais 1 Sistema Operacional: Um conjunto de programas, executado pelo computador como os outros programas. Função: Controlar o funcionamento do computador, disponibilizando seus

Leia mais

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

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 11: Implementação de Sistemas de Arquivos. Operating System Concepts 8 th Edition

Capítulo 11: Implementação de Sistemas de Arquivos. Operating System Concepts 8 th Edition Capítulo 11: Implementação de Sistemas de Arquivos Silberschatz, Galvin and Gagne 2009 Sobre a apresentação (About the slides) Os slides e figuras dessa apresentação foram criados por Silberschatz, Galvin

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

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

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

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN SISTEMAS OPERACIONAIS Apostila 03 Estrutura do Sistema Operacional UNIBAN 1.0 O Sistema Operacional como uma Máquina Virtual A arquitetura (conjunto de instruções, organização de memória, E/S e estrutura

Leia mais

Sistemas 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

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Aula 3 Virtualização de Sistemas 1. Conceito Virtualização pode ser definida

Leia mais

Sincronização. Sincronização de Relógios. Relógios Físicos

Sincronização. Sincronização de Relógios. Relógios Físicos Sincronização Embora a comunicação entre processos seja essencial em Sistemas Distribuídos, a sincronização de processos é também muito importante. Por exemplo: o É importante que vários processos não

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

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

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

Apostila de Gerenciamento e Administração de Redes

Apostila de Gerenciamento e Administração de Redes Apostila de Gerenciamento e Administração de Redes 1. Necessidades de Gerenciamento Por menor e mais simples que seja uma rede de computadores, precisa ser gerenciada, a fim de garantir, aos seus usuários,

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

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

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

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

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

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

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

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

Gerência de Processador

Gerência de Processador Gerência de Processador Prof. Edwar Saliba Júnior Junho de 2009 Unidade 03-003 Gerência de Processador 1 Introdução Com o surgimento dos sistemas multiprogramáveis, onde múltiplos processos poderiam permanecer

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

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

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

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

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Basedos na Web Capítulo 12 Agenda Arquitetura Processos Comunicação Nomeação Sincronização Consistência e Replicação Introdução

Leia mais

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

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

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

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

Leia mais

7 Processamento Paralelo

7 Processamento Paralelo 7 Processamento Paralelo Yes, of course, who has time? Who has time? But then if we do not ever take time, how can we ever have time? (The Matrix) 7.1 Introdução Classificação de Sistemas Paralelos Diversas

Leia mais

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

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

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

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

Redes. Pablo Rodriguez de Almeida Gross

Redes. Pablo Rodriguez de Almeida Gross Redes Pablo Rodriguez de Almeida Gross Conceitos A seguir serão vistos conceitos básicos relacionados a redes de computadores. O que é uma rede? Uma rede é um conjunto de computadores interligados permitindo

Leia mais

CAPÍTULO 12 CONCLUSÃO

CAPÍTULO 12 CONCLUSÃO CAPÍTULO 12 CONCLUSÃO Existe somente um avanço. A hora mais escura da noite é o prenúncio do alvorecer. Nos dias sombrios de inverno, prosseguem incessantemente os preparativos para a primavera. Tudo que

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

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

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

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

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

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

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

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

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

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

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

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 OPERACIONAIS. Apostila 01 Assunto: Tipos de Sistemas Operacionais UNIBAN

SISTEMAS OPERACIONAIS. Apostila 01 Assunto: Tipos de Sistemas Operacionais UNIBAN SISTEMAS OPERACIONAIS Apostila 01 Assunto: Tipos de Sistemas Operacionais UNIBAN 2.0 - INTRODUÇÃO Os tipos de sistemas operacionais e sua evolução estão intimamente relacionados com a evolução do hardware

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

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

Leia mais

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

Service Oriented Architecture (SOA)

Service Oriented Architecture (SOA) São Paulo, 2011 Universidade Paulista (UNIP) Service Oriented Architecture (SOA) Prof. MSc. Vladimir Camelo vladimir.professor@gmail.com 04/09/11 vladimir.professor@gmail.com 1 04/09/11 vladimir.professor@gmail.com

Leia mais

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. jef@ime.usp.br DCC-IME-USP

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. jef@ime.usp.br DCC-IME-USP Banco de Dados Introdução João Eduardo Ferreira Osvaldo Kotaro Takai jef@ime.usp.br DCC-IME-USP Importância dos Bancos de Dados A competitividade das empresas depende de dados precisos e atualizados. Conforme

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

http://www.cin.ufpe.br/~sd/disciplinas/sd/grad Características Carlos Ferraz cagf@cin.ufpe.br

http://www.cin.ufpe.br/~sd/disciplinas/sd/grad Características Carlos Ferraz cagf@cin.ufpe.br http://www.cin.ufpe.br/~sd/disciplinas/sd/grad Características Carlos Ferraz cagf@cin.ufpe.br Características O que são os Sistemas Distribuídos? Benefícios : Não são consequências automáticas da distribuição;

Leia mais

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos RPC x RMI Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Chamada Remota a Procedimento Definição Passagem de Parâmetros STUBS Semântica de Falhas 2 RPC Chamada Remota a

Leia mais

Setores Trilhas. Espaço entre setores Espaço entre trilhas

Setores Trilhas. Espaço entre setores Espaço entre trilhas Memória Externa Disco Magnético O disco magnético é constituído de um prato circular de metal ou plástico, coberto com um material que poder magnetizado. Os dados são gravados e posteriormente lidos do

Leia mais