Baixe o app para aproveitar ainda mais
Prévia do material em texto
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 1 Hélio Crestana Guardia - 2011 Processos • Arquiteturas cliente-servidor são importantes em sistemas distribuídos • Implementação de funcionalidades (cliente e servidor) é comumente realizada por processos • Multithreading permite particionar as atividades e sobrepor comunicação e processamento local, com ganho de desempenho • Virtualização: – Permite que aplicação e ambiente de execução executem concorrentemente com outras aplicações – Alto grau de independência do hardware e de plataformas subjacentes – Alto grau de portabilidade • Migração de código auxilia na escalabilidade e configurações dinâmicas A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 2 Hélio Crestana Guardia - 2011 Threads • Processos formam um bloco de construção para as atividades a executar. • Threads permitem refinar a granularidade das operações a realizar Process: A software processor in whose context one or more threads may be executed. Executing a thread, means executing a series of instructions in the context of that thread. Thread: A minimal software processor in whose context a series of instructions can be executed. Saving a thread context implies stopping the current execution and saving all the data needed to continue the execution at a later stage. A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 3 Hélio Crestana Guardia - 2011 Threads • Sistema Operacional (SO) cria processadores virtuais para executar as diversas aplicações • SO mantém informações sobre cada processo, incluindo valores dos registradores da CPU, mapas de memória, arquivos abertos, dados de contabilização, privilégios e outras informações • Processos caracterizam programas em execução nos processadores virtuais • Mecanismos de hardware permite que SO isole a execução dos processos, que não interferem uns nos outros • Processos possuem espaços de endereçamento independentes (memória virtual) • Alternância no uso de processador físico implica troca de contextos • Contexto de um processo: valores dos registradores usados em sua execução, contador de programa, ponteiro de pilha, registrador da unidade de gerenciamento de memória, caches de tradução de endereço • Contexto de um thread: valores dos registradores, pilha e informações de estado. Demais informações, como áreas de código e dados, arquivos, etc., são compartilhadas com o processo e possíveis outras threads deste mesmo processo. A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 4 Hélio Crestana Guardia - 2011 Threads Permitem sobrepor atividades de um mesmo processo Favorecem o paralelismo da aplicação quando há vários processadores físicos Permitem implementar diferentes funcionalidades de uma aplicação de forma independente Permitem comunicação baseada em memória compartilhada, para threads do mesmo processo, ao invés de usar mecanismos de IPC (Inter Process Communication), típicos entre processos no mesmo sistema Criação e destruição de threads são menos onerosas que processos Trocas de contexto entre threads de um mesmo processo envolvem menos operações A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 5 Hélio Crestana Guardia - 2011 Threads Implementação do suporte para threads pode ocorrer como biblioteca no espaço de endereçamento do usuário ou como um suporte provido pelo sistema operacional (kernel space) Solução no espaço de usuário (user space): – Criação simplificada: alocação de memória para pilha – Trocas de contexto no âmbito do processo – Bloqueio do processo pára todas as threads Solução no espaço do sistema operacional (kernel space): – Contexto de cada thread mantido no kernel – Trocas de contexto Lightweight Processes (LWP): modelo híbrido (user/kernel space) – Conceitual, implementação não usual A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 6 Hélio Crestana Guardia - 2011 Threads A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 7 Hélio Crestana Guardia - 2011 Threads A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 8 Hélio Crestana Guardia - 2011 Threads Possibilidade de bloquear thread sem bloquear processo como um todo favorece uso de threads em sistemas distribuídos, em que múltiplas comunicações podem estar ativas ao mesmo tempo Uso de threads permite ocultar atrasos de propagação de mensagens em redes de longa distância Ex.: cliente navegador WWW: Busca de arquivos associados a uma página pode ser sobreposta com apresentação Conexões simultâneas podem ser usadas para busca de dados a partir de múltiplas réplicas Ex.: servidor WWW multithread: Simplicação da implementação das funcionalidades Exploração do paralelismo de processadores atuais Sobreposição de processamento e acesso ao sistema de arquivos A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 9 Hélio Crestana Guardia - 2011 Threads Organização do trabalho pode ocorrer no modelo despachante (dispatcher thread) e operário (worker thread) Dispatcher lê requisições recebidas numa porta de comunicação Operário ocioso é selecionado para atender a solicitação Operário atua de forma bloqueante Servidor sem suporte a threads pode ficar bloqueado durante espera por requisição, e seu processamento, retardando o atendimento de novas solicitações Servidor não multithread pode ser implementado como uma máquina de estados finitos (finite-state machine): Requisição recebida é tratada imediatamente se dados pedidos estão disponíveis (cache) Requisição pendente gera solicitação ao sistema de arquivos; estado atual é salvo Servidor busca nova requisição pendente; indicação de conclusão de solicitação solicitada anteriormente é tratada de acordo com estado atual Operações de entrada e saída, da rede e do sistema de arquivos, são realizadas de forma não bloqueante A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 10 Hélio Crestana Guardia - 2011 A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 11 Hélio Crestana Guardia - 2011 A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 12 Hélio Crestana Guardia - 2011 Virtualização Virtualização estende ilusão de paralelismo de processador para os demais recursos Virtualização possibilita que software de aplicação sobreviva aos sistema subjacentes de hardware e software Virtualização estende ou substitui interface existente, imitando o comportamento de um outro sistema Motivação inicial do conceito (década de 1970) era permitir que software legado executasse nos mainframes, incluindo o sistema operacional do qual dependiam Atualmente, virtualização permite manter plataformas de software adequadas para aplicações, que são mais estáveis e evoluem em ritmo mais lento Cada aplicação pode ser executada em sua própria máquina virtual, incluindo sistema operacional e bibliotecas de suporte necessárias Virtualização possibilita portabilidade e migração, além de isolação de componentes com falhas ou sob ataque. A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 13 Hélio Crestana Guardia - 2011 A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 14 Hélio Crestana Guardia - 2011 Arquiteturas de máquinas virtuais Sistemas computacionais oferecem 4 tipos diferentes de interfaces, em 4 níveis diferentes: Interfaceentre o hardware e o software, que consiste em instruções de máquina, possíveis de serem invocadas por quaisquer programas Interface entre o hardware e o software, que consiste em instruções de máquina possíveis de serem invocadas somente por programas privilegiados, como um sistema operacional Interface que consiste em chamadas de sistema, como oferecidas por um sistema operacional Interface que consiste em chamadas de biblioteca, formando uma API (application programming interface) Essência da virtualização consiste em imitar o comportamento dessas interfaces A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 15 Hélio Crestana Guardia - 2011 A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 16 Hélio Crestana Guardia - 2011 Virtualização Virtualização pode ocorrer de 2 maneiras: Construindo sistema de execução que forneça um conjunto de instruções abstrato que deve ser usado para executar aplicações Instruções podem ser interpretadas ou emuladas, resultando numa máquina virtual de processo Programa é compilado para código intemediário (portável), executado por um sistema em tempo de execução (runtime system) Virtualização é feita para um único processo Ex.: Java VM Implementando uma camada que proteje o hardware, e que oferece como interface o conjunto de instruções completo do mesm ou de outro hardware Interface pode ser provida de maneira simultânea a diferentes programas Vários SOs podem executar de maneira concorrente na mesma plataforma Interface oferecida é chamada de monitor de máquina virtual (Virtual Machine Monitor – VMM) Ex.: Vmware, Xen, VirtualBox A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 17 Hélio Crestana Guardia - 2011 Virtualização A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 18 Hélio Crestana Guardia - 2011 Virtualização: VMMs VMMs permitem o isolamento de aplicação completa e seu ambiente Falhas têm seus efeitos limitados à máquina virtual VMMs promovem descoplamento entre hardware e software, favorecendo a migração completa de um ambiente para outro VMMs estão sendo executadas sobre SOs existentes: Executam tradução binária Traduzem instruções da aplicação ou SO àquelas da máquina sobre a qual estão sendo executadas. Instruções privilegiadas (traps ao kernel original ou chamadas de sistema) são substituídas por chamadas à VMM. A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 19 Hélio Crestana Guardia - 2011 Clientes e servidores Clientes Clientes oferecem aos usuários uma interface de acesso aos servidores remotos 2 abordagens principais de implementação: Para cada serviço remoto, usa-se uma aplicação local. Ex.: agenda local que acessa agenda remota. Protocolo de aplicação realiza sincronização. Cliente serve apenas como terminal de acesso aos serviços remotos. Cliente não requer armazenamento local. Ex. thin client Exemplo: X server (executa no computador cliente!) X Window System permite acesso a serviços remotos com interação via inteface gráfica Aplicação é executada no servidor e é cliente dos eventos gráficos exibidos no dispositivo do usuário Biblioteca: xlib; protocolo: X protocol Para simplificar aplicação no dispositivo do usuário, aplicação (executada no servidor) pode realizar todo o processamento dos dados que serão exibidos A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 20 Hélio Crestana Guardia - 2011 A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 21 Hélio Crestana Guardia - 2011 Protocolo específico da aplicação Clientes A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 22 Hélio Crestana Guardia - 2011 Clientes Funcionalidades de nível mais alto podem ser providas no cliente para aperfeiçoar comunicação drag-and-drop: move objects across the screen to invoke interaction with other applications in-place editing: integrate several applications at user-interface level (word processing + drawing facilities) Partes do nível de dados e de processamento podem ser executadas no lado do cliente Ex.: caixas automáticos, transceptores de TV, etc. Além da interface de usuário e outros softwares relacionados com a aplicação, software cliente inclui componentes para conseguir transparência de distribuição Transparência de acesso: stubs para RPC no lado do cliente Transparência de localização/migração: software cliente mantém controle da localização Transparência de replicação: stubs no cliente tratam múltiplas requicições Transparência de falhas: mascara no cliente as falhas de comunicação com servidor. A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 23 Hélio Crestana Guardia - 2011 A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 24 Hélio Crestana Guardia - 2011 Servidores Servidor: implementa serviço específico em nome de clientes Organização: espera requisição e promove atendimento Servidor iterativo: próprio servidor manipula requisição e, se necessário, retorna resposta Servidor concorrente: repassa requisições para thread específico. Pode também gerar novo processo para atender requisições. Processo ou thread tratator envia resposta ao cliente. Comunicação comumente ocorre através de uma porta de comunicação na máquina onde servidor é executado Servidores esperam comunicação em portas específicas, conhecidas pelas aplicações clientes Na Internet, atribuição de portas gerenciada pela IANA (Internet Assigned Numbers Authority) Mapeamento de nome + porta permitem localizar serviço Mapeamento de portas também pode ser dinâmico, sendo realizado por um servidor que atende em porta conhecida Processo superservidor pode intermediar requisições para vários serviços. Ex.: Unix inetd, xinetd. A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 25 Hélio Crestana Guardia - 2011 Servidores A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 26 Hélio Crestana Guardia - 2011 Servidores Comunicação fora da banda (out-of-band) permite ter fluxos diferentes de dados e controle nas transmissões entre cliente e servidor Implementação pode ser realizada com portas separadas ou usando a transmissão de dados urgentes providas pelo protocolo TCP Servidor pode manter informações de estado (stateful) ou não (stateless) Servidor sem estado (stateless) não mantém informações sobre o estado dos clientes e pode mudar seu estado sem informar aos clientes. Ex.: servidor WWW: limita-se a responder requisições HTTP. Servidor pode até manter informações sobre os clientes, mas a perda dessas informações não gera disrupção do serviço oferecido. Soft state (estado flexível): servidor mantém infos de estado dos clientes por tempo limitado e depois descarta informações armazenadas. Distinção entre estado de sessão e estado permanente Cookies podem ser usados para manter informações de estado no cliente A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 27 Hélio Crestana Guardia - 2011 Servidores e informações de estado Stateless servers Nunca mantém informações precisas sobre o estado de um cliente depois de ter processado uma requisição Não mantém informações sobre arquivos abertos, que são fechados depois do processamento de cada requisição Consequências: Clientes e servidores são completamente independentes Evita-se inconsistências de estado devido a falhasno cliente ou no servidor Possível perda de desempenho, uma vez que servidor não prevê comportamento do cliente: uso ineficiente de cache e prefetching Pode usar comunicação orientada a conexão? Stateful servers Mantém informações sobre o estado dos clientes. Registros de arquivos abertos, possibilitando cache e prefetching Pode prover melhor desempenho, usando cópias dos dados nos clientes. A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 28 Hélio Crestana Guardia - 2011 Clusters de servidores Servidores podem trabalhar de maneira cooperativa em clusters Máquinas são interligadas em rede e cada uma executa um ou mais servidores Rede local oferece alga largura de banda e baixa latência Organização dos servidores comumente ocorre em 3 camadas: (c1) Comutador lógico: realiza encaminhamento das requisições recebidas − Comutador pode trabalhar no nível das conexões TCP − Servidor Web trabalha reencaminhando requisições HTTP (c2) Servidores de aplicação (c3) Servidores de processamento de dados (arquivo e BD) A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 29 Hélio Crestana Guardia - 2011 Clusters de servidores A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 30 Hélio Crestana Guardia - 2011 Encaminhamento de requisições Ponto de acesso único aos serviços Comutador esconde detalhes da existência de vários servidores (transparência) Possível gargalo (bottleneck) de operação Possibilidade de replicação de funções TCP-handoff: requisição TCP recebida é encaminhada para servidor mais apropriado para tratá-la Balanceamento de carga por rotação da distribuição dos fluxos ou baseado em critérios de serviço Servidor encarregado das comunicações faz-se passar pelo comutador, alterando endereços dos pacotes enviados Ex.: Linux HA: High-Availability A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 31 Hélio Crestana Guardia - 2011 Encaminhamento de requisições A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 32 Hélio Crestana Guardia - 2011 Servidores Distribuídos Localização de servidor pode ser baseada no mecanismo de mobilidade com Ipv6. Conceitos: Rede nativa (Home network): Home address = endereço na rede nativa Care-of-address (endereço externo): usando quando um nó se liga numa rede externa Requisições encaminhadas à rede nativa são repassadas ao CoAddress A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 33 Hélio Crestana Guardia - 2011 Servidores distribuídos: MIPv6 A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 34 Hélio Crestana Guardia - 2011 Gerenciamento de clusters Sistema de acesso remoto Monitoramento e ativação de atividades remotas Ferramentas: Ssh + auth + NFS + … + monitoramento (heartbeat) + Sistemas: CMS, Rocksclusters, Linux-HA, ... A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 35 Hélio Crestana Guardia - 2011 PlanetLab Organizações doam nós (ou clusters) para o sistema, que são compartilhadas nos experimentos Nós executam VMM (vservers com Linux) Vserver gerente de nó controla recursos locais Máquinas virtuais podem ser ativadas sobre essa plataforma VMM Linux mantém separação de plataformas Conjuntos de nós pode ser organizado em fatias (slices), que caracterizam clusters virtuais Alocações de recursos (rspecs) nos nós incluem: espaço em disco, descritores de arquivo, largura de banda de E/S e rede, memória, CPU, etc. Rspecs são identificadas por id de 128 bits globalmente exclusivo Para usar recursos é preciso reservar fatias (slices) Nós são contatados para alocar vservers e recursos associados Vservers oferecem um ambiente protegido com suas bibliotecas, etc. Aplicações são associadas a coleções de vservers. A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 36 Hélio Crestana Guardia - 2011 A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 37 Hélio Crestana Guardia - 2011 Gerenciamento PlanetLab A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 38 Hélio Crestana Guardia - 2011 Migração de código Migração normalmente ocorria na forma de migração de processos Migração de processos é complexa, justificada por questões de desempenho Redistribuição de carga baseada em filas e taxas de ocupação da CPU e/ou outras métricas Minimização das comunicações pode ser crítico Abordagem pode incluir transferir processo para próximo dos dados manipulados Agente móvel pode ser usado também para processar dados em diversos sites (ex.: programa de busca na Web) Migração possibilita configuração dinâmica de sistemas distribuídos A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 39 Hélio Crestana Guardia - 2011 A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 40 Hélio Crestana Guardia - 2011 Modelos para migração de código Migração de processo pode envolver outros aspectos além do código Segmentos de um processo: Segmento de Código: instruções Segmento de Recursos: referências a recursos externos (arquivos, impressoras, dispositivos, etc.) Segmento de Execução: estado de execução do processo (dados privados, pilha e contador de programa) Mobilidade fraca (weak mobility): transferência apenas do segmento de código, talvez junto com dados de inicialização. Código executado da partir o início. Mobilidade forte (strong mobility): segmento de execução também pode ser transferido. Execução pode prosseguir de onde foi interrompida. Implementação complexa... Iniciativa da migração pode ser do remetente ou do destinatário. Migration: move entire object from one machine to the other Cloning: start a clone, and set it in the same execution state. A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 41 Hélio Crestana Guardia - 2011 A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 42 Hélio Crestana Guardia - 2011 Migração e recursos locais Problema: objetos referenciados por processo migrando podem não estar disponíveis no destino. Ex. socket com conexão de rede (não disponível remotamente); arquivo refernciado por URL absoluta (disponível de forma independente de localização) Vinculação processo-recurso (object-to-resource binding): (forte) por identificador: ex. Uso de URL para referência a site Web. (mais fraca) por valor: objeto precisa apenas do valor do recurso. Ex.: dependência de bibliotecas padronizadas (C ou java); bibliotecas devem estar disponíveis mas localização exata pode ser direrentes. (fraca) por tipo: ex. Referências a dispositivos locais, como monitores, impressoras, etc. Recursos apenas precisam estar disponíveis. A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 43 Hélio Crestana Guardia - 2011 A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos: Princípios e paradigmas - Cap 3 – Processos / 44 Hélio Crestana Guardia - 2011 Migração em sistemas heterogêneos Problema: máquina alvo pode não ser apropriada para execução do código migrado. Definição de processo / thread / contexto de processador é dependente do hardware, do sistema operacional e do sistema de suporte em tempo de execução Solução: uso de máquina virtual abstrata que é implementada em diferentes plataformas Linguagens interpretadas,considerando uma máquina virtual própria Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44
Compartilhar