Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br 21 de maio de 2013 Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 1 / 39
Agenda 1 Threads 2 Migração de Código Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 2 / 39
Threads Threads Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 3 / 39
Threads Introdução Processos formam um importante bloco de construção em sistemas distribuídos; Operações envolvendo processos (criação, destruição, comunicação) são relativamentes caras. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 4 / 39
Threads Definição de Thread Mecanismo que permite a um processo ter mais de um fluxo de controle; Threads compartilham o mesmo espaço de endereçamento. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 5 / 39
Threads Threads em Sistemas não Distribuídos: Benefícios O processo inteiro não necessita ficar bloqueado ao realizar uma chamada bloqueante ao sistema; Exemplo de uso: planilha de cálculo Pode-se explorar paralelismo em sistemas multiprocessados; Simplifica o desenvolvimento de aplicações inerentemente concorrentes; Melhor desempenho para aplicações complexas que tradicionalmente eram implementadas através de múltiplos processos comunicando-se através de mecanismos IPCs Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 6 / 39
Threads Implementação de Threads: Biblioteca no Espaço do Usuário Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 7 / 39
Threads Implementação de Threads: Biblioteca no Espaço do Usuário Vantagens: Suporte a threads em sistemas operacionais que não as suportam nativamente; Criação e destruição de threads custa pouco: alocação de memória e criação de pilha no espaço do usuário; Troca de contexto entre threads custa pouco: troca de valores de registradores da UCP. Pode-se prover várias poĺıticas de escalomento dando aos processos a liberdade de escolher aquela que achar melhor; Maior escalabilidade já que não ocupam recursos do kernel. Desvantagens: Dificuldade na implementação de chamadas bloqueantes ao kernel; Dificuldade na implementação de preempção. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 8 / 39
Threads Implementação de Threads no Kernel Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 9 / 39
Threads Implementação de Threads no Kernel Desvantagem: Cada operação com threads: criação, destruição, sincronização, etc.. Envolve o kernel, o que requer uma chamada ao sistema que é cara. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 10 / 39
Threads Implementação de Threads LWP: Lightweight Process Thread state User space Thread Kernel space Lightweight process LWP executing a thread Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 11 / 39
Threads Implementação de Threads LWP: Lightweight Process LWPs são criadas por processos a nível de usuário através de uma chamada ao kernel; Threads de usuário não são visíveis ao kernel: ele escalona LWPs; Threads do usuário podem ser escalonadas em qualquer LWP criada pelo processo; Chamada bloqueante: Interceptada pela LWP que pode realizar a chamada real ao kernel ficando assim também bloqueada mas o processo inteiro NÃO fica; Sincronização e troca de contexto entre threads do usuário são realizadas a nível do usuário. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 12 / 39
Threads Threads em Sistemas Distribuídos: Clientes multithreaded Clientes multithreaded. Exemplo: Web Browsers: Documento HTML consiste de um arquivo de texto e vários outros de imagens, ícones, etc... Pode-se esconder a grande latência na comunicação apresentando cada objeto assim que estiver disponível: estabelecimento de múltiplas conexões Melhoria no desempenho geral pode ser obtido no caso de servidores Web replicados em várias máquinas. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 13 / 39
Threads Threads em Sistemas Distribuídos: Múltiplos RPCs Considere um cliente que realiza diversos RPCs, cada um para uma thread diferente; Ele deve esperar o retorno de cada resultado; Alternativamente, poder-se-ia realizar as RPCs através de threads independentes; Se as RPCs são destinadas a servidores diferentes, pode-se esperar um ganho linear, se comparado a realizar uma RPC após a outra. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 14 / 39
Threads Servidores multithreaded: Objetivos Melhor desempenho: Iniciar uma thread para tratar uma requisição custa menos que iniciar um novo processo; Servidores que possuem uma única thread não são escaláveis a sistemas multiprocessados; Pode-se esconder a latência da rede, reagindo a uma nova requisição enquanto os resultados da anterior estiverem sendo entregues. Melhor estrutura: Muitos servidores demandam fortemente E/S. A utilização de chamadas bloqueantes simplifica a estrutura do código; Programas multithreaded tendem a ser menores e mais fácieis de entender, por possuírem um fluxo de controle simplificado. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 15 / 39
Threads Servidores multithreaded Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 16 / 39
Threads Sincronização de Programas Concorrentes Semáforos; Monitores. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 17 / 39
Migração de Código Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 18 / 39
Migração de Código Carzaniga et al. define mobilidade de código como a capacidade de mudar dinamicamente as ligações entre o código e a localização onde executa. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 19 / 39
Migração de Código: Motivações Melhoria do desempenho global: processos podem ser movidos de máquinas muito carregadas para máquinas com cargas mais leves. Carga é usualmente expressa em termos do comprimento da fila de processos da CPU ou de sua utilização; Diminuição da carga na rede: Exemplo: uma aplicação cliente que requeira muitas operações em banco de dados ou validação de formúlario no cliente; Exploração de processamento paralelo: Exemplo: busca de informações na Web através de várias instâncias de um agente móvel; Extensão dinâmica da funcionalidade de aplicações: Exemplo: descoberta dinâmica de recursos e vinculação do código cliente apenas quando for necessário o acesso ao servidor; Em grades oportunistas, liberação dos recursos da máquina. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 20 / 39
Migração de Código: Cuidados relacionados à Segurança Confiar cegamente em um código carregado dinamicamente nem sempre é uma boa idéia... Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 21 / 39
Migração de Código: Necessidades Para efetuar a migração de um processo, algumas informações de estado (também chamadas de contexto) devem ser salvas e transportadas para sua nova localização; Fuggetta descreve que um processo consiste basicamente de três segmentos: segmento de código, segmento de recursos e segmento de execução. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 22 / 39
Alternativas para Migração de Código Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 23 / 39
Alternativas para Migração de Código Migração Forte: mecanismo que migre os três segmentos e reinicia o processo exatamente no mesmo estado e na mesma posição de código em que ele estava antes da migração Migração Fraca: somente o segmento de código é transferido e talvez alguns dados de inicialização. O programa transferido é sempre executado a partir de seu estado inicial; Migração é iniciada pelo emissor (proativa): a aplicação deixa o local onde está executando e migra para uma outra localidade na rede por iniciativa própria (e.g. programas de busca em bases de dados na web); Migração iniciada pelo receptor (reativa): a iniciativa da migração parte de uma aplicação executando na máquina de destino (e.g. applets Java). Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 24 / 39
Migração Forçada Expressa a habilidade do sistema em suportar a migração de um processo a qualquer momento, mediante a solicitação de uma entidade externa. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 25 / 39
Etapas do Processo de Migração Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 26 / 39
Etapas do processo de migração 1 O fluxo de execução é interrompido; 2 O estado da entidade a ser migrada é capturado; 3 O código e o estado da entidade migrada são transportados para a máquina de destino; 4 O código e o estado da entidade migrada são restaurados; 5 A execução é reiniciada. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 27 / 39
Migração de Recursos Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 28 / 39
Migração de Recursos 1 Recurso compartilhado: após o término do processo de migração o acesso ao recurso continua disponível (e.g. uma impressora de rede); 2 Recurso já disponível: Exemplo: uma aplicação gera uma série de arquivos de saída em uma unidade de fita. Após a migração, a nova máquina na qual a aplicação executa também tenha disponível uma unidade de fita. A aplicação poderá continuar a gerar os arquivos de saída no novo dispositivo; 3 Recurso referenciado: a referência ao recurso utilizado é migrada juntamente com o seu estado e seu código. Assim, ao chegar em seu destino, ele deve tentar se reconectar através da rede ao recurso na antiga máquina. Exemplo: uma base de dados; 4 Recurso despachado: o recurso deverá ser migrado inteiramente junto com o estado e o código da aplicação. Exemplo: arquivos utilizados pela aplicação. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 29 / 39
Tipos de Recursos Fixos: os recursos não podem ser migrados. Exemplo: hardware local; Vinculados: os recursos podem, a princípio, serem migrados mas a um alto custo; Não vinculados: os recursos podem facilmente serem movidos junto com o objeto. Exemplo: uma cache. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 30 / 39
Vinculação Objeto-Recurso Por identificador: o objeto requer uma instância específica do recurso. Exemplo: um banco de dados específico; Por valor: o objeto requer o valor de um recurso. Exemplo: entradas na cache; Por tipo: o objeto requer somente que um dado tipo de objeto esteja disponível. Exemplo: monitor colorido. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 31 / 39
Ações de Migração Relativas aos Recursos Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 32 / 39
Migração em Sistemas Heterogêneos Principal problema: A máquina alvo pode não ser adequada para execução do código migrado; O contexto do processo/thread é dependente do hardware local, sistema operacional e ambiente de execução. Solução: utilização de uma máquina abstrata implementada em diferentes plataformas; Soluções atuais: Uso de linguagens interpretadas que executam em uma máquina virtual, como Java; Uso de VMMs (Virtual Machine Monitors), o que permite a migração completa do sistema operacional junto com as aplicações. Exemplo: substituição de uma máquina em um cluster, um ambiente de computação de longo tempo de execução. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 33 / 39
Migração de Código em Java: Facilidades Compilador Java não gera instruções específicas a uma plataforma, mas sim um código intermediário denominado bytecode; Facilidade em transportar bytecode através da rede: mecanismo de serialização (que permite a migração de dados de objetos). Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 34 / 39
Migração Forte em Java: Problemas Java não provê mecanismos suficientes para capturar o estado de execução de computações: Mecanismo de serialização somente permite a salva do código e do valor dos atributos de objetos; Classes Java não podem acessar informações nativas e internas da Máquina Virtual Java (por exemplo, o contador de instrução e a pilha de chamadas), necessárias para a captura do estado completo de execução de threads Java. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 35 / 39
Migração Forte em Java: Alteração da Máquina Virtual A máquina virtual é modificada de forma a exportar as informações a respeito da execução das aplicações; Desvantagem: perda de compatibilidade com relação à máquina virtual padrão. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 36 / 39
Migração Forte em Java: Instrumentação do código-fonte das aplicações Uso de um pré-processador (um compilador de código-fonte) que insere na aplicação código-fonte adicional responsável por capturar e restaurar seu estado de execução; O código-fonte da aplicação deve estar disponível, o que não é sempre possível, como no caso, por exemplo, em que são utilizadas bibliotecas e aplicações legadas; Sobrecarga gerada no tempo de execução e no tamanho do código da aplicação. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 37 / 39
Migração Forte em Java: Instrumentação do Bytecode das Aplicações o código para a captura e a restauração do estado de execução é inserido diretamente no bytecode da aplicação; sobrecarga é geralmente menor que a gerada na abordagem baseada em código-fonte; em nível de bytecode, tem-se acesso a um conjunto estendido de instruções, como por exemplo a instrução goto, utilizada para efetuar a restauração do contador de instrução das aplicações Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 38 / 39
Migração Forte em Java: Modificação da Java Platform Debugger Architecture Usando a JPDA as informações de execução das aplicações podem ser acessadas em modo de depuração, o que pode ser explorado para prover migração transparente; É necessário que um outro mecanismo possibilite a recuperação do estado de execução das aplicações, dado que esta capacidade não é fornecida pela especificação padrão da JPDA. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 21 de maio de 2013 39 / 39