在 ubuntu 中暂停功能究竟是如何工作的?

在 ubuntu 中暂停功能究竟是如何工作的?

我想知道在 Ubuntu 中暂停的具体过程,

  1. 是否有任何硬件完全断电或者其进程只是被最小化?
  2. 除屏幕外,还有哪些部分被搁置或断电?
  3. 如果挂起时需要耗电,我如何知道耗电量是多少,以及在电池耗尽之前我的笔记本电脑可以恢复多长时间?
  4. 硬盘究竟发生了什么,在挂起状态下携带笔记本电脑安全吗?不会损坏硬盘吗?

答案1

当机器进入挂起状态时,内核会冻结(停止)用户空间程序和内核线程。然后内核将遍历所有设备并调用每个驱动程序上的挂起方法。每个驱动程序都知道如何将硬件置于深度睡眠状态(甚至关闭电源)(反之,在恢复时将其恢复到正常运行状态)。此时硬件应该处于低功耗状态(因此硬盘将关闭电源)。

内核唤醒代码地址写入 ACPI FADT 表指定的地址,然后写入 x86 电源管理控制寄存器;这可以有效地关闭处理器电源,但保持内存处于自刷新模式。

当恢复发生时,CPU 会重新启动,并在固件 (BIOS/UEFI) 中短暂时间后跳转到内核提供的唤醒地址,内核会跳回受保护模式并恢复其状态。然后它遍历驱动程序,这些驱动程序会恢复所有设备。然后冻结的进程会解冻,内核会返回到用户空间。

因此,回答你的问题:

1 和 2:设备驱动程序尝试使设备进入最深的睡眠状态,有些设备可以关闭电源,有些设备可能处于深度睡眠状态,消耗很少的电量。这取决于硬件和设备驱动程序。

内存正在刷新,它永远不会关闭。CPU 实际上是停止的,但这取决于 CPU 型号,即实际完全关闭了多少组件。

  1. 确定使用了多少电量的一种方法是使用固件测试套件 s3power 测试;我建议让机器进入深度睡眠 30 分钟并测量电池电量消耗,以估算挂起期间的电量使用情况:

断开交流电源,然后运行:

sudo apt-get install fwts
sudo fwts s3power --s3power-sleep-delay=1800

..等待 1800 秒(30 分钟),它会重新启动并给出估算值。

  1. 硬盘已关闭,因此机器可以安全携带。

相关内容