How does OS shut down your PC?

J## 处理器:Everything is a State Machine

CPU[State]
程序是在状态中循环往复

return指令的行为:
从刚刚的状态出来,然后改掉

所以:你写的程序是无法退出的。你写的程序是无法退出的。
了解windows关机过程 - 久月 - 博客园 (cnblogs.com)
Linux系统自带poweroff命令,快速关闭电脑 (linux系统poweroff) – 港服(Server.HK)
纵观操作系统历史,探索shutdown、poweroff、halt与reboot的前世今生 - 知乎 (zhihu.com)

[源码级解析] 漫游源码、纵观Linux&Unix历史,探索shutdown、poweroff、halt与reboot的前世今生 – Untitled Spot_未命名小站
UEFI/BIOS——ACPI 相关概念整理 - 知乎 (zhihu.com)

也就是说,使用shutdown所执行的并非关机(与BSD/现代操作系统均不同),而是挂断所有远程终端(因为当时的远程连接依靠的是电话线,可以参考我写过的《在Linux中建立后台任务的若干种姿势》),然后进入单用户模式(即禁止其他用户连接)。因为此时已经没有任何用户操作计算机,管理员就可以自行关闭设备(如磁盘/磁带机),清除数据(临时数据),同步磁盘(在System V中是自动的),然后手动关闭电源。init s命令的用途同样可以在这个Patch的描述中看到。

ACPI诞生

在ACPI诞生前,高级电源管理(APM, Advanced Power Management)将电源管理几乎完全交给BIOS,呆板而限制很多,这让微软十分不爽,它希望在电源管理和硬件配置上能有更多的自主权,这也是合理的,谁比操作系统更懂现在用户在干什么呢?

1997年由英特尔、微软、东芝公司共同提出、制定了ACPI 1.0规范。ACPI,顾名思义,就是配置硬件和管理电源的规范。2000年8月康柏和凤凰科技加入,推出 ACPI 2.0规格。2004年9月惠普取代康柏,推出 ACPI 3.0规格。2009年6月16日則推出 ACPI 4.0规格。2011年11月23日推出ACPI 5.0规格。由于ACPI技术正被多个操作系统和处理器架构采用,该规格的管理模式需要与时俱进。2013年10月,ACPI的推广者们一致同意将ACPI的属有归到UEFI论坛。从那以后新的ACPI规格将由UEFI论坛制定。最新的规范是ACPI 6.1,大家可以在Welcome to Unified Extensible Firmware Interface Forum上下载到最新的版本。

但随着ACPI的出现,操作系统得以通过BIOS对电源进行控制(之前只能在BIOS菜单中设置或者完全不能设置)。ACPI提供了电池信息、低功耗睡眠、风扇管理、温度管理等先进功能,但最主要的是终于支持电源管理了!

可以看出它并不包含古老的PIC,CMOS,PIT等等规范,这些我们称之为Legacy支持。ACPI可以实现的功能包括:

1.系统电源管理(System power management)

2.设备电源管理(Device power management)

3. 处理器电源管理(Processor power management)

4.设备和处理器性能管理(Device and processor performance management)

5.配置/即插即用(Configuration/Plug and Play)

6.系统事件(System Event)

7.电池管理(Battery management)

8.温度管理(Thermal management)

9.嵌入式控制器(Embedded Controller)

10.SMBus控制器(SMBus Controller)