Puis-je "hiberner" un programme?

Oui, je sais que l'hibernation s'applique habituellement à un ordinateur. (Hiberner sa signification, sauvegarder la mémoire du programme dans le disque et pouvoir le restaurer de manière cohérente.)

Toutefois, l'hibernation d'un programme peut être très utile. Supposons que je voulais jouer à un jeu, mais quelques programmes comme firefox, acrobat prend 500M de mémoire, donc je veux le libérer. La fermeture et le démarrage peuvent prendre beaucoup de temps, surtout si les données de session ne peuvent pas être stockées. Donc, je vais les hiberner. Donc, est-ce que je peux hiberner un programme?

    Il y a une question connexe à ce sujet à StackOverflow. Il est plus lié à la programmation, mais la réponse principale acceptée explique pourquoi ce que vous essayez de faire est difficile et offre une alternative viable.

    Fondamentalement, exécutez vos applications 'business' dans une machine virtuelle, et faites une pause / hibernation / fermez-la lorsque vous voulez jouer.

    Bien que ce ne soit pas un hibernage réel, le processus peut être suspendu. Il cessera immédiatement d'utiliser les cycles CPU, mais il utilisera toujours la mémoire. Heureusement, cette mémoire sera échangée vers le fichier de page, si vous lancez une application à forte intensité de mémoire, ce n'est donc pas un problème réel. Le processus suspendu ne peut pas survivre au redémarrage \ logoff, mais ce sera suffisant pour jouer à un jeu.

    Question connexe: Suspendre / Reprendre un processus de manière simple?

    En interne, la suspension des processus pourrait se faire via différentes approches :

    • SuspendThread et ResumeThread paire de fonctions.

    • NtSuspendProcess fonction NtSuspendProcess (non officiellement documentée) qui a été introduite avec Windows XP Sp0 et fonctionne sur chaque version de système unique depuis lors.

    • Interface de débogage fournie par Microsoft, utilisant les fonctions DebugActiveProcess et DebugActiveProcessStop . Lorsqu'un débogueur s'attache à un processus distant, tous les threads de la cible sont immédiatement suspendus jusqu'à ce que le débogueur donne un signe pour les laisser exécuter.

    Il existe un certain nombre d'outils disponibles, qui peuvent suspendre les processus:

    • Process Monitor
    • PsSuspend
    • NtSuspendProcess

    De plus, Resource Monitor ( Task ManagerPerformanceOpen Resource Monitor ) dans Windows Vista et plus haut peut suspendre \ processus de reprise:

    Moniteur de ressources

    "Hibernation", une application ne serait pas plus rapide que la simple fermeture et la redémarrage, bien que votre point sur les données de session soit valide. En général, il n'y aurait pas beaucoup d'avantages.

    Comme vous êtes sous Windows, vous pouvez toujours créer deux comptes d'utilisateurs et utiliser la fonction de changement de compte rapide dans Windows et utiliser chacun d'eux pour différents ensembles d'applications. Puisque Windows ralentit beaucoup les autres avis ouverts sur l'ordinateur. Je le pense.