migra o processo ao vivo de uma máquina para outra

0

Eu vou trabalhar em um projeto no qual um processo ativo deve migrar de uma máquina Ubuntu para outra (em um ambiente homogêneo), então quais são as coisas que eu deveria saber antes disso. Tudo vai ser implementado do zero, então qual linguagem de programação devo usar?

    
por Suresh 25.06.2014 / 12:28

1 resposta

1

A resposta que você está procurando é digna de toda uma equipe de pesquisa especializada ... os requisitos para isso são demais. AskUbuntu pode ser o lugar errado.

As coisas a se notar incluem: memória de processo, estados de thread, memória da placa gráfica, descritores de arquivos abertos, estados do soquete do kernel (Internet / UNIX), outros canais IPC, estados do kernel de quaisquer arquivos de dispositivos abertos, memória mapas, ambiente, toda a memória do espaço kernel no caso de o processo estar no meio de uma chamada sys (como ao esperar que uma ação aconteça), propriedades da memória do processo (como bits sem execução), e muitos, muitos outros (talvez o dobro do que eu já listei).

Como a maioria deles exige patches de driver de dispositivo e kernel, os idiomas necessários são C e ASM.

Um projeto que tenta fazer isso é chamado LinuxPMI, você pode querer investigar isso.

Formas alternativas de migrar um processo:

  • Suspender para o disco e usar um sistema externo para copiar a partição de troca e todo o disco para outro sistema
  • Hospede o processo dentro de uma máquina virtual e deixe seu sistema de arquivos raiz ser uma união (ou seja, UnionFS ou AuFS) de uma imagem do sistema somente leitura básica e uma imagem em branco que será preenchida com quaisquer alterações feitas pelo sistema; em seguida, suspenda a máquina virtual e copie a imagem menor
  • Implemente (do zero) uma máquina virtual de processo único inteiro, que implemente o conjunto completo de instruções i686 e forneça wrappers e ganchos para cada chamada de sistema e biblioteca necessária
por Whyte 25.06.2014 / 13:41