Buscar

Sistema Distribuidos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Resumo de Sistema Distribuidos 
1° Bimestre
Programação Concorrente - Não exigem execução sequencial, em um programa concorrente, existe mais de um fluxo de controle ativo.
Programação Distribuída - além de concorrentes, executam sobre redes de computadores, utilizadas tecnologias e ferramentas que permitam a componentes concorrentes, executados em máquinas distintas, concorrer e colaborar em torno de um objetivo comum.
Sistemas de Computação Distribuídos - Utilizada para tarefas de computação de alto desempenho algumas aplicações: Pesquisa da cura de doenças (AIDS, câncer), Descoberta de vida Extra-Terrestre
Sistemas Distribuídos em cluster - Um conjunto de computadores conectados em rede de alta velocidade sendo utilizado, em geral, para programação paralela. Grande ganho na relação preço / desempenho, geralmente, utiliza-se máquinas iguais
Sistemas Distribuídos em grade - Conjunto de computadores de diferentes hardwares, softwares, tecnologia de rede e pertencentes a organizações diferentes. Alto grau de heterogeneidade
RPC – (Remote Procedure Call ) é uma tecnologia de comunicação entre processos que permite a um programa de computador chamar um procedimento em outro espaço de endereçamento (geralmente em outro computador, conectado por uma rede) modelo cliente-servidor.
RMI - (Remote Method Invocation) é uma interface de programação que permite a execução de chamadas remotas no estilo RPC em aplicações desenvolvidas em Java.
Sistemas de Informação Distribuídos - Têm como característica a integração das aplicações existentes, principal desafio uma aplicação conseguir “conversar” com a outra aplicação.
Sistema de Processamento de Transação - Em geral, são aplicações centradas em transações de banco de dados. Transações podem conter sub-transações e acessar mais de um banco de dados.
As transações devem ser:
Atómicas: transação é indivisível
Consistentes: não viola invariantes do sistema
Isoladas: Permite transações concorrentes
Duráveis: após o “commit” de uma transão as alterações feitas ficam gravadas
Integração de Aplicações Empresariais - São sistemas onde os componentes de aplicações se comunicam diretamente um com o outro. Surgiram da necessidade de integrar as diversas aplicações de/entre empresas.
Muitos modelos de comunicação entre aplicações:
Chamadas de procedimento remoto (RPC – Remote Procedure Calls) – É uma tecnologia de comunicação entre processos que permite a um programa de computadorchamar um procedimento em outro espaço de endereçamento (geralmente em outro computador, conectado por uma rede) modelo cliente-servidor.
Inovações de método remoto (RMI – Remote Method Invocations) – É uma interface de programação que permite a execução de chamadas remotas no estilo RPC em aplicações desenvolvidas em Java.
Middleware orientado a mensagem (MOM – Message-oriented Middleware) - faz a mediação entre software e demais aplicações. É utilizado para mover ou transportar informações e dados entre programas de diferentes protocolos de comunicação, plataformas e dependências do sistema operacional. Seu objetivo é mascarar a heterogeneidade e fornecer um modelo de programação mais produtivo para os programadores de aplicativos.
Sistemas Distribuídos Pervasivos
A idéia básica da computação pervasiva é disponibilizar acesso computacional de modo invisível em todo lugar o tempo todo, sem que o usuário precise conhecer a tecnologia para se beneficiar dela, A estabilidade não é mais a regra.
Entrada da computação móvel e embutida 
A instabilidade é o comportamento esperado
Ausência geral de controle administrativo humano
Configurado por seus proprietários
Os dispositivos descobrem automaticamente seu ambiente e se encaixa o melhor que puderem
Aspecto importante, os dispositivos se juntam ao sistema para acessar informações
Não existe transparência!!!
Três exemplos:
Sistemas Domésticos
Sistemas eletrônicos para tratamento de saúde
Redes de Sensores
Estilos Arquitetônicos
São classificações abstratas com base em características de arquitetura.
São quatro os estilos mais importantes:
Arquiteturas em camadas
Componentes organizados em camadas
Cada camada se comunica apenas com as adjacentes
Altamente hierarquizado
Arquiteturas Baseadas em objetos
Mais solta que em camadas
Componentes se comunicam diretamente
Comunicação por chamada de procedimento (remoto)
Não hierarquizado
Arquiteturas centradas em dados
Processos se comunicam por meio de um repositório comum
Baseadas em eventos
Comunicação por propagação de eventos 
Processos fracamente acoplados 
Arquiteturas de Sistemas Distribuídos
Arquiteturas Centralizadas
Cliente X Servidor ou Requisição X Resposta. Um único servidor implementa a maioria dos componentes. Embora tenham surgido com um modelo em duas camadas, hoje são defendidas com no mínimo três níveis:
Nível de Interface com os usuários – Manipula a interação com o usuário.
Nível de Processamento – Mantém a funcionalidade central da aplicação.
Nível de Dados – Age sobre o banco de dados ou sistemas de arquivos.
Cada camada possui responsabilidades bem definidas e, normalmente, atuam em máquinas diferentes.
Arquiteturas Descentralizadas
A distribuição é horizontal. 
O cliente ou o servidor podem ser subdivididos fisicamente em partes logicamente equivalentes. Busca-se o equilíbrio da carga.
Cada componente distribuído é completo do ponto de vista funcional e colabora com seus pares (peers) para atingir um objetivo comum. 
Normalmente, a arquitetura par-a-par (peer to peer) é, por definição, não hierárquica. Mas, pode ser construída de modo estruturado ou não-estruturado.
Peer-to-peer Estruturado
Lista de endereço dos pares
Algoritmo determinístico para definição de rotas
Peer-to-peer Não-estruturado
Conhecimento local (só os pares vizinhos)
Rotas aleatórias
Um outro conceito importante é o de Super Par (Super Peer): um par que, embora não-hierárquico, possui atribuições de organização na comunicação entre pares. 
Contextualização: Sistema Operacional
Camadas de Software
Sistema Operacional
A função do sistema operacional é fornecer acesso e gerenciar os recursos físicos (hardware) existentes em uma máquina:
Processadores – CPU, Registradores, Memória Cache.
Memória – Memória RAM.
Comunicação – Barramentos da Placa Mãe.
Storage – HD, Memoria Fash, Cd/Dvd Rom.
Funcionalidades Básicas de um Sistema Operacional:
Espera-se, de um Sistema Operacional, as seguintes características:
Encapsulamento - Ocultar detalhes de sua implementação e prover apenas uma interface pública para acesso aos recursos. 
Proteção - Impedir que haja acesso indevido a recursos
Concorrência - Prover acesso concorrente a recursos de forma transparente.
Para prover concorrência o S.O. tem que garantir que cada processo seja executado concorrentemente e com um ambiente de execução independente. O isolamento é essencial para que um processo não afete outro processo seja intencionalmente ou maliciosamente, para isso, o S.O. fornece um “processador virtual” a cada um dos processos de maneira transparente.
Processos: Ambientes de Execução
Mesmo sendo transparente, a concorrência tem um custo, o qual está associado a criação, gerenciamento e isolamento dos ambientes de execução dos processos.
Esse ambiente é composto por:
Um espaço de endereçamento
Recursos de comunicação (portas)
Sincronização de Threads (concorrência)
Recursos de alto nível (janelas, arquivos, etc.)
Cada vez que um processo recebe acesso ao processador, uma sequência de passos deve ser executada (troca de contexto):
Empacotar o processo em execução
Transferí-lo para uma área de espera
Buscar na área de espera o novo processo a executar
Desempacotar o processo a executar
Parte do projeto de um S.O. é focada na eficiência com a qual faz a troca de contexto.
Threads
Nas primeiras versões de S.O. (anos 70 e 80), cada ambiente de execução suportava apenas um processo, uma linha de execução.
Com o passar o tempofoi implementado o conceito de Thread (linha de execução ou processos leves), cujo objetivo é minimizar o custo da troca de contexto. Cada processo pode ter uma ou mais threads.
Multi-threads X Multi-Processos
Processos multi-thread possuem uma ou mais threads (processos leves).
Por compartilhar o ambiente de execução do processo, a criação e destruição de threads é mais barata e a troca de contexto no momento de sua execução é consideravelmente menor. 
Threads de um mesmo processo são razoavelmente independentes entre si, mas compartilham o espaço de endereçamento e tem seu ciclo de vida ligado ao do processo.
Aplicativos multi-thread apresentam diversas vantagens. Uma das mais significativas diz respeito a chamadas bloqueantes.
Exemplo: (acesso a disco, conexão remota), todo o seu funcionamento fica suspenso até o retorno dessa chamada. Mas se a chamada for em um thread apenas aquela thread ficara bloqueada.
Vantagens:
Criar uma nova thread em um processo é muito mais barato que criar um novo processo
Realizar a troca de contexto entre threads é muito mais barato que realizá-la entre processos
O compartilhamento de recursos entre Threads é mais simples que entre processos.
Threads são capazes de explorar ambinetes com múltiplos processadores.
Desvantagem:
Por compartilharem o mesmo ambiente de execução, threads podem interferir no funcionamento umas das outras.
A programação com threads (também chamada de programação concorrente) envolve alguns conceitos muito importantes:
Condição de corrida
Região crítica
Variáveis de condição
Semáforos
Servidores e Clientes Multi-thread
Em Sistemas Distribuídos, podemos aplicar o conceito Multi-thread tanto do lado cliente quanto do lado servidor.
Vantagens cliente:
Redução da latência na comunicação, com a abertura de diversos canais paralelos com o servidor.
Evitar que chamadas bloqueantes congelem as respostas ao usuário.
Exemplo: Browser web.
Vantagens Servidor:
Servidores com múltiplos processadores podem ter seu paralelismo aumentado.
Capacidade de atendimento de múltiplos clientes ao mesmo tempo.
Para essa última vantagem, existem algumas arquiteturas que podem ser exploradas.
Arquitetura de Pool de Trabalhadores
Ao ser iniciado o servidor, um pool fixo de threads é criado. Essas threas podem ser de dois tipos:
Thread Despachante (Dispatcher Thread) - Responsável por receber as requisições e alocar uma thread operária para o atendimento.
Thread Operária (Worker Thread) - Responsável por atender a requisição. Podem emitir chamadas bloqueantes.
Arquitetura de Thread por Pedido
Derivada da arquitetura de pool de trabalhadores, ela não cria uma quantidade fixa de threads operarias. Essas são criadas a medida em que forem sendo necessárias (a pedido). Uma vez atendido o pedido, a thread operária é destruída. 
A vantagem óbvia é o melhor gerenciamento de recursos. Desvantagem é gerada uma sobrecarga de operação por ocasião da criação e destruição da thread.
Virtualização em Sistemas Distribuídos
Processador virtual - Objetivo é abstrair e tornar transparente, à thread ou processo e detalhes da troca de contexto.
Tipos de Virtualização:
Máquina Virtual de Processo – Permite que um certo programa posso rodar em “sistemas operacionais” diferentes. (Exemplo: JVM).
Monitor de Máquina Virtual – Cria um “computador virtual” baseando se no hardware da máquina hospedeira, aonde podemos instalar diversos sistemas operacionais sem a necessidade de formatação. (Exemplo: VMWare).
Vantagem do Monitor de Máquina Virtual:
Um mesmo hardware/S.O. pode emular diversos hardwares/S.O. diferentes.
Facilidade de gerenciamento - Menos máquinas a gerenciar 
Aumento na portabilidade e flexibilidade - Facilidade na cópia e disponibilização de novos ambientes
Aumento da confiabilidade e segurança - Isolamento total da aplicação e seu ambiente

Continue navegando