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


34

デフォルトのOSを削除して新しいOSをインストールしても、バッテリーとやり取りできます。そのためのドライバーはありますか?どのように機能しますか?

回答:


33

オペレーティングシステムは、高度な構成および電源インターフェイス(ACPI)の一部である組み込みコントローラーのファームウェアとインターフェイスします 。

ウィキペディアでは次のように定義しています:

コンピューターでは、Advanced Configuration and Power Interface(ACPI)は、オペレーティングシステムがコンピューターハードウェアコンポーネントの検出と構成、(たとえば)未使用のコンポーネントをスリープ状態にすることによる電力管理、ステータスモニタリングの実行に使用できるオープンスタンダードを提供します。1996年12月に最初にリリースされたACPIは、Advanced Power Management(APM)、MultiProcessor Specification、およびPlug and Play BIOS(PnP)Specificationの置き換えを目指しています。[1] プラットフォーム固有のファームウェアに依存して電力管理および構成ポリシーを決定していた以前のBIOS中心のシステムとは対照的に、ACPIはオペレーティングシステムの制御下で電力管理を行います。

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

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

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

多くの点で、ACPIはマザーボードに付属しており、ユーザーの制御下にないことを除いて、オペレーティングシステムの背後にあるオペレーティングシステムです。トロイの木馬に例え、セキュリティリスクと呼ぶ声があります。無効になっている場合もありますが、一部のコンピューターはそれなしでは起動できず、高度な電源管理も無効になります。

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


1
私は間違っているかもしれませんが、最後の段落の説明がACPIとSMMおよび/またはIntelのME / AMTを完全に混同しているように聞こえます。ACPIは主に静的なデータ構造であり、OS自体が解釈しなければならない少量のバイトコードがありますが、MEは実際のシステムです。
悲しみ

1
@grawity:そうは思わない。ウィキペディアのACPI記事で同様の議論を見つけることができます。
harrymc

1
彼はちょうど塊ということは、私には思える-私は1つのシャトルワースの1つのブログ記事から、私は少しも確信していない両方のページを読んだ後、いくつかの引用符を超えてそこに多くの議論が表示されていないすべてのものの下でシステムが付属しています「ACPI」の名前、それはBIOSでもIntel MEでも何でも。私の知る限り、最新のシステムに付属するすべてのゴミのうち、ACPIはおそらく単独で実行されず、OSの下では実行されない唯一の部分です。
悲しみ

2
@grawity ACPIには、ファームウェアレベルのコード実行インターフェイスも含まれています。これにより、ACPIに関連する多くのファームウェア相互作用が実際に発生します。特定のシステムでは、これは実際のコード実行にSMMを使用しますが、ありがたいことにあまり一般的ではありません。
オースティンヘメルガーン

@grawity:はい、ACPIはコントローラーだけであるという意味では何もしません。UEFI / BIOSも同様にデバイスを管理し、ハードウェア階層の上位に配置されます。そのうちの1つがACPIです。機能は各レベルで外部化され、各レベルでますます一般化されています。オペレーティングシステムなどのソフトウェアは、一般化のレベルとほぼ同じアプローチで設計されています。これは、人間が複雑な問題を攻撃する方法です。
harrymc

57

もう1つの答えを補完するものとして、コンピューターで実行されているソフトウェアは、バッテリーレベルをどのように認識していますか?バッテリーを要求します。

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

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


一般的な基本概念を理解するための素晴らしい説明!「質問」という言葉の前後に引用符を付けますが。
アルビン

私の答えと矛盾はありません:SMBusは、それが存在するモバイルコンピューターのACPIによって管理されるコンポーネントです。
harrymc

1
このスマートバッテリーインターフェイスは、USBなどのより標準的な手段によって公開することもできます。たとえば、多くのUPSにはUSBポートがあり、コンピューターに接続すると、コンピューターに残っている電力を通知し、ラップトップのように表示します。
-TheHansinator

2
@TheHansinator私は、SMBus スマートバッテリーと通信するための標準的な手段であると主張します。ほとんどすべての電話とラップトップがそれを使用します。これは、外部UPSデバイスを使用するよりもはるかに多くのシステムです。
オースティンヘメルガルン

@AustinHemmelgarnはい。システムが多かれ少なかれ組み込みバッテリー以外のデバイスが使用できるOS抽象化であるという点で、より良い言葉は「従来の」ものかもしれません。
TheHansinator

2

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

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

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

オペレーティングシステムのコードを書く人は誰でもチップのドキュメントを入手し、チップと通信して必要な情報を取得するためのソフトウェアを書きます。

そのため、次に外付けハードドライブ、USBサムドライブなどの「ドライバー」を読み込む(または自動的に実行される)とき、「フードの下で」発生する方法についてもう少し理解できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.