Existe uma maneira de capturar um processo em execução no disco para restaurá-lo mais tarde?

11

Normalmente, trabalho com muitas instâncias do visual studio abertas para projetos diferentes. Fiquei pensando se há uma maneira de capturar / hibernar um processo em execução no disco, em vez de fechá-lo, para que eu possa abri-lo no mesmo estado em que estava. rapidamente.

Eu tenho uma tonelada de espaço livre em disco, por isso não me importo de salvar o instantâneo do processo inteiro, se isso me poupar tempo em abrir a solução e aguardar o carregamento dos projetos.

Sijin
fonte
+1: ideia interessante! (Claro que isto é exatamente o que o gerenciador de memória virtual está tentando fazer por você automaticamente como e quando necessário.)
Andy
2
FWIW, algo parecido com isto ("inexec", baseado em um dump principal) é tradicionalmente parte do processo de construção do Emacs em sistemas UNIX. Veja, por exemplo, xemacs.org/Architecting-XEmacs/unexec.html
coneslayer,
1
Isso foi projetado especificamente para o emacs, não? Gostaria de saber se uma versão de uso geral poderia ser escrita.
Andy
Estou procurando algo assim há algum tempo. Ajudaria especialmente se você quisesse pausar um codificador de vídeo!
Breakthrough
1
Parece que existe algo parecido com isto para Linux linux.org/apps/AppId_2488.html No entanto, acho que o problema será abrir identificadores de arquivo, soquetes de rede etc., que tornam este um problema não trivial
Sijin

Respostas:

2

Eu faço isso usando o VirtualBox da Sun para separar projetos. Também é útil porque você pode tirar instantâneos.

A desvantagem é que você precisa colocar um sistema operacional inteiro lá.

Incógnito
fonte
3
Sim - eu uso o VirtualBox para instantâneos no nível do SO, foi aí que tive a ideia de um instantâneo no nível do aplicativo. Parece que existe algo parecido com isto para Linux linux.org/apps/AppId_2488.html No entanto, acho que o problema será lidar com arquivos abertos e coisas do tipo, o que torna este um problema não trivial.
Sijin 11/11/10
0

O ProcessExplorer do MS Sysinternals permite Suspender um processo. isso ajuda / faz o trabalho?


fonte
5
Infelizmente não ... eu queria tirar o processo da memória para liberá-lo, e não simplesmente pausar o aplicativo. Embora este seja um programa muito útil para aplicativos intensivos da CPU, pode ser necessário fazer uma pausa!
Breakthrough
Suspender um processo congela efetivamente todos os outros processos que enviam algumas mensagens do Windows para ele. Acontece que alguns processos gostam de enviar mensagens para outros processos, e alguns processos gostam de ser alvos de tais transmissões. Portanto, suspender alguns processos é inofensivo, mas para outros casos isso interferirá no seu trabalho com o computador. E mais uma coisa. Alguns processos, depois de ser retomada a partir de longa duração suspender, irá congelar e levar toda a sua CPU para compensar o tempo perdido computação algo muito inteligente: P
Roland Pihlakas
Há também um utilitário de linha de comando pssuspend do MS Sysinternals. Você pode encontrá-lo lá: technet.microsoft.com/en-us/sysinternals/bb897540 . Faz parte de um pacote PsTools: technet.microsoft.com/en-us/sysinternals/bb896649, onde você também pode encontrar, por exemplo, uma ferramenta pskill , que é, por exemplo, bastante útil após a retomada de um processo e fica muito animada .
Roland Pihlakas
1
@ Breakthrough, mas se o processo for suspenso, a memória será perdida (como outros programas utilizam memória, eles causam a paginação), sem nunca tentar recuperá-lo até que você o retome. Essa é realmente a maneira mais próxima / segura de obter o que você deseja - um programa suspenso trocado basicamente é um instantâneo armazenado com segurança, apenas um que é perdido na reinicialização.
binki
-1

Você pode usar o WinDbg (ferramenta Microsoft) para criar um despejo do estado atual de uma máquina Windows. Normalmente, isso é usado para analisar problemas, mas talvez também atenda às suas necessidades. Pesquise as palavras-chave WinDbg e despeje para obter mais informações, talvez haja até uma opção para despejar apenas processos únicos.

Simon D.
fonte
O arquivo de despejo não pode ser usado para restaurar o processo.
user2284570