Mobilidade Cláudia Ribeiro Introdução Dispositivos móveis + Wireless Aplicações móveis Novas aplicações novos requisitos Limites da Computação Móvel Capacidade dos dispositivos móveis Conexão e rede Heterogeneidade em recursos disponíveis Banda limitada Alta taxa de erros Freqüentes desconexões Mobilidade física (Mobile host) Aumenta handoff Possível redução na disponibilidade de recursos Exige adaptabilidade da aplicação às mudanças no ambiente Requisitos para Computação Móvel Reconfiguração dinâmica Adaptabilidade Minimizar efeitos de alta latência e desconexões freqüentes Consciência de contexto (context-awareness) Execução eficiente e previsível em diferentes condições Interação assíncrona Adição ou alteração de funcionalidade em tempo de execução Para efetivar a adaptabilidade Lightweigth Middleware Devido a limitação de recursos Mobile Middleware Facilita o desenvolvimento de aplicações distribuídas que incluem a conexão entre elementos móveis e aplicações corporativas através de redes sem fio, fornecendo serviços como sincronização após desconexão e adaptabilidade baseada em contexto Funções Mobile middleware age como mediador entre dispositivo e a aplicação, executando as seguintes funções: Sincronização entre dispositivo e dados corporativos Messaging, incluindo e-mail Tradução entre formatos de dados, plataformas e protocolos de rede Segurança, incluindo autenticação e encriptação Gerenciamento de dispositivos O suporte do Sistema Operacional A comunicação em sistemas distribuídos dá-se entre processos em máquinas distintas Gerenciar estes processos é na perspectiva do sistema operacional, uma atividade fundamental A utilização de técnica multithreading permite organização mais eficiente de sistemas cliente-servidor Compartilhamento do espaço de endereçamento Redução do custo de troca de contexto Threads em Sistemas Distribuídos Uma importante propriedade de threads é permitir uma forma conveniente de efetivar systems calls sem bloquear o processo como um todo Permite múltiplas conexões ao mesmo tempo (pool) Ganho de performance Mas a distribuição tem seu custo... Componentes do atraso em sistemas distribuídos Tempo de transmissão Marshalling/Unmarshalling Cópia de dados – potencialmente após marshalling Através dos limites user-kernel, entre espaços de endereçamento do cliente e do servidor e buffers do kernel; Através de cada camada de protocolo (ex. RPC/UDP/IP/Ethernet) Entre interface de rede e buffers do kernel (geralmente feita através de DMA) Inicialização de pacote – envolve inicialização de cabeçalhos e checksums Escalonamento de thread e troca de contexto Espera de confirmação (ACK) Custo da comunicação entre threads (a) Sys tem call Control transfer via trap instruc tion T hread Control transfer via privi leged i ns tructions User Kernel Protec tion domain boundary (b) RPC/RMI (wi thi n one c omputer) T hread 1 User 1 T hread 2 Kernel User 2 (c ) RPC/RMI (between computers) Network T hread 1 T hread 2 User 1 User 2 Kernel 1 Kernel 2 Custo de Invocação e tamanho do parâmetro RPC del ay Requested data s ize (bytes ) 0 1000 2000 Pac ket s ize • Custo associado ao atraso no processamento da chamada remota • Cada pacote adicional acrescenta um aumento extra no delay Tempos para Invocações S eri al ised invoc ations proc es s args marshal S end Rec ei ve unmarshal proc es s results proc es s args marshal S end Conc urrent i nvoc ati ons proc es s args marshal S end transmis si on proc es s args marshal S end Rec ei ve unmarshal exec ute reques t marshal S end Rec ei ve unmarshal proc es s results Rec ei ve unmarshal exec ute reques t marshal S end Rec ei ve unmarshal exec ute reques t marshal S end Rec ei ve unmarshal proc es s results Rec ei ve unmarshal exec ute reques t marshal S end ti me Rec ei ve unmarshal proc es s results Client S erver Client S erver Uma nova perspectiva Consideramos até então que comunicação nos sistemas distribuídos estão limitados a troca de mensagem Contudo, existem situações na qual a passagem de programas, às vezes em execução, simplifica o projeto de um sistema distribuído Motivações para migração de código: Balanceamento de carga entre máquinas - carga é geralmente expressa em termos de tamanho de fila para CPU ou utilização de CPU Redução da comunicação Acesso a grande bases de dados Mobilidade de código e configuração dinâmica Esta abordagem permite que alterações sejam efetuadas sem o conhecimento prévio do cliente Não exige a pré-instalação do software no cliente. No momento em que é solicitada a comunicação com o servidor, o código é carregado Modelos para Migração de Código Nesses modelos, um processo consiste em 3 partes: segmento de código, segmento de recursos e segmento de execução Mobilidade fraca: transferência somente do segmento de código (reinicialização do processo). Ex. Applets que rodam no mesmo espaço de endereçamento do browser Mobilidade forte: segmento de execução pode ser transferido também (mais difícil de implementar). O processo é clonado e roda em paralelo com o processo original Migração e Recursos Locais O segmento de recursos contém referências a recursos externos necessários ao processo, tais como arquivos, impressoras, dispositivos e outros como porta e sockets A migração de segmento de recursos merece atenção especial, uma vez que os recursos são locais e não podem ser simplesmente transferidos As implicações da migração de código sobre o segmento de recursos pode ser exemplificado através de ligações process-resource Ligação por identificador: ex. URL ou FTP server Ligação por valor: quando um programa usa bibliotecas, que devem estar localmente disponíveis, mas o exato local pode variar Ligação por tipo: ex. referência a dispositivos locais como monitores, impressoras, etc Migração em Sistemas Heterogêneos Principal problema refere-se à migração do segmento de execução. Java Virtual Machine e byte code atendem os requisitos para migração Agentes Móveis Mobile agents são processos (programas em execução) que podem migrar de uma máquina para outra (comumente no mesmo sistema), a fim de satisfazer requisições feitas por seus clientes Implementam uma metáfora computacional que é análoga a forma de conduzir negócios: visita um lugar, usa um serviço e move-se levando consigo seu estado Vantagens de usar agentes móveis inclui: baixa exigência de recursos de rede, em geral usado para seu deslocamento, e continuidade de execução sem conexão Capacidade de clonar-se para executar tarefas em paralelo Fácil implementação e instalação Confiabilidade Arquitetura de Agentes Extensão do modelo client-server, onde cada máquina possui um servidor com as seguintes funções: Manter trilha de agentes a máquina Aceitar e autenticar agentes que chegam Fornecer namespace hierárquico para cada agente e serviço Permitir comunicação de agentes através de mensagens Permitir migração de agentes Fornecer acesso a persistência para que o agente possa salvar seu estado como desejado e em caso de falha Padrão - FIPA