操作系统如何知道电池电量?


34

即使我们删除默认操作系统并安装新的操作系统,它也可以与电池交互。有一些驱动程序吗?它是如何工作的?

Answers:


33

操作系统与嵌入式控制器的固件接口,该固件是 高级配置和电源接口(ACPI)的一部分。

维基百科将其定义为:

在计算机中,高级配置和电源接口(ACPI)提供了开放标准,操作系统可使用该标准来发现和配置计算机硬件组件,通过(例如)使未使用的组件进入睡眠状态来执行电源管理以及执行状态监视。ACPI于1996年12月首次发布,旨在取代高级电源管理(APM),多处理器规范和即插即用BIOS(PnP)规范。[1] ACPI将电源管理置于操作系统的控制之下,这与以前的以BIOS为中心的系统不同,后者依靠特定于平台的固件来确定电源管理和配置策略。

在内部,ACPI使用通过内核解析的系统固件(统一可扩展固件接口(UEFI)或BIOS)提供的指令列表(“方法”)将可用组件及其功能通告给操作系统内核。然后,ACPI使用嵌入式最小虚拟机执行所需的操作(例如,硬件组件的初始化)。

答案是,电路或微芯片嵌入主板中,主板本身包含一个微操作系统,该操作系统通过计算机固件UEFI或BIOS提供某些服务。它控制着电源和设备管理的许多方面。

该计算机操作系统具有专用于与ACPI接口的系统驱动程序。激活ACPI后,它将完全控制电源管理和设备配置的所有方面。

在许多方面,ACPI是操作系统背后的操作系统,除了它与主板一起提供且不受您的控制。有声音将其比作特洛伊木马,并称其为安全隐患。可能会禁用它,但是某些计算机可能会在没有它的情况下启动,因此无论如何也将禁用高级电源管理。

有关在Windows中使用它的更多信息,请参阅文章 电池和电源子系统硬件设计


1
我可能错了,但听起来上一段的描述完全使ACPI与SMM和/或与Intel的ME / AMT混淆了。ACPI主要是静态数据结构,带有少量字节码,操作系统本身必须解释,而ME是实际系统。
grawity

1
@grawity:别这样。您可能会在Wikipedia ACPI文章中找到类似的讨论。
哈里麦克

1
除了Shuttleworth的一篇博客文章中的几句引言,我看不出有太多讨论。阅读这两页后,我丝毫不相信–在我看来,他只是将系统附带的所有内容混为一谈。 “ ACPI”名称,可以是BIOS或Intel ME或其他名称。据我所知,在现代系统附带的所有垃圾中,ACPI可能是唯一不能独立运行的部分,当然也不能 OS 运行。
grawity

2
@grawity ACPI也包含一个固件级别代码执行接口,这就是许多涉及它的固件交互实际发生的方式。在某些系统上,这甚至使用SMM进行实际的代码执行,尽管幸运的是,这种情况越来越少见。
奥斯汀·海默加恩

@grawity:是的,ACPI在它只是一个控制器的意义上什么也没做。UEFI / BIOS类似地管理设备,并且位于硬件层次结构中的较高位置,其中之一是ACPI。在每个级别上都对功能进行了外部化,每个级别上的功能也越来越泛化。诸如操作系统之类的软件是以与通用化级别几乎相同的方法设计的,这就是人类如何攻击复杂问题的方法。
哈里姆克(Harrymc)

57

作为对其他答案的补充,计算机上运行的软件如何知道电池电量是多少?它询问电池。

大多数笔记本电池是具有自己的微控制器或“电量计” ASIC的智能电池,主机可以通过SMBus与之通信。人们反向工程了一些例子。

SMBus可能会或可能不会直接以允许管理员直接查询的方式公开给操作系统。有各种程序,例如OpenHardwareMonitor或Speccy或lm传感器,可以询问总线以了解有关硬件的信息。


很好的解释,可以大致理解基本概念!尽管我会在“问号”一词旁加上引号。
Albin

我的回答没有冲突:SMBus是由ACPI管理的用于存在它的移动计算机的组件。
哈里麦克

1
该智能电池接口也可以通过更多标准方式(例如USB)公开。例如,许多UPS上都有一个USB端口,当插入计算机时,它会告诉计算机剩余的电量并像笔记本电脑一样显示。
TheHansinator

2
@TheHansinator我想说SMBus 与智能电池通信的标准方法。几乎所有的手机和笔记本电脑都使用它,这比使用外部UPS设备的系统要多得多。
奥斯汀·海默加恩

@AustinHemmelgarn正确。也许更好的说法是“常规的”,因为该系统或多或少是除嵌入式电池之外的设备都可以使用的OS抽象。
TheHansinator

2

一般而言,所有计算机芯片都有文档,可以告诉设计者和程序员他们做什么,以及如何配置他们。可以通过直接读写芯片的寄存器来低级别访问这些芯片。

更复杂的芯片可以带有一个称为“驱动程序”的软件程序,该程序可以高层访问操作系统或其他应用程序。例如,您的智能手机具有一个应用程序编程接口(API),该接口可以访问手机的许多硬件,GPS,加速度计,电池,相机等。编写“ App”时,您可以使用API​​来访问这些硬件设备就像操作系统一样(尽管操作系统通常比在“用户空间”中运行的程序具有更广泛的访问权限。)

这些接口的定义非常明确,因此当您对硬件芯片进行功能调用时,它将以请求的信息进行响应。电池控制器芯片只是这种通用基础架构的一个示例。

谁编写操作系统代码的人都将获取芯片的文档,并编写软件以与芯片进行通信并检索所需的信息。

因此,下一次为外部硬盘驱动器,USB拇指驱动器或其他设备加载“驱动程序”(或自动完成)时,您将了解有关“幕后”情况的更多信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.