这段文本介绍了Linux内核支持的两种主要高级电源管理策略。
第一种策略是基于使用整个系统的全局低功耗状态,其中用户空间代码无法执行,整个系统的活动性显著降低,称为睡眠状态。当用户空间请求时,内核将系统置于这些状态之一,并在从指定设备接收到特殊信号时保持在该状态,触发转换到可以运行用户空间代码的工作状态。由于睡眠状态是全局的,整个系统都受到状态变化的影响,因此这种策略被称为系统范围的电源管理。
另一种策略称为工作状态电源管理,它基于根据需要调整系统中各个硬件组件的电源状态。因此,如果使用这种策略,系统的工作状态通常不对应于其任何特定的物理配置,而可以被视为覆盖系统不同电源状态范围的元状态,在其中它的各个组件可以是活动的(正在使用)或非活动的(空闲)。如果它们是活动的,它们必须处于允许它们处理数据并被软件访问的电源状态。反之,如果它们是非活动的,理想情况下,它们应该处于低功耗状态,可能无法被访问。
如果系统的所有组件都是活动的,整个系统被视为"运行时活动",这种情况通常对应于系统的最大功耗(或最大能量使用)。如果它们都是非活动的,整个系统被视为"运行时空闲",这可能非常接近于物理系统配置和功耗角度的睡眠状态,但是启动执行用户空间代码的时间和精力要比处于睡眠状态的系统少得多。然而,从睡眠状态转换回工作状态只能由有限的设备启动,因此通常系统在睡眠状态下花费的时间比在一个运行时空闲状态下花费的时间要长得多。因此,系统通常在睡眠状态下消耗的能量比在大部分时间内处于运行时空闲状态时消耗的能量要少。
此外,这两种电源管理策略针对不同的使用场景。换句话说,如果用户表示系统将来不会使用,例如关闭笔记本电脑的盖子(如果系统是笔记本电脑),那么此时系统可能应该进入睡眠状态。另一方面,如果用户只是离开笔记本电脑键盘,那么在系统变得空闲时,它可能应该保持在工作状态并使用工作状态电源管理,因为用户随时可能回到系统,并且可能希望系统立即可访问。