• 铂莱国际


  • 行业知识

    ACPI操作系统关机状态讲解分享

    2022-11-11 09:41:34 铂莱国际

    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、安卓 、ioses 等操作系统都习以为常,但实际上开发一个操作系统的工作量非常大。


    举例来说 ,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 ,倍感欣慰,希望国产化在相关领域不断突破 ,逐一打破外国垄断。








  • XML地图