DISSERTAÇÃO DE MESTRADO

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

Download "DISSERTAÇÃO DE MESTRADO"

Transcrição

1 ENRIQUE VINICIO CARRERA E. IMPLEMENTAÇÃO DE UMA METODOLOGIA PARA A CONSTRUÇÃO DE SISTEMAS DISTRIBUÍDOS CONFIGURÁVEIS SOBRE PVM DISSERTAÇÃO DE MESTRADO DEPARTAMENTO DE ENGENHARIA ELÉTRICA Rio de Janeiro, 15 de março de 1996

2 ENRIQUE VINICIO CARRERA E. IMPLEMENTAÇÃO DE UMA METODOLOGIA PARA A CONSTRUÇÃO DE SISTEMAS DISTRIBUÍDOS CONFIGURÁVEIS SOBRE PVM DISSERTAÇÃO APRESENTADA AO DEPARTAMENTO DE ENGENHARIA ELÉTRICA DA PUC/RJ COMO PARTE DOS REQUISITOS PARA A OBTENÇÃO DO TÍTULO DE MESTRE EM CIÊNCIAS EM ENGENHARIA ELÉTRICA ORIENTADOR: ORLANDO GOMES LOQUES FILHO CO-ORIENTADOR: JULIUS CESAR BARRETO LEITE DEPARTAMENTO DE ENGENHARIA ELÉTRICA PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO DE JANEIRO Rio de Janeiro, 15 de março de 1996

3 A minha família

4 Agradecimentos: A meus professores orientadores, Dr. Orlando Loques e Dr. Julius Leite, pelo apoio constante e paciência durante a realização deste trabalho. Aos professores e pessoal administrativo do Departamento de Engenharia Elétrica, pelo apoio necessário para a terminação do meu curso de Mestrado. À Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES), pela ajuda financeira recebida durante toda a minha estadia no Brasil. A todas as pessoas que contribuíram com o seu sacrifício e sugestões durante todo este tempo, especialmente minha esposa e meus pais.

5 Resumo A presente dissertação descreve as características mais relevantes encontradas na metodologia de construção de software implementada pelo ambiente P-RIO. Este ambiente foi construído sobre a plataforma PVM, visando reunir em um só sistema as abstrações de alto nível para a modularização, paralelização e configuração gráfica de aplicações, e a portabilidade oferecida pela máquina virtual. A metodologia proposta facilita a reutilização do software e a manutenção de sistemas, permitindo maior eficiência no processo de desenvolvimento de aplicações distribuídas e paralelas. Além disso, o suporte à operação oferecido por P-RIO permite que usuários, sem um grande treinamento prévio, possam criar sistemas computacionais relativamente complexos. A implementação do ambiente inclui uma interface gráfica e uma linguagem de configuração, integradas ao sistema, que provêem facilidades para a construção, depuração e gerenciamento de aplicações. São apresentados, também, alguns exemplos de aplicações que utilizam a metodologia P-RIO. Abstract This dissertation describes the most relevant characteristics of the software construction methodology implemented by the P-RIO environment. This environment was built on the PVM platform, attempting to combine in a single system the high-level facilities for modularity, parallelization and graphic configuration of applications, and the portability offered by the virtual machine. The proposed methodology simplifies software reuse and system maintenance, improving efficiency in the development process of distributed and parallel applications. Besides, the operation support offered by P-RIO allows users, with little training, to build relatively complex computational systems. The environment implementation includes a graphic interface and a configuration language, integrated to the system, that provide facilities for construction, debugging, and management of applications. Several examples of applications based on the P-RIO methodology are also presented.

6 IMPLEMENTAÇÃO DE UMA METODOLOGIA PARA A CONSTRUÇÃO DE SISTEMAS DISTRIBUÍDOS CONFIGURÁVEIS SOBRE PVM Dissertação de Mestrado apresentada por Enrique Vinicio Carrera Erazo ao Departamento de Engenharia Elétrica da PUC/RJ e aprovada pela Comissão Julgadora, formada pelos seguintes professores: Prof. Orlando Loques (Orientador) CAA-UFF Prof. Julius Leite (Co-orientador) CAA-UFF Prof. Miguel Menasche DEE-PUC/RJ Prof. Ricardo Bianchini COPPE-UFRJ Visto e permitida a impressão Rio de Janeiro, 15/03/1996 Prof. Maria Augusta Davidovich Coordenadora Setorial de Pós-Graduação e Pesquisa do Centro Técnico Científico

7 SUMÁRIO TEMA Pág. Resumo... Sumário... Lista de Figuras... Lista de Tabelas... iii iv viii ix CAP 1. Introdução Motivação Objetivos Organização... 3 CAP 2. Sistemas Distribuídos Conceitos Básicos Organização do Hardware Paradigmas de Software Características Vantagens Desvantagens Requisitos Questões de Projeto O Componente Mínimo Modelo do Sistema Alocação de Processadores Suporte Tradicional Suporte à Operação e Gerência O Sistema de Comunicação Protocolos de Comunicação Modelo Cliente-Servidor Comunicação de Grupo Modelo Transacional... 21

8 v 2.5. Depuração Técnicas Básicas Depuração Baseada em Eventos Estudo de Casos ISIS Linda Parallel Virtual Machine Message Passing Interface Distributed Computing Environment Resumo CAP 3. Sistemas Distribuídos Configuráveis Objetos Distribuídos Orientação a Objetos Alternativas Software de Componentes Programação Visual Ambientes de Programação Visual Interface Gráfica de Usuário Sistemas Configuráveis Modularidade Configuração Reconfiguração Linguagem de Configuração Estudo de Casos COOL REX Regis RIO Resumo CAP 4. O Ambiente P-RIO Conceitos Básicos... 45

9 vi Módulos e Conectores Grupos Módulos Compostos Características do Ambiente Configuração A Linguagem de Configuração Nomeação Comunicação Programação dos Módulos Tolerância a Falhas Transparência da Programação Suporte à Gerência Resumo CAP 5. Implementação Descrição da Arquitetura A Biblioteca de Funções O Configurador O Console As Aplicações O Sistema de Comunicação A Interface de Programação Primitivas de Programação Primitivas de Comunicação Primitivas de Configuração A Linguagem de Configuração Resumo CAP 6. Utilização do Ambiente Exemplos Cálculo de π Reconhecimento de Imagens Utilizando Redes Neurais A Interface Gráfica... 86

10 vii 6.3. Avaliação de Desempenho Relação Metodologia-Implementação Resumo CAP 7. Conclusões Conclusões Propostas Futuras Referências Bibliográficas... 98

11 viii LISTA DE FIGURAS FIGURA Pág. 1. Classificação do Hardware Multicomputador Virtual Processos vs. Threads Chamada a Procedimentos Remotos Estrutura de um Objeto Delegação Direta e Composição Hierárquica Componentes de um Sistema Configurável Módulo Básico Grupo de Comunicação Composição de Módulos Módulos Compostos O Sistema de Comunicação Memória Compartilhada Distribuída Memória Virtual Estrutura do Ambiente P-RIO Implementação do Sistema de Comunicação Configuração para o Cálculo de π Reconhecimento de Imagens Etapa de Pré-processamento Configuração da Aplicação no Ambiente P-RIO Detalhe da Interface Gráfica P-RIO Módulo Composto para a Paralelização da Rede Neural Saídas do Tipo printf-like das Instâncias P-RIO Capacidade de Depuração da Interface Gráfica Tempos de Comunicação Round-Trip Speed-up para o Exemplo do Cálculo de π... 92

12 ix LISTA DE TABELAS TABELA Pág. 1. Tipos de Pinos de Comunicação Tipos de Dados Transmitidos pelos Pinos de Comunicação Condições de Instanciação de um Módulo Tempos de Execução para o Cálculo de π Desempenho na Fase de Pré-processamento... 92

13 CAPÍTULO 1 Introdução A presente dissertação está centrada na implementação do ambiente P-RIO (Parallel Reconfigurable Interconnectable Objects) sobre a plataforma de software PVM (Parallel Virtual Machine) [26]. O ambiente P-RIO é um suporte para a construção, depuração e execução de aplicações distribuídas e paralelas, baseado em uma metodologia de construção de software modular que separa a programação dos componentes de uma aplicação, da configuração da aplicação. A metodologia adotada é a mesma encontrada no ambiente RIO (Reconfigurable Interconnectable Objects) [61], e em outras propostas similares [34], [8]. No entanto, os fundamentos de implementação e a extensibilidade do sistema são completamente distintos, com ênfase, principalmente, na portabilidade e facilidade de uso do sistema. São apresentados, a seguir, os fatos que motivaram a realização deste trabalho e os objetivos propostos para o mesmo, seguidos de uma visão geral dos tópicos abordados nesta dissertação Motivação As aplicações computacionais tem alcançado um grau de sofisticação que requerem um elevado processamento e compartilhamento de recursos, contrapondo-se às limitações tecnológicas que impedem o aumento ilimitado no desempenho de sistemas uniprocessador. No entanto, o aparecimento de microprocessadores e estações de trabalho, com poder de computação semelhante a muitos computadores de grande porte, tem permitido que os usuários acessem máquinas de maior desempenho a menor custo. Da mesma forma, os grandes avanços na área de redes de computadores e transmissão de dados, têm mudado as medidas de utilidade e velocidade destes dispositivos. Como conseqüência direta deste desenvolvimento, o processamento distribuído e paralelo já é uma realidade. No entanto, um problema ainda por resolver nestes sistemas é a falta de software. A procura por boas linguagens, ferramentas e ambientes que facilitem o processamento distribuído e paralelo, tem criado áreas férteis de pesquisa que continuam

