連載
» 2003年02月22日 00時00分 公開

全貌を現したLinuxカーネル2.6(第2章):サポート・アーキテクチャ/デバイスの拡充 (2/3)

[加藤丈治,富士通]

電源管理系の強化

ACPIによる電源管理

 カーネル2.6では、ACPI(Advanced Configuration and Power Interface)に基づく電源管理がデフォルトとなります。ACPIはIntelが提唱するOSPM(OS-directed configuration and Power Management)に準拠した電源管理機構であり、電源状態の管理(電源状態の変化の検出など)をOSで行うことを前堤としています。

 ACPI/OSPMに基づく電源管理は、以下の3種のソフトウェアが互いに連携し合って動作します。

●電源管理ポリシー設定ツール

 現在、ospmd_guiという電源管理ポリシー設定ツールが開発されています。ospmd_guiを用いることで、Windowsなどと同様な電源管理ポリシーの設定が行えるようになります。具体的には、次のような設定が可能です。

  • 電源ボタン押下時の動作設定(サスペンド/シャットダウンなどから選択)
  • 周辺機器への電源供給停止までの継続アイドル時間数

●acpid/ospmd

 カーネル内部で保持している現在の電源状態の変化を監視し、変化に応じて指定されたコマンドを実行します。具体的には、ACPI関連の/procファイルシステムを定期的に監視することで電源状態の変化を検出し、指定されたコマンドを実行するようになっています。

●カーネル/デバイスドライバ

 カーネルはシステムの電源状態を保持し、/procファイルシステムを通してapcid/ospmdに通知します。電源状態の変化の検出は、電源管理対応デバイスドライバが検出した電源ボタンの押下などのイベントをカーネル内のACPIサブシステムに通知することで行われます。

 これらの関係を図3に示します。

図3 ACPI/OSPMによる電源管理 図3 ACPI/OSPMによる電源管理

 例えば、電源ボタン押下に伴うシステムのシャットダウンは、以下のような順序で実行されます(図4)。

図4 電源ボタン押下に伴うシャットダウン処理 図4 電源ボタン押下に伴うシャットダウン処理
(1)ユーザーがospmd_guiを通して電源ボタン押下時の
   動作をシャットダウンに設定
(2)電源ボタンを押下
(3)電源ボタン押下をデバイスドライバが検出
(4)ACPIサブシステムがシステムの電源状態を更新
(5)ospmdがシステムの電源状態の変化を検出
(6)ospmdがshutdownコマンドを実行

ソフトウェアサスペンド機能

 ソフトウェアサスペンドとは、システムのサスペンド/レジュームをソフトウェアによって実現する機能です。

ソフトウェアサスペンドの動作(詳しくは下の図5参照) ソフトウェアサスペンドの動作(詳しくは下の図5参照)

 ソフトウェアサスペンドは、実行時のメモリイメージをディスク(swapパーティション)に退避し、レジューム(再起動)時に復元することで実現されています(図5)。

図5 ソフトウェアサスペンド機能 図5 ソフトウェアサスペンド機能

 図5に示すように、ソフトウェアサスペンド機能によるシステムのサスペンド処理は、swsuspまたはshutdownコマンド(-zオプションを指定)を発行することで行われます。

 また、システム状態の復元は再起動時にカーネルが行います()。

注:サスペンド時に退避したメモリ内容を格納したデバイスを、カーネルの起動オプションで指定する必要があります。


 動作時のオーバーヘッドを考慮に入れると、ACPIやAPMの代わりというよりもRAS機能の1つとして利用する(正常動作時の状態を保存しておき、異常発生時に復元するなど)ことが考えられます。

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

8月8日10時30分〜16時30分の間、システムメンテナンスのため記事の一部表示や資料のダウンロードができなくなります。ご理解のほどよろしくお願いいたします。

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。