自动挂起进程

Automatically suspend process

我看到 Windows/Linux 有暂停进程的能力。 我很困惑为什么后台应用程序没有自动挂起。

例如,Chrome 在后台时会占用大量资源。它很容易被暂停。所以它将保留在 RAM 中并且可以快速取消挂起但它不会使用 CPU 和 GPU。

我的问题包含两部分:

  1. 为什么Windows/Linux(或应用程序)不使用挂起功能? (类似于 Android 中的暂停,但方式不同)
  2. 有什么方法可以暂停后台任务并在获得焦点时(当它转到前台时)取消暂停?

像 Chrome 这样的进程可能 在用户界面上没有输入焦点 但仍然 "running." (Chrome 由一组相关进程和线程。)

是的,Linux 是否能够使用 STOP/CONT 信号实际 "suspend" 一个进程,但这会破坏用户界面因为 Chrome 现在 字面上 冻结,无法再响应用户界面发送给它的消息。

进程和线程仅在实际需要时才消耗 CPU 资源(它们是 "runnable"),并且仅在操作系统为它们提供时间片时才消耗。例如,如果线程或进程是 "waiting for the user interface to send it a message,",则在消息到达之前不会将其视为 "runnable"。

通常情况下,当进程没有输入焦点时,其 优先级 会略微降低,因此它总是让位于输入焦点的进程。在某些系统中,当您最小化 window 时,优先级会进一步降低。 (当多个进程 "runnable," 时,操作系统使用 "priority" 来帮助它决定下一个 运行。)