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

news2024/11/24 3:06:14

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

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

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

b7060fc2ac0a490fac598ec6f4712df4.png

尽管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 状态,没有任何软件活动运行,但可以短暂唤醒以执行增值软件活动。

7bbee5f6dfb9484fa456c8f9757a1f37.png

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

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

16b04921e1f146e3bb8f04e333f35b5f.png

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1634259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新手如何用Postman做接口自动化测试?

1、什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试,模拟人去操作软件界面,把人从简单重复的劳动中解放出来,本质是用代码去测试另一段代码,属于一种软件开发工作,已…

Q02UCPU 三菱Q系列通用型QnUCPU模块20K步40ns

Q02UCPU 三菱Q系列通用型QnUCPU模块20K步40ns Q02UCPU外部连接, Q02UCPU可以用Q03UDVCPU替换。 Q02UCPU参数说明:输入输出2048点、I/O软元件点数8192、程序容量20K、基本处理速度40ns、程序内存80K、USB/RS232连接。 Q02UCPU图片 三菱通用型QnUCPU模块20K步Q02UCPU…

Linux实现简单进度条(附原理解释和动图效果)

1&#xff0c;行缓冲区 先看下面的代码和运行结果&#xff0c; #include<stdio.h> #include<unistd.h> int main() {printf("你好\n");sleep(3);return 0; }只是一个简单的打印“你好”然后休眠三秒&#xff0c;最后程序结束 再看下面的代码和运行结果…

LT6911UXE HDMI 2.0 至双端口 MIPI DSI/CSI,带音频 龙迅方案

1. 描述LT6911UXE 是一款高性能 HDMI2.0 至 MIPI DSI/CSI 转换器&#xff0c;适用于 VR、智能手机和显示应用。HDMI2.0 输入支持高达 6Gbps 的数据速率&#xff0c;可为4k60Hz视频提供足够的带宽。此外&#xff0c;数据解密还支持 HDCP2.3。对于 MIPI DSI / CSI 输出&#xff0…

Linux学习之Tcp与Udp

目录 UDP Udp协议的格式 UDP的传输特性 UDP的缓冲区 基于UDP的应用层协议 TCP协议 TCP的报文格式 1.ACK确认应答机制 2.超时重传 3.TCP的链接管理机制 为什么要三次握手呢&#xff1f; 理解TIME_WAIT状态 流量控制&#xff08;可靠性效率&#xff09; 滑动窗口 拥塞…

C++栈和队列模拟

栈和队列所用的容器默认都为deque&#xff0c;这种容器可以看作是一种vector和list的中间性能容器。 而deque虽然头插、尾插效率很好&#xff0c;且支持 [ ] 访问&#xff08;默认容器为它的原因&#xff09;&#xff0c;但是 他的缺点也很明显&#xff1a; 1.中间插入删除会…

【C++算法竞赛 · 图论】树

目录 前言 树 树的定义 树的相关概念 树的遍历 1 先序遍历 2 中序遍历 3 后序遍历 前言 前两篇文章&#xff08;【C算法竞赛 图论】图论基础、【C算法竞赛 图论】图的存储&#xff09;中&#xff0c;介绍了图的相关概念与存储&#xff0c;还不了解的可以去补补课。 …

【百度Apollo】探索自动驾驶:小白教学如何使用 Dreamview 播放数据包

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引入一、Dreamview 简介二、使用 Dreamview 具体步骤步骤一&#xff1a;进入 Apollo Docker 环境步骤二&#xff…

数学建模--图论最短路径基础

1.图的定义 学过数据结构或者离散数学的小伙伴们应该知道图的概念&#xff0c;我在这里简单的介绍一下&#xff1a; 图的概念和我们理解的是很不一样的&#xff0c;这里的图并不是我们的生活里面的图片&#xff0c;而是一种表示不同的数据之间的关系&#xff0c;例如这里的5个…

hive使用hplsql进行etl或其它数据加工

参照 https://cwiki.apache.org/confluence/pages/viewpage.action?pageId59690156 http://www.hplsql.org/doc Hive HPL/SQL&#xff0c;即Hive Hybrid Procedural SQL一个开源工具&#xff0c;它为hive实现了过程性的SQL功能&#xff0c;类似Oracle的PLSQL。从hive 2.0.0开…

