windows驱动开发-电源状态(二)

Modern Standby这个特性其实很难准确的讲清楚,因为它是一个系统行为不是驱动功能行为,应用层、功能驱动、系统总线、设备本身都有不同程度的参与,并且它属于否决性的,一个系统中,只要有一个设备不支持Modern Standby,那么整个系统也没办法支持Modern Standby。

不过还是讲解一下吧,毕竟这个概念非常重要,和之前的休眠或者睡眠不一样,Modern Standby可以说使用休眠的功耗来使用睡眠的功能,并且还能保持网络通畅,这其实很难。

Windows 10 Modern Standby扩展了 Windows 8.1 连接待机电源模型。 连接待机以及随后的ModernStandby可实现随开即用/随关随停的用户体验,类似于智能手机电源模型。 与手机一样,S0 低功耗空闲模型使系统能够在低功耗模式下保持网络连接。

尽管Modern Standby可以像连接待机一样实现随开即用/随关随停的用户体验,但Modern Standby比 Windows 8.1 连接待机电源模型更具包容性。 Modern Standby允许以前仅使用传统睡眠 (S3) 电源模型的驱动在细分领域使用低功耗空闲模型。

Modern Standby适用于 Windows 10 桌面版和 Windows 10X。

无法通过更改 BIOS 中的设置来完成 S3 和Modern Standby之间的切换。 在没有重新安装完整 OS 的情况下,Windows 不支持切换电源模型。

Windows 10 通过以下方式实现低功耗:只有在绝对必要时才从最低功耗状态中唤醒,并且只允许软件在短时间、受控的突发活动中执行,从而显著减少了软件组件的执行机会。 Windows 和 SoC 硬件始终在侦听感兴趣的事件(例如网络数包或者键盘输入),并在需要时立即唤醒,系统将在需要实时操作时唤醒,例如 OS 维护或用户唤醒系统时。

Modern Standby由多种硬件和软件电源模式组成,所有这些模式都在屏幕关闭时出现。 ModernStandby的复杂性在于要使系统保持活动状态以处理后台任务,同时确保系统保持足够安静以实现较长的电池寿命。

***进入Modern Standby:***Modern Standby在用户使系统进入睡眠状态(例如,用户按下电源按钮、合上盖子、空闲一点时间或通过 Windows"开始"菜单中的电源按钮选择"睡眠")时启动。 进入Modern Standby状态时,应用和系统软件必须准备好转换到低功耗操作,在为低功耗操作准备好软件组件和应用之后,硬件组件(包括其软件设备驱动程序)也必须为低功耗操作做好类似的准备。

Modern Standby期间的活动: 为了响应用户输入、来自网络设备的中断和其他硬件事件,可以按需转换到活动模式,在停止所有软件活动,并且打开和关闭 SoC 的设备进入低功耗状态后,Windows 会将 SoC 从活动模式转换为空闲模式。

在Modern Standby期间,网络和通信设备会根据系统的软件活动自动在活动模式和低功耗模式之间转换:当没有需要网络的系统服务或 Microsoft Store 应用后台任务时,网络设备处于低功耗、协议卸载和 WoL 模式; 当系统服务或后台任务需要网络访问时,Windows 会自动将网络设备转换为活动模式。

有时,系统会在活动模式(屏幕关闭)下停留较长的时间间隔。 出现这些较长的活动时间间隔有多种原因,例如,处理传入的电子邮件或下载关键的 Windows 更新。 允许将 SoC 置于活动电源状态的 Windows 组件称为激活器,因为它们在电源管理器中注册为能够阻止转换回空闲电源模式。 这些活动的持续时间差异很大,但可以进行控制以延长电池寿命。 可以使用内置的 Sleep Study 软件工具或通过基于 Windows 事件跟踪 (ETW) 的工具来查看活动的持续时间。

在 Windows 8.1 连接待机系统上,在Modern Standby期间,Windows 至少每 30 秒将 SoC 从空闲模式转换为活动模式,以执行内核维护任务。 此维护活动的持续时间非常短(通常不超过几百毫秒)并且无法调整,这种情况不会在 Windows 10 Modern Standby系统上发生。

***从ModernStandby恢复:***当用户使系统从待机状态恢复时(例如按下电源按钮),显示屏立即打开,网络设备还原到正常的活动操作模式。 从按下电源按钮到显示屏打开的时间不到一秒,在显示屏打开并且网络设备恢复正常操作模式后,桌面应用程序继续运行,并且系统恢复其正常的屏幕开启活动行为。

