Existe-t-il un moyen de prendre un instantané d'un processus en cours d'exécution sur le disque pour le restaurer ultérieurement?

11

Je travaille généralement avec de nombreuses instances de Visual Studio ouvertes à différents projets, je me demandais s'il y avait un moyen de prendre un instantané / hiberner un processus en cours sur le disque au lieu de le fermer afin de pouvoir l'ouvrir dans le même état qu'il était rapidement.

J'ai une tonne d'espace disque libre, alors cela ne me dérangerait pas d'enregistrer l'intégralité de l'instantané du processus si cela me faisait gagner du temps pour ouvrir la solution et attendre que les projets se chargent.

Sijin
la source
+1: Idée intéressante! (Bien sûr, c'est exactement ce que le gestionnaire de mémoire virtuelle essaie de faire automatiquement pour vous au fur et à mesure des besoins.)
Andy
2
FWIW, quelque chose comme ça ("unexec", basé sur un core dump) fait traditionnellement partie du processus de construction d'Emacs sur les systèmes UNIX. Voir, par exemple, xemacs.org/Architecting-XEmacs/unexec.html
coneslayer
1
Qui a été spécialement conçu pour emacs non? Je me demande si une version à usage général pourrait être écrite.
Andy
Je cherche depuis quelque temps quelque chose comme ça. Cela serait particulièrement utile si vous vouliez mettre en pause un encodeur vidéo!
Percée du
1
Il semble qu'il y ait quelque chose comme ça pour Linux linux.org/apps/AppId_2488.html Cependant, je pense que le problème va être des poignées de fichiers ouvertes, des sockets réseau, etc., ce qui en fait un problème non trivial
Sijin

Réponses:

2

Je fais cela en utilisant VirtualBox de Sun pour séparer les projets. C'est également pratique car vous pouvez prendre des instantanés.

L'inconvénient est que vous devez y installer un système d'exploitation complet.

Incognito
la source
3
Ouais - J'utilise VirtualBox pour des instantanés au niveau du système d'exploitation, c'est là que j'ai eu l'idée d'un instantané au niveau de l'application. Il semble qu'il y ait quelque chose comme ça pour Linux linux.org/apps/AppId_2488.html Cependant, je pense que le problème va être les descripteurs de fichiers ouverts et autres, ce qui en fait un problème non trivial.
Sijin
0

ProcessExplorer de MS Sysinternals vous permet de suspendre un processus. Est-ce que cela aide / fait le travail?


la source
5
Malheureusement non ... Je voulais retirer le processus de la mémoire afin de le libérer, pas simplement suspendre l'application. Bien que ce soit un programme très utile pour les applications gourmandes en CPU, vous devrez peut-être faire une pause!
Percée du
La suspension d'un processus gèle efficacement tous les autres processus qui lui envoient des messages Windows. Il se trouve que certains processus aiment envoyer des messages à d'autres processus, et certains processus aiment être des cibles pour de telles diffusions. Ainsi, la suspension de certains processus est inoffensive, mais dans d'autres cas, elle interférera avec votre travail sur l'ordinateur. Et encore une chose. Certains processus, après avoir été repris d'une suspension de longue durée, gèleront et prendront tout votre processeur pour compenser tout le temps perdu à calculer quelque chose de très intelligent: P
Roland Pihlakas
Il existe également un utilitaire de ligne de commande pssuspend de MS Sysinternals. Vous pouvez le trouver là-bas: technet.microsoft.com/en-us/sysinternals/bb897540 . Il fait partie d'un package PsTools: technet.microsoft.com/en-us/sysinternals/bb896649 où vous pouvez également trouver par exemple un outil pskill , qui est par exemple plutôt pratique après la reprise d'un processus et il se trouve qu'il est trop excité .
Roland Pihlakas
1
@Breakthrough mais si le processus est suspendu, il abandonnera la mémoire (car d'autres programmes utilisent de la mémoire, ils provoqueront la pagination de celui-ci) sans jamais essayer de le récupérer jusqu'à ce que vous le repreniez. C'est vraiment le moyen le plus proche / le plus sûr d'obtenir ce que vous voulez - un programme suspendu échangé est essentiellement un instantané stocké en toute sécurité, juste un qui est perdu au redémarrage.
binki
-1

Vous pouvez utiliser WinDbg (outil Microsoft) pour créer un vidage de l'état actuel d'une machine Windows. Habituellement, cela est utilisé pour analyser les problèmes, mais peut-être pourrait-il également répondre à vos besoins. Recherchez les mots-clés WinDbg et dump pour plus d'informations, il existe peut-être même une option pour ne vider que des processus uniques.

Simon D.
la source
Le fichier de vidage ne peut pas être utilisé pour restaurer le processus.
user2284570