14 2 atraindo a comunidade científica. Especial atenção merece, neste sentido, o aproveitamento dos sistemas de computação comuns a nosso meio (i.e. estações de trabalho ligadas em rede), para criar sistemas de computação concorrente robustos, confiáveis e flexíveis. Por outro lado, o projeto de sistemas de software grandes e complexos, como é o caso dos sistemas distribuídos, requer mecanismos de decomposição de forma a torná-lo tratável. Ao dividir um sistema em partes menores é possível compreender mais facilmente o relacionamento entre suas diversas funcionalidades e o comportamento global. Esta é uma característica fundamental, considerando que quando as pessoas projetam sistemas elas tipicamente provêem uma descrição arquitetural consistindo de um conjunto de componentes e um conjunto de relações que indicam as interações entre aqueles componentes [3]. Desta forma, são também motivo de pesquisa ambientes que permitem a construção de aplicações isolando a programação da configuração dos seus componentes. Uma outra característica importante nos sistemas atuais, é a potencial portabilidade do software entre as várias arquiteturas de hardware existentes. Para o caso dos sistemas distribuídos, isto oferece, além da inerente flexibilidade de uso, um suporte adicional para o aproveitamento de um conjunto de computadores heterogêneos ligados em rede. Merece também destaque especial, a necessidade de uma interface de usuário que facilite a utilização dos recursos presentes no sistema. A interação com essa interface deve ser simples e eficiente, não precisando de conhecimentos especializados para usar as técnicas de computação nela embutidas. Uma boa alternativa para isto, é a utilização de ambientes de programação visual que permitam a interação gráfica entre o usuário e o sistema Objetivos O estudo levado a cabo nesta dissertação tem por objetivo dar continuidade às pesquisas feitas na área de sistemas distribuídos configuráveis. Especificamente, o trabalho está centrado na implementação de uma metodologia que permita a construção, depuração, operação e manutenção de sistemas distribuídos e paralelos, baseando-se, para isto, no paradigma da orientação a objetos. Uma característica também proposta para o sistema a ser implementado, é ampla portabilidade entre plataformas de hardware e sistemas operacionais. Aspira-se também, prover uma interface com o usuário que facilite a operação do sistema em todas as fases de desenvolvimento de uma aplicação, estendendo, assim, as facilidades já

15 3 fornecidas pelos sistemas existentes. Esta interface, baseada na visualização do ambiente, deve ser simples e fácil de entender, de forma a permitir que pessoas sem um grande treinamento prévio possam desenvolver rápida e eficientemente sistemas computacionais relativamente complexos Organização Ao longo da presente dissertação, vão ser introduzidos os fundamentos e características de um ambiente integrado para o desenvolvimento e gerência de sistemas distribuídos e paralelos. Este ambiente que está baseado em uma metodologia que separa a construção dos componentes de uma aplicação, da construção da própria aplicação, será implementado sobre a plataforma de software PVM, garantindo a sua portabilidade a vários sistemas operacionais e plataformas de hardware. Além disso, para facilitar a interação do usuário com o ambiente criado, será fornecida uma interface gráfica que mapeie os conceitos associados em representações gráficas. Este documento está estruturado em sete capítulos, cada um dos quais tenta dar uma visão geral de um tópico relacionado com o desenvolvimento do ambiente P-RIO. Este capítulo inicial dá uma breve introdução às idéias que motivaram esta dissertação e aos objetivos que são perseguidos através da mesma. No capítulo 2 são revisados os conceitos que caracterizam aos sistemas distribuídos. É feita uma introdução às características e conceitos básicos que regem tais sistemas, junto com uma descrição de várias questões de projeto a eles associadas. São ampliados, também, alguns pontos importantes como o sistema de comunicação e o processo de depuração em sistemas distribuídos. O capítulo finaliza com o estudo de vários sistemas existentes. No capítulo 3 são analisados os conceitos em que se baseiam os sistemas distribuídos configuráveis. A discussão inicia com dois temas de forte influência nos sistemas configuráveis: a programação orientada a objetos e a programação visual. São mostrados, além de vários conceitos relacionados com a configuração e reconfiguração de aplicações, alguns sistemas existentes baseados nas idéias abordadas no capítulo. O capítulo 4 apresenta os conceitos básicos nos quais se fundamenta a metodologia embutida no ambiente P-RIO. São mostrados os mecanismos oferecidos pelo ambiente, tanto ao nível de configuração quanto de comunicação. São também introduzidos, brevemente, os

16 4 fundamentos para a programação dos componentes de uma aplicação. Ao final, é discutido o suporte à gerência oferecido pelo ambiente. O capítulo 5 descreve a implementação do ambiente P-RIO. O capítulo inicia com uma breve descrição da arquitetura do ambiente P-RIO, seguida por um estudo do sistema de comunicação utilizado. Posteriormente, são detalhadas as primitivas de programação existentes na biblioteca P-RIO, assim como a linguagem de configuração utilizada para a construção de aplicações. No capítulo 6 são apresentados vários exemplos que demostram a utilização do sistema. São discutidos tanto a interface gráfica existente no sistema quanto os resultados de desempenho para várias funções do ambiente P-RIO. O capitulo finaliza com uma análise comparativa entre a metodologia proposta e a implementação realizada. Finalmente, no capítulo 7, são tiradas algumas conclusões e discutidos pontos importantes que surgem das idéias propostas e do trabalho desenvolvido na presente dissertação. Junto com estas conclusões, estão também citados alguns problemas ainda não abordados e que são propostos como trabalhos a serem desenvolvidos no futuro.

17 CAPÍTULO 2 Sistemas Distribuídos Neste capítulo apresenta-se uma revisão geral dos conceitos que caracterizam os sistemas distribuídos, analisando-se os principais aspectos e alternativas para o desenvolvimento de um ambiente integrado que facilite a programação paralela e distribuída. Esta revisão inicia com uma introdução às características e conceitos básicos que regem os sistemas distribuídos, continuando com a descrição de várias questões de projeto aplicáveis a estes sistemas. A seguir, são ampliados alguns pontos importantes como o sistema de comunicação e o processo de depuração em ambientes distribuídos. Finalmente, são dados alguns exemplos de sistemas utilizados para a programação paralela e distribuída Conceitos Básicos Um sistema distribuído pode ser definido como um conjunto de máquinas interconectadas, onde cada uma das quais têm ao menos uma CPU (Central Processing Unit) e memória local. Cada máquina administra independentemente os seus recursos e a computação, devendo todos os processos submetidos ao sistema cooperar como se fossem uma única aplicação sob um controle descentralizado. Os sistemas distribuídos são utilizados principalmente quando é preciso abarcar grandes áreas geográficas, quando se quer melhorar o desempenho através do processamento paralelo, quando se quer reduzir custos, quando é requerida a distribuição de determinados componentes com propósitos de sincronização, ou quando certas características de tolerância a falhas são desejadas. Cabe mencionar, adicionalmente, que a diferença principal entre os sistemas distribuídos e os de processamento paralelo, é que os últimos estão orientados à solução de um único problema por vez. Na definição inicial estão envolvidos diversos conceitos referentes ao hardware e software dos sistemas de computação. A seguir, são apresentadas algumas definições úteis para os sistemas distribuídos e paralelos nesta área Organização do Hardware

18 6 Os computadores tradicionais, classificados como SISD (Single Instruction Stream, Single Data Stream) de acordo com a taxonomia de Flynn [30], se caracterizam por ter um processador que executa uma única instrução sobre um único dado. Este esquema, adotado por mainframes e computadores pessoais, tem limitações de desempenho que podem ser atenuadas mediante técnicas de processamento paralelo. O processamento paralelo, como tal, está expresso em duas formas: SIMD (Single Instruction Stream, Multiple Data Stream) e MIMD (Multiple Instruction Stream, Multiple Data Stream) [36]. Os computadores SIMD, tais como os computadores vetoriais e outros supercomputadores, tem alcançado um desempenho extremadamente alto em uma classe restrita de problemas científicos. Os computadores MIMD, por outro lado, baseados em transputers e processadores comerciais interligados, têm sido capazes de alcançar altas taxas de processamento na solução de problemas de propósito geral. Estes últimos são também chamados, em alguns casos, de sistemas escaláveis, graças a sua possibilidade de crescimento computacional. Os sistemas tipo MIMD, por sua vez, podem ser divididos em multiprocessadores e multicomputadores. Os multiprocessadores, denominados também sistemas fortemente acoplados, são caracterizados por possuírem uma memória compartilhada que é utilizada para a comunicação entre processos. Os multicomputadores, por outro lado, tem memória local para cada uma das CPUs, as quais se comunicam mediante troca de mensagens. Estes últimos são também chamados de sistemas fracamente acoplados. Computadores SISD SIMD MIMD Multiprocessadores Multicomputadores Figura 1. Classificação do Hardware. De acordo com as classificações propostas (um resumo é dado na figura 1), os sistemas distribuídos são considerados computadores de arquitetura MIMD com memória local (sistemas fracamente acoplados), sendo a comunicação entre processos levada a cabo, na

