• Nenhum resultado encontrado

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

Documentos relacionados