我有一个用于计时器的基本 C++ 代码,当代码运行并且 PC 没有休眠时,它可以完美运行。我希望它即使在电脑进入睡眠模式后也能继续运行。有可能吗?我正在运行 Linux。
2 回答
如果您的意思是挂起到内存或以睡眠模式挂起到磁盘( ACPI电源状态 S1 到 S4),那么这是不可能的。cpu 不仅在这些模式下处于空闲状态,而且不处理任何东西。您需要唤醒计算机(ACPI S0 状态)。
Wikipedia 文章引用了ACPI 规范(ACPI Spec Rev 5.0 - 日期为 2011 年 12 月 6 日):
“上电暂停 (POS):处理器缓存被刷新,CPU停止执行指令。CPU 和 RAM 的电源保持不变。未指示它们必须保持开启的设备可能会被关闭” (我强调)
但是,如果您打算在计算机空闲时运行脚本,情况就不同了。在这种情况下,空闲意味着 PC 处于 ACPI 状态 S0 但此时 CPU 没有任务。CPU,或者更确切地说,它的内核,将设置为C0 和 C6 之间的电源管理C 状态。控制这些状态的州长会根据需要在 C 状态和 P 状态之间快速切换。当 CPU 空闲时间更长时,它将被送入下一个更深的 C 状态。
您无需对此电源状态管理执行任何操作。您的操作系统的调度程序和按需调节器将处理此问题。您可能想了解如何以在不需要时不会唤醒 CPU 的方式编写脚本。
不,那是不可能的。一切都被暂停,机器状态保存到 RAM(以便接收电源)。硬盘等全部断电。然而,机器确实会响应某些“恢复”中断——可能会有键盘/鼠标等中断被处理以恢复它,但是 AFAIK 就是这样,我认为你不能利用这些软件/硬件交互来保持CPU 运行你的指令。