(57)【要約】【課題】特定の機能を維持しながらノートＰＣを小さな消費電力で動作させる。【解決手段】ノートＰＣはＨＤＤを備えており、通常モードと新たな動作モードであるドーズ・モードで動作することが可能である。ドーズ・モードでは、プロセスを実行して特定の機能を維持しながら通常モードより消費電力の少ない状態で動作することができる。ドーズ・モードでは、ＬＣＤ筐体を閉じたときに移行イベントを生成し、そのときに存在していたプロセスを強制サスペンドしたり、ＨＤＤに対してＩ／Ｏリクエストをしたプロセスに対するＩ／Ｏ処理完了通知を保留したりする。その結果、チャット・プログラムのセッションを維持しながらＨＤＤを停止して小さな消費電力でノートＰＣを動作させることができる。【選択図】図４
2011150610.tif 000002
【特許請求の範囲】
【請求項１】
ディスク・ドライブを備え通常モードで動作しているコンピュータを、プロセスを実行して特定の機能を実現しながら前記通常モードより消費電力の少ない状態で動作するドーズ・モードに移行させるために、前記携帯式コンピュータに、
前記通常モードから前記ドーズ・モードへ移行するための移行イベントを検出するステップと、
前記移行イベントに応答して前記移行イベントを検出したときに存在していたプロセスの中から選択した前記特定の機能の実現に必要がないプロセスを強制サスペンドさせるステップと、
前記移行イベントに応答して前記強制サスペンドをさせないプロセスの中で前記ディスク・ドライブに対してＩ／Ｏリクエストを行ったプロセスに対するＩ／Ｏ処理完了通知を前記ドーズ・モードが終了するまで保留するステップと
を有する処理を実行させるコンピュータ・プログラム。
【請求項２】
前記Ｉ／Ｏ処理完了通知が保留されたプロセスが、前記強制サスペンドさせようとすると対抗措置をとるプログラムが生成したプロセスを含む請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記特定の機能を実現するプロセスが、少なくとも前記ドーズ・モードの間は前記ディスク・ドライブに対してＩ／Ｏリクエストをしない請求項１または請求項２に記載のコンピュータ・プログラム。
【請求項４】
前記コンピュータが無線モジュールを搭載しており、前記特定の機能を実現するプロセスが前記ドーズ・モードの間に前記無線モジュールとアクセス・ポイントとの接続を維持するプロセスを含む請求項３に記載のコンピュータ・プログラム。
【請求項５】
前記特定の機能を実現するプロセスがチャット・プログラムにより形成されたセッションを維持するプロセスを含む請求項３または請求項４に記載のコンピュータ・プログラム。
【請求項６】
前記特定の機能を実現するプロセスが前記コンピュータを前記ドーズ・モードから前記通常モードにレジュームさせる処理を実行するプロセスを含む請求項３から請求項５のいずれかに記載のコンピュータ・プログラム。
【請求項７】
前記特定の機能を実現するプロセスが前記ドーズ・モードからサスペンドまたはハイバネーションに移行させる処理をするプロセスを含む請求項３から請求項６のいずれかに記載のコンピュータ・プログラム。
【請求項８】
前記特定の機能を実現するプロセスが、物理メモリからページが前記ディスク・ドライブにスワップ・アウトされないように仮想メモリに対して自らに割り当てられたページを定期的に参照する請求項１から請求項７のいずれかに記載のコンピュータ・プログラム。
【請求項９】
前記強制サスペンドさせるプロセスが、前記通常モードでログインしているユーザのプロセッサ特権レベルと同一の特権レベルを保有しているプロセスを含む請求項１から請求項８のいずれかに記載のコンピュータ・プログラム。
【請求項１０】
前記強制サスペンドさせるプロセスが、所定のプログラムの実行時刻を登録したタスク・スケジューラが生成したプロセスを含む請求項１から請求項９のいずれかに記載のコンピュータ・プログラム。
【請求項１１】
前記処理が、
前記移行イベントが検出されてから所定の時間が経過したときに生成されたサスペンド・イベントを検出するステップと、
前記サスペンド・イベントに応じて前記強制サスペンドに移行させたプロセスをレジュームさせるステップと、
前記サスペンド・イベントに応じて前記Ｉ／Ｏリクエストの保留を解除するステップと、
前記レジュームさせるステップと前記解除するステップが終了してから前記コンピュータをサスペンドするステップと
を有する請求項１から請求項１０のいずれかに記載のコンピュータ・プログラム。
【請求項１２】
前記移行イベントに応答して前記ディスク・ドライブに供給する電力を停止するステップを有する請求項１から請求項１１のいずれかに記載のコンピュータ・プログラム。
【請求項１３】
前記移行イベントに応答して筐体内部の熱を放出する放熱ファンに供給する電力を停止するステップを有する請求項１から請求項１２のいずれかに記載のコンピュータ・プログラム。
【請求項１４】
プロセッサとディスク・ドライブと無線モジュールを備える携帯式コンピュータであって、
プロセスを実行して特定のプロセスを実行しながら通常状態より消費電力の少ない動作状態に移行させるための移行イベントを検出するイベント検出部と、
前記移行イベントに応答して前記移行イベントを検出したときに存在していたプロセスの中から選択した所定のプロセスを強制サスペンドする強制サスペンド部
前記移行イベントに応答して前記移行イベントを検出したときに存在していたプロセスの中から選択した所定のプロセスが前記ディスク・ドライブに対して行ったＩ／Ｏリクエストに対するＩ／Ｏ処理完了通知を前記ドーズ・モードが終了するまで保留するリクエスト制御部と
を有する携帯式コンピュータ。
【請求項１５】
前記ディスク・ドライブにＩ／Ｏリクエストをしないで無線ネットワークを通じて形成したセッションを維持する機能を前記携帯式コンピュータに実現させるチャット・プログラムを有する請求項１４に記載の携帯式コンピュータ。
【請求項１６】
前記検出部は前記消費電力の少ない状態から前記通常状態にレジュームさせるための復帰イベントを検出し、前記復帰イベントに応答して前記強制サスペンド部は前記強制サスペンドしたプロセスをレジュームさせ、さらに前記リクエスト制御部は前記保留したＩ／Ｏ処理完了通知を解放する請求項１４または請求項１５に記載の携帯式コンピュータ。
【請求項１７】
ディスク・ドライブを備え通常モードで動作しているコンピュータが、プロセスを実行して特定の機能を維持しながら前記通常状態より消費電力の少ない状態で動作する方法であって、
前記消費電力の少ない状態へ移行するための移行イベントを検出するステップと、
前記移行イベントに応答して前記コンピュータがいずれかのプロセスの実行を停止するステップと、
前記移行イベントに応答して実行を停止ないプロセスが前記ディスク・ドライブに対して行ったＩ／Ｏリクエストを前記コンピュータが前記消費電力の少ない状態での動作が終了するまで保留するステップと
を有する方法。
【請求項１８】
前記通常状態にレジュームするための復帰イベントを検出するステップと、
前記復帰イベントに応答して前記実行を停止したプロセスを前記コンピュータが実行可能な状態に遷移させるステップと、
前記復帰イベントに応答して前記保留したＩ／Ｏリクエストを前記コンピュータが解放するステップと
を有する請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータの消費電力を低減する技術に関し、さらに詳細には特定の機能を維持しながらコンピュータの消費電力を低減する技術に関する。
【背景技術】
【０００２】
ＡＣＰＩ（Advanced Configuration and Power Interface）の規格にはコンピュータの電力状態に関連して、Ｓ０ステートからＳ５ステートまでの６つの動作状態（パワー・ステート）が定義されている。Ｓ０ステートはコンピュータが動作している状態であり、プロセッサ（ＣＰＵ）およびその他のデバイスは、アクセスの頻度や負荷の状態などに応じてそれぞれに対して設定されたアルゴリズムに基づいて自動的に節電モードに遷移して動作することができる。Ｓ１ステートからＳ４ステートは、スリーピング・ステートといわれＣＰＵは命令の実行を停止する。
【０００３】
Ｓ１ステートからＳ４ステートまで順番に消費電力が低下する割合が大きくなり、また各ステートからＳ０ステートにレジュームするまでの時間が長くなる。Ｓ３ステートはサスペンドまたはスタンバイといわれＳ０ステートのときのプロセッサのコンテキストはメイン・メモリに記憶されメイン・メモリの電力が確保される。Ｓ４ステートはハイバネーションといわれプロセッサのコンテキストとメイン・メモリの記憶内容は不揮発性の記録媒体に記憶される。Ｓ５ステートはソフト・オフの状態であり消費電力はＳ４ステートと同じである。
【０００４】
また、ノートブック型パーソナル・コンピュータ（以下、ノートＰＣという。）では、液晶ディスプレイ（ＬＣＤ）を保持するＬＣＤ筐体が閉じられたときにＬＣＤの動作だけを停止してシステムはＳ０ステートを維持するといったリッド・クローズ・ノーアクションという動作モードを採用することがある。リッド・クローズ・ノーアクションはＳ０ステートに短時間でレジュームできるので、ノートＰＣを短時間の間使用しないようなときの動作モードに適している。
【０００５】
特許文献１は、ノートＰＣの移動時の障害を防ぐ技術を開示する。同文献の発明ではノートＰＣをオフィスと会議室との間といったような短時間で移動させるときの落下に対する安全確保と復帰時間の短縮を図るために新たに移動モードという動作モードを定義している。同文献には蓋が閉じられてノートＰＣが移動モードに入ったときには、ＣＰＵの動作を継続させ、ハードディスク・ドライブ（ＨＤＤ）への読み出し書き込み要求はキューに保管してＨＤＤのヘッドをディスク上から退避させることが記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−３５２８９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところでノートＰＣには、無線ネットワークを利用してリアルタイムに会話を行うチャット用のアプリケーション・プログラム（以下、アプリケーションという。）が導入されることがある。チャット・アプリケーションには、会話の相手のログイン状況を画面に表示する機能が備わっており、ノートＰＣを移動している間に一旦形成したセッションが切断されると相手に自分がログアウトした状態を示すことになる。この場合、移動のために短時間だけ応答できない状態であるにもかかわらず、セッションが切断されたために相手は自分が長時間応答できない状態になっていると判断してしまい、迅速な情報交換が阻害されることになる。移動中にもチャット・アプリケーションのセッションを維持しておくためには、ＣＰＵ、メイン・メモリ、および無線モジュールなどのデバイスに電力を供給しかつ関連するプログラムを実行できるようにしておく必要がある。
【０００８】
他方では、移動中のノートＰＣではユーザによる作業が行われないので、その消費電力はできるだけ小さいことが望ましい。ＡＣＰＩのＳ１ステートからＳ４ステートでは、ＣＰＵが命令を実行しないので無線ネットワークを維持したりチャット・アプリケーションのセッションを維持したりしておくことはできない。また、Ｓ３ステートではレジュームするまでの時間が長くなる場合があるので一時的な節電モードとしては利便性に欠ける面がある。
【０００９】
また、チャット・アプリケーションや無線ネットワークのような特定の機能を維持するためにはオペレーティング・システム（ＯＳ）も実行可能な状態にしておく必要がある。しかし、Ｗｉｎｄｏｗｓ（登録商標）などのＯＳには、アプリケーションを自動的に実行するためのタスク・スケジューラが組み込まれており、所定の予約された時間に多数のプロセスが実行されることがある。したがって、特定の機能を維持する際には、必然的にそのようなプロセスが動作してプロセッサの使用率を上昇させたり、ＨＤＤのような消費電力の大きなデバイスを駆動したりして十分な消費電力の低減が果たせなくなる可能性を巻き込むことになる。さらに、アプリケーションの中には当該プロセスの実行を停止すると警告を出すウイルス対策プログラムのようなものがあるため、そのようなアプリケーションを他のプログラムが強制的に停止することは困難である。しかも、ウイルス対策プログラムはＨＤＤに頻繁にアクセスするため、そのアクセスを停止しないと十分な節電を図ることができない。
【００１０】
特許文献１の発明の移動モードでは、移動のためにノートＰＣを短時間使用しないときにもネットワークの接続が維持されかつ通常モードへの復帰時間はＳ３ステートよりも早い。そしてＨＤＤへのアクセス動作が保留されるためＨＤＤの消費電力を低減することもできる。しかし、ＨＤＤへアクセスしないプログラムは通常どおり動作を続けるため、ＣＰＵの使用率はそれらのプログラムの動作によって上昇する。ＣＰＵはコンピュータのデバイスの中で最大の電力を消費する。したがって、特許文献１の移動モードでは、移動中におけるノートＰＣの消費電力の低減という視点で十分とはいえない。また、リッド・クローズ・ノーアクションの動作モードも同様に移動中の消費電力が大きいため十分とはいえない。よって、短時間だけノートＰＣを使用しない状態において、チャット・アプリケーションや無線ネットワークのような特定の機能を維持し、かつ維持する必要のない機能に起因して消費電力が上昇することのないような動作モードが求められている。
【００１１】
そこで本発明の目的は、利便性と消費電力の調和を図った新たな動作モードで動作するコンピュータを提供することにある。さらに本発明の目的は、プロセスの実行を伴う特定の機能を維持しながら節電を図る動作モードで動作するコンピュータを提供することにある。さらに本発明の目的は、通常状態へのレジュームを完了するまでの時間が短い動作モードで動作するコンピュータを提供することにある。さらに本発明の目的は、レジュームの信頼性が高い動作モードで動作するコンピュータを提供することにある。
【課題を解決するための手段】
【００１２】
本発明では従来の節電モードとは異なる新たな動作モードであるドーズ・モード（Doze mode）を定義する。従来のコンピュータではプロセッサが命令の実行が可能なアクティブ状態のときに、負荷に応じてプロセッサの消費電力を低下させたり、ＨＤＤの回転速度を低下させたり、またはＬＣＤの輝度を低下させたりといったように個々のデバイスに設定したアルゴリズムに基づいて節電動作を行っていた。ドーズ・モードではプロセッサはアクティブ状態にあり、コンピュータは対応するプロセスを実行してユーザが必要とする特定の機能を維持しながら各デバイスが通常モードより消費電力の少ない状態で動作したり停止したりする。ドーズ・モードではプロセッサがアイドル状態のときに命令は実行しないが消費電力が小さなスリーピング状態に遷移し、命令を実行する際には短時間でアクティブ状態に遷移するようにしてもよい。
【００１３】
ドーズ・モードでは、プロセッサおよびその他のデバイスを特定の機能を実現する上で必要な最小限の消費電力で動作させることが望ましい。そのために、本発明では特定の機能の実現に必要がないプロセスは、強制サスペンドしてＣＰＵの使用率を低減することで消費電力を低減する。特定の機能を実現するには、特定の機能に直接関係するアプリケーションのプロセスだけでなくＯＳの機能を実現するシステム・プロセスも動作させておく必要がある。よって、ＯＳが生成したシステム・プロセスは安易に停止させることはできない。しかし、ＯＳが生成したシステム・プロセスの中には消費電力の大きなディスク・ドライブにアクセスするものがある。また、アプリケーションの中には、強制サスペンドさせようとすると対抗措置をとり、かつ、ディスク・ドライブに頻繁にアクセスするものがある。
【００１４】
ディスク・ドライブは、ＨＤＤ、ＳＤＤ（Solid State Drive）、またはハイブリッドＨＤＤのいずれかとすることができる。本発明では特定の機能を維持しながら消費電力を低減するために、特定の機能の実現に必要なＯＳのシステム・プロセスを停止させないようにしながらディスク・ドライブの動作を制限してさらに消費電力の低減を図ることができる。そのために本発明では、ドーズ・モードに移行するための移行イベントに応答して、強制サスペンドさせないプロセスの中でディスク・ドライブに対してＩ／Ｏリクエストを行ったプロセスに対するＩ／Ｏ処理完了通知をドーズ・モードが終了するまで保留する。なお本発明においては、Ｉ／Ｏ処理完了通知の保留は当該プロセスを実行待ち状態に留めておく点でＩ／Ｏリクエストの保留と同義である。
【００１５】
本発明では、マルチ・スレッド方式を採用しており各プロセスは複数のスレッドで実行される。ディスク・ドライブにＩ／Ｏリクエストをしたスレッドは、ドーズ・モードの間は実行待ち状態に遷移するが、同一のプロセスから生成されてＩ／Ｏリクエストをしない他のスレッドはスケジューリング状態にある。スケジューリング状態にあるスレッドは実行可能状態と実行状態の間を遷移する。したがってシステム・プロセスの１つのスレッドがＩ／Ｏリクエストをして実行待ち状態に遷移しても、特定の機能を実現するために必要な他のスレッドは実行することができ、さらに、強制サスペンドしようとすると対抗措置をとるプログラムのプロセスは、強制サスペンドではなくディスク・ドライブに対するＩ／Ｏリクエストが保留されるだけなのでそのようなアプリケーションからの対抗措置を封じることができる。
【００１６】
特定の機能を実現するプロセスまたはスレッドを生成するアプリケーションは、少なくともドーズ・モードの間はディスク・ドライブに対してＩ／Ｏリクエストをしないものを選択することができる。その結果、ドーズ・モードの間にプロセスまたはスレッドを実行して特定の機能を実現してもディスク・ドライブが動作することはない。ＯＳはディスク・ドライブをスピン・ダウンさせたり、移行イベントに応じて電力を停止させたりして消費電力を低減することができる。
【００１７】
特定の機能を実現するプロセスは、ドーズ・モードの間に無線モジュールとアクセス・ポイントとの接続を維持するプロセスを含むことができる。無線接続を行うには、ＤＨＣＰサーバからＩＰアドレスを取得したりアクセス・ポイントとの間でアソシエーションをしたりする必要があるが、ドーズ・モードの間も無線接続が維持されていれば、通常モードにレジュームしたときに瞬時に無線ネットワークへのアクセスが可能になる。特定の機能を実現するプロセスはまた、チャット・プログラムにより形成されたセッションを維持するためのプロセスを含むことができる。ドーズ・モードの間もチャット・プログラムのセッションが維持されていれば、短時間だけドーズ・モードに移行させる場合には会話の相手に自らの不在を示すことがなくなるので、迅速な情報交換を損なうことがなくなる。
【００１８】
ドーズ・モードから通常モードにレジュームさせるためには、サスペンドやハイバネーションからのレジュームのようにプロセッサへの電力供給をトリガにして、所定のアドレスから命令の実行を開始するような方法を採用することはできない。したがってレジュームはスケジューリング状態にあるプロセスで処理する必要がある。本発明ではレジューム処理に必要なプロセスをＩ／Ｏリクエストをしないプロセスまたはスレッドで構成することで、ソフトウエアで復帰イベントを検出してレジュームさせることができる。
【００１９】
ドーズ・モードでは、プロセッサがアクティブ状態にあるのでサスペンドよりは消費電力が大きい。したがって、ドーズ・モード中に電池が消耗してきたときには自動的にサスペンドまたはハイバネーションに移行させることが望ましい。本発明では、ドーズ・モードからサスペンドまたはハイバネーションに遷移させるためのプロセスをＩ／Ｏリクエストをしないプロセスに含めることで、サスペンドまたはハイバネーションへの移行を可能にしている。
【００２０】
特定の機能を実現するプロセスがドーズ・モードの間にディスク・ドライブにアクセスしないことは保証または検証することができるが、仮想メモリ方式を採用する場合は他のプロセスの実行により物理メモリからページがディスク・ドライブにスワップ・アウトされる場合がある。スワップ・アウトされるときにはディスク・ドライブへのＩ／Ｏリクエストが発生するので、本発明では、特定の機能を実現するプログラムが、仮想メモリに対して自らに割り当てられたページを定期的に参照することで、スワップ・アウトされる順序が他のプログラムのページよりも常に遅くなるようにして実質的にスワップ・アウトを防止することが望ましい。
【００２１】
強制サスペンドに移行させるプロセスは通常モードでログインしているユーザのプロセッサ特権レベルと同一の特権レベルを保有しているプロセスを含むようにすることができる。特定の機能を実現するプロセスと同一の特権レベルのプロセスは、システム・プロセスのように特定の機能を実現するために必要になることはないので強制サスペンドしても支障がない。また、強制サスペンドするプロセスは、所定のプログラムの実行時刻を登録したタスク・スケジューラが生成したプロセスを含むようにすることができる。タスク・スケジューラに登録されるプログラムも特定の機能を実現する上で必要がないことは事前にわかっているからである。
【００２２】
ドーズ・モードからサスペンドまたはハイバネーションに移行させる際には、ＯＳが移行できるかどうかを各デバイス・ドライバに問い合わせる必要がある。したがって、ドーズ・モードからサスペンドまたはハイバネーションに移行させるためには、サスペンド・イベントに応じて強制サスペンドに移行させたプロセスを実行できるようにレジュームさせ、かつＩ／Ｏリクエストの保留を解除してコンピュータを一旦通常モードにレジュームしてから行う。移行イベントをコンピュータの筐体の蓋を閉じたときに生成するようにすれば、コンピュータを持ち運ぶときにドーズ・モードに移行させる上で都合がよい。
【発明の効果】
【００２３】
本発明により、利便性と消費電力の調和を図った新たな動作モードで動作するコンピュータを提供することができた。さらに本発明により、プロセスの実行を伴う特定の機能を維持しながら節電を図る動作モードで動作するコンピュータを提供することができた。さらに本発明により、通常状態へのレジュームを完了するまでの時間が短い動作モードで動作するコンピュータを提供することができた。さらに本発明により、レジュームの信頼性が高い動作モードで動作するコンピュータを提供することができた。
【図面の簡単な説明】
【００２４】
【図１】本実施の形態にかかるノートＰＣの主要なハードウエア構成を示す機能ブロック図である。
【図２】本実施の形態にかかるノートＰＣのソフトウエアの構成を説明するブロック図である。
【図３】ノートＰＣの動作モードの遷移を示す図である。
【図４】ドーズ・モードにおけるプロセスの制御方法を説明する図である。
【図５】ノートＰＣで生成されたスレッドが消滅するまでの間にプロセス管理部で制御される様子を示す図である。
【図６】通常モードからドーズ・モードへ移行する手順を示すフローチャートである。
【図７】ドーズ・モードから通常モードに移行する手順を示すフローチャートである。
【図８】ドーズ・モードからサスペンドまたはハイバネーションに移行する手順を示すフローチャートである。
【図９】ドーズ・モードにおける他のプロセスの制御方法を説明する図である。
【発明を実施するための形態】
【００２５】
［ハードウエア構成］
図１は、本実施の形態にかかるノートＰＣ１０の主要なハードウエアの構成を示す機能ブロック図である。本明細書の全体に渡って、同一の要素には同一の参照番号を付与する。ノートＰＣ１０は、表面にキーボードを搭載し内部に電子デバイスを収納したシステム筐体とＬＣＤ１９を収納するＬＣＤ筐体とで構成され、システム筐体の内部には複数の電子デバイスが搭載されている。ノートＰＣ１０はＡＣＰＩの規格に準拠している。ＣＰＵ１１は、ノートＰＣ１０の中枢機能を担う演算処理装置で、ＯＳ、ＢＩＯＳ、デバイス・ドライバ、あるいはアプリケーションなどを実行する。ＣＰＵ１１はノートＰＣ１０の電子デバイスの中で最も消費電力が大きい。
【００２６】
ＣＰＵ１１は、アクティブ状態のときにたとえばインテル社のSpeedStep（登録商標）という技術を採用し、使用率に応じて動作周波数および動作電圧の組を所定の値に低下させることができる。ＣＰＵ１１はまたアイドル状態になったり使用率が所定値以下になったりしたときに、順次コアのクロックを停止したりキャッシュをメイン・メモリや専用メモリにフラッシュしたりして消費電力を低下させ、命令を実行する際には短時間でアクティブ状態に遷移することが可能なスリーピング状態で動作することもできる。ＯＳは、ＣＰＵ１１の動作状態（使用率やその変移状況）を監視して、クロックや動作電圧を制御しＣＰＵ１１の消費電力を低下させる。
【００２７】
ＣＰＵ１１には、カーネル・モードといわれるリング０の状態からユーザ・モードといわれるリング３の状態までの特権レベルが設けられている。ＣＰＵ１１は、リング０の状態ではＯＳのコードを実行することができ、リング３の状態ではアプリケーションのコードを実行することができる。メモリ・コントローラ・ハブ（ＭＣＨ）１３は、メイン・メモリ１５へのアクセス動作を制御するためのメモリ・コントローラ機能、およびＣＰＵ１１と他のデバイスとの間のデータ転送速度の差を吸収するためのデータ・バッファ機能を含むチップ・セットである。
【００２８】
ＭＣＨ１３にはＣＰＵ１１、メイン・メモリ１５、グラフィック・プロセッシング・ユニット（ＧＰＵ）１７、およびアイオー・コントローラ・ハブ（ＩＣＨ）２３が接続されている。メイン・メモリ１５は、ＣＰＵ１１が実行するプログラムの読み込み領域、処理データを書き込む作業領域として利用される揮発性のＲＡＭである。ＧＰＵ１７には、ビデオ・メモリ（ＶＲＡＭ）２１およびＬＣＤ１９が接続されている。ＧＰＵ１７は、ＣＰＵ１１から受け取った描画命令に基づいてＶＲＡＭ２１に画像イメージを書き込み、所定のタイミングでＬＣＤ１９に画像イメージのデータを送るための専用プロセッサで、グラフィックス・アクセラレータともいう。ＩＣＨ２３は周辺入出力デバイスに関するデータ転送を処理する。
【００２９】
ＩＣＨ２３は、ＵＳＢ（Universal Serial Bus）、シリアルＡＴＡ（AT Attachment）、ＳＰＩ (Serial Peripheral Interface)バス、 ＰＣＩ（Peripheral Component Interconnect）バス、ＰＣＩ−Ｅｘｐｒｅｓｓバス、およびＬＰＣ（Low Pin Count）などのポートを備え、ＨＤＤ２５、光学ディスク・ドライブ（ＯＤＤ）２７、無線モジュール２９、オーディオ・コントローラ３１およびＬＰＣバス３３などが接続されている。ＨＤＤ２５には、ＣＰＵ１１が実行するアプリケーション、ＯＳ、デバイス・ドライバ、および本発明にかかるドーズ・モード制御プログラム（図２参照）などが格納されている。
【００３０】
ＯＤＤ２７は、ＤＶＤおよびＣＤなどの光ディスクに対する読み取りまたは書き込みを行うデバイスである。無線モジュール２９は、ノートＰＣ１０を無線ＬＡＮまたは無線ＷＡＮに接続して無線通信をするための信号処理をする。オーディオ・コントローラ３１は、マイクロフォンおよびスピーカ（いずれも図示せず。）に対する音声信号を処理する。ＬＰＣバス３３には、エンベデッド・コントローラ（ＥＣ）３５およびＢＩＯＳ＿ＲＯＭ４５などの高速なデータ転送を要求しないデバイスが接続される。
【００３１】
ＢＩＯＳ＿ＲＯＭ４５は不揮発性で記憶内容の電気的な書き替えが可能なメモリであり、入出力デバイスを制御するためのデバイス・ドライバ、ＡＣＰＩ（Advanced Configuration and Power Interface）の規格に適合し電源およびシステム筐体内の温度などを管理するシステムＢＩＯＳ、ノートＰＣ１０の起動時にハードウエアの試験や初期化を行うＰＯＳＴ（Power-On Self Test）コード、およびパスワード認証を行うための認証コードなどを格納する。
【００３２】
ＥＣ３５は、ノートＰＣ１０の電源管理および温度管理などを行うマイクロ・プロセッサであり、さらに、キーボード・コントローラ機能も含んでいる。ＥＣ３５には、リッド・センサ３７、放熱ファン３９、ＤＣ／ＤＣコンバータ４１、および電池パック４３が接続されている。リッド・センサ３７は、ＬＣＤ筐体がシステム筐体に対して閉じられたときにドーズ・モード（Doze Mode）に移行する移行イベントを生成し開かれたときにドーズ・モードから通常モードにレジュームする復帰イベントを生成する。放熱ファン３９は、システム筐体内部に設けられた複数の温度センサ（図示せず。）により回転速度が制御され、温度センサが検出する温度が所定値に収まるように筐体内部の空気を外部に放出する。
【００３３】
ＤＣ／ＤＣコンバータ４１は、ＥＣ３５からの指示に基づいて動作モードに応じた定義された範囲のデバイスに電力を供給する。ＤＣ／ＤＣコンバータ４１は、ＯＳがＣＰＵ１１の動作周波数を低下させるときおよびＣＰＵ１１がスリーピング状態に遷移するときにＣＰＵ１１に供給する電圧を低下させる。電池パック４３は、ＳＢＳ（Smart Battery Specification）に適合しており、ノートＰＣ１０にＡＣアダプタ（図示せず。）が接続されていないときに電力を供給する。ＥＣ３５は電池パック４３と通信して、電池パックから電池の残容量や電圧に関する情報を取得することができる。
【００３４】
［ソフトウエア構成］
図２は、本実施の形態にかかるノートＰＣ１０の主要なソフトウエアの構成を説明するブロック図である。チャット・プログラム１０１は、複数のユーザ同士でリアルタイム・コミュニケーションを行うためのツールで、たとえばＬｏｔｕｓ社のＳａｍｅｔｉｍｅ（登録商標）を採用することができる。チャット・プログラム１０１が動作するときは、ノートＰＣ１０は無線モジュール２９を通じてネットワークに接続する必要がある。チャット・プログラム１０１では、セッションを開始したユーザが自分のログオン状況を他のユーザに表明することができ、他のユーザはログオン状況をみて迅速なコミュニケーションをとることができる。
【００３５】
チャット・プログラム１０１の実行を停止したり、または無線接続が停止したりすると、チャット・プログラム１０１がそれまで他のユーザとの間に形成したセッションは切断されてログオフ状態を表明するため、他のユーザは当該ユーザが長時間ノートＰＣ１０を使用できない状況になったと判断してその時点での連絡を断念する可能性がある。チャット・プログラム１０１は、メイン・メモリ１５にロードされたあとは、無線ネットワークを通じて少なくとも他のユーザとの間に形成したセッションを維持しているだけの機能を実行している間はＨＤＤ２５にアクセスしないことが検証されている。
【００３６】
ウイルス対策プログラム１０３は、ノートＰＣ１０に進入した悪意のあるプログラムを検出して除去するためのプログラムである。ウイルス対策プログラム１０３は、自らのプロセスを他のプロセスが強制サスペンドしようとするとき、他のプロセスが悪意のあるプログラムによる攻撃であると判断して、警告を出したり強制サスペンドへの遷移を妨害したり、またはコンピュータの動作を停止したりといったさまざま対抗措置をとる。本実施の形態では後に説明するように、ウイルス対策プログラム１０３のプロセスを他のプロセスが強制サスペンドさせることができない場合でもドーズ・モードを実現することができる。
【００３７】
ドーズ・モード制御プログラム１０５は、本実施の形態にかかるドーズ・モードを実現するためのプログラムである。ドーズ・モード制御プログラム１０５は、ドーズ・モードへの移行イベントの検知、ドーズ・モードでのプロセスの制御、および通常モードへの復帰イベントの検知と通常モードへの復帰作業を行う。さらに、ドーズ・モード制御プログラム１０５は、ドーズ・モード中に実行する特定の機能を実現するためのアプリケーションをユーザが選択するための画面をＬＣＤ１９に表示する。
【００３８】
ＯＳ１０７は、ＡＰＩ１０９、システム・プロセス生成部１１１、電源管理部１１２、およびプロセス管理部１１３を含んでいる。ＯＳ１０７は、メモリ管理として仮想記憶とページング方式を採用する。物理メモリであるメイン・メモリ１５の空きが少なくなったときに新たに生成されたプロセスのために新たなページを割り当てるために他のページをＨＤＤ２５にスワップ・アウトする際の置換アルゴリズムとしてLRU (Least Recently Used)を採用する。LRUではページの置換が必要になったときに、最近使われたページを物理メモリに残し、最近使われていないページをＨＤＤ２５にスワップ・アウトする。ＯＳ１０７は、負荷状態に応じてＣＰＵ１１をスリーピング状態に遷移させることで消費電力を低減する。
【００３９】
チャット・プログラム１０１、ウイルス対策プログラム１０３、およびドーズ・モード制御プログラム１０５などのアプリケーションは、実行する際にＡＰＩ１０９の関数を呼び出してＯＳ１０７の機能を利用する必要がある。システム・プロセス生成部１１１は、ＯＳ１０７を構成するさまざまなプログラムを実行するためのシステム・プロセスを生成する。システム・プロセスは、セッション・マネージャ、Ｗｉｎｌｏｇｏｎ、サービス・コントロール・マネージャなどを含み、主として他のプログラムをサポートするためにバックグラウンドで動作する。電源管理部１１２は、プロセッサの使用率、命令の実行状態および電源関係のイベントなどを監視して、デバイス・ドライバやその他のモジュールにデバイスを制御するための通知をする。
【００４０】
プロセス管理部１１３は、プロセス・リスト１１５、スケジューラ１１７、実行可能キュー１１９、実行待ちキュー１２１、および強制サスペンド・キュー１２３を含み、アプリケーションおよびシステム・プロセス生成部１１１が生成したプロセスおよびスレッドを管理する。プロセス・リスト１１５には、ノートＰＣ１０に現在生成されているすべてのプロセスが登録されている。スケジューラ１１７は、生成されているスレッドに対して図５に示すように所定のアルゴリズムでプリエンプティブなタスク・スイッチを行う。
【００４１】
実行可能キュー１１９、実行待ちキュー１２１、および強制サスペンド・キュー１２３については後に図５を参照して説明する。デバイス・ドライバ１２９は、リッド・センサ３７が生成した移行イベントおよび復帰イベントをＯＳ１０７に伝える。デバイス・ドライバ１３１は、無線モジュール２９の動作の制御とノートＰＣ１０が無線ネットワークを通じて外部のコンピュータとの間で行うデータ転送を処理する。デバイス・ドライバ１３３はＨＤＤ２５の動作の制御とＣＰＵ１１またはメイン・メモリ１５とＨＤＤ２９との間で行われるデータ転送を処理する。中間ドライバ１２５は、デバイス・ドライバ１３３とＯＳ１０７の間に配置され、キュー１２７を含んでいる。
【００４２】
中間ドライバ１２５は、ドーズ・モード制御プログラム１０５からＯＳ１０７を通じてドーズ・モードに移行する移行イベントを検知した旨の通知を受け取ったあとにプロセスがＨＤＤ２５に対して行ったＩ／Ｏリクエスト・パケットを、すべてキュー１２７に登録してデバイス・ドライバ１３３に転送しないようにする。中間ドライバ１２５はまた、ドーズ・モード制御プログラム１０５からＯＳ１０７を通じてノートＰＣ１０が通常モードにレジュームする復帰イベントを検知した旨の通知を受け取ったときに、それまでキュー１２７に登録していたＩ／Ｏリクエスト・パケットをＦＩＦＯ方式で順番にデバイス・ドライバ１３３に転送して解放する。システムＢＩＯＳ１３５は、ＥＣ３５が生成したイベントをＯＳ１０７に通知する。図２に示したソフトウエアの機能ブロックは、メイン・メモリ１５にロードされＣＰＵ１１で実行されることで、コンピュータを機能させるハードウエア要素としてとらえることができる。
【００４３】
［動作モードの状態遷移］
図３は、ノートＰＣ１０の動作モードの遷移を示す図である。ノートＰＣ１０は、通常モード１５１、ドーズ・モード１５３、サスペンド１５５、およびハイバネーション１５７の４つの電源状態のいずれかで動作する。ドーズ・モード１５３は本実施の形態で定義する新規な動作モードであるが他の３つの動作モードは周知である。通常モード１５１とドーズ・モード１５３ではプロセッサはアクティブ状態またはスリーピング状態にあるためプロセスを実行できるが、サスペンド１５５とハイバネーション１５７ではＣＰＵ１１の電力が停止するためプロセスを実行することはできない。スリーピング状態のときには、ＣＰＵ１１はＡＣＰＩで規定するＣ１〜Ｃ６ステートのいずれかに遷移し、必要に応じて短時間でＣ０ステートに遷移してプロセスを実行する。
【００４４】
サスペンド１５５では、ＣＰＵ１１のコンテキストをメイン・メモリに記憶してメイン・メモリ１５の記憶内容を維持するために必要なデバイス、電池パック４３の充電状態を管理するために必要なデバイス、および通常モード１５１にレジュームするために必要なデバイスだけに電力を供給する。ハイバネーション１５７では、ＣＰＵ１１のコンテキストやメイン・メモリ１５に展開されたイメージをＨＤＤ２５に保存し電池パック４３の充電状態を管理するために必要なデバイスおよび通常モード１５１にレジュームさせるために必要なデバイスにだけ電力が供給される。ノートＰＣ１０は通常モード１５１と残り３つの動作モードとの間で相互に遷移することが可能であるが、残り３つの動作モードの間で相互に直接遷移することはできず、必ず通常モード１５１を経由してから遷移する必要がある。
【００４５】
［ドーズ・モードと通常モード］
つぎにドーズ・モードについて説明する。図４は、ドーズ・モードにおけるプロセスの制御方法を説明する図である。ノートＰＣ１０は、移行イベントに応じて通常モードからドーズ・モードに遷移し、復帰イベントに応じてドーズ・モードから通常モードにレジュームする。移行イベントは、ＬＣＤ筐体を閉じたときに生成し、復帰イベントはＬＣＤ筐体を開いたときに生成することができる。あるいは、Ｆｎボタンを押下してそれらのイベントを生成することもできる。
【００４６】
ドーズ・モードは、ノートＰＣ１０を短時間だけ使用できない状態のときの利便性と電池の消耗の抑制との調和を図った新たな動作モードで、特に無線ＬＡＮが設けられた建物の中でオフィスと会議室との間をユーザがノートＰＣ１０を抱えて移動するような場合に使用するのに便利な動作モードである。ドーズ・モードはまた、限定された機能だけを維持しその他の機能を停止することで節電をはかりながら、同時に最短時間で通常モードへの移行を実現する動作モードである。ドーズ・モードはまた、特定のプロセスを実行しながらディスク・ドライブへのアクセスを制限する動作モードである。
【００４７】
ドーズ・モードにおいてはドーズ・モード中にユーザが望む「特定の機能」とシステムが要求する「基本機能」だけを維持しその他の機能は可能な限り停止して節電を図る。ここで特定の機能は、ユーザがドーズ・モードの間に維持しておきたい機能で、かつアプリケーションのプロセスおよびその実行に必要なＯＳの特定のプロセスにより実現される機能である。ドーズ・モード制御プログラム１０５が生成したプロセスにより実現される機能も特定の機能に含む。特定の機能としてはたとえばチャット・プログラム１０１が通常モードでネットワークを通じて形成したセッションの維持を図る機能が上げられる。この場合、チャット・プログラム１０１のセッションを維持するために必要なネットワーク接続を維持する機能も特定の機能に含まれる。
【００４８】
ノートＰＣ１０は無線ネットワークへの接続を一旦切断すると、最も普及している典型的なネットワーク環境においては、再度ネットワークにアクセスするにはＤＨＣＰサーバにアクセスして新たなＩＰアドレスを取得する必要がある。そして取得したＩＰアドレスを使用してアクセス・ポイントとの間でアソシエーションを行ってからネットワーク接続を確立する必要があるため復帰には時間を要するが、ドーズ・モードにおいて無線ネットワークへの接続を維持しておけばドーズ・モードから通常モードに移行するとただちにネットワークにアクセスできる。
【００４９】
また、無線ネットワークを維持しておけばＴＣＰ／ＩＰレベルでの通信経路を確認するｐｉｎｇコマンドが送られてきたときに応答することができるので、無線ネットワークを維持する機能だけを特定の機能とすることもできる。基本機能はノートＰＣ１０の基本的な動作を担う機能で、電池パック４３の電池の充電状態を監視する機能、電池の電圧が低下した場合にサスペンドまたはハイバネーションに移行してメイン・メモリ１５に展開されているデータの喪失を防ぐ機能、および筐体内部の温度を管理する機能などを含む。
【００５０】
本実施の形態では、通常モードで生成されていたプロセスをドーズ・モードに適合するように制御するために、ドーズ・モードに移行する前に存在していたすべてのプロセスを、強制サスペンド・グループとＩ／Ｏ監視グループのいずれかに分類する。強制サスペンド・グループのプロセスは、ドーズ・モードで維持したい特定の機能とは無関係または特定の機能の実現に必要がないため消費電力の低減を図る上では停止することが望ましいプロセスである。強制サスペンド・グループのプロセスはドーズ・モードにおいて強制サスペンド状態に遷移させられて強制サスペンド・キュー１２３に登録される。
【００５１】
強制サスペンド・グループのプロセスは、ドーズ・モードに移行する前にログインしているユーザのＣＰＵ権限レベルと同じ特権レベルを保有するユーザ・プロセスを含む。ただし、この場合のユーザは管理者権限ではなくユーザ権限でログインしているものとする。このユーザ・プロセスにはほとんどのアプリケーションに関連するプロセスが含まれる。強制サスペンド・グループのプロセスはまた、ログインしているユーザのＣＰＵ権限レベルより高い権限レベルを保有しているが、特定の機能および基本機能を実現するプロセスの実行に必要のないことが明らかなタスク・スケジューラのようなシステム・プロセスを含む。
【００５２】
通常モードではタスク・スケジューラは、登録された時刻で定期的にアプリケーションを実行するが、ドーズ・モードではタスク・スケジューラを強制サスペンド・グループに含めることで登録されているアプリケーションは登録時刻が到来しても実行されないことになる。強制サスペンド・グループに分類するシステム・プロセスは、ＯＳごとにあらかじめ抽出してドーズ・モード制御プログラム１０５のリストに登録しておく。
【００５３】
Ｉ／Ｏ監視グループのプロセスは、特定の機能および基本機能に関係するプロセス、特定の機能および基本機能には明らかに無関係であるが停止できないプロセス、および特定の機能および基本機能の実現に対する必要性の判断が困難なプロセスで構成される。Ｉ／Ｏ監視グループのプロセスは、ＨＤＤ２５に対する読み取りまたは書き込みのためのＩ／ＯリクエストをするとＩ／Ｏ処理完了通知が保留されるためドーズ・モードの間は実行待ちキュー１２１に登録される。Ｉ／Ｏ監視グループのプロセスは、ＨＤＤ２３にＩ／Ｏリクエストをしない限り実行可能キュー１１９に登録されてスケジューリングされたり、条件が成立するまで実行待ちキュー１２１に登録されたりする。
【００５４】
Ｉ／Ｏ監視グループのプロセスの中で、特定の機能を実現するプロセスおよび基本機能を実現するプロセスまたはスレッドは、少なくともドーズ・モードの間はＨＤＤ２５にＩ／Ｏリクエストをしないことが前提になる。いいかえると本実施の形態においては、特定の機能は消費電力が大きなＨＤＤ２５に対するアクセスを伴わないアプリケーションで実現される。特定の機能および基本機能には明らかに無関係であるが停止できないプロセスにはウイルス対策プログラム１０３を含む。
【００５５】
特定の機能および基本機能の実現に対する必要性の判断が困難なプロセスは、ＯＳ１０７の機能を実現する大部分のシステム・プロセスである。アプリケーションのプロセスはシステム・プロセスの支援を受けて実行することになるので、多くのシステム・プロセスは停止することができない。しかし、そのすべてのシステム・プロセスが特定の機能および基本機能を実現するために必要になるものではなく必要のないシステム・プロセスにより消費電力が増大することは望ましくない。本発明では、この背反する課題を解決するために、システム・プロセスをＩ／Ｏ監視グループに分類して消費電力の大きなＨＤＤ２５に対してＩ／Ｏリクエストをしたスレッドの実行を停止するように制御する。
【００５６】
ここで、特定の機能および基本機能の実現に関連するシステム・プロセスがＨＤＤ２５にＩ／Ｏリクエストをして実行待ち状態に遷移することがある。本実施の形態ではプロセス管理部１１３によりマルチ・スレッド処理が行われるため、１つのプロセスは複数のスレッドの単位で実行される。そして、複数のスレッドの中で実行待ち状態に遷移するのはＨＤＤ２５にＩ／Ｏリクエストをしたスレッドだけであり、他のスレッドは実行されるので特定の機能および基本機能の実現に支障がでることはないようになっている。
【００５７】
また、ドーズ・モード中にプロセスがＨＤＤ２５に対して行うアクセスの中には、通常モードにレジュームするまで遅延できるものがある。たとえば、ＯＳ１０７はシステムの動作にエラーが発生したときのエラー・ログをＨＤＤ２５に書き込むことがあるが、そのようなエラー・ログのダンプは通常モードにレジュームしてから行っても問題がない。したがって、システム・プロセスの中で、ドーズ・モード中にＨＤＤ２５に対するアクセスを伴うすべてのスレッドの実行は、通常モードに移行するまで保留する。このようにシステム・プロセスのＩ／Ｏリクエストを監視して保留することで、特定の機能および基本機能の実現に必要なシステム・スレッドを誤って強制サスペンドしたり、特定のシステム・スレッドがＨＤＤ２５にアクセスして消費電力の増大をもたらしたりするような事態を防ぐことできる。
【００５８】
システム・プロセスを強制サスペンドしないでＩ／Ｏリクエストを監視するようにすることで、ソフトウエアによるレジューム機能を実現することも可能になる。ドーズ・モードではＣＰＵ１１はアクティブ状態になっているため、サスペンドまたはハイバネーションからレジュームするときのように、Ｆｎキーの押下などをトリガにして、プロセッサへの電源の投入、クロックの供給により、所定のアドレスからプロセッサが命令を実行するような方法ではレジュームできない。また、レジュームの処理を行う上では、ドーズ・モード制御プログラム１０５だけでなくＯＳ１０７の多くのプロセスを利用する必要もある。この点でも、重要なシステム・コードの中で実行が停止しているのはＩ／Ｏリクエストをしたスレッドだけであるため、リッド・センサ３７の動作の検出およびレジュームの処理を行うことができる。
【００５９】
ウイルス対策プログラム１０３は、頻繁にＨＤＤ２５に対するＩ／Ｏリクエストを行うため、Ｉ／Ｏリクエストが保留されてスレッドは実行待ちキュー１２１に登録される。このときウイルス対策プログラム１０３は、ＨＤＤ２５からの応答が遅いだけで悪意のあるプログラムによる攻撃だとは認識しないので、Ｉ／Ｏリクエストによりスレッドが強制サスペンドされるような事態とは異なり対抗動作をすることはない。
【００６０】
ドーズ・モードではユーザ・プロセスの大部分は強制サスペンド状態に入っているため多くのシステム・プロセスは処理要求がなくなって実行待ち状態に遷移し、さらにＨＤＤ２５にＩ／Ｏリクエストをするウイルス対策プログラム１０３やシステム・プロセスのスレッドも実行待ち状態に遷移するためＣＰＵの１１使用率は低下する。電源管理部１１２は、使用率を監視してＣＰＵ１１の動作周波数および動作電圧の組を低下させたりクロックを停止したりして節電モードで動作させて消費電力を低減することができる。また電源管理部１１２はＨＤＤ２５に対するすべてのＩ／Ｏリクエストがキュー１２７に登録されるため、移行イベントに応じてＨＤＤ２５をスピン・ダウンしたり停止したりすることができる。
【００６１】
ドーズ・モードでは、プロセスの制御と同時にデバイスに対する電力供給範囲も併せて制御する。ドーズ・モードでのハードウエアの状態としては、特定の機能および基本機能の維持に関連するデバイスであるＣＰＵ１１、メイン・メモリ１５、リッド・センサ３７、ＤＣ／ＤＣコンバータ４１、ＥＣ３５および無線モジュール２９には電力を供給するが、その他のデバイスの電力は停止する。停止可能なデバイスは、ＨＤＤ２５、ＯＤＤ２７、オーディオ・コントローラ３１、およびＬＣＤ１９などである。
【００６２】
また、ドーズ・モードではシステム筐体の内部の発熱量が非常に少なくなるので放熱ファン３９も停止することができる。放熱ファン３９はノートＰＣ１０がドーズ・モードに移行したときには、システム筐体内部の温度が下がることに応じて段階的に回転速度が低下しやがて停止することになるが、ヒステリシス動作をするため一旦動作した放熱ファン３９は温度がより低下するまで停止しない。しかしドーズ・モードでは、消費電力が放熱ファンの動作が必要のない程度まで下がることがわかっているので、本実施の形態ではドーズ・モードに移行するとともに放熱ファン３９を停止させる、よって、ユーザはドーズ・モードに移行したノートＰＣ１０をサスペンドと同じような感覚で鞄に入れて運搬することができるようになる。
【００６３】
ドーズ・モードではＬＣＤ１９、ＨＤＤ２５および放熱ファン３９といった電力を多く消費するデバイスが停止し、ＣＰＵ１１も低消費電力で動作するのでノートＰＣ１０全体としての消費電力はＳ１ステートまたはＳ２ステートとほぼ同じになる。ドーズ・モードから通常モードにレジュームするときは、復帰イベントに応じて強制サスペンドさせたプロセスをレジュームし、さらにキュー１２７に保留していたＨＤＤ２５に対するＩ／Ｏリクエスト・パケットをキュー１２７から取り出してＨＤＤ２５のデバイス・ドライバ１３３に渡すだけでよいのでレジュームが完了するまでの時間が短くなるため利便性が高い。
【００６４】
［プロセスの状態遷移］
図５はノートＰＣ１０において生成されたスレッドが消滅するまでの間にプロセス管理部１１３で制御される様子を示す図である。ＯＳ１０７は、マルチ・スレッド方式を採用しているため、１つのプロセスは実行単位となる複数のスレッドで実行される。チャット・アプリケーション１０１、ウイルス対策プログラム１０３、およびドーズ・モード制御プログラム１０５はＡＰＩ関数を呼び出してプロセスおよびスレッドを生成して実行される。
【００６５】
またシステム・プロセス生成部１１１もＯＳ１０７の機能を実現するためのプロセスを生成する。これらの生成されたプロセスは、プロセス管理部１１３で制御される。プロセスはプロセス制御ブロック（ＰＣＢ）というプロセッサ状態、プロセスの優先度、タイム・スライス情報、プロセスＩＤ、およびデバイス情報などを含むデータ構造体のデータで管理される。プロセッサ状態は、ＣＰＵ１１がプロセスを中断したときのレジスタ、スタック、およびプログラム・カウンタなどの状態に関する情報でコンテキストともいう。
【００６６】
プロセスの優先度は、プロセス間におけるコンテキスト・スイッチの優先順位を示す情報である。タイム・スライス情報は、タイム・スライスの初期値や残り時間に関する情報である。タイム・スライスとはプロセスがＣＰＵ１１に対する一度の実行権を獲得したときに許される最大実行時間をいう。プロセスＩＤは、各プロセスに割り当てられた一意の番号である。デバイス情報は、当該プロセスに割り当てられたデバイスの識別情報である。なお、ＰＣＢには、ＯＳにより異なるその他のさまざまな情報が含まれる。
【００６７】
生成されたスレッドは、最初に実行可能状態（ＲＥＡＤＹ）に遷移する。実行可能状態は、スレッドの実行条件が成立しているためタスク・スケジューラ１１７により実行されるのを待っている状態である。ＰＣＢが実行可能キュー１１９に登録されプロセス・スケジューラ１１７により優先度の順番でＣＰＵ１１にディスパッチされると実行状態（ＲＵＮ）に遷移する。実行状態はタイム・スライスが割り当てられたスレッドがＣＰＵ１１で実行されている状態である。実行されたスレッドはタイム・スライスを消費すると、プリエンプト（強制実行権剥奪）により実行可能状態（ＲＥＡＤＹ）に戻る。また、実行状態のスレッドは、与えられたタイム・スライス期間の実行の途中でも自ら所定の関数（システム・コール）を呼んで、実行可能状態や実行待ち状態（ＷＡＩＴ）に遷移することができる。
【００６８】
実行待ち状態は、スレッドが実行に必要な条件を待っている状態である。その条件には、入出力装置にＩ／ＯリクエストをしたときのＩ／Ｏ処理の完了通知待ち、キーボードからの入力待ち、および他のプログラムからのメッセージ待ちなどを含んでいる。スレッドがＨＤＤ２５にＩ／Ｏリクエストをしたときには、タイム・スライスの途中であっても自ら実行を中断する関数を呼んで実行待ち状態に遷移し、Ｉ／Ｏ処理完了通知を受け取るまで実行待ちキュー１２１に留まる。強制サスペンド状態（ＳＵＳＰＥＮＤ）は、実行状態、実行可能状態、または実行待ち状態にあるスレッドが他のスレッドにより関数が呼び出されて強制的に待ち状態にさせられた状態である。強制サスペンド状態に遷移したスレッドは、他のスレッドから当該スレッドをレジュームさせる関数が呼び出されるまで、強制サスペンド・キュー１２３に留まる。
【００６９】
実行状態、実行可能状態または実行待ち状態からの強制サスペンド状態への遷移および強制サスペンド状態から実行可能状態への遷移は、Ｗｉｎｄｏｗｓ（登録商標）ではそれぞれ、SuspendThreadおよびResumeThreadというＡＰＩ関数を利用することができる。当該プロセスにより生成されたすべてのスレッドをサスペンドまたはレジュームの対象にしたＡＰＩ関数を呼び出すことでプロセスのサスペンド／レジュームを実現することができる。すべての処理を終了したスレッドは実行状態のときに自ら消滅する関数を呼んで消滅（ＴＥＲＭＩＮＡＴＥ）する。
【００７０】
［通常モード状態からドーズ・モードへの移行手順］
図６は、通常モードからドーズ・モードへ移行する手順を示すフローチャートである。ブロック２０１では、ユーザが所定のＣＰＵ特権レベルでログインしてノートＰＣ１０が通常モードで動作している。通常モードでは図２に示したソフトウエアがメイン・メモリ１５にロードされ、図１に示したハードウエアに電力が供給されている。ユーザはドーズ・モード制御プログラム１０５が提供するインターフェース画面を通じて特定の機能を実現するアプリケーションとしてチャット・プログラム１０１を選択している。また、無線モジュール２９を動作させてネットワーク接続を維持する機能はディフォルトで常に特定の機能に指定されている。
【００７１】
ブロック２０３では、ユーザがオフィスから会議室まで移動するためにＬＣＤ筐体を閉じるとリッド・センサ３７が動作してＯＳ１０７を通じて移行イベントがドーズ・モード制御プログラム１０５に送られる。移行イベントを受け取ったドーズ・モード制御プログラム１０５は、ブロック２０５で、ＡＰＩ関数を呼び出してプロセス管理部１１３のプロセス・リスト１１５から現在生成されているすべてのプロセスの名称、プロセスＩＤおよびそれらの特権モードに関する情報を取得する。生成されているプロセスを取得するＡＰＩ関数は、たとえばＷｉｎｄｏｗｓ（登録商標）ではCreateToolhelp32Snapshotを使用することができる。
【００７２】
現在生成されているプロセスはプロセス管理部１１３により、実行状態、実行可能状態、実行待ち状態、または強制サスペンド状態のいずれかの状態で管理されている。ブロック２０７でドーズ・モード制御プログラム１０５は、すべてのプロセスから強制サスペンドするプロセスを抽出し、それらのプロセスに対するＡＰＩ関数を呼び出して強制サスペンド状態に遷移させる。
【００７３】
強制サスペンド状態に遷移したプロセスは実行を停止するのでＣＰＵ１１の使用率は低下する。チャット・プログラム１０１が生成したプロセスは、Ｉ／Ｏ監視グループに分類されるため、強制サスペンドされないでスケジューリング状態を継続する。電源管理部１１２が検出したＣＰＵ１１の使用率に応じてＯＳ１０７はＣＰＵ１１の動作周波数および動作電圧の組を低下させる。さらに電源管理部１１２は、ＣＰＵ１１がアイドル状態になったり使用率が所定値以下になったりしたと判断したときは、ＣＰＵ１１をスリーピング状態または処理速度が低い分だけより電力消費の低い動作状態に遷移させて消費電力を低下させる。ドーズ・モードに移行する直前に存在していたすべてのプロセスの中で強制サスペンドされなかったＩ／Ｏ監視グループのプロセスはスケジューラ１１７によるスケジューリングの対象となり条件が成立すれば実行される。
【００７４】
ブロック２０９でドーズ・モード制御プログラム１０５は、Ｉ／Ｏ監視グループのプロセスがＨＤＤ２５に対してＩ／Ｏリクエストをした場合に、当該Ｉ／Ｏリクエスト・パケットをキュー１２７に登録してデバイス・ドライバ１３３に転送しないようにデバイス・ドライバ１３３に指示する。実行状態でＩ／Ｏリクエストをしたプロセスはただちに実行待ち状態に遷移して実行待ちキュー１２１に登録され、デバイス・ドライバ１３３からのＩ／Ｏ処理完了通知を待つ。
【００７５】
しかし、Ｉ／Ｏリクエスト・パケットはキュー１２７に登録されるため、デバイス・ドライバ１３３はＩ／Ｏ処理完了通知をプロセスに返すことはない。よってドーズ・モードの間はＩ／Ｏリクエストをしたプロセスは実行待ち状態に留まることになる。なお、Ｉ／Ｏリクエスト・パケットをキュー１２７に登録することに代えて、一旦デバイス・ドライバ１３３にＩ／Ｏリクエスト・パケットを転送し、デバイス・ドライバ１３３から戻されたＩ／Ｏ処理完了通知をキュー１２７に登録するようにしてもよい。
【００７６】
Ｉ／Ｏ監視グループのプロセスの中で、ＨＤＤ２５に対するＩ／Ｏリクエストをしたプロセスは実行待ち状態に遷移する。また、Ｉ／Ｏ監視グループのプロセスの中で、強制サスペンド状態に遷移したプロセスからのメッセージを待っているようなプロセスもメッセージを待っている間は実行待ち状態に遷移する。したがって、実行状態と実行待ち状態の間でスケジューリングされて実行される主たるプロセスは、例えば特定の機能を実現するチャット・プログラム１０１が生成したプロセスとその実行に必要なシステム・プロセスおよび基本機能を維持するプロセスになる。
【００７７】
システム・プロセスの中でＩ／Ｏリクエストをしたプロセスのスレッドはドーズ・モードの間実行待ち状態に遷移しているがＩ／Ｏリクエストをしないスレッドは実行される。また、他のプロセスからのメッセージがくるまで実行待ちキュー１２１に登録されているシステム・プロセスはメッセージの到着で実行可能キュー１１９に登録されるので、チャット・プログラム１０１の実行に支障がでるようなことはない。また、ドーズ・モードの間にリッド・センサ３７により生成された復帰イベントをＯＳ１０７が検出することができるので、ドーズ・モードから通常モードへのレジュームに支障がでるようなこともない。
【００７８】
ドーズ・モードではＩ／Ｏ監視グループのプロセスの中でＨＤＤ２５に対するＩ／Ｏリクエストをしないほとんどのプロセスは、実質的な作業がないので実行待ち状態に遷移し、ＣＰＵ１１はシステム・アイドル・プロセスを実行する時間が長くなって使用率が低下して、その結果としてスリーピング状態に遷移し消費電力が低下する。ウイルス対策プログラム１０３のプロセスもＩ／Ｏ監視グループのプロセスに含まれるが、ＨＤＤ２５に対するＩ／Ｏリクエストを行うために実行待ちキュー１２１に登録される。ドーズ・モードで実行されるプロセスが、ブロック２０５で取得されたプロセス以外の新たなプロセスを生成することもある。しかしそのようなプロセスがＨＤＤ２５にＩ／Ｏリクエストをすれば実行待ちキュー１２１に登録され、Ｉ／Ｏリクエストをしなければ実行されても消費電力上は極端に大きな差が生まれるわけではないので問題がない。
【００７９】
ブロック２０９までの手順により、ドーズ・モードでのプロセスの制御が終了する。ブロック２１１では、ドーズ・モードで特定の機能および基本機能を実現するのに必要な最小限のデバイスだけを動作させるために、ドーズ・モード制御プログラム１０５がＥＣ３５に所定のデバイスを停止するように指示する。このときの指示は、個別のデバイスを特定してもよいし、あらかじめ停止するデバイスを特定してＥＣ３５に登録しておいてＥＣ３５に対しては停止の指示だけを送るようにしてもよい。
【００８０】
ＥＣ３５は指示に応じて、ＬＣＤ１９、ＨＤＤ２５、ＯＤＤ２７、および放熱ファン３９への電力供給を停止する。そして、ＣＰＵ１１、メイン・メモリ１５、ＭＣＨ１３、ＣＰＵ１７、ＩＣＨ２３、ＥＣ３５、ＤＣ／ＤＣコンバータ４１およびリッド・センサ３７への電力供給を維持する。電力が供給されるデバイスは消費電力が小さいため電池パック４３の電池の消耗は少なくなる。なお、ドーズ・モードではＨＤＤ２５は動作する必要がないが、ＨＤＤ２５の電力を停止しないで、電源管理部１１２がＨＤＤ２５にスピン・ダウンさせるコマンドを送るようにしてもよい。
【００８１】
ブロック２１３ではドーズ・モードへの移行が完了し、無線モジュール２９を通じてチャット・プログラム１０１は、セッションを維持することができる。よって、ノートＰＣ１０とチャット・プログラム１０１のセッションを構築していた他のユーザは、ノートＰＣ１０のユーザがただちに応答できる状態であると判断して移動中でも会話データを送ることができる。ドーズ・モードではユーザはノートＰＣ１０のキーボードからデータを入力して応答することはできないが、移動中でも他のユーザに対してただちに応答できる状態にいることを表明し続けることができ、移動後にはただちに通常モードに復帰して応答できる。
【００８２】
ドーズ・モードでは多くのプロセスが強制サスペンド・キュー１２３または実行待ちキュー１２１に登録されるためスケジューリング状態のプロセスが少なくなるため、チャット・プログラム１０１がメイン・メモリ１５からＨＤＤ２５にスワップ・アウトされる可能性はほとんどない。ドーズ・モードに遷移する直前まで通常通りの動作を継続し、ドーズ・モード遷移後も新たな動作を開始することも無く、それまでと同様の動作を継続することも、それを裏付けている。
【００８３】
［ドーズ・モードから通常モードへの移行手順］
つぎに、ドーズ・モードから通常モードにレジュームする手順を説明する。図７は、ドーズ・モードから通常モードにレジュームする手順を示すフローチャートである。ブロック３０１ではノートＰＣ１０がドーズ・モードで動作しており、特定の機能であるチャット・プログラム１０１がセッションを維持する機能および無線ネットワークへの接続を維持する機能と、基本機能だけが維持されている。ブロック３０３では、ユーザがＬＣＤ筐体を開くとリッド・センサ３７が復帰イベントを生成する。復帰イベントはデバイス・ドライバ１２９、ＯＳ１０７を経由してドーズ・モード制御プログラム１０５に転送される。ブロック３０５では、ドーズ・モード制御プログラム１０５は、ドーズ・モードに移行する際に停止したデバイスに電力を供給するようにＥＣ３５に指示する。
【００８４】
ＥＣ３５は指示に応じてＤＣ／ＤＣコンバータ４１を制御して、対象となるデバイスに電力を供給しドーズ・モード制御プログラム１０５に完了通知をする。ブロック３０７では、ドーズ・モード制御プログラム１０５が、中間ドライバ１２５に通常モードにレジュームすることの通知を行う。通知を受け取った中間ドライバ１２５は、キュー１２５に登録していたＩ／Ｏリクエスト・パケットをＦＩＦＯのアルゴリズムに基づいてデバイス・ドライバ１３３に転送する。デバイス・ドライバ１３３が受け取ったＩ／Ｏリクエスト・パケットをＨＤＤ２５に送ると、ＨＤＤ２５に対する読み取りまたは書き込みの処理が行われる。
【００８５】
デバイス・ドライバ１３３はＨＤＤ２５による処理が完了すると、中間ドライバ１２５を経由して、実行待ちキュー１２１に登録されているＩ／ＯリクエストをしたプロセスにＩ／Ｏ処理完了通知を転送する。Ｉ／Ｏ処理完了通知を受け取ったプロセスは、実行待ち状態から実行可能状態に遷移し、実行可能キュー１１９に登録されてスケジューラ１１７によるディスパッチを待つ。ブロック３０９では、ドーズ・モード制御プログラム１０５は、強制サスペンド・キュー１２３に登録されているプロセスに対してＡＰＩ関数を呼び出してレジュームさせ実行可能状態に遷移させる。以上の手順が終了すると、ノートＰＣ１０はブロック３１１で通常モードにレジュームする。
【００８６】
ドーズ・モードから通常モードへのレジュームは、中間ドライバ１２５によるキュー１２７からの解放処理とプロセス管理部１１３による強制サスペンド・キュー１２３からのレジューム処理だけであるため、サスペンドからレジュームする場合に比べて短時間で完了することができる。したがって、ユーザにとってはそれまでレジュームの時間のために利用を躊躇していたサスペンドに代えてドーズ・モードは利用し易いものとなる。
【００８７】
［ドーズ・モードからサスペンドまたはハイバネーションへの移行手順］
つぎに、ドーズ・モードからサスペンドまたはハイバネーションへ移行する手順について説明する。図８は、ドーズ・モードからサスペンドまたはハイバネーションに移行する手順を示すフローチャートである。ブロック４０１においてドーズ・モードで動作しているノートＰＣ１０は、特定の機能と基本機能を維持するためにＣＰＵ１１および所定のデバイスに電力を供給している。ドーズ・モードはサスペンドよりも消費電力が大きく長時間の間留まることを予定している動作状態ではないので、所定の条件に基づいてドーズ・モードからサスペンドまたはハイバネーションに移行させて電池パック４３の蓄電量の消費を軽減することが望ましい。
【００８８】
ブロック４０３では、ＯＳ１０７のタイマが、移行イベントが検出されてからの経過時間が所定時間に到達したか否かを判断する。ＯＳ１０７のタイマは、ＨＤＤ２５に対するＩ／Ｏリクエストをしないために、ドーズ・モードの間も実行されている。所定時間に到達した場合はブロック４０７に移行しタイマはサスペンド移行イベントを生成する。サスペンドに移行する前に、電力管理部１１２はその時点でロードされているデバイス・ドライバに対してデバイスの電力を停止してもよいかどうかを問い合わせる必要がある。したがって、サスペンドに移行する前に各デバイスを使用しているプログラムを実行するために通常モードにレジュームさせる。
【００８９】
ブロック４０８では、サスペンド移行イベントに基づいて図７のブロック３０５からブロック３１１の手順でノートＰＣ１０は通常モードにレジュームする。ブロック４１１では、電源管理部１１２がすべてのデバイス・ドライバからデバイスの電源を停止してもよい通知を受け取ったときは、システムＢＩＯＳ１３５を通じてＥＣ３５に指示し、停止すべきデバイスの電力を順番に停止してサスペンドに移行する（ブロック４１３）。ドーズ・モードから通常モードへの移行時間は非常に短いため、ユーザは通常モードにレジュームしたことをほとんど認識することなくドーズ・モードからサスペンドへの移行が完了する。
【００９０】
サスペンドではメイン・メモリ１５とＥＣ３５には電力が供給されており、ＥＣ３５は定期的に電池パック４３の電池の残容量を監視している。ブロック４１５で電池の残容量が少なくなったときは、ＥＣ３５はブロック４１５でハイバネーション移行イベントを生成する。ハイバネーション移行イベントは、システムＢＩＯＳ１３５を通じて電源管理部１１２に送られる。通知を受け取った電源管理部１１２は、ブロック４１７でブロック４０９と同様にノートＰＣ１０を通常モードにレジュームさせ、ブロック４１９でハイバネーション処理をしてハイバネーションに移行する（ブロック４２１）。
【００９１】
これまで特定の機能を実現するプロセスがドーズ・モード中にＨＤＤ２５に対するＩ／Ｏリクエストをしない場合を例示して説明したが、本発明は、特定の機能を実現するプロセスがＨＤＤ２５にＩ／Ｏリクエストをする場合を排除するものではない。たとえば、特定の機能がドーズ・モードにおいてわずかな時間だけまたは初期の段階だけＨＤＤ２５にＩ／Ｏリクエストをする必要があるプロセスで実現されるような場合を想定することができる。この場合は、強制サスペンドやＩ／Ｏリクエストの監視をしないで、通常モードと同じ状態で制御するグループを設けて特定の機能を実現するプロセスをそこに分類する。このときドーズ・モードではＨＤＤ２５の電力は停止しないでアクセス状態により電源管理部１１２がスピン・ダウンさせることが望ましい。
【００９２】
図９は、そのときのプロセスの制御方法を説明する図である。すべてのプロセスが強制サスペンド・グループ、Ｉ／Ｏ監視グループ、および特別なプロセス制御をしない通常グループの３つに分類され、特定の機能を実現するプロセスは通常グループに分類される。強制サスペンド・グループとＩ／Ｏ監視グループのプロセスに対するドーズ・モードでの制御方法は図４の場合と同じである。
【００９３】
ドーズ・モードの利便性について特定の機能としてチャット・プログラムのセッションや無線ネットワークへの接続を維持する例を説明したが、ドーズ・モードはこれまで存在していた節電モードであるサスペンドにはない特徴も備えている。サスペンドからレジュームする場合は、レジュームしたあとにＯＳはロードされているアプリケーションおよびデバイス・ドライバにレジュームしたことを通知する必要がある。したがって、ＯＳの導入当初はサスペンドからレジュームする時間が早いが、その後導入されるアプリケーションやデバイス・ドライバの数が増えるとレジュームの時間が長くなることがある。これに対してドーズ・モードはプロセスを制御するだけで通常モードに移行できるため、導入されるアプリケーションおよびデバイス・ドライバの数が増えてもレジュームする時間が長くなることはないので、レジュームを短時間で行うことができる。
【００９４】
また、サスペンドからレジュームするときには、もとの使用環境に完全に復帰できないことがある。たとえば、レジュームしたときにマウスが正常に動作しなかったり無線ネットワークに自動的に再接続できなかったりすることがある。そのような原因の１つとしては、プリロードのときにはシステム全体としてレジュームの試験をしていても、その後更新したり新たに導入したりするデバイス・ドライバに対してはシステム全体としてレジュームの試験を行うことができないことがある。これに対してドーズ・モードで行う個々の制御は通常モードでも行うものであり、さらにレジュームするときにはデバイス・ドライバにその旨の通知をする必要もないので確実に直前の移動モードの使用環境に戻すことができるため短時間の移動のときの動作モードとしての利便性は高い。
【００９５】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【００９６】
１０…ノートＰＣ
１０７…ＯＳ
【図１】
2011150610.tif 000003
【図２】
2011150610.tif 000004
【図３】
2011150610.tif 000005
【図４】
2011150610.tif 000006
【図５】
2011150610.tif 000007
【図６】
2011150610.tif 000008
【図７】
2011150610.tif 000009
【図８】
2011150610.tif 000010
【図９】
2011150610.tif 000011