Modern Standby通过将大部分时间花费在将 SoC 断电 (DRIPS) 的低功耗状态来实现低功耗和持续连接。

关闭显示器后,Windows 会通过一系列阶段转换,准备应用程序和系统软件,以便实现低功耗。 这些阶段的目的是尽可能多地停止或减少系统上的软件活动,在软件组件和应用已准备好进行低功耗操作后,硬件组件(包括其软件设备驱动程序)必须同样做好准备,以便实现低功耗操作。

仅当激活器阻止转换回空闲电源模式时,Windows 才会启动 SoC,以执行计划后台活动或响应传入网络活动或设备中断。 Windows 通过积极进入空闲电源模式并控制活动量来实现低功耗。

如果设备在没有任何激活器代理软件活动的情况下阻止软件 DRIPS (SW DRIPS) 一段时间,则 OS 可通过定向最深运行时空闲电源状态 (DDRIPS) 机制指示设备进入其适当的低功耗空闲状态。

Modern Standby系统可根据用户选择加入联网场景,在每个Modern Standby会话的基础上进入联网待机或断网待机状态,网络连接中进行了更详细的介绍。

如果系统处于断网待机状态,则睡眠期间只会发生极少的活动。 系统应在大部分时间处于空闲电源模式 (DRIPS)。

如果系统处于联网待机状态,则活动量通常较高。 此活动主要是需要网络连接才能使用的应用后台任务的结果。 例如,在没有 Internet 连接的情况下,电子邮件不会同步。 当系统处于联网待机状态并存在活动 Internet 连接时,如果传入网络数据包与 LAN 唤醒 (WoL) 模式匹配,系统将按需在空闲模式和活动模式之间转换。

Modern Standby系统状态

可以在系统处于静止状态时运行的软件活动与可以在系统处于真正睡眠阶段运行的软件活动有明显的区别, 因此,"关屏"状态与"睡眠"状态的预期行为和性能标准有所不同。

屏幕关闭后,一系列阶段会使系统安静后进入"睡眠"状态。 当系统进入"低功耗阶段"时,所有辅助的较大型工作负荷都已完成,系统就可以进入"睡眠"状态。 在"睡眠"状态下,可能会运行特定的增值软件活动(例如,系统会接收电子邮件通知、刷新网络连接,等等),同时保持非常低的功耗。 因此,就像智能手机一样,Modern Standby系统的目标是在功耗非常低的情况下,仍能为用户提供实时连接和快速唤醒功能。 "睡眠"时,系统主要保持在 DRIPS 状态,没有任何软件活动运行,但可以短暂唤醒以执行增值软件活动。

有关典型电源模型(上)与类似智能手机的Modern Standby电源模型(下)的一般说明。 在传统 S3 模型中,系统在安静后进入根本没有软件活动运行的 S3 睡眠时会执行几项主要任务。 在Modern Standby电源模式下,系统会在逐渐安静后进入睡眠状态,在这种状态下,会运行一小部分进行恰当管理的增值软件活动。

下面的图阐述了一个过程,window并不是马上进入sleep过程,而是从一些状态开始缓慢进入sleep,但是和我们认知的不一样,不是发生什么,然后进入sleep,相反则是因为什么都没发生,才进入sleep模式。

相关推荐
蓝田~39 分钟前
观察者模式和订阅模式
windows·观察者模式
梓仁沐白7 小时前
ubuntu+windows双系统切换后蓝牙设备无法连接
windows·ubuntu
九鼎科技-Leo11 小时前
什么是 WPF 中的依赖属性?有什么作用?
windows·c#·.net·wpf
Yang.9914 小时前
基于Windows系统用C++做一个点名工具
c++·windows·sql·visual studio code·sqlite3
我不瘦但很逗14 小时前
Windows下使用DBeaver连接云数据库(MySQL)
数据库·windows
ashane131415 小时前
Java list
java·windows·list
万里沧海寄云帆15 小时前
Word 插入分节符页码更新问题
windows·microsoft·word
dot.Net安全矩阵16 小时前
.NET 通过模块和驱动收集本地EDR的工具
windows·安全·web安全·.net·交互
编程修仙18 小时前
Collections工具类
linux·windows·python
嵌入(师)19 小时前
嵌入式驱动开发详解1(系统调用)
驱动开发