azerafati Asked: 2016-06-28 21:13:08 +0800 CST2016-06-28 21:13:08 +0800 CST 2016-06-28 21:13:08 +0800 CST 暂停在 ubuntu 中究竟是如何工作的? 772 我想知道在 Ubuntu 中究竟是如何暂停进行的, 是否有任何硬件完全断电或它们的过程被最小化? 除了屏幕,还有哪些部分被搁置或断电? 如果挂起时有任何功耗,我怎么知道它是多少以及我的笔记本电脑能够在电池耗尽之前恢复多长时间? 硬盘到底会发生什么?在挂起时随身携带笔记本电脑而不损坏硬盘是否安全? hard-drive 1 个回答 Voted Best Answer Colin Ian King 2016-06-29T01:27:11+08:002016-06-29T01:27:11+08:00 当机器进入挂起状态时,内核冻结(停止)用户空间程序和内核线程。然后内核会遍历所有设备,并在每个驱动程序上调用挂起方法。每个驱动程序都知道如何将硬件置于深度睡眠状态(甚至关闭电源)(反之亦然,在恢复发生时将其恢复到正常运行状态)。此时硬件应处于低功耗状态(因此硬盘将被关闭)。 内核唤醒代码地址写入 ACPI FADT 表指定的地址,然后写入 x86 电源管理控制寄存器;这有效地关闭了处理器,但将内存保持在自刷新模式。 当恢复发生时,CPU 会重新启动,并且在固件(BIOS/UEFI)中的一小段时间后会跳转到内核提供的唤醒地址,并且内核会跳转回保护模式并恢复其状态。然后它遍历驱动程序,这些驱动程序恢复所有设备。然后解冻冻结的进程,内核返回用户空间。 所以回答你的问题: 1和2:设备驱动尝试让设备进入最深睡眠状态,有些设备可以掉电,有些可能只是处于深度睡眠状态,耗电很少。这取决于硬件和设备驱动程序。 内存正在刷新,它永远不会断电。CPU 被有效地停止了,但它取决于 CPU 型号有多少包实际上是完全断电的。 确定正在使用多少功率的一种方法是使用固件测试套件 s3power 测试;我建议让机器进入深度睡眠 30 分钟并测量电池电量消耗以估算暂停期间的电量使用情况: 移除交流电源,然后运行: sudo apt-get install fwts sudo fwts s3power --s3power-sleep-delay=1800 ..等待 1800 秒(30 分钟),它应该会重新开机并给出估计值。 硬盘断电,可以放心携带。
当机器进入挂起状态时,内核冻结(停止)用户空间程序和内核线程。然后内核会遍历所有设备,并在每个驱动程序上调用挂起方法。每个驱动程序都知道如何将硬件置于深度睡眠状态(甚至关闭电源)(反之亦然,在恢复发生时将其恢复到正常运行状态)。此时硬件应处于低功耗状态(因此硬盘将被关闭)。
内核唤醒代码地址写入 ACPI FADT 表指定的地址,然后写入 x86 电源管理控制寄存器;这有效地关闭了处理器,但将内存保持在自刷新模式。
当恢复发生时,CPU 会重新启动,并且在固件(BIOS/UEFI)中的一小段时间后会跳转到内核提供的唤醒地址,并且内核会跳转回保护模式并恢复其状态。然后它遍历驱动程序,这些驱动程序恢复所有设备。然后解冻冻结的进程,内核返回用户空间。
所以回答你的问题:
1和2:设备驱动尝试让设备进入最深睡眠状态,有些设备可以掉电,有些可能只是处于深度睡眠状态,耗电很少。这取决于硬件和设备驱动程序。
内存正在刷新,它永远不会断电。CPU 被有效地停止了,但它取决于 CPU 型号有多少包实际上是完全断电的。
移除交流电源,然后运行:
..等待 1800 秒(30 分钟),它应该会重新开机并给出估计值。