19 7 maioria dos casos, mediante troca de mensagens [58]. Um ponto importante nos multicomputadores, e também nos multiprocessadores, é a forma de ligação usada pela arquitetura para interconectar as várias CPUs. As formas de ligação, empregadas na maioria de sistemas, se agrupam naquelas que usam um barramento comum ou nas que utilizam uma rede de interconexão. A ligação baseada em um barramento comum é de fácil construção e comumente encontrada nos multiprocessadores. Nela, todas as CPUs trocam informação através do barramento, convertendo-o em um gargalo de difícil expansão. Para eliminar este gargalo, têm sido propostas redes de interconexão que ligam os processadores mediante topologias em grade, hierárquicas ou hipercúbicas, facilitando a troca de informação entre as CPUs. LAN 4 WAN LAN 1 LAN 2 LAN 3 Figura 2. Multicomputador Virtual Com o desenvolvimento das redes de interconexão de alta velocidade, tem sido possível criar multicomputadores que misturam todos estes paradigmas de ligação em só um sistema. No entanto, mais audacioso ainda, tem sido a estruturação de multicomputadores a partir da combinação de computadores tipo SISD, SIMD e MIMD, utilizando-se para isso redes de comunicação de alta velocidade, incluindo LANs (Local Area Networks), MANs (Metropolitan Area Networks) e WANs (Wide Area Networks). Os sistemas que aproveitam esta estruturação estão sendo desenvolvidos sob a denominação de metacomputadores ou supercomputadores virtuais, prometendo se converter em um novo padrão na área dos sistemas distribuídos e paralelos. Um exemplo de configuração, misturando estações de trabalho, computadores vetoriais e multiprocessadores ligados em rede, é dado na figura 2 com o nome de multicomputador virtual. Nesta estrutura, assume-se a existência de uma camada de software que unifica os recursos de hardware, os quais não estão apresentados em

20 8 uma forma homogênea para o programador Paradigmas de Software O software é o ente que isola o usuário comum dos detalhes de baixo nível associados com o hardware. Ele tenta oferecer todas as vantagens implícitas na arquitetura, simplificando o trabalho do programador. Apesar de ser vago e amorfo, o software determina a imagem que o usuário tem do sistema, não necessitando essa imagem concordar com a realidade encontrada no hardware. Existem várias formas para abordar o software empregado pelos sistemas paralelos e distribuídos, sendo difícil estabelecer um critério uniforme que determine a tendência dentro da área. Assim, a maneira de exemplo, os sistemas com múltiplas CPUs podem ser divididos, de acordo com a imagem apresentada pelo software, em fracamente acoplados e fortemente acoplados. O software fracamente acoplado é aquele onde o usuário percebe a existência dos vários elementos de processamento, necessitando especificar explicitamente as ações de interação entre eles, assim como os entes envolvidos. Por outro lado, o software fortemente acoplado torna transparente a existência das várias CPUs, mostrando ao usuário a visão de uma máquina virtual. Associando as classificações de hardware e software apresentadas, pode se estabelecer certas combinações que se aproximam daquelas encontradas comercialmente, indo desde simples sistemas operacionais de rede (compartilhamento de arquivos e dispositivos), até multiprocessadores de tempo compartilhado (processamento altamente paralelo). Uma destas combinações são os sistemas distribuídos, onde se tem um software fortemente acoplado rodando sobre um hardware fracamente acoplado. Neles, o usuário tem a imagem de uma única máquina virtual, apesar da heterogeneidade que possa existir entre os elementos processadores, como é o caso dos supercomputadores virtuais e metacomputadores, mencionados anteriormente. Apesar do desenvolvimento dos sistemas de processamento paralelo e distribuído, existe ainda uma considerável falta de conceitos e mecanismos que possam facilitar a utilização dos mesmos, por parte de engenheiros e cientistas, os quais constituem o público alvo desses sistemas. Neste sentido, alguns pacotes de software como MPI (Message Passing Interface), p4, PVM, etc. têm surgido como alternativas aceitáveis para a programação paralela e distribuída em baixo nível. No entanto, fica clara a necessidade de ferramentas de alto nível

21 9 para o desenvolvimento dessa classe de sistemas Características Para que um sistema distribuído possibilite tratar as aplicações distribuídas como se fossem aplicações centralizadas, além de oferecer confiabilidade e um desempenho mínimo, o sistema deve contar com um mecanismo de comunicação entre processos global e único, idêntica administração de processos, um esquema de proteção global, e uma mesma interface de chamadas ao sistema. No entanto, ao comparar um sistema distribuído com um sistema centralizado, surgem algumas vantagens e desvantagens, junto com vários requisitos Vantagens As principais vantagens dos sistemas distribuídos sobre os sistemas centralizados podem ser sintetizadas nos seguintes pontos: a) Economia: Os microprocessadores oferecem uma relação custo/desempenho melhor que muitos computadores de grande porte. b) Velocidade: Um sistema distribuído pode apresentar um poder de computação maior que o encontrado nos sistemas centralizados. c) Distribuição Inerente: Muitas aplicações envolvem, implicitamente, um conjunto de máquinas separadas espacialmente. d) Confiabilidade: Se um ou mais processadores falham, o sistema como um todo pode ainda trabalhar, embora o seu desempenho possa ser afetado. e) Incremento Gradual: O poder de computação do sistema pode ser aumentado em pequenos incrementos. Existem também algumas outras vantagens dos sistemas distribuídos em relação à opção de ter um conjunto de processadores isolados, associados a usuários independentes. As principais são compartilhamento de dados e dispositivos, comunicação e flexibilidade de uso Desvantagens Nem sempre a melhor alternativa é a utilização de sistemas distribuídos. Devido ao alto grau

22 10 de complexidade neles envolvido e dependendo do tipo de aplicação, pode-se obter mais benefícios em um sistema centralizado que em um distribuído. Algumas desvantagens presentes nos sistemas distribuídos, embora cada dia se tornem menores, são resumidas nos seguintes itens: a) Software: A falta de padrões, linguagens, sistemas operacionais e ambientes que facilitem a criação, operação e manutenção de aplicações distribuídas, impede o desenvolvimento da área. b) Redes: O ponto de falha principal em um sistema distribuído é a rede de comunicação, que pode se saturar ou apresentar problemas maiores (velocidade nominal, interferência, erros de transmissão, etc.). c) Segurança: Se não são aplicados mecanismos de proteção adequados, o fácil acesso aos dados se converte em um sério problema ao trabalhar com dados confidenciais Requisitos Um sistema distribuído precisa que alguns requisitos sejam levados em conta durante o seu projeto. O alcance deles determinará o sucesso do sistema em termos de utilidade, desempenho e generalidade. Os requisitos relevantes, neste sentido, são os mostrados a seguir. TRANSPARÊNCIA Sem dúvida, a característica principal que se quer na maioria de sistemas distribuídos, é que o usuário tenha a visão de uma única máquina virtual. Essa visão, que esconde a existência dos vários elementos de processamento, é gerenciada pelo sistema operacional distribuído, podendo ser dividida em vários níveis: transparência de localização, transparência à migração, transparência de acesso, transparência às falhas, transparência de concorrência, transparência de replicação, entre outros. Esta característica pode não ser totalmente desejada, especialmente em aplicações onde o paralelismo é explicitamente usado. FLEXIBILIDADE O requisito de flexibilidade tem que ver com o fato de ainda não estarem bem definidos os

23 11 padrões que virão a reger o desenvolvimento dos sistemas distribuídos. Sendo assim, os atuais sistemas devem ter a capacidade de atualizar ou mudar certos serviços conforme a tecnologia ou os padrões o requeiram. Junto a esta capacidade de adaptação ao novo, está também a capacidade de adaptação ao já existente: portabilidade e interoperabilidade. Estas duas características fazem aproveitáveis os mais diversos sistemas de computação, apesar da sua potencial heterogeneidade, permitindo que as aplicações aproveitem as vantagens de cada uma das plataformas de hardware e software a disposição. Um ponto também importante, é o nível de suporte oferecido pelo sistema operacional. Neste aspecto, duas tendências dividem esforços: o núcleo monolítico e o micro-núcleo. O núcleo monolítico pode ser mais eficiente, embora sofra de certa falta de flexibilidade quantitativa e qualitativa. Um exemplo são os sistemas operacionais do tipo UNIX. Por outro lado, o micro-núcleo fornece um conjunto reduzido de funções básicas que permite que outros serviços sejam implementados como servidores ao nível de usuário. Pode ser menos eficiente, mas graças a sua modularidade, favorece alterações na sua funcionalidade e portabilidade a outras arquiteturas. Um outro aspecto relacionado com a flexibilidade, é a possibilidade de que uma aplicação distribuída possa fazer alterações evolucionárias ou operacionais em tempo de execução. Mais conhecido como reconfiguração, este requisito é discutido no capítulo 3. CONFIABILIDADE Um dos objetivos da construção de sistemas distribuídos, é elevar o grau de confiabilidade com respeito aos sistemas centralizados. Isto não é simples de conseguir devido à presença da rede de interconexão, mas em termos gerais, os aspectos que persegue a confiabilidade são: disponibilidade, segurança, coerência, e tolerância a falhas. A disponibilidade se refere à fração de tempo que o sistema é utilizável ou está disponível para o usuário. A segurança protege todos os recursos da utilização desautorizada. A coerência, por outro lado, permite a utilização concorrente das informações por diferentes componentes ou a utilização de técnicas de replicação. Finalmente, técnicas de tolerância a falhas podem ser aplicadas na medida em que isto não introduza um decremento avultado no desempenho. ESCALABILIDADE

