【问题标题】:Do suspended processes still use up CPU/RAM?暂停的进程是否仍会占用 CPU/RAM?
【发布时间】:2018-04-10 14:37:03
【问题描述】:

我想知道,如果您暂停一个进程,它是否仍然使用 RAM/CPU 还是只是释放所有使用的 RAM 和 CPU?

【问题讨论】:

  • 这个网站是关于编程的,还有另一个网站用于操作系统调度
  • 嗯,这是技术上的编程。我想知道使用 SuspendProcess 挂起进程是否会提高性能,因为 RAM 已释放并且它不执行任何 CPU 周期。而且因为这里有更多的知识渊博的人
  • 您可能已经看到进程在任务管理器中被挂起,但是您是否看到了 SuspendProcess 函数是非常值得怀疑的。操作系统中没有内置这样的功能。向我们展示你是如何做到的。
  • 是的,我表达错了。我说的是从 ntdll 导出的函数 NtSuspendProcess,它对内核模式版本进行系统调用:i.imgur.com/MHxpSVr.png
  • 但是我知道你的意思,单独使用记录在案的 winapi,你可以使用 SuspendThread 暂停当前正在运行的线程,但我要求一种不关闭进程的方法,而是转储它的所有内存有在内存中

标签: windows process ram internals


【解决方案1】:

暂停进程中的所有线程将阻止线程接收更多 CPU 时间,因此一旦任何剩余的内核中断/操作完成,该进程将不会消耗任何 CPU 功率,直到线程恢复。用于挂起进程的未记录 API 只是挂起进程中的所有线程,同时持有与进程相关的锁。

暂停的 Win32 进程不会释放任何内存,但在可用物理 RAM 很少的系统上,可以将应用程序的一部分从 RAM 移动到页面文件以释放 RAM 以供其他活动应用程序使用。可以调用SetProcessWorkingSetSize 来强制减少进程工作集中的页面。

UWP/Store 应用程序具有更高级别的暂停类型,其中应用程序有一个小时间窗口来保存其状态,然后整个进程可能被终止。如果用户切换回应用程序(如果已终止),则会启动一个新进程。

系统会在暂停时尝试将您的应用及其数据保留在内存中。但是,如果系统没有资源将您的应用程序保存在内存中,it will terminate your app

【讨论】:

    猜你喜欢
    • 2015-08-25
    • 1970-01-01
    • 2013-02-26
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2016-02-20
    相关资源
    最近更新 更多