Mover la memoria asociada con el programa al disco

Mover la memoria asociada con el programa al disco

Estoy usando PsSuspend para suspender procesos por su PID que utilizan recursos computacionales excesivos de CPU o GPU cada vez que estoy trabajando en otra cosa y necesito que la CPU/GPU funcione en eso. Sin embargo, la memoria de estos procesos que se suspenden se queda en la RAM (o en la VRAM de la GPU).

¿Hay alguna forma de escribir el contenido de la memoria del programa suspendido en el disco y luego liberar la memoria para el sistema operativo de tal manera que cuando se reanude el proceso, vuelva a leer la memoria del disco y continúe normalmente? Estoy interesado en lograr esto tanto para la memoria del sistema (RAM) como para la memoria de video (VRAM). No creo que esto se pueda hacer con PsSuspend, pero sospecho que puede ser posible con las API de Windows y C++. Si esto no es posible, ¿puedes explicar por qué no?

Respuesta1

Dehttps://stackoverflow.com/questions/49756405/do-suspended-processes-still-use-up-cpu-ram

Un proceso Win32 suspendido no libera memoria, pero en un sistema con poca RAM física libre, partes de la aplicación se pueden mover de la RAM al archivo de paginación para liberar RAM para que la utilicen otras aplicaciones activas. Se puede llamar a SetProcessWorkingSetSize para forzar una reducción de páginas en el conjunto de trabajo de procesos.

Quizás puedas usar un contenedor acoplable o una máquina virtual en su lugar, de esa manera puedes suspender/pausar todo el flujo de trabajo y liberar todos los recursos utilizados.

información relacionada