电机控制系列模块解析(12)—— 过调制

一、过调制 电机控制中的过调制&#xff08;Overmodulation&#xff09;是指在实施脉宽调制&#xff08;PWM&#xff09;过程中&#xff0c;使调制指数&#xff08;调制深度&#xff09;超过常规线性调制区的极限&#xff0c;进入非线性调制区域。这一策略通常应用于诸如空间矢…

NIO(非阻塞I/O)和IO(阻塞I/O)详解

文章目录 一、NIO&#xff08;Non-blocking I/O&#xff0c;非阻塞I/O&#xff09;1、Channel&#xff08;通道&#xff09;与Buffer&#xff08;缓冲区&#xff09;1.1、使用ByteBuffer读取文件1.2、ByteBuffer 方法1.2、ByteBuffer 结构1.3、字符串与 ByteBuffer 互转1.4 Sca…

Android 音视频播放器 Demo(一)—— 视频解码与渲染

本篇作为 Android 音视频实战系列的第二篇文章&#xff0c;主要介绍视频解码与渲染过程。本系列文章目录如下&#xff1a; Android 音视频基础知识 Android 音视频播放器 Demo&#xff08;一&#xff09;—— 视频解码与渲染 Android 音视频播放器 Demo&#xff08;二&#xff…

数据结构-链表练习(面试题)

1&#xff0c;翻转一个单链表 建立变量cur指向第二个节点&#xff0c;curN指向cur.next&#xff0c;将第二个节点的next改为head&#xff0c;headcur这样实现&#xff0c;前两个节点顺序的翻转&#xff0c;第二个节点指向了第一个节点&#xff0c;之后cur向后移&#xff08;cu…

linux中 虚拟机 修改时间 centos7

方法1 &#xff1a;虚拟机内 设置 方法2 代码实现 timedatectl set-timezone "Asia/Shanghai"

Detla lake with Java--在spark集群上运行程序

昨天写了第一篇入门&#xff0c;今天看见有人收藏&#xff0c;继续努力学习下去。今天要实现的内容是如何将昨天的HelloDetlaLake 在spark集群上运行&#xff0c;。具体步骤如下 1、安装spark,我使用的是 spark-3.5.1-bin-hadoop3-scala2.13&#xff0c;去官网下载&#xff0c…

Secure CRT 文件传输

Secure CRT 文件传输 Secure CRT支持多种文件传输协议&#xff0c;其中最常用的是Xmodem、Ymodem、Zmodem和Kermit。这些协议允许在本地计算机和远程主机之间安全地传输文件。 Xmodem&#xff1a; Xmodem是一种简单的协议&#xff0c;通常用于在串行连接上进行文件传输。它通过…

【程序错误-显存不足】RuntimeError: CUDA out of memory. Tried to allocate 4.00 GiB

目录 1. 问题2. 解决方法2.1 租服务器(试过有用)2.2 减小batchsize2.3 减少模型大小2.3 检查模型本身没有发现错误&#xff0c;最终确认是验证集评估阶段的张量计算非常占用空间。2.3.1 可以对利用torch.tensor().detach().cpu().numpy()转为numpy&#xff0c;在cpu上进行loss和…

学习Rust的第22天:mini_grep第2部分

书接上文&#xff0c;在本文中&#xff0c;我们学习了如何通过将 Rust 程序的逻辑移至单独的库箱中并采用测试驱动开发 (TDD) 实践来重构 Rust 程序。通过在实现功能之前编写测试&#xff0c;我们确保了代码的可靠性。我们涵盖了基本的 Rust 概念&#xff0c;例如错误处理、环境…

【ARM Cache 系列文章 11.2 -- ARM Cache 组相联映射】

请阅读【ARM Cache 系列文章专栏导读】 文章目录 Cache 组相联映射组相联映射原理多路组相连缓存的优势多路组相连缓存的代价关联度&#xff08;Associativity&#xff09; 上篇文章&#xff1a;【ARM Cache 系列文章 11.1 – ARM Cache 全相连 详细介绍】 Cache 组相联映射 A…