24 12 Com o incremento da complexidade das aplicações, é esperado um incremento no número de CPUs utilizadas pelos sistemas distribuídos. Isto traz uma série de problemas que só podem ser enfrentados se são evitadas técnicas de projeto como componentes, tabelas e algoritmos centralizados, ou estruturas de controle hierárquico. Deve-se preferir, no seu lugar, o uso de mecanismos de sincronização distribuídos. Por outro lado, as normas que regem o projeto de um bom algoritmo descentralizado, com capacidade de escalabilidade, são: Nenhum processador tem informação completa do estado do sistema. Os processadores fazem decisões baseadas só em informações acessíveis localmente. A falha de um processador não leva à falha do algoritmo. Não se pode assumir implicitamente a existência de um relógio global. DESEMPENHO Todas as condições e características descritas não tem muito sentido para o usuário se o desempenho apresentado pelo sistema distribuído não supera aquele obtido em um sistema centralizado. Várias métricas tem sido definidas para avaliar o desempenho de sistemas paralelos e distribuídos, embora nenhuma seja mais válida que a execução da própria aplicação no sistema [45]. Um ponto chave para alcançar um bom desempenho nos sistemas distribuídos é a otimização da comunicação entre processos. A eficiência desta tarefa determina, em grande parte, a eficiência do sistema como um todo. Também relacionados são a capacidade dos canais de comunicação e a freqüência com que são invocadas as primitivas de comunicação no sistema (granularidade das aplicações) Questões de Projeto Um sistema distribuído consta de múltiplas CPUs interligadas. Contudo, nada foi dito ainda sobre quais são as alternativas ou modelos de trabalho usados para dar ao usuário a visão de uma única máquina. Alguns desses modelos, assim como os suportes oferecidos, são descritos a seguir O Componente Mínimo

25 13 Todo o software executável em um sistema de computação, incluindo o sistema operacional, é organizado como um conjunto de processos seqüenciais. Um processo é simplesmente um programa em execução, incluindo o seu PC (Program Counter), registros e variáveis [47]. Conceitualmente, um processo é a mínima unidade que tem a sua própria CPU virtual, o que leva a considerá-lo como o componente mínimo de qualquer computação. Computador Computador Sist. Operacional Processos Threads PC Sist. Operacional Figura 3. Processos vs. Threads. No entanto, muitos sistemas operacionais já contam com a possibilidade de dividir um processo em dois ou mais miniprocessos compartilhando um mesmo espaço de endereçamento. Cada um desses miniprocessos é executado seqüencialmente, com o seu próprio contador de programa, registros e pilha, e na maioria dos casos, sem proteção entre eles. Estas linhas de controle são chamadas de threads. As threads são usadas principalmente em aplicações que conjugam processamento paralelo, execução seqüencial e chamadas bloqueantes ao sistema. Muitos modelos estão sendo propostos para tais fins, principalmente devido ao baixo custo de criação. Na atualidade, duas possibilidades de implementação destas linhas de controle chaveadas competem. A primeira é a implementação ao nível do usuário, não implicando nenhuma modificação no núcleo do sistema operacional e dando a opção de que cada usuário escolha o seu próprio algoritmo de escalonamento. A segunda possibilidade é a implementação ao nível do núcleo do sistema operacional, implicando um desempenho pior, embora simplifique alguns problemas de desenvolvimento. Distinguisse então, os sistemas operacionais onde o componente mínimo é o processo, como é o caso de UNIX, e aqueles onde o componente mínimo é a thread (figura 3). Estes últimos, estão crescendo rapidamente em número, baseados nas vantagens e pesquisas associadas aos mesmos.

26 Modelo do Sistema Em um sistema incluindo muitas CPUs é importante conhecer como elas estão organizadas e quais são as opções de utilização para uma determinada tarefa de computação. Desta forma, podem ser definidos, em termos gerais, três modelos aplicáveis a um sistema: estações de trabalho, repositório de processadores, e um modelo híbrido que mistura os dois anteriores. MODELO ESTAÇÕES DE TRABALHO A característica encontrada neste modelo, que é o mais comumente encontrado, é a existência de várias estações de trabalho ou computadores pessoais de alto desempenho, ligados através de uma rede de alta velocidade. As vantagens deste modelo são a sua simplicidade e facilidade para entender, embora não proporcione o suporte necessário para ter um verdadeiro sistema distribuído. Os principais problemas associados ao modelo são: como compartilhar o poder computacional do conjunto de estações de trabalho, como encontrar uma estação de trabalho ociosa e o que fazer para que os processos possam ser executados transparentemente, apesar de estarem sendo processados em máquinas diferentes. Estes problemas estão sendo solucionados, prometendo converter este modelo em um dos mais populares. MODELO REPOSITÓRIO DE PROCESSADORES O tema central deste modelo é possibilitar que os processadores sejam alocados dinamicamente sob demanda de cada processo. Para isso, estão a disposição um conjunto de CPUs e um sistema de arquivos centralizados, juntos a vários terminais X, sendo o seu custo inferior ao das estações de trabalho ligadas em rede. Cada processo entrante no sistema solicita uma ou mais CPUs de acordo com seus requisitos, sendo então alocadas a ele um número que estará de acordo com a disponibilidade do sistema. A concepção deste modelo esta suportada pela teoria de filas, que demostra que uma fila para um número dado de CPUs tem vantagem sobre uma fila por CPU. A vantagem pode ser visualizada tanto no tempo de resposta médio, como na variança do tempo de resposta. Embora a sua popularidade não seja muito elevada, este modelo se adapta melhor aos sistemas distribuídos.

27 15 MODELO HÍBRIDO Na maioria dos casos, não é adequado ter somente o modelo de estações de trabalho ou somente o modelo de repositório de processadores. Uma solução mais adequada é ter uma mistura de ambos, com a qual se atenuam as desvantagens dos dois modelos. Esta mistura é mais cara, no entanto provê uma rápida resposta interativa, um uso eficiente dos recursos e um projeto simples do sistema. Atualmente, a possibilidade de ter estações de trabalho ligadas por uma rede de alta velocidade, junto a multiprocessadores e servidores dedicados, é comum. Sendo assim, este modelo é um dos mais gerais e aplicável em grande parte dos casos. Tudo isto leva a que pacotes de software como PVM, Linda, Express, etc., ganhem popularidade e repercussão na área, graças a sua orientação implícita para a programação paralela e distribuída de um conjunto heterogêneo de computadores Alocação de Processadores Um dos problemas que surgem quando um conjunto de processos requer vários processadores é qual processador alocar a qual processo. Para isto, vários modelos de alocação tem sido propostos, tentando cada um deles otimizar uma determinada condição como utilização da CPU, tempo de resposta, etc. A maioria destes modelos assume que todos os processadores são compatíveis e totalmente interconectados, devendo se entender por compatibilidade o fato de que pelo menos existem os executáveis dos programas para cada um deles. Uma outra hipótese freqüente é que cada estação conheça sua carga, tendo sido propostas diversas técnicas para determinar esta magnitude (mas nenhuma considerada exata). Dentro das estratégias de alocação destacam-se duas, as não migratórias e as migratórias. As estratégias não migratórias são menos complexas e de menor impacto na concepção do sistema operacional, enquanto que as estratégias migratórias se apresentam melhor para atividades requerendo balanceamento de carga. Um problema associado com a concepção destes algoritmos é determinar se a migração dos processos não irá introduzir uma carga maior que a existente no caso em que não se aplique nenhum algoritmo. Isto é difícil de conhecer de antemão, e em grande parte dos casos só introduz complexidades que se contrapõem aos objetivos de desempenho, exatidão e robustez.

28 16 Uma regra que tem sido aceita amplamente é que os algoritmos de alocação de processadores (e também de balanceamento de carga) mais simples são, geralmente, os melhores. Não se deve esquecer que uma análise de estabilidade pode ajudar a detectar laços de troca de informação prejudiciais para o desempenho do sistema Suporte Tradicional Os sistemas operacionais existentes, sejam estes genéricos, como no caso de UNIX, ou especializados, oferecem um suporte básico tradicional para a programação de sistemas distribuídos. Este suporte mínimo esta resumido nos seguintes itens: a) Suporte ao Componente Mínimo: É a estrutura de execução mínima oferecida pelo sistema operacional, assim como o suporte disponível para a mesma. Na maioria dos sistemas operacionais, o componente mínimo é o processo. b) Sistema de Comunicação: Corresponde ao suporte que permite a interação dos componentes de um sistema distribuído, tanto para fins de sincronismo quanto para troca de informação. c) Nomeação: É a capacidade do sistema operacional para prover uma identificação única para todos os componentes do sistema. O suporte tradicional geralmente sofre de algumas deficiências que impedem o seu aproveitamento direto na construção de sistemas distribuídos. As principais são: Os serviços oferecidos não são completos nem abrangentes. Não existe homogeneidade entre os serviços locais e os serviços remotos. Não se tem mecanismos de redundância, coerência, nem tratamento de falhas. Os serviços de nomeação e reconfiguração são deficientes ou inexistentes. Oferecem pouca flexibilidade e portabilidade. A utilização de primitivas especializadas é complexa e repleta de detalhes de sintaxe. Isto leva a pensar na necessidade de um sistema de suporte explícito, que proveja serviços nativos especializados para a construção e operação de aplicações distribuídas Suporte à Operação e Gerência

