ACPI操作系统关机状态讲解分享
ACPI操作系统关机状态讲解分享
首先我们来看,操作系统是通过什么来区分关机、重启以及关机后再开机的,这里就要引入一个概念 —— 高级配置电源管理( Advanced Configuration and Power
Interface),简称 ACPI。
ACPI 是 1997 年由多家公司共同提出、制定的操作系统电源管理、硬件配置接口,是一种开放标准。
ACPI 整体框架图
框架还是比较复杂,不过我们不是去深挖 ACPI 的,而是看 ACPI 是如何决定计算机的重启等操作的。
ACPI 规范定义了一台兼容 ACPI 的计算机系统可以有以下七个状态(所谓的全局状态):
G0(S0):正常工作状态。计算机的正常工作状态-操作系统和应用程序都在运行。
G1:睡眠。这个状态还可以再细分为以下几种:
(1)S0ix:Modern Standby。在这种睡眠状态下,计算机还能联网,音乐还可以播放,其余大部分应用处于暂停 的状态,轻按任意键即可登录账户并进入工作状态。
(2)S1:比较耗电的睡眠模式。CPU 的所有寄存器被刷新,并且停止执行指令,但 CPU 和内存的电源会被维持。(3)S2:一种比 S1 更深的睡眠状态,会停止 CPU 的电源供应,这种模式通常不被采用。
(4)S3:称为 Suspend to RAM,简称 STR。这个模式就是计算机上常见的“睡眠”
(5)S4:称为 Suspend to Disk,也是常说的“休眠”,其和 S3 的差别在于,S4 消耗的时间更长,而且如果此时系统断电,S3 状态下没有保存的数据会丢失,而 S4 状态下不会影响。
G2(S5):称为 Soft Off。此状态和下面所所述的 G3 (S6) 类似,不过在这个状态下,系统仍可以被部分设备(如键盘等)唤醒。
G3(S6):称为 Mechanical Off。此状态下所有部件断电, 需要再次按下电源键才能唤醒。
虽然看起来一直没有提到重启,但从 ACPI 规范下计算机的几种状态,却可以看出其不同的运行模式和唤醒模式, 这和马上要讲到的重启都是有关联的。
其实重启也分很多个种类,而我们平时最常接触到的重启,叫 hard reset,其通过信号通知所有芯片、外围网卡等等一起进行 reset 操作,使系统大多数寄存器重置到缺省值(默认值),而后 CPU 从 reset vector 开始执行程序。
在这个过程中系统不会完全断电,不会进入 G3 (S6) 的状态,CPU 在其它组件的协助下执行 reset 的相关程序。
而关机再开机的过程中,系统会完全切断电源,即进入G3 (S6) 的状态,让所有寄存器均恢复到初始状态,整个过程需要执行的程序会更多,速度上也会更慢一些。
那么重启和关机再开机该怎么选择?
我们选择重启计算机,可能是计算机进行了软件更新或者系统更新,亦或是系统的某个部件出了问题。(比如某些人员经常下班后不关机电脑长时间运行,不仅费电, 还会导致一些莫名其妙的问题,无无法连接网络、蓝牙等部件异常等)
一般情况下,如果是系统希望我们进行重启,那就按照要求进行重启就行。因为在软件或系统进行更新,计算机需要重新加载配置文件,这时候重启会显得更加的有针对性并且效率较高。
而当计算机的部分功能出现障碍时,由于重启无法保证 所有寄存器都恢复到默认状态,所以就会导致重启也可能解 决不了问题,所以这时候就需要通过关机的方式来尝试解决。
以下杂谈
操作系统按应用领域可以划分为四种:桌面操作系统、 服务器操作系统、移动操作系统和其他操作系统(云、嵌入式、物联网操作系统等)。
操作系统是十分复杂、庞大的,一个小小的关机操作背后都隐藏有如此丰富的知识点。操作系统有多复杂呢,曾经有个比喻:开发 CPU 就好比攀登珠穆朗玛峰,开发操作系统就好比探索马里亚纳海沟。都会面临非常大的困难,具体有多大困难呢,举个例子:
微软开发 Vista 操作系统时用掉的研发经费在 200 亿美金以上,开发 Windows XP 时集中了 5000 多名的程序员来编写代码。
如今大家对 Windows、安卓、iOS 等操作系统都习以为常,但实际上开发一个操作系统的工作量非常大。
举例来说,Windows XP 有代码 4000 万行,Windows 7 有代码 4000 万行,3.6 版本的 Linux 内核代码就有 1590 万行,而 Linux 的发行版 Debian 系统代码行数达 6500 万行,而且这些代码还都是经过软件厂商反复精简的结果。如果对几千万代码行数的工作量没有概念,可以参照一个案例:“WPS 代码大约在百万行这个级别,而雷军执掌的金山软件重写WPS 用了 3 年时间。”
而现阶段,我国市场上的国产操作系统达 10 种以上,其中主流的包括 UOS(统信软件)、麒麟 OS、普华软件、中兴新支点、凝思、中科方德、华为欧拉 OpenEuler 等,但它们大多是以 Linux 为基础的二次开发。且相比之下,国内做操作系统的公司的开发人员,大一些的有几百人,小的甚至不足百人。前一段看新闻说俄罗斯已经无法下载 windows10 和windows11 了,居安思危我们也要加快脚步。(人家说的是正版,盗版另说,不过这涉及另外一个问题了:软件正版化) 幸好国人坚持不懈,一点点在相关领域不断取得成就。这几天看到有国产显卡发布的消息,预计 11 月 11 日上市,是国内率先支持 Windows 环境和 DirectX 图形接口的 GPU,倍感欣慰,希望国产化在相关领域不断突破,逐一打破外国垄断。