Mobilidade Cláudia Ribeiro
Dispositivos móveis + Wireless 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 Heterogeneidade em recursos disponíveis Conexão e rede 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 Adição ou alteração de funcionalidade em tempo de execução Adaptabilidade Execução eficiente e previsível em diferentes condições Interação assíncrona Minimizar efeitos de alta latência e desconexões freqüentes Consciência de contexto (context-awareness) 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
Custo de Invocação e tamanho do parâmetro Custo associado ao atraso no processamento da chamada remota Cada pacote adicional acrescenta um aumento extra no delay
Tempos para Invocações
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