Você está na página 1de 23

Cdigo Mvel

histrico
migrao de processos em sistemas operacionais distribudos
balanceamento de carga de CPU otimizao do uso da rede ligao com transparncia

dificuldade
previso do comportamento do processo

motivaes mais recentes


atualizaes dinmicas
injeo de cdigo em programas/componentes em execuo adaptaes a condies de execuo

customizaes
de cliente ao servidor de servidor ao cliente

computao oportunista tolerncia a falhas tratamento de conexo e desconexo

mobilidade em cliente-servidor

r.a(...)

redefinio dinmica de stubs cliente e servidor customizao para cliente/servidor especfico relao com cliente thin/fat

classificao
remote evaluation cdigo sob demanda agentes mveis
no necessariamente inteligentes
interaes entre entidades A e B ponto de vista cliente-servidor A. Fugetta, G.P. Picco, G. Vigna. Understanding Code Mobility. IEEE Trans. Software Eng, 24(5), 1998.

avaliao remota
A envia cdigo para B executar
filtragem de dados a serem enviados para A
bases de dados servios de eventos ...

flexibilidade em servidores
function comp(...) local total = 0 for i=1,n do r.comp(...) total = total + simp(a[i]) end return total/n end

simp

servidores podem oferecer API bsica a partir da qual funes mais complexas podem ser construdas

servidor que aceita cdigo


function comp(...) local total = 0 for i=1,n do upload total = total + simp(a[i]) r.comp(...) end return total/n end novo cdigo pode ser provisrio ou permanente
modificaes na interface

remote evaluation relao com eficincia e tolerncia a falhas

Cdigo sob demanda


A requisita a B, explicitamente, determinado cdigo
cdigo de comunicao com B

adaptao de clientes
servidor de stubs download servidor desejado

p=createProxy(...) ... ... p.method()

stubs especficos

clientes baixam cdigo apropriado para comunicao com esse servidor

adaptao de clientes
uso de otimizaes como cache proxies inteligentes
mudana no comportamento do cliente conforme estado do sistema

agentes mveis
A migra para B levando o cdigo que deseja executar em B

agentes mveis
programa se transfere com estado completo
tipicamente primitiva "move"

comparao com remote evaluation


flexibilidade maior: funcionalidade arbitrria

reduo de uso da banda passante possibilidade de adaptao a estado boa convivncia com desconexes
tecnologia fez menos sucesso que esperado?

paradigmas

mobilidade de cdigo e de estado


mobilidade forte
transferncia de cdigo e do estado da execuo
pilha

mobilidade fraca
transferncia de cdigo
possivelmente alguns dados para inicializao

como esse cdigo incorporado no destino?


nova unidade de execuo X incorporao

distino (forteXfraca) nem sempre bvia

implementao de mobilidade
cdigo
relativamente simples

estado
complexa, especialmente em mquinas heterogneas problema da transferncia de estado externo
arquivos, sockets, etc

migrao de processos
assunto bastante estudado nos anos 80 ressurgimento de interesse
melhores redes grades e computao oportunista

MOSIX
kernel implementa RPC chamadas a sistema transferidas para mquina apropriada
aplicao upper kernel linker lower kernel aplicao upper kernel linker lower kernel

MOSIX: migrao
mquinas sobrecarregadas decidem destino de processos escolhidos carga medida por prontos e memria livre escolha de migrao leva em conta
perfil (passado) do processo tamanho -> tempo de migrao tempo de residncia i/o local e remoto

objetivos:
maior throughput e menor tempo de resposta

migrao em sistemas heterogneos


como transferir estado entre duas mquinas com arquiteturas diferentes? problemas em diversos nveis
representao de dados bsicos ... estrutura da pilha

maioria das linguagens no mantm informao sobre dados e programa em tempo de execuo

captura de estado
problema existe tambm na rea de persistncia
relao com tolerncia a falhas

importncia de suporte de linguagem


exemplo: linguagens com call/cc (call with current continuation) sobre tais primitivas pode-se construir sistemas com diferentes facilidades de migrao e persistncia

h tambm vrias implementaes de sistemas monolticos


mecanismos X polticas

segurana
controle de acesso no ambiente destino
sandbox
mquinas virtuais populares no mundo de grades

mapeamento de usurio
cdigo executa como se fosse de algum usurio local

cdigo assinado

Bibliografia
A. Fugetta, G.P. Picco, G. Vigna. Understanding Code Mobility. IEEE Trans. Software Eng, 24(5), 1998. A. Milans, N. Rodriguez, B. Schulze. State of the art in heterogeneous strong migrationof computations. Concurrency and Computation: Practice and Experience. 20(13), 2008.

Você também pode gostar