Mobilidade de Código
com μcode
Projeto Giga
Alexandre Lages
[email protected]
1
Sumário



Introdução
Agentes Móveis
μcode
2
Introdução

Um Agente é um programa cujo código de
execução possui recursos capazes de
armazenar dados, transferir-se de um local
para outro da rede e reiniciar sua execução.



Envolve a instalação de código em uma máquina
remota;
Applets e Servlets como exemplos;
Característica principal: pouca utilização da rede;
3
Introdução

Vantagens em relação a abordagem cliente/servidor:
 Economia de espaço;
 Redução do tráfego;
 Interação assíncrona e em tempo real;
 Robustez;
 Operação em ambientes heterogêneos;
 Extensibilidade em tempo real;
 Fácil atualização;
4
Agentes Móveis

Um sistema de agentes móveis é composto
de:





Código do agente;
Estado de execução do agente;
Contexto de execução;
Mecanismo de deslocamento;
Permissões de acesso;
5
μcode


API desenvolvida em Java que fornece uma
série de primitivas de mobilidade de código.
Características:





Código pequeno;
Execução “leve”;
Projeto modular;
Suporte para vários métodos de realocação de
classe;
Suporte a compressão;
6
μcode
Mobile Agent System
Segurança
JVM
Comunicação
Sem-JVM
Hardware/SO
Persistência
Persistência
Segurança
Eventos
Comunicação
Mobile Agent System X μcode:
Mobile
Agent

μcode
JVM
Hardware/SO
7
μcode

Desenvolvimento baseado pelas seguintes
motivações:




Ênfase em mobilidade do código: características
adicionais através da adição de módulos;
Permite especificar dinamicamente ou
individualmente a estratégia de alocação de
classes;
Tamanho do código pequeno;
Transparente para o usuário;
8
μcode

Ambiente de execução:
Única unidade de Mobilidade
Realocação do código e do estado
Extração das classes e objetos
Espaço para as classes e objetos
Group
Group
μserver
Group handler
μserver
Class
Space
Group handler
Class
Space
μcode
μcode
JVM
JVM
Hardware/SO
Hardware/SO
9
μcode

Resolução de classes:
Group
μserver
Group handler
Class
Space
μcode
JVM
Grupo com uma classe C precisa da classe C1:
1. Classe C1 pertence a API do java ou μcode;
2. Classe C1 pertence ao ClassSpace privativo do grupo;
3. Classe C1 pertence ClassSpace compartilhado;
4. Tenta realizar o download da classe C1 de um outro
μserver;
5. Exceção é gerada;
Hardware/SO
10
μcode



A unidade de migração do μcode é um grupo,
composto por um conjunto de classes e objetos.
As threads geradas a partir de classes recebidas
por um μserver são mantidas em um espaço de
classes privativa, de forma a evitar conflitos de
nomes com outras classes locais. A tarefa de extrair
as classes é feita pelo group handler;
É possível publicar classes em um espaço de
classe compartilhado associado ao μserver, de
forma que as mesmas possam ser acessadas por
outras classes do próprio μserver ou de μserver
remotos.
11
μcode

Vantagens de utilização do μcode:




Minimização: conjunto mínimo de primitivas e
abstrações;
Extensibilidade: não requer processamento
adicional significativo em relação à máquina
virtual;
Flexibilidade: seleção de diferentes estratégias
para o mesmo código em diferentes situações;
Portabilidade;
12
μcode
public class Clone implements Runnable, java.io.Serializable {
public void run() {
while (true) {
System.out.println("Clone i = " + i++);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
try {
Clone r = new Clone();
new Thread(r).start();
MuServer s = new MuServer();
new Launcher(s).parseArgs(args, 1);
new Relocator(s).copyThread(“localhost”, r, Relocator.FULLCLOSURE, null, false);
System.out.println(“Fim...");
} catch (Exception e) {
e.printStackTrace();
}
}
13
}
μcode

Classe Relocator prover as seguintes primitivas
para a realocação de classes e objetos:




copyThread: permite a cópia de uma thread de um
μserver para outro;
spawnThread: permite gerar uma thread para um
outro μserver;
shipClasses: permite enviar uma classe para o
ClassSpace de um outro μserver;
fetchClasses: permite buscar uma classe de um
outro μserver;
14
μcode

Limitações do μcode:


Suporte para apenas mobilidade fraca:
salvamento somente do estado em relação aos
dados, mas não o seu estado de execução;
O núcleo do μcode não suporta nenhuma forma
de comunicação direta entre duas threads
móveis. Pode ser resolvido através do uso de
uma estrutura de dados compartilhada;
15
μcode

Problemas no desenvolvimento do μcode:


Falta de atualização por parte dos
desenvolvedores;
JDK 1.1;
16
Download

Mucode - Núcleo de Computação Eletrônica