29 17 O sistema de suporte oferecido por um sistema operacional distribuído pode ser implícito ou explícito. O suporte implícito é o caso do suporte tradicional, oferecido pela maioria dos sistemas operacionais. O suporte explícito, por outro lado, é um suporte adicional que facilita a operação e gerência do sistema, englobando tarefas como tolerância a falhas, balanceamento de carga, coordenação, depuração e reconfiguração, assim como um incremento na integridade e disponibilidade das aplicações distribuídas. O suporte à operação compreende os mecanismos que implementam os modelos definidos na metodologia adotada pelo sistema. Tais mecanismos estão associados com a separação da computação dentro do ambiente e com as relações existentes entre os componentes, podendo também incluir as primitivas de comunicação, implementação de tarefas, métodos de sincronismo e outros. Complementarmente, o suporte à gerência oferece recursos complexos de nomeação, reconfiguração e controle de recursos. A sua função é prover uma certa transparência ao usuário, permitindo-o controlar o sistema através da representação estabelecida na metodologia implementada pelo mesmo. O suporte à gerência é independente, mas a sua flexibilidade e serviços oferecidos estão baseados nos recursos providos pelo suporte à operação. Atualmente, mostram-se muito adequadas para tarefas de gerência e configuração, as interfaces do tipo gráfico, as quais facilitam a interação homem-máquina. É por isso que dentro do suporte à gerência, é cada vez mais importante o uso de linguagens e ambientes de programação visual O Sistema de Comunicação A maior diferença existente entre os sistemas distribuídos e os sistemas centralizados está na comunicação entre processos. Devido à ausência de uma memória compartilhada, todas as atividades de comunicação estão baseadas na troca de mensagens entre processos. O sistema de comunicação tem como função regular esta troca de mensagens, tornando-a segura e eficiente Protocolos de Comunicação A maioria de protocolos de comunicação são estruturados em camadas definidas mediante as suas interfaces e protocolos. A interface de cada camada está caracterizada pelas operações

30 18 que definem o serviço, enquanto que os protocolos são o conjunto de regras que determinam a ação de cada uma delas. Modelos como o OSI-RM (Open System Interconnection - Reference Model) [57] apresentam falta de transparência, tolerância a falhas e atomicidade para a construção de sistemas distribuídos, além de certa sobrecarga introduzida especialmente em LANs. Uma alternativa, é utilizar um subconjunto de camadas que melhorem o desempenho e garantam suficiente confiabilidade na comunicação. Os protocolos podem ser classificados como orientados à conexão ou sem conexão, sendo utilizados conforme os requisitos da aplicação. Dentre os protocolos mais difundidos e de propósito geral estão o TCP (Transmission Control Protocol) e o UDP (User Datagram Protocol) [51]. TCP é um protocolo confiável orientado à conexão. UDP, por outro lado, é um protocolo mais simples que permite enviar datagramas, podendo haver duplicação ou perda de mensagens. Ambos protocolos utilizam os serviços de uma camada de rede denominada IP (Internet Protocol). IP é o protocolo de nível de rede da Internet, que permite o envio de datagramas entre computadores ou redes interconectadas. Provê um serviço de distribuição sem conexão, sendo o bloco base para a construção de outros protocolos como TCP e UDP. Existem também outros protocolos que estão otimizados para obter vantagens de sistemas específicos, provendo um elevado desempenho mediante o uso de redes de alta velocidade. Tais protocolos são especializados e não muito difundidos Modelo Cliente-Servidor O modelo cliente-servidor está baseado geralmente em protocolos simples de pedido/resposta. Estes protocolos provêem facilidades mínimas de controle e verificação, normalmente associadas às camadas inferiores que são já uma tecnologia dominada e muito utilizada. Existe uma ampla variedade de opções para a implementação das primitivas básicas send() e receive(), no entanto, duas são as principais: primitivas síncronas e primitivas assíncronas. As primitivas assíncronas são aquelas que após o envio de uma mensagem não esperam a confirmação por parte do receptor, retornando imediatamente à execução do processo. As primitivas síncronas, por outro lado, precisam dessa confirmação antes de continuar com a execução do programa. Na implementação destas primitivas sempre é possível utilizar temporizadores que permitam desbloquear os processos após uma falha de comunicação. Muitos autores usam as denominações de primitivas bloqueantes e não bloqueantes no lugar de primitivas síncronas e assíncronas [58].

31 19 Máquina Cliente 1 2 Cliente Stub Máquina Servidor 4 5 Stub Servidor Sist. Operacional 3 8 Sist. Operacional Figura 4. Chamada a Procedimentos Remotos Uma classe especial de primitivas síncronas são as denominadas RPC (Remote Procedure Call) [6]. O seu fundamento é dar transparência à comunicação entre processos mediante a eliminação do paradigma de entrada/saída. A operação básica da execução remota dos procedimentos é feita pela geração de um stub cliente e de um stub servidor a partir de especificações formais em uma linguagem determinada. No momento que um programa acessa o procedimento remoto, de forma similar aos procedimentos locais (figura 4), a troca de mensagens entre os stubs permite a execução remota do código invocado. A passagem de parâmetros e resultados é feita através do seu empacotamento em mensagens. Os problemas que devem ser resolvidos neste caso são, entre outros: diferentes espaços de endereçamento para a execução dos procedimentos remotos, impossibilidade de ter variáveis globais, dificuldade para a passagem de ponteiros, existência de diferentes tipos de máquinas, e possíveis falhas nas máquinas. No modelo cliente-servidor, um problema a solucionar é como o cliente localiza o servidor, sendo a principal alternativa a denominada ligação dinâmica. Para isso, o servidor inicia a sua operação exportando a sua interface a um processo chamado de binder, que registra o servidor e fica à espera de mensagens provenientes de clientes desejando importar uma determinada versão. O binder entrega um handler para o cliente, o qual faz então a chamada ao procedimento remoto. Este aproveitamento tem alta flexibilidade devido à possibilidade de ter múltiplos servidores, permitindo implementar técnicas de balanceamento de carga e tolerância a falhas, assim como atividades de autenticação. As desvantagens são a carga extra para o sistema e o possível gargalo de comunicação Comunicação de Grupo

32 20 Apesar do modelo cliente-servidor impossibilitar a formação de grupos de comunicação, são muitas as aplicações onde vários receptores compartilham uma mesma operação de comunicação. Um grupo é uma coleção de processos que atuam em conjunto, onde a comunicação é geralmente baseada em multicasting ou broadcasting das mensagens. É uma abstração simples que pode introduzir detalhes complicados quando se permite que os grupos sejam altamente dinâmicos. O endereçamento dos grupos pode ser através de um único endereço, através de uma lista de processos destinatários, ou através de um endereçamento baseado em predicados [58]. Esta última opção faz com que uma mensagem seja aceita só quando a avaliação de uma expressão é igual a TRUE. As primitivas usadas para a comunicação de grupos podem ser as mesmas do caso ponto a ponto, dando maior transparência à programação do sistema, mas também podem ser procedimentos de biblioteca diferentes, com sintaxes específicas. Um outro assunto importante é a composição de grupos. Para isto, é geralmente utilizado um servidor que pode tornar-se um gargalo em sistemas maiores. No entanto, também existem algoritmos distribuídos que se adaptam muito bem à gerência de grupos. No projeto da comunicação em grupos devem ser levados em conta alguns conceitos importantes como por exemplo, se os grupos são abertos ou fechados com respeito à recepção das mensagens, se os membros de um grupo estão em um mesmo nível ou estão arranjados hierarquicamente (uso de processos coordenadores), entre outros. Uma qualidade requerida para a comunicação em grupos é a atomicidade. Com esta finalidade são amplamente usados protocolos do tipo difusão atômica ou confiável [19], os quais facilitam a programação ao garantir que todos os membros do grupo recebam a mensagem, ou que nenhum deles a receba. Outra característica desejada na comunicação de grupos é a ordenação das mensagens, sendo destacáveis os sistemas que provêem uma ordenação de tempo total. Uma última característica que diferencia os protocolos de difusão síncronos dos assíncronos, é a garantia de terminação. Existem outras operações que também estão relacionadas ao conceito de grupo, sendo as mais conhecidas a sincronização por barreiras e a redução. Através da sincronização por barreiras é possível deter a execução de um conjunto de processos até que todos os membros do conjunto alcancem um ponto determinado do processamento. Por outro lado, a redução facilita a aplicação de uma determinada função sobre dados espalhados em todos os processos de um grupo.

