Sistemas Distribuídos - PDF Download grátis
Edite Valgueiro Sequeira
1 Sistemas Distribuídos Processos I: Threads, virtualização e comunicação via protocolos Prof. MSc. Hugo Souza
2 Nesta primeira parte sobre os Processos Distribuídos iremos abordar: Processos e a comunicação distribuída; Threads, semáforos e escalonamento distribuído; Virtualização, monitor e gerenciador de processos; Comunicação via protocolos distribuídos; Estudos de casos e exercícios; Atividades extras de avaliação;
3 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, etc.; Falamos das arquiteturas de software para sistemas distribuídos e usamos várias vezes o termo operação sem saber seu significado; Mas se pararmos para pensar sobre como funciona a comunicação dentre os diferentes estilos e componentes o mesmo propósito? Para isso estudaremos os papéis dos processos, peças fundamentais para o funcionamento dos SDS;
4 O conceito de seguir passos é importante para vários campos da computação, para gerenciar a distribuição de hardware e software; A definição de uma ordem de execução simplifica o fluxo de interação de diferentes componentes sem desvirtuar em que cada um deve cooperar e como desenvolver suas funcionalidades; As operações são programadas de acordo com um ciclo de atividades e responsabilidades conjuntas que correm em paralelo e precisam serem administradas;
5 Tudo isso é feito utilizando-se de processadores, armazenamento distribuído, redes de altas velocidades. Podemos concluir então que: Processos são ações predefinidas que obedecem uma ordem, também predefinida, de operações gerenciáveis que formulam um propósito comum através de uma sequencia de passos e características de fluxo contínuo para todos os componentes;
6 Para o campo software, um processo costuma ser definido como um programa que está em execução por um processador virtual multitarefas; Embora os processos formem blocos individuais com instruções, a concentração de esforço ainda torna-se alta relacionada a granularidade; Uma solução para desafogar essa dificuldade de concentração foi dividir os processos em partes menores sinalizadas independentes uns dos outros; Os subprocessos formam unidades de processamento e controle de entrada e saída de dados divididas, conhecidas também como thread;
7 Antes de discutir o papel dos threads vejamos sua utilização em sistemas tradicionais. Há vários benefícios por processos multithread que facilitam o desenvolvimento de novas aplicações; Um dos mais importantes vem do fato que em um processo monothread, sempre que for executada uma chamada bloqueadora de sistema, o processo é bloqueado como um todo; Esse ponto destacado está relacionado a chamada dependência das operações, que influi nos demais dados que estejam atrelados ao processo; Imagine, por exemplo, uma agenda desorganizada;
8 Corrigindo o problema de inclusão na agenda, poderíamos dividir a organização para gerenciar: Uma pessoa verifica o nome do indivíduo; Uma segunda pessoa registra o nome do indivíduo em ordem alfabética; Diferente do que aconteceu antes, temos um multithread de cooperação de tarefas diferentes mas com o mesmo objetivo. Então: Monothreads: Processos que possuem uma única thread funcional Multithreads: Processos que possuem mais de uma thread funcional;
9 Threads muitas vezes são fornecidos em formas de pacotes de instruções ou códigos de baixo nível. O pacote contém operações básicas para criar e terminar as threads, bem como operações sobre variáveis(sincronização ou exclusão); Não implica dizer um número mínimo ou máximo de threads ou linhas de comando para a síntese do processoedeseutempodevida; Cada processo com suas respectivas threads possuem um ciclo de inicialização, execução e encerramento distribuído, similar aos processos locais para sistemas operacionais. A ordem segue:
10 Criação do processo: é a fase do ciclo de vida do processo em que são implementadas as instruções remotas. Na prática, um processo é formado por um conjunto de métodos associados nas redes; Execução do processo: corresponde a chamada de procedimento remoto (RPC) sendo inicializada [instanciada] quando o cliente e o servidores estiverem interagindo. Corresponde as chamadas; Encerramento do processo: corresponde ao encerramento do serviço, na prática, com um retorno de response tanto nas redes quanto na aplicação remota;
11 A comunicação distribuída dos processos é realizada de duas maneiras. Localmente, o gerenciamento é formulado semelhante ao método adotado pelos sistemas operacionais, através de: Escalonamento: é uma implementação coordenada realizada pelo escalonador [CPU] para gerenciar a concorrência dos processos. Utiliza como critério, geralmente, a prioridade do processo e sua importância para as atividades desempenhadas pelo S.O. e aplicativo; Semáforo: é um indicador que sinaliza quantos processos e threads podem ter acesso a um recurso compartilhado; Remotamente, o gerenciamento é formulado de maneira diferente quanto a convencional;
12 Para a administração de threads nas redes os métodos tornam-se mais complexos. As operações são mantidas no espaço de endereço do usuário, com os métodos da aplicação e os recursos alocados para estabelecer uma pilha local dos threads; De maneira análoga, a instancia de uma thread remota envolve principalmente a administração tanto dos recursos físicos quanto das redes; Portanto, torna-se necessário avaliar a sincronia entre os componentes para garantir o gerenciamento remoto dos processos, uma técnica que é conhecida como chaveamento;
13 S1: Chaveamento de espaço de usuário para espaço de núcleo Processo A Processo B S3: Chaveamento de espaço de núcleo para espaço de usuário Sistema Operacional S2:ChaveamentodecontextodoprocessoAparaoprocessoB;
14 Porém uma desvantagem de threads em nível de usuário é que a invocação de uma chamada bloqueadora de sistema bloqueará todo o processo pela qual a thread pertence; Como já explicamos, os threads são úteis para estruturar grandes aplicações em partes que poderiam ser logicamente executadas em meio tempo. Para isso threads em nível de usuário em nada ajudam; Esses problemas podem ser contornados, em grande parte pela implementação de threads no núcleo do sistema operacional;
15 Há também as chamadas formas híbridas que indexam níveis de usuário e núcleo de sistema, em geral denominados de Lightweight Process; Um LWP executa no contexto de um único processo pesado e pode haver vários outros leves por processo. Além disso, o pacote provê facilidades para a sincronização de threads, como de mútua exclusão ou variáveis de condição; Há várias vantagens do uso de híbridos desde o custo operacional ao problema de acoplamento do processo, onde o segundo é contornado de mais fácil;
16 Uma importante propriedade de threads é que eles podem permitir chamadas bloqueadoras de sistema sem bloquear o processo interno no qual a thread está executando; Isso facilita em muito seu uso em sistemas distribuídos, uma vez que a expressão de comunicação na forma de manter múltiplas conexões lógicas ao mesmo tempo; Para isso, alguns componentes importantes na configuração de processamento distribuídos giram em torno de como os processos devem se comunicar baseados Clientes e Servidores;
17 Os threads e os processos podem ser vistos como um modo de fazer muitas coisas ao mesmo tempo. Eles permitem construir (pedaços) de programas que parecem ser executados simultaneamente; Como geralmente há somente uma CPU, só uma instrução de um único thread ou processo será executada por vez. A ilusão do paralelismo é criada pelo chaveamento rápido entre os processos; Essa separação entre ter uma única CPU e ser capaz de fingir que há mais delas pode ser estendida também a outros recursos, o que resulta no que denominamos de virtualização de recursos;
18 Essa virtualização é aplicada há décadas, mas conquistou renovado interesse à medidas que os sistemas distribuídos de computação se tornaram complexos; Na prática, os sistemas distribuídos oferecem uma interface de programação comum que intercalam várias partes de um sistema de grande porte para simular situações adversas de processamento; Em sua essência, a virtualização trata-se de estender ou substituir uma interface existente de modo a imitar o comportamento de um outro sistema para identificar compatibilidades;
19 Programa Interface A Implementação de imitação de A em B Interface B Hardware/Software do sistema B Virtualização: Implementação de interfaces;
20 A virtualização pode ajudar o processamento transportando as interfaces herdadas para novas plataformas e assim, abrindo imediatamente as últimas para grandes classes de programas; Nesse ponto da comunicação, a virtualização pode ajudar em muito, relacionado na diversidade de plataformas e máquinas, com o intuito de diminuir o número de dispositivos para que se execute na própria máquina virtual; Há vários modos pelos quais a virtualização pode ser implementada. Os sistemas distribuídos utilizam quatro interfaces em quatro níveis;
21 A primeira interface situa-se entre o hardware e o software consistindo em instruções de máquina; A segunda, é uma interface entre o hardware e o software consistindo em instruções de máquina que possam ser invocadas por programas privilegiados; A terceira, uma interface que consiste em chamadas de sistema como oferecidas por um sistema operacional; A quarta e última consiste da interface que realizada chamadas de bibliotecas caracterizando as Application Programming Interface(APIS);
22 A virtualização busca simular o comportamento dessas interfaces de maneira que seja provida uma montagem de acordo com a estrutura: Aplicação Sistema de Execução Sistema Operacional aaaaaaaaaa aaaaaaa Hardware Na figura temos um modelo de máquina virtual com várias instâncias(aplicação, execução);
23 Pode-se construir um sistema que forneça instruções que possibilitem uma interpretação, mas também a emulação das aplicações; Neste último caso o emulador terá de imitar o comportamento das chamadas de sistema utilizando a virtualização com uma máquina virtual de processo, neste caso, para um único processo; Para mais de um processo, as chamadas exigem a simulação concorrente das instruções, através do esforço da máquina, termo conhecido como Virtual Machine Monitor (VMM); Omonitorgerenciaosrecursoseacargadeacesso;
24 Resumindo, as VMMS, ou VMS como são conhecidas tornam-se a cada dia mais importantes para o contexto de confiabilidade e segurança para os sistemas distribuídos; Como elas (máquinas) permitem o isolamento de uma aplicação completa ou parte dela, uma falha ou efeito que prejudique um ou mais processos facilitando a correção e prevenção no futuro; A portabilidade desenvolve novas perspectivas devido ao desacoplamento entre o hardware e o software permitindo um ambiente completo ser movido de uma máquina para outra;
25 Portanto, é importante que saibamos que os processos são entidades complexas, constituídas por instruções gerenciadas pelos sistemas operacionais, interfaces e aplicações distribuídas; A virtualização é uma espécie de planejamento sobre como os recursos de hardware podem ser aproveitados em sistemas operacionais de rede, servidores, clientes e demais componentes da malha; Toda a comunicação é provida por protocolos de rede e protocolos de software, como poderemos ver nas próximas aulas;
26 Introdução aos Sistemas Distribuídos Próxima aula continuaremos o Módulo 02; Baixem o material no Clube Nabuco; Também disponível no site: Dúvidas entrem em contato: ou pelas redes sociais: Facebook: