在Windows启动后,最自然的关机方式是什么呢?当然是按下电源键了。有没有好奇,当我们按下电源键,会发生什么呢?为什么Windows可以选择关机或者睡眠?背后的机理又是什么呢?

历史

如果你曾经使用过Windows95,你一定会记得当时的一个铁律,必须正确关机!我们要点击关机菜单,在三个选项中选择关机才好。像这样按下电源键是绝对不行的:

我们按下电源键真的会立刻切断整机电源,如果你足够幸运,下次也许跑个Scandisk就行了,如果你没有这么幸运,你没有保存的文件可能就丢失了!这个设计简直是反人类,和我们其他电器的使用习惯完全不同。幸亏当时PC还是高大上的高科技产品而不是现在四处可见的普通电器,否则微软一定会被骂死。

Window98和随后的WindowsXP引入了ACPI,情况才得到改善。我们来一起看一看当我们按下电源键后会发生什么。

原理

我们把按下电源键分成两种情况:一、按一下立刻抬起。二、按住不动超过5秒。这里需要ACPI的背景知识(ACPI与UEFI - 知乎专栏)。

1。按一下

ACPI定义了两种电源键:Fixed hardware power button和Control method power button。Fixed hardware power button一般对应南桥或者SOC中的PWRBTN#引脚,而Control method power button一般可以用GPIO等扩展,它需要在ACPI table中报告_HID(PNP0C0C)设备并提供_GPE Event。为了简单起见,我们以最常见的PWRBTN#来说明整个流程:

1. 用户按下电源键,并抬起。

2. PWRBTN#被触发。

3. PWRBTN_STS被置1。

4. SCI产生。

5. 操作系统的OSPM发现SCI是电源键产生,随后检查用户的电源键设置偏好。用户可以设置睡眠或者关机。

6. 如果是关机,通知各个应用程序保存退出;通知各个驱动程序电源事件。有序关闭应用和驱动。

7. 调用关机前的各个ACPI定义的Event。

8. 写MADT表中的电源寄存器真正关机,进入G2/S5状态。

2。按住不动超过5秒

这是一种强制关机操作。前一种操作需要OS配合,如果系统已经死机了呢?我们总不能拔电源插头或者抠出来电池吧,这是一种保险措施了。这个操作叫做Power button override。在PWRBTN#上,硬件都有专有的Timer来计时,超过5秒还没有抬起,就触发了强制关机,硬件会直接关闭CPU电源,进入G2/S5状态。

Tips

1。如何选择按下电源键后进入关机还是睡眠?

在控制面板的电源选项里选择,如下图:

也可以用命令行powercfg。

2。如何在命令行关机

用shutdown命令:

该命令还有重启等功能,可以配合mstsc远程重启。

结论

按下电源键,比较新的电脑先会尝试安全关机。操作系统和固件在ACPI规范下共同工作,不同分工,一步步安全关闭计算机。在操作系统死机等特殊情况下,用户可以尝试按住电源键不动5秒钟以上,硬件会自动强制关闭电源。这是最后一个手段,保证用户可以在极端条件下拥有强制关闭电脑的权利,毕竟谁也不想强拔电源(有时条件也不允许)。当然这种条件下,缓存中数据是有可能丢失的。

最新的电脑,如果不改变电源策略,按下电源键就是关闭电脑,而且是安全关闭。习惯老Win95的用户完全没有必要害怕直接按下电源键。

按下电源键如何开机的呢?见另一篇文章:按下电源键后发生了什么?电脑是如何优雅地开机的?

扩展阅读

1.实际上SOC和主板上有很多power rail,关机并不是简简单单切断电源就好了,有复杂的关闭各个power rail的时序,大家可以看看芯片手册了解一下。

2. ACPI 5.0后增加了10秒的power button override,需要Windows Blue + 平台支持并且BIOS需要报告_DSM,见: https://docs.microsoft.com/en-us/windows-hardware/drivers/bringup/windows-button-array-device-specific-method---dsm-

3. 其他平台的电源状态欢迎阅读本专栏的其他文章:

老狼:按下电源键后发生了什么?电脑是如何优雅地开机的?​zhuanlan.zhihu.com

老狼:Reset重启后发生了什么?它和关机后再开机有什么区别?​zhuanlan.zhihu.com

July:一起学习电脑如何睡眠S3​zhuanlan.zhihu.com

老狼:CPU省电的秘密(一):EIST​zhuanlan.zhihu.com

老狼:CPU省电的秘密(二):CStates​zhuanlan.zhihu.com

老狼:睿频:榨干CPU所有的潜力(CPU电源管理系列番外篇)​zhuanlan.zhihu.com

欢迎大家关注本专栏和用微信扫描下方二维码加入微信公众号"UEFIBlog",在那里有最新的文章。同时欢迎大家给本专栏和公众号投稿!

用微信扫描二维码加入UEFIBlog公众号

windows8怎么关机_按下电源键后发生了什么?电脑是如何关机的?相关推荐

  1. 华为手机怎么强制关机_华为手机电源键这么神?你只拿来锁屏关机,白浪费这么强的黑科技...

    阅读本文前,请您先点击上面的蓝色字体"生活妙招噻",再点击"关注",这样您就可以继续免费收到内容了.每天都有分享.完全是免费订阅,请放心关注. 手机电源键你用来 ...

  2. 笔记本电脑如何强制关机_长按电源键强制关机会损害笔记本硬件吗?联想:不会但不建议...

    如今电脑性能和稳定性已经有了明显进步,尤其是内存的翻倍.SSD硬盘的加入,已经摆脱了动不动卡死.蓝屏的状况. 正因为此,"长按电源键强制关机"的操作已经越来越少,不过以Window ...

  3. 按下 Home 键后发生了什么事?

    后台有位小伙伴分享了一个头条的面试题:按下手机的 Home 键,有哪些动作和事件发生? 今天我们就来分析一下,本文源码基于 Android - 28 事件的分类 安卓系统中的事件,主要有以下几种: 按 ...

  4. 针对xps13无法开机,按下电源键亮几秒无反应的问题

    背景:2018.3.24晚我初学git后,关机睡觉.第二天,起来第一件事就是打开电脑继续我的学习.这个时候,TM的电脑出问题了,怎么都无法开机.我慌了,长按1分钟,30秒......都快要把电源键按烂 ...

  5. 当我们按下电源键,Android 究竟做了些什么?

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由goo发表于云+社区专栏 相信我们对Android系统都不陌生,而Android系统博大精深,被各种各样的智能设备承载的同时,我们会否 ...

  6. int 9中断例程-;在屏幕中间依次显示'a'~'z',并可以让人看清。 在显示的过程中,按下Esc键后,改变显示的颜色...

    ;在屏幕中间依次显示'a'~'z',并可以让人看清. ;在显示的过程中,按下Esc键后,改变显示的颜色 assume cs:code stack segment db 128 dup(0) stack ...

  7. textbox控件输入内容后按下Enter键后执行button1的click方法

    对于Asp.Net.在TextBox1中输入内容后,按下enter键后,执行Button1的click方法,在page_load事件增加如下代码即可实现: TextBox1.Attributes.Ad ...

  8. 键盘按下某键 停止运行java_Java:按下“Q”键后终止while循环

    我有下面这个java程序,它在没有while循环的情况下工作正常,但我想运行执行,直到用户从键盘按下Q键.Java:按下"Q"键后终止while循环 那么,什么样的条件应该放在wh ...

  9. stm32按下复位键后程序停止运行,重新上电又可以运行

    文章目录 问题描述 一.问题排查 二.问题原因 1.boot引脚没有地或者VCC 总结 问题描述 今天遇到了一个比较有意思的问题,大致就是在做蓝牙串口通信时,发现自己焊接的板子出现了按下reset键时 ...

最新文章

  1. 超详细的Python matplotlib 绘制动态图
  2. [PKUSC2018]真实排名——线段树+组合数
  3. Flink SQL Client注册JAVA UDF完整流程
  4. DCASE三次挑战赛概览
  5. linux文件编程(1)—— open、write、read、lseek、阻塞问题
  6. java十六进制大小端转换_字节顺序
  7. linux的驱动开发——简单驱动程序编写
  8. 简单的线性回归实现模型的存储和读取
  9. centos yum安装php5.5,奇妙伞-Centos下使用yum安装PHP5.5,5.6,7.0
  10. c语言中十进制与十六进制转换_小猿圈分享-java-十进制、八进制、十六进制数互相转换...
  11. 阿里巴巴数据中台实践分享
  12. 如何下载和安装iOS 15公测版【附更新建议】
  13. [0CTF 2016] piapiapia 题解
  14. easyexcel 简介、中文文档、中英对照文档 下载
  15. 功能测试(六)—— APP测试之互联网公司的必备知识
  16. 流利阅读 2019.2.23 China’s Forbidden City opens to the general public at night for the first time in 94
  17. 在线客服系统的功能介绍
  18. 8086cpu指令系统———作业3
  19. 使用安全令牌保护 RTMP 流
  20. 107-周跳探测之MW

热门文章

  1. 在Android中运用RxJava
  2. web.xml文件书写规则
  3. kindeditor编辑器
  4. 20 Tips to Simplify Your Digital and Online Life
  5. python代码实现中心化_数据预处理——标准化(附python代码)
  6. appium文件夹下无.bin文件_手把手教你Win10应用商店文件夹无权限访问怎么处理
  7. mysql主主同步稳定吗_MySQL主主同步
  8. HALCON 20.11:深度学习笔记(11)---目标检测
  9. Python+OpenCV:K-Means聚类
  10. 基于机器视觉的铁片轮廓检测