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.


+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á.


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?


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.


O arquivo de despejo não pode ser usado para restaurar o processo.
— user2284570
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.