web-dev-qa-db-ja.com

オペレーティングシステムはどのようにバッテリー残量を知ることができますか?

デフォルトのOSを削除して新しいものをインストールしたとしても、バッテリーと相互作用する可能性があります。そのためのいくつかのドライバはありますか?それはどのように機能しますか?

34
green

オペレーティングシステムは、 詳細設定および電源インタフェース (ACPI)の一部である組み込みコントローラのファームウェアとのインタフェースを取ります。

ウィキペディアはそれを次のように定義しています。

コンピュータでは、ACPI(Advanced Configuration and Power Interface)が、オペレーティングシステムがコンピュータハードウェアコンポーネントの検出と設定、未使用のコンポーネントのスリープなどによる電源管理、および状態監視の実行に使用できるオープンスタンダードを提供します。 。 1996年12月に最初にリリースされたACPIは、アドバンストパワーマネージメント(APM)、マルチプロセッサ仕様、およびプラグアンドプレイBIOS(PnP)仕様を置き換えることを目的としています[1]。 ACPIは、電力管理と構成ポリシーを決定するためにプラットフォーム固有のファームウェアに依存していた以前のBIOS中心のシステムとは対照的に、電力管理をオペレーティングシステムの制御下に置きます。

内部的には、ACPIは、カーネルが解析するシステムファームウェア(UEFI(Unified Extensible Firmware Interface)またはBIOS)を通じて提供される命令リスト(「メソッド」)を使用して、利用可能なコンポーネントとその機能をオペレーティングシステムカーネルにアドバタイズします。その後、ACPIは組み込みの最小仮想マシンを使用して、目的の操作(ハードウェアコンポーネントの初期化など)を実行します。

その答えは、回路またはマイクロチップがマザーボードに組み込まれているということです。それ自体には、コンピューターファームウェア(UEFIまたはBIOS)を介していくつかのサービスを利用可能にするマイクロオペレーティングシステムが含まれています。それは電力と装置管理の多くの面を制御します。

コンピュータのオペレーティングシステムには、ACPIとのインタフェース専用のシステムドライバがあります。 ACPIが起動されると、電源管理とデバイス構成のすべての側面を排他的に制御します。

ACPIは、マザーボードに付属しており、管理下にないことを除けば、さまざまな面で、オペレーティングシステムの背後にあるオペレーティングシステムです。それをトロイの木馬にたとえ、それをセキュリティ上のリスクと呼んでいるような声がありました。無効になっているかもしれませんが、それなしでは起動できないコンピュータもあります。その場合は、高度な電源管理も同様に無効になります。

Windowsでの使用に関する詳細は、記事 バッテリーおよび電源サブシステムのハードウェア設計 を参照してください。

33
harrymc

他の答えを補完するものとして、コンピュータ上で実行されているソフトウェアはどのように電池残量を知ることができますか?バッテリーをたずねます。

ほとんどのノートパソコンのバッテリーは スマートバッテリー で、独自のマイクロコントローラまたは「残量計」ASICがあり、ホストはこれをSMBusで通信できます。人々はいくつかの例をリバースエンジニアリングしました

SMBusは、管理者が直接問い合わせることを可能にする方法で、オペレーティングシステムに直接公開される場合とされない場合があります。ハードウェアについて調べるためにバスを調べることができるOpenHardwareMonitorまたはSpeccyまたはlmセンサーのようなさまざまなプログラムがあります。

57
pjc50

より一般的には、すべてのコンピュータチップには、デザイナーやプログラマーに彼らが何をするのか、そしてそれをどのように設定するのかを伝える文書があります。これらのチップへの低レベルアクセスは、チップのレジスタに直接読み書きすることによって行うことができます。

より複雑なチップには「ドライバ」と呼ばれるソフトウェアプログラムが付属している場合があります。これを使うと、オペレーティングシステムや他のアプリケーションにも高レベルでアクセスできます。例えばあなたのスマートフォンは、電話のハードウェア、GPS、加速度計、バッテリー、カメラなどの多くにアクセスすることを可能にするアプリケーションプログラミングインターフェース(API)を持っています。オペレーティングシステムと同じように(OSは通常「ユーザー空間」で実行されているプログラムよりも広範なアクセス権を持っていますが)。

これらのインタフェースは非常によく定義されているので、ハードウェアチップに関数呼び出しをすると、要求された情報で応答します。バッテリコントローラチップは、この一般的なインフラストラクチャのほんの一例です。

オペレーティングシステムのコードを書く人は誰でもチップのドキュメントを入手し、チップと通信してそれが望む情報を取り出すためのソフトウェアを書く。

そのため、次回外付けハードドライブ、USBメモリ、その他のドライバ用の「ドライバ」を(または自動的に)ロードするときには、「内部的に」どうなるかについてもう少し理解できます。

2
CramerTV