33 Modelo Transacional Uma abstração de mais alto nível, que se refere ao uso da comunicação para o processamento da informação, são as transações atômicas. Nelas, a interação de um cliente é tratada como uma ação única, segura e indivisível. Depois de iniciada uma transação e negociadas as opções de interação, é esperado um acordo total dos processos envolvidos. Se algum processo não concordar, o sistema volta ao estado em que se encontrava justo antes de iniciada a transação. As propriedades encontradas no modelo transacional são: Serialidade, não existe interferência entre transações concorrentes. Atomicidade, acontecem de uma forma indivisível para o mundo exterior. Permanência, uma vez que uma transação concorda, as mudanças são permanentes. Os mecanismos mais usados para a implementação de transações são o espaço de trabalho privado, a lista de intenções (ou registro de escritura prévia) e os protocolos de acordo em duas fases. Existem, também, alguns mecanismos para garantir a não interferência entre transações concorrentes, provendo serialidade às mesmas, os principais são o locking e o uso de carimbos de tempo Depuração O mecanismo de depuração é definido como o processo de localização, análise e correção de possíveis falhas, sendo uma falha uma condição acidental que impossibilite um programa de executar suas funções como desejado [39]. Este mecanismo é de grande importância no desenvolvimento de sistemas não triviais, fazendo-o essencial para a construção de aplicações distribuídas. A distribuição torna ainda mais complicada a já difícil tarefa de depurar. Os principais obstáculos encontrados são a dificuldade de manter o estado global exato do sistema, o grande espaço de estados, a não repetibilidade das interações entre múltiplos processos assíncronos, as limitações existentes nas tarefas de comunicação, e a latência entre os erros e a sua descoberta. Pode-se adicionar a tudo isto o efeito teste, que faz com que erros do sistema desapareçam em uma execução controlada. Um sistema de depuração distribuído é atualmente uma extensão dos sistemas de depuração tradicional, onde se tem uma coleção de depuradores seqüenciais, sendo a maior

Comparação SDs X Scs

Comparação SDs X Scs Prof. Alexandre Lima Sistemas Distribuídos Cap 9 1/7 Comparação SDs X Scs Distribuição inerente Economia Velocidade Confiabilidade Crescimento incremental Descrição Algumas aplicações envolvem máquinas

Leia mais

} Monolíticas Aplicações em um computador centralizado. } Em Rede Aplicações com comunicação em rede. } Distribuídas Comunicação e cooperação em rede

} Monolíticas Aplicações em um computador centralizado. } Em Rede Aplicações com comunicação em rede. } Distribuídas Comunicação e cooperação em rede Prof. Samuel Souza } Monolíticas Aplicações em um computador centralizado } Em Rede Aplicações com comunicação em rede } Distribuídas Comunicação e cooperação em rede } Aplicações que são funcionalmente

Leia mais

Introdução. Uso do disco Vantagens Desvantagens Baixo custo, facilidade de manutenção do software e do hardware, simetria e flexibilidade

Introdução. Uso do disco Vantagens Desvantagens Baixo custo, facilidade de manutenção do software e do hardware, simetria e flexibilidade Introdução É sabido que os processos rodam em processadores. Nos sistemas tradicionais existe somente um único processador, de forma que não há dúvida a respeito de como ele deve ser usado. Em um sistema

Leia mais

Introdução a Banco de Dados Aula 03. Prof. Silvestri www.eduardosilvestri.com.br

Introdução a Banco de Dados Aula 03. Prof. Silvestri www.eduardosilvestri.com.br Introdução a Banco de Dados Aula 03 Prof. Silvestri www.eduardosilvestri.com.br Arquiteturas de Banco de Dados Arquiteturas de BD - Introdução Atualmente, devem-se considerar alguns aspectos relevantes

Leia mais

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

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

Leia mais

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

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza Sistemas Distribuídos Processos I Prof. MSc. Hugo Souza Até agora vimos a organização como um todo dos SDS, com o mapeamento estrutural e suas devidas características descritas em elementos, regras, conceitos,

Leia mais

REDES DE COMPUTADORES HISTÓRICO E CONCEITOS

REDES DE COMPUTADORES HISTÓRICO E CONCEITOS REDES DE COMPUTADORES HISTÓRICO E CONCEITOS BREVE HISTÓRICO A década de 60 Surgiram os primeiros terminais interativos, e os usuários podiam acessar o computador central através de linhas de comunicação.

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

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 3-1. A CAMADA DE REDE (Parte 1) A camada de Rede está relacionada à transferência de pacotes da origem para o destino. No entanto, chegar ao destino pode envolver vários saltos em roteadores intermediários.

Leia mais

No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano.

No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano. No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano. Essa estratégia foi deixada para trás. Atualmente, o software de rede é altamente

Leia mais

REDES DE COMPUTADORES

REDES DE COMPUTADORES Eriko Carlo Maia Porto UNESA Universidade Estácio de Sá eriko_porto@uol.com.br Última revisão Julho/2003 REDES DE COMPUTADORES INTRODUÇÃO EVOLUÇÃO DOS SISTEMAS DE COMPUTAÇÃO Década de 50 introdução dos

Leia mais

Nível do Sistema Operacional

Nível do Sistema Operacional Nível do Sistema Operacional (Aula 14) Introdução a Sistemas Operacionais Roberta Lima Gomes - LPRM/DI/UFES Sistemas de Programação I Eng. Elétrica 2007/1 Introdução Hardware Provê os recursos básicos

Leia mais

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados 1. Introdução O governo é um dos maiores detentores de recursos da informação. Consequentemente, tem sido o responsável por assegurar que tais recursos estejam agregando valor para os cidadãos, as empresas,

Leia mais

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

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

Leia mais

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle. Introdução Os principais elementos de um sistema de computação são a unidade central de processamento (central processing unit CPU), a memória principal, o subsistema de E/S (entrada e saída) e os mecanismos

Leia mais

SISTEMAS DISTRIBUIDOS

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

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 28 Revisão para a Prova 2 http://www.ic.uff.br/~bianca/engsoft2/ Aula 28-28/07/2006 1 Matéria para a Prova 2 Gestão de projetos de software Conceitos (Cap. 21) Métricas (Cap.

Leia mais

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2) Definição de um Sistema Distribuído (1) Introdução Um sistema distribuído é: Uma coleção de computadores independentes que aparecem para o usuário como um único sistema coerente. Definição de um Sistema

Leia mais

Redes de Computadores II

Redes de Computadores II Redes de Computadores II UDP Prof: Ricardo Luís R. Peres Tem como objetivo prover uma comunicação entre dois processos de uma mesma sessão que estejam rodando em computadores dentro da mesma rede ou não.

Leia mais

Banco de Dados Orientado a Objetos

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

Leia mais

CAPÍTULO 2. BANCOS DE DADOS DISTRIBUÍDOS

CAPÍTULO 2. BANCOS DE DADOS DISTRIBUÍDOS CAPÍTULO 2. BANCOS DE DADOS DISTRIBUÍDOS Este capítulo inicia com uma proposta para estruturação da descrição de bancos de dados distribuídos, que estende aquela sugerida pela ANSI/SPARC os centralizados.

Leia mais

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: Arquitetura de Software Aula 03

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: Arquitetura de Software Aula 03 Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: Arquitetura de Software Aula 03 Agenda 1. Arquitetura de Software 1.1.Introdução 1.2.Vantagens da Arquitetura de Software

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

Conceitos Básicos de Rede. Um manual para empresas com até 75 computadores

Conceitos Básicos de Rede. Um manual para empresas com até 75 computadores Conceitos Básicos de Rede Um manual para empresas com até 75 computadores 1 Conceitos Básicos de Rede Conceitos Básicos de Rede... 1 A Função de Uma Rede... 1 Introdução às Redes... 2 Mais Conceitos Básicos

Leia mais

Sistemas Distribuídos Modelo Cliente-Servidor

Sistemas Distribuídos Modelo Cliente-Servidor Sistemas Distribuídos Modelo Cliente-Servidor Disciplina: Sistemas Distribuídos Prof.: Edmar Roberto Santana de Rezende Faculdade de Engenharia de Computação Centro de Ciências Exatas, Ambientais e de

Leia mais

Notas da Aula 6 - Fundamentos de Sistemas Operacionais

Notas da Aula 6 - Fundamentos de Sistemas Operacionais 1. Monitores Notas da Aula 6 - Fundamentos de Sistemas Operacionais Embora os semáforos sejam uma boa solução para o problema da exclusão mútua, sua utilização não é trivial. O programador é obrigado a

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS 1. Histórico Primeiros computadores Computadores dos anos 50 e 60 Primeiros computadores com sistemas operacionais Surgimento das redes de computadores Nos anos 70 início das pesquisas

Leia mais

2 Gerenciamento de Log 2.1 Definições básicas

2 Gerenciamento de Log 2.1 Definições básicas 2 Gerenciamento de Log 2.1 Definições básicas Os logs são fontes riquíssimas de informação e são gerados pelos servidores e pelas aplicações conforme eventos significativos acontecem. Em [1], log é definido

Leia mais

Curso: Redes II (Heterogênea e Convergente)

Curso: Redes II (Heterogênea e Convergente) Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Redes Heterogênea e Convergente Professor Rene - UNIP 1 Redes heterogêneas Redes Heterogêneas Todo ambiente de rede precisa armazenar informações

Leia mais

Evolução na Comunicação de

Evolução na Comunicação de Evolução na Comunicação de Dados Invenção do telégrafo em 1838 Código Morse. 1º Telégrafo Código Morse Evolução na Comunicação de Dados A evolução da comunicação através de sinais elétricos deu origem

Leia mais

Sistemas Distribuídos (DCC/UFRJ)

Sistemas Distribuídos (DCC/UFRJ) Sistemas Distribuídos (DCC/UFRJ) Aula 1: 4 de abril de 2016 1 Conceitos básicos sobre sistemas distribuídos 2 Computação distribuída Computação distribuída A computação distribuída envolve o projeto, implementação

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

Introdução 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

CA Mainframe Chorus for Storage Management Versão 2.0

CA Mainframe Chorus for Storage Management Versão 2.0 FOLHA DO PRODUTO CA Mainframe Chorus for Storage Management CA Mainframe Chorus for Storage Management Versão 2.0 Simplifique e otimize suas tarefas de gerenciamento de armazenamento, aumente a produtividade

Leia mais

Edeyson Andrade Gomes. www.edeyson.com.br

Edeyson Andrade Gomes. www.edeyson.com.br Sistemas Operacionais Histórico e Estruturas Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Histórico de SOs Tipos de SOs Estruturas de SOs 2 Histórico de SOs Baseado em Francis Machado e Luiz

Leia mais

Aula 03-04: Modelos de Sistemas Distribuídos

Aula 03-04: Modelos de Sistemas Distribuídos UNIVERSIDADE Computação Aula 03-04: Modelos de Sistemas Distribuídos 2o. Semestre / 2014 Prof. Jesus Principais questões no projeto de um sistema distribuído (SD) Questão de acesso (como sist. será acessado)

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Prof. Ms. Márcio Andrey Teixeira A Caracterização dos Sistemas Funções do S.O Administração de Processos Administração da Memória Principal Administração do Armazenamento Secundário Administração

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

Permitir a troca de mensagens de texto entre os dois alunos; Permitir que um aluno enviasse para o outro uma cópia de prova;

Permitir a troca de mensagens de texto entre os dois alunos; Permitir que um aluno enviasse para o outro uma cópia de prova; Software Básico 2008.2 Trabalho Prático 1: programação de E/S, uso de sinais Prática de programação voltada a eventos Trabalho individual ou em dupla Data de entrega: 01/10/2008 1 O Objetivo Utilizando

Leia mais

Estrutura de um Rede de Comunicações. Redes de comunicação. de Dados. Network) Area. PAN (Personal( Redes de. de dados

Estrutura de um Rede de Comunicações. Redes de comunicação. de Dados. Network) Area. PAN (Personal( Redes de. de dados Fundamentos de Estrutura de um Rede de Comunicações Profa.. Cristina Moreira Nunes Tarefas realizadas pelo sistema de comunicação Utilização do sistema de transmissão Geração de sinal Sincronização Formatação

Leia mais

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada

Leia mais

AVALIAÇÃO DE DESEMPENHO

AVALIAÇÃO DE DESEMPENHO AVALIAÇÃO DE DESEMPENHO Mário Meireles Teixeira Departamento de Informática, UFMA mario@deinf.ufma.br Introdução 2 Desempenho: quantidade de serviços prestados / tempo decorrido desde o início dos serviços

Leia mais

UNEMAT SISTEMA DE INFORMAÇÃO (SI) Professora: Priscila Pelegrini priscila_pelegrini@unemat-net.br

UNEMAT SISTEMA DE INFORMAÇÃO (SI) Professora: Priscila Pelegrini priscila_pelegrini@unemat-net.br UNEMAT SISTEMA DE INFORMAÇÃO (SI) Professora: Priscila Pelegrini priscila_pelegrini@unemat-net.br SINOP MT 2015-1 COMO SÃO DESENVOLVIDOS OS SISTEMAS DE INFORMAÇÃO? São desenvolvimento como uma estrutura

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos 11 Objetivos Este capítulo apresenta uma introdução aos sistemas distribuídos em geral Arquiteturas de cliente servidor Características das arquiteturas de 2 e 3 camadas Ambiente

Leia mais

Figura 5.1.Modelo não linear de um neurônio j da camada k+1. Fonte: HAYKIN, 2001

Figura 5.1.Modelo não linear de um neurônio j da camada k+1. Fonte: HAYKIN, 2001 47 5 Redes Neurais O trabalho em redes neurais artificiais, usualmente denominadas redes neurais ou RNA, tem sido motivado desde o começo pelo reconhecimento de que o cérebro humano processa informações

Leia mais

Unidade 13: Paralelismo:

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

Leia mais

Topologia de rede Ligação Ponto-a-Ponto

Topologia de rede Ligação Ponto-a-Ponto TIPOS DE REDE Tipos de Redes Locais (LAN - Local Area Network), Redes Metropolitanas (MAN - Metropolitan Area Network) e Redes Remotas (WAN - Wide Area Network). Redes que ocupam um pequeno espaço geográfico

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Software em Sistemas Distribuídos Aplicativo ou Sistema Operacional Sincronismo Interação Controles Um sistema operacional moderno provê dois serviços fundamentais para o usuário

Leia mais

Sistemas Distribuídos. Introdução

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

Leia mais

REDES DE COMPUTADORES - I UNI-ANHANGUERA CENTRO UNIVERSITÁRIO DE GOIÁS CURSO DE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROF.

REDES DE COMPUTADORES - I UNI-ANHANGUERA CENTRO UNIVERSITÁRIO DE GOIÁS CURSO DE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROF. 1 REDES DE COMPUTADORES - I UNI-ANHANGUERA CENTRO UNIVERSITÁRIO DE GOIÁS CURSO DE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROF. MARCIO BALIAN E L A B O R A Ç Ã O : M Á R C I O B A L I A N / T I A G O M A

Leia mais

Estrutura de um Rede de Comunicações

Estrutura de um Rede de Comunicações Fundamentos de Profa.. Cristina Moreira Nunes Estrutura de um Rede de Comunicações Tarefas realizadas pelo sistema de comunicação Utilização do sistema de transmissão Geração de sinal Sincronização Formataçã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

Camadas de Serviço de Hardware e Software em Sistemas Distribuídos. Introdução. Um Serviço Provido por Múltiplos Servidores

Camadas de Serviço de Hardware e Software em Sistemas Distribuídos. Introdução. Um Serviço Provido por Múltiplos Servidores Camadas de Serviço de Hardware e Software em Sistemas Distribuídos Arquiteutra de Sistemas Distribuídos Introdução Applications, services Adaptação do conjunto de slides do livro Distributed Systems, Tanembaum,

Leia mais

PORTABILIDADE NUMÉRICA UMA SOLUÇÃO ORIENTADA PELA SIMPLICIDADE, QUALIDADE E BAIXO CUSTO

PORTABILIDADE NUMÉRICA UMA SOLUÇÃO ORIENTADA PELA SIMPLICIDADE, QUALIDADE E BAIXO CUSTO PORTABILIDADE NUMÉRICA UMA SOLUÇÃO ORIENTADA PELA SIMPLICIDADE, QUALIDADE E BAIXO CUSTO 1 Introdução A portabilidade é a facilidade que possibilita ao assinante de telefonia manter o número do seu telefone

Leia mais

2 Fundamentação Conceitual

2 Fundamentação Conceitual 2 Fundamentação Conceitual 2.1 Computação Pervasiva Mark Weiser define pela primeira vez o termo Computação Ubíqua ou Computação Pervasiva (Ubiquitous Computing) em (10). O autor inicia o trabalho com

Leia mais

Considerações no Projeto de Sistemas Cliente/Servidor

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

Leia mais

GBD PROF. ANDREZA S. AREÃO

GBD PROF. ANDREZA S. AREÃO GBD PROF. ANDREZA S. AREÃO Dado, Informação e Conhecimento DADO: Estímulos captados pelos sentidos humanos; Símbolos gráficos ou sonoros; Ocorrências registradas (em memória, papel, etc.); Indica uma situação

Leia mais

Arquitetura dos Sistemas Operacionais

Arquitetura dos Sistemas Operacionais Arquitetura dos Sistemas Operacionais Arquitetura de um Sistema Operacional Basicamente dividido em shell é a interface entre o usuário e o sistema operacional é um interpretador de comandos possui embutido

Leia mais

Teste de Software: Um Breve Estudo do Importante Processo no Desenvolvimento de Softwares

Teste de Software: Um Breve Estudo do Importante Processo no Desenvolvimento de Softwares Teste de Software: Um Breve Estudo do Importante Processo no Desenvolvimento de Softwares André Assis Lôbo de Oliveira Francisco Guerra Fernandes Júnior Faculdades Alves Faria, 74445190, Brasil andrelobin@hotmail.com,

Leia mais

Guia de utilização da notação BPMN

Guia de utilização da notação BPMN 1 Guia de utilização da notação BPMN Agosto 2011 2 Sumário de Informações do Documento Documento: Guia_de_utilização_da_notação_BPMN.odt Número de páginas: 31 Versão Data Mudanças Autor 1.0 15/09/11 Criação

Leia mais

Capítulo 2. Processos de Software. 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 1

Capítulo 2. Processos de Software. 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 1 Capítulo 2 Processos de Software slide 1 Tópicos apresentados Modelos de processo de software. Atividades de processo. Lidando com mudanças. Rational Unified Process (RUP). Um exemplo de um processo de

Leia mais

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB 18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB Autor(es) HARLEI MIGUEL DE ARRUDA LEITE Orientador(es) PLÍNIO ROBERTO SOUZA VILELA Apoio Financeiro PIBIC/CNPQ

Leia mais

NORMA TÉCNICA E PROCEDIMENTOS GERAIS PARA ADMINISTRAÇÃO DO BANCO DE DADOS CORPORATIVO

NORMA TÉCNICA E PROCEDIMENTOS GERAIS PARA ADMINISTRAÇÃO DO BANCO DE DADOS CORPORATIVO NORMA TÉCNICA E PROCEDIMENTOS GERAIS PARA ADMINISTRAÇÃO DO BANCO DE DADOS CORPORATIVO Referência: NT-AI.04.01.01 http://www.unesp.br/ai/pdf/nt-ai.04.01.01.pdf Data: 27/07/2000 STATUS: EM VIGOR A Assessoria

Leia mais

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Programação Servidor para Sistemas Web 1 Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Objetivo: Apresentar a teoria por trás dos padrões na construção de aplicações Web. INTRODUÇÃO Nas aulas anteriores

Leia mais

Introdução à Computação: Sistemas de Computação

Introdução à Computação: Sistemas de Computação Introdução à Computação: Sistemas de Computação Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,

Leia mais

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 02. Prof. Gabriel Silva

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 02. Prof. Gabriel Silva FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 02 Prof. Gabriel Silva Temas da Aula de Hoje: Revisão da Aula 1. Redes LAN e WAN. Aprofundamento nos Serviços de

Leia mais

2 Ferramentas Utilizadas

2 Ferramentas Utilizadas 2 Ferramentas Utilizadas Esta dissertação utiliza vários outros trabalhos para implementar os mecanismos de adaptação abordados. Essas ferramentas são descritas nas seções seguintes. 2.1 Lua Lua [7, 8]

Leia mais

Introdução a Computação

Introdução a Computação O que é um SO? Introdução a Computação Sistemas Operacionais PII Consiste em: Hardware Programas de Sistema Programas de Aplicativos 1 2 O que é um SO? Hardware não proporciona controle de alto nível disponível

Leia mais

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Cronograma das Aulas. Hoje você está na aula Semana

Leia mais

Curso Técnico em Informática Organização Curricular. A carga horária total dos módulos é oferecida conforme quadro síntese abaixo:

Curso Técnico em Informática Organização Curricular. A carga horária total dos módulos é oferecida conforme quadro síntese abaixo: FEDERAÇÃO DOS CÍRCULOS OPERÁRIOS DO RIO GRANDE DO SUL ESCOLA TÉCNICA SANTO INÁCIO Estrada Costa Gama, nº 1009 Belém Velho - Porto Alegre RS Fone: (51) 3374-2858 escola@stoinacio.com.br www.stoinacio.com.br

Leia mais

Comunicação Fim-a-Fim a Alta Vede em Redes Gigabit

Comunicação Fim-a-Fim a Alta Vede em Redes Gigabit Outros trabalhos em: www.projetoderedes.com.br Comunicação Fim-a-Fim a Alta Vede em Redes Gigabit DaniloM.Taveira, Igor M. Moraes, Daniel de O.Cunha RafaelP.Laufer, Marco D. D. Bicudo, Miguel E. M. Campista,

Leia mais

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

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

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de I Organização Básica B de (Parte V, Complementar)

Leia mais

Unidade IV GERENCIAMENTO DE SISTEMAS. Prof. Roberto Marcello

Unidade IV GERENCIAMENTO DE SISTEMAS. Prof. Roberto Marcello Unidade IV GERENCIAMENTO DE SISTEMAS DE INFORMAÇÃO Prof. Roberto Marcello SI - Tecnologia da informação SI - Tecnologia da informação Com a evolução tecnológica surgiram vários setores onde se tem informatização,

Leia mais

Classificação Quanto. Sistemas de Lotes (2) Sistemas de Lotes (3)

Classificação Quanto. Sistemas de Lotes (2) Sistemas de Lotes (3) 1 Mono e multiprogramação Introdução Classificação (Aula 2) Recap Sistemas Máquina Profa. Patrícia Gerenciador D. CostaLPRM/DI/UFES Provê Fornece Compartilhamento programador máquina justa recursos Operacionais

Leia mais

VISÃO GERAL DE BANCO DE DADOS

VISÃO GERAL DE BANCO DE DADOS Banco de Dados BD_A007 Visão Geral de Banco de Dados 02 de março de 2005 VISÃO GERAL DE BANCO DE DADOS Relação de siglas utilizadas neste trabalho: ABD: Administrador de Banco de Dados. BD: Banco de Dados.

Leia mais

3 Qualidade de Software

3 Qualidade de Software 3 Qualidade de Software Este capítulo tem como objetivo esclarecer conceitos relacionados à qualidade de software; conceitos estes muito importantes para o entendimento do presente trabalho, cujo objetivo

Leia mais

ADMINISTRAÇÃO I. Família Pai, mãe, filhos. Criar condições para a perpetuação da espécie

ADMINISTRAÇÃO I. Família Pai, mãe, filhos. Criar condições para a perpetuação da espécie 1 INTRODUÇÃO 1.1 ORGANIZAÇÃO E PROCESSOS A administração está diretamente ligada às organizações e aos processos existentes nas mesmas. Portanto, para a melhor compreensão da Administração e sua importância

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

AULA 6 Esquemas Elétricos Básicos das Subestações Elétricas

AULA 6 Esquemas Elétricos Básicos das Subestações Elétricas CONSIDERAÇÕES INICIAIS AULA 6 Esquemas Elétricos Básicos das Subestações Elétricas Quando planejamos construir uma subestação, o aspecto de maior importância está na escolha (e, conseqüentemente, da definição)

Leia mais

3.1 Definições Uma classe é a descrição de um tipo de objeto.

3.1 Definições Uma classe é a descrição de um tipo de objeto. Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Classes Autoria:Aristófanes Corrêa Silva Adaptação:

Leia mais

NORMA TÉCNICA PARA IMPLANTAÇÃO DE NOVOS SISTEMAS OU APLICAÇÕES NO BANCO DE DADOS CORPORATIVO

NORMA TÉCNICA PARA IMPLANTAÇÃO DE NOVOS SISTEMAS OU APLICAÇÕES NO BANCO DE DADOS CORPORATIVO NORMA TÉCNICA PARA IMPLANTAÇÃO DE NOVOS SISTEMAS OU APLICAÇÕES NO BANCO DE DADOS CORPORATIVO Referência: NT-AI.04.02.01 http://www.unesp.br/ai/pdf/nt-ai.04.02.01.pdf Data: 27/07/2000 STATUS: EM VIGOR A

Leia mais

Projeto de Redes de Computadores. Projeto do Esquema de Endereçamento e de Nomes

Projeto de Redes de Computadores. Projeto do Esquema de Endereçamento e de Nomes Projeto do Esquema de Endereçamento e de Nomes Lembrar a estrutura organizacional do cliente ajuda a planejar a atribuição de endereços e nomes O mapa topológico também ajuda, pois indica onde há hierarquia

Leia mais

Nesta seção apresentamos protótipos que desenvolvemos com o objetivo de levantar os requesitos necessários para um sistema para apresentações

Nesta seção apresentamos protótipos que desenvolvemos com o objetivo de levantar os requesitos necessários para um sistema para apresentações 3 Protótipos Nesta seção apresentamos protótipos que desenvolvemos com o objetivo de levantar os requesitos necessários para um sistema para apresentações multimídia distribuídas. Os protótipos auxiliaram

Leia mais

TÉCNICAS DE PROGRAMAÇÃO

TÉCNICAS DE PROGRAMAÇÃO TÉCNICAS DE PROGRAMAÇÃO (Adaptado do texto do prof. Adair Santa Catarina) ALGORITMOS COM QUALIDADE MÁXIMAS DE PROGRAMAÇÃO 1) Algoritmos devem ser feitos para serem lidos por seres humanos: Tenha em mente

Leia mais

8 Threads. 8.1 Introdução

8 Threads. 8.1 Introdução 1 8 Threads 8.1 Introdução Uma thread, também chamada de tarefa, pode ser definida como uma parte ou rotina de um processo em execução que compartilha o mesmo espaço de endereçamento, mas tem seu próprio

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS 1 SISTEMAS OPERACIONAIS Profª Josiane T. Ferri Licenciada em Computação prof.jositf@yahoo.com.br facebook.com/josiferri ESTRUTURA DO SISTEMA OPERACIONAL Embora a definição de níveis de privilégio imponha

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

Comunicação em Sistemas Distribuídos. Bruno M. Carvalho Sala: 3B2 Horário: 35T34

Comunicação em Sistemas Distribuídos. Bruno M. Carvalho Sala: 3B2 Horário: 35T34 Comunicação em Sistemas Distribuídos Bruno M. Carvalho Sala: 3B2 Horário: 35T34 Comunicação em Sistemas Distribuídos Protocolos regras que os processos que estão se comunicando tem de seguir Protocolos

Leia mais

SISTEMAS DISTRIBUIDOS. Prof. Marcelo de Sá Barbosa

SISTEMAS DISTRIBUIDOS. Prof. Marcelo de Sá Barbosa Prof. Marcelo de Sá Barbosa CLUSTER: Um cluster é um conjunto de computadores independentes conectados por rede que formam um sistema único através do uso de software. Um cluster, ou aglomerado de computadores,

Leia mais

ITIL v3 - Operação de Serviço - Parte 1

ITIL v3 - Operação de Serviço - Parte 1 ITIL v3 - Operação de Serviço - Parte 1 É na Operação de Serviço que se coordena e realiza as atividades e processos necessários para fornecer e gerenciar serviços em níveis acordados com o usuário e clientes

Leia mais

1 http://www.google.com

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

Leia mais

Sistemas Distribuídos Visão Geral de Sistemas Distribuídos I. Prof. MSc. Hugo Souza

Sistemas Distribuídos Visão Geral de Sistemas Distribuídos I. Prof. MSc. Hugo Souza Sistemas Distribuídos Visão Geral de Sistemas Distribuídos I Prof. MSc. Hugo Souza Voltando ao tempo, em meados da década de quarenta, os Estados Unidos buscavam desenvolver estratégias militares de comunicação

Leia mais