● Em princípio o que torna tão difícil a migração de código é que o segmento de recursos nem sempre pode ser simplesmente
transferido junto com outros segmentos sem ser modificado;
● e.g., ... um processo aguarda uma resposta a uma requisição numa porta TCP específica ?! ... em caso de migração, como informar ao remetente os novos dados ?!
● solução: ... processo abandona o “port” até então utilizado e requisita um novo “port” no destino.
● ... em outros casos, transferir a referência não é um problema, e.g., referência de um arquivo através de uma URL.
3. Processos – 3.5 Migração de Código
… 3.5.2 – Migração e Recursos Locais
● Para compreendermos esta sistemática, iremos distinguir três tipos diferentes de associações de recursos a processos:
● “Object to Resource Binding” - nesta associação a referência de um objeto é um identificador, valor ou tipo:
● “identifier” – objeto requer precisamente uma instância específica do recurso (e.g., banco de dados; URL, IP)
● “value” – objeto requer apenas valor do recurso (e.g., entradas na cache);
● “type” – objeto requer que apenas seja especificado o tipo do recurso
independente de qual instância (e.g., monitor colorido).
● Obs.: ... quando da migração, frequentemente é necessário a
mudança de referência para recursos, no entanto, isto não muda a associação entre recurso e processo.
3. Processos – 3.5 Migração de Código
… 3.5.2 – Migração e Recursos Locais
● ... ações para serem tomadas com respeito as referências dos recursos quando da migração de código para outra máquina.
3. Processos – 3.5 Migração de Código
… 3.5.2 – Migração e Recursos Locais
● Obs.: ... é importante entender que o estabelecimento de uma
referência global pode ser mais do que simplesmente utilizar uma URL pois o seu uso pode as vezes ser proibitivo.
● e.g., considere um programa que gera imagens de alta qualidade para uma estação de trabalho de multimídia dedicada;
● ... gerar imagens de alta qualidade em tempo real requer muito
processamento e, portanto, o programa deve ser deslocado para o servidor de alto desempenho;
● ... estabelecer uma referência global para a estação multimídia significa estabelecer um canal de comunicação entre o servidor e a estação;
● ... resultado na rede é que mover o programa para o servidor talvez não
3. Processos – 3.5 Migração de Código
… 3.5.2 – Migração e Recursos Locais
● Obs.: ... esta situação pode mudar se a associação é por valor.
● e.g., considere um processo no qual uma região específica da memória pode ser compartilhada com outros processos;
● ... se estabelecermos uma referência global => será necessário uma forma distribuída de compartilhamento de memória;
● ... nestes casos, efetua-se a cópia do objeto para a máquina onde o código móvel irá ser executado, logo um grande volume de
dados deverá ser copiado (e.g., dicionários, “thesauruses”);
3. Processos – 3.5 Migração de Código
… 3.5.2 – Migração e Recursos Locais
● Obs.: ... se os dados forem recursos não ligados - “unattached”, a melhor solução é a cópia do recurso para o destino, a menos que ele seja compartilhado por muitos processos;
● ... neste caso pode estabelecer uma referência global (opção).
● Para a associação por tipo (“Binding by Type”) e independente do mapeamento do recurso à máquina, a solução é óbvia =>
● ... reassociar o processo a uma nova instância de um recurso local –
3. Processos – 3.5 Migração de Código
3.5.2 – Migração em Sist. Heterogêneos
● Até o momento, assumimos que o código migrado pode facil-
mente ser executado na máquina destino – de fato é verdade se estamos lidando com máquinas homogêneas;
● ... mas considerando que sistemas distribuídos são normalmente construí-
dos sobre uma coleção sistemas heterogêneas com diferentes sistemas operacionais e arquitetura, adequações se fazem necessárias.
● Problema: ... processos/threads são altamente dependentes do
hardware local, sistema operacional e sistema de execução.
● Solução: utilização de máquina abstrata que implementa
diferentes plataformas - linguagens interpretadas – que
3. Processos – 3.5 Migração de Código
… 3.5.2 – Migração em Sist. Heterogêneos
● Razão para Migração de Ambientes Completos – permitir a continuidade da operação do sistema enquanto uma dada máquina necessita de manutenção;
● .... motivação: manutenção de ambientes computacionais em execução por longos períodos, assim como seus processos.
● ... e.g., migração de um sistema operacional de tempo-real virtualizado – passível de ocorrer em um cluster de servidores;
● ... será necessário migrar a imagem de memória bem como todas as associações para recursos locais – como resolvê-los ?!
● Migração – envolve a migração da imagem da memória bem como das associações a recursos locais.
3. Processos – 3.5 Migração de Código
… 3.5.2 – Migração em Sist. Heterogêneos
● Abordagens para migrar a imagem de memória:
● empilhar-se as páginas da memória na nova máquina e reenvia aquelas
que serão modificadas durante a migração do processo;
● pare a VM corrente, migre a memória e instancie um nova VM;
● permita que nova VM solicite novas páginas quando necessário, ou seja,
novos processos serão iniciados na nova VM imediatamente e a medida do necessário efetue cópias de páginas da memória.
● ... a segunda e terceira abordagens podem conduzir a queda de performance por demandarem muito tempo para serviços
contínuos e prolongarem o período de migração;
3. Processos – 3.5 Migração de Código
… 3.5.2 – Migração em Sist. Heterogêneos
● Migração de “Bindings” aos Recursos Locais:
● ... esses problemas são menores se considerarmos o escopo em cluster
de servidores, e.g., anuncio de um novo endereço IP-MAC;
● ... e.g., migração de bindings de arquivos é também relativamente simples
se considerarmos que o banco de dados é a terceira camada;
● ... efeito geral é que em vez de migrarmos processos, o sistema