(57)【要約】【解決手段】記載されたものは、通常システムコンポーネントのための静的データ及び／又はコードを存続し、その後の装置の起動の間、静的データ及び／又はコードへのアクセスをそのシステムコンポーネントに提供することによって、作動する高速起動メカニズムである。例えば１つ以上のコンポーネントの静的データ及び／又はコードが、不揮発性メモリから揮発性メモリにリストアされ得、それによって、その後の再起動が、存続されたそれらの静的データをコンポーネントに再計算する必要がないために、その後の再起動をより高速にできる。高速起動基盤環境は、インターフェースセットを含み得、システムコンポーネントのための静的データ及び／又はコードを存続する第１のメカニズム及び静的データ及び／又はコードへのアクセスをシステムコンポーネントに提供する第２のメカニズムを提供する。高速起動基盤環境はまた、システムコンポーネントから静的データ及び／又はコードを収集するためのバックグラウンドメカニズムと共に、コンポーネントに静的データ及び／又はコードを無効化させる方法も提供できる。【選択図】図３
2009512020.tif 000002
【特許請求の範囲】
【請求項１】
計算機実行可能命令を有する少なくとも１つの実体のある計算機可読媒体であって、前記命令が計算機装置上で実行されるとき、計算機装置をして、
システムコンポーネントのための静的データ及び／又はコードを維持するステップと、
装置の起動の間、前記静的データ及び／又はコードへのアクセスを前記システムコンポーネントに提供するステップと、を実行させる計算機可読媒体。
【請求項２】
前記静的データ及び／又はコードへのアクセスを前記システムコンポーネントに提供するステップが、高速起動基盤環境のアプリケーションプログラミングインターフェースセットへのエントリポイントを前記システムコンポーネントに提供するステップを含むことを特徴とする請求項１記載の計算機可読媒体。
【請求項３】
前記静的データ及び／又はコードが、半導体メモリにイメージとして維持されることを特徴とする請求項１記載の計算機可読媒体。
【請求項４】
前記静的データ及び／又はコードが、ハードディスクドライブにイメージとして維持されることを特徴とする請求項１記載の計算機可読媒体。
【請求項５】
前記静的データ及び／又はコードへのアクセスを前記システムコンポーネントに提供するステップが、前記装置の起動の間の初期化のために前記システムコンポーネントを呼び出すステップを含むことを特徴とする請求項１記載の計算機可読媒体。
【請求項６】
前記静的データ及び／又はコードへのアクセスを前記システムコンポーネントに提供するステップが、複数の起動フェーズのうち少なくとも２つのフェーズの間、前記システムコンポーネントを呼び出すステップを含むことを特徴とする請求項５記載の計算機可読媒体。
【請求項７】
更に、高速起動基盤環境において前記システムコンポーネントからの呼び出しを受信するステップであって、前記呼び出しが、その後の起動時に使用するために存続している前記静的データ及び／又はコードへのアクセスを前記高速起動基盤環境に提供するもの、を含む計算機実行可能命令を有する請求項１記載の計算機可読媒体。
【請求項８】
更に、高速起動基盤環境において前記システムコンポーネントからの呼び出しを受信するステップであって、前記呼び出しが、現在の状態の前記静的データをその後の起動時に使用しないように前記静的データを無効化することに対応するもの、を含む計算機実行可能命令を有する請求項１記載の計算機可読媒体。
【請求項９】
更に、その後の起動時に使用するために存続している前記静的データ及び／又はコードへのアクセスを高速起動基盤環境に提供するために、バックグラウンド動作において前記システムコンポーネントと通信するステップを含む計算機実行可能命令を有する請求項１記載の計算機可読媒体。
【請求項１０】
計算機システムにおいて実施される方法が、
停止状態から計算機装置を起動するステップであって、システムコンポーネントを初期化するステップを含むものと、
前記システムコンポーネントの初期化の一部として前記システムコンポーネントのための既に存続する静的データ及び／又はコードへのアクセスを前記システムコンポーネントに提供するステップと、を含む方法。
【請求項１１】
前記システムコンポーネントのための既に存続する前記静的データ及び／又はコードが、インストール動作の間に存続させられることを特徴とする請求項１０記載の方法。
【請求項１２】
更に、前記システムコンポーネントの初期化の一部として、前記システムコンポーネントにおける動的データを列挙するステップを含む請求項１０記載の方法。
【請求項１３】
前記静的データ及び／又はコードを前記システムコンポーネントに提供するステップが、前記静的データ及び／又はコードを不揮発性ストレージから揮発性メモリに送信するステップを含むことを特徴とする請求項１０記載の方法。
【請求項１４】
前記静的データ及び／又はコードへのアクセスを前記システムコンポーネントに提供するステップが、高速起動基盤環境のアプリケーションプログラミングインターフェースセットへのエントリポイントを前記システムコンポーネントに提供するステップと、高速起動動作を表示するフラグを設定するステップと、を含むことを特徴とする請求項１０記載の方法。
【請求項１５】
前記静的データへのアクセスを前記システムコンポーネントに提供するステップが、複数の起動フェーズの少なくとも２つのフェーズの間、前記システムコンポーネントを呼び出すステップを含むことを特徴とする請求項１０記載の方法。
【請求項１６】
計算機装置におけるシステムが、
高速起動基盤環境であって、
ａ）第１の時間において、システムコンポーネントのための静的データ及び／又はコードを存続する第１のメカニズムと、
ｂ）第１の時間の後で前記システム装置の起動の間である第２の時間において、前記静的データ及び／又はコードへのアクセスを前記システムコンポーネントに提供する第２のメカニズムを含むもの、を含む計算機装置システム。
【請求項１７】
前記第１のメカニズムが、前記静的データ及び／又はコードを存続するためのインターフェースセットを前記システムコンポーネントに提供するステップを含む前記システムコンポーネントを登録する、セットアップコンポーネントを含むことを特徴とする請求項１６記載のシステム。
【請求項１８】
前記第２のメカニズムが、前記インターフェースセット中の１つのインタフェースを介し、前記システムコンポーネントと通信するコードを含むことを特徴とする請求項１７記載のシステム。
【請求項１９】
前記高速起動基盤環境が、前記静的データを無効化するための第３のメカニズムを含むことを特徴とする請求項１７記載のシステム。
【請求項２０】
前記高速起動基盤環境が、静的データ及び／又はコードを前記システムコンポーネントから収集するためのバックグラウンドメカニズムを含むことを特徴とする請求項１７記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
モバイル装置が更に普及するにつれて、より長いバッテリー寿命及び即時アクセス容易性に対する需要が増している。マイクロソフトのＷｉｎｄｏｗｓ（登録商標）ベースのオペレーティングシステムのようなオペレーティングシステム全体の複雑性のために、その需要に応えることは大きな課題である。例えば、典型的なモバイルパーソナル計算機は、（例えばＡＣＰＩ標準規格に従うＳ５状態に対応する）停止状態から約２０〜４０秒以内で起動するのであって、疑いもなく即時アクセス可能な装置であると考えられていない。
【０００２】
計算機システムを更に短時間に動作復帰させるために、多様なメカニズムが試みられている。例えば、ＡＣＰＩのＳ３／スタンバイスリープ状態が定義されていて、システム状態がシステムメモリ内で実質的に停止（サスペンド）され、それによって妥当な即時起動性能が達成される。しかし、Ｓ３状態が電池の電力を消費し、それは多くのユーザ及び装置メーカにとって関心事であり、少なくともその理由によってＳ３状態を使用することは、多くのユーザのための十分な解決策にはならない。ユーザ及びメーカの中には、Ｓ３状態がまた、時間と共に悪化し得るという懸念もあって、それは多様な開発ソースから取得され得、重要な意味を持つリジュームコードパスの一部であり得る様々なドライバ及びサービスによって生じやすい。
【０００３】
Ｓ４／ハイバネーションのスリープ状態もまた定義されていて、電力供給停止時にデータもまた保持しながら、システムをいくらかでも更に短時間に起動できるように通常、システムメモリをハードディスクファイルに転送する。Ｓ４スリープ状態は、電力を全く必要としない利点を有するが、Ｓ３状態に対するのと同等の安定性及び潜在的なデータ損失の懸念の声を共有する。更に、Ｓ４リジュームは、平均すると未だに約１５秒を要し、これもまた「即時起動」の解決策としてほ考えられない。
【０００４】
電池で電力供給されないデスクトップの計算機システムであっても、迅速な電源投入体験をすることが大きな需要になっている。例えば、多くの計算機システムが娯楽を提供する方向に発展しているので、競合する計算機及び家庭用電化製品市場において、計算機製品を売る目的のために、特に家庭用計算機システムは、更に家庭用電化製品のように計算装置を機能させる必要性が増加する。例えば、前述のコールド起動のシーケンスのための２０秒以上の時間と異なり、典型的な家庭用電化製品装置は、電源を投入して数秒以内に機能的になり得る。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一般に、完全な停止状態からの更なる高速起動が、計算機システムに対して望まれている。そのような更なる高速起動は、他のタイプ（例えばＳ３及びＳ４）のリジューム動作に対し独立して優遇される必要があり、なぜならばそれらのスリープ状態が、いくつかのユーザシナリオにおいて重要であるシステム状態を保持するからである。
【課題を解決するための手段】
【０００６】
簡潔に言うと、本発明の種々の特徴は、システムコンポーネントのための静的データを存続（persisting）し、その後の装置の起動の間、静的データへのアクセスをそのシステムコンポーネントに提供することによって、普通に作動する高速起動メカニズムを目指すものである。例えば、セットアップ又はインストール後、１つ以上のコンポーネントの静的データ及び場合によってはコードを含む高速起動イメージが、不揮発性メモリから揮発性メモリ（例えばＲＡＭ）にリストアされ得、例えば、不揮発性メモリに起動コードパスを置くことは、回転媒体の比較的遅い回転時間を回避する利点を有していて、例えば典型的なハードディスクの回転時間は最大約５秒であり得る。その後の再起動時、静的データを存続されたシステムコンポーネントそれぞれは、それに対応する静的データへのアクセスを与えられ、それにより毎回の起動の間、データの多くが再び列挙される必要はないため、その後の再起動を更に高速にできる。最初の時間において、システムコンポーネントのための静的データ及び／又はコードを存続する第１のメカニズムと、第１の時間の後でシステム機器の起動の間である第２の時間において、静的データへのアクセスをシステムコンポーネントに提供する第２のメカニズムを含む高速起動基盤環境を例示する。高速起動基盤環境は、インターフェースセットを含み得、システムコンポーネント（クライアント）は、静的データ及び／又はコードを存続し、静的データへのアクセスを取得し、静的データを（例えば変更時）無効化できる。また、高速起動基盤環境は、システム起動などに続いて、静的データ及び／又はコードをシステムコンポーネントから収集するバックグラウンドメカニズムも使用できる。
【０００７】
図面に関連して捉えると、以下の詳細説明から他の利点が明らかになるだろう。
【０００８】
本発明は例によって示され、同様の参照番号が同様の要素を示す、以下に添付の図に限定されない。
【発明を実施するための最良の形態】
【０００９】
例示的な操作環境
図１は、本発明が実施され得る、最適な計算システム環境（１００）の一例を示す。計算システム環境（１００）は、最適な計算環境の一例に過ぎず、本発明の使用又は機能性の範囲に関して、いかなる制限も提示することを意図されていない。計算環境（１００）が、例示的な動作環境（１００）において示される任意の１つのコンポーネント又はコンポーネントの組み合わせに関連し、いかなる依存性も要求も有すると解釈するべきでない。
【００１０】
本発明は、多くの別の汎用又は特定用途の計算システム環境又は構成と共に作動する。本発明を用いて使用に適し得る周知の計算システム、環境及び／又は構成の例は、パーソナル計算機、サーバ計算機、携帯用又はラップトップ装置、タブレット装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電、ネットワークＰＣ、ミニコンピュータ、メインフレーム計算機、前述のシステム又は装置などのいくつかを含む分散計算環境を含むが、これらに限定されない。
【００１１】
本発明は、計算機によって実行されるプログラムモジュールなどの計算機実行可能命令の一般的な文脈で説明され得る。一般に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含み、特定のタスクを実行するか、又は特定の抽象データ型を実現する。本発明はまた、通信ネットワークを経由し、接続されるリモートプロセッシング装置によって、タスクを実行する分散計算環境においても実施され得る。分散計算環境においては、メモリ記憶装置を含むローカル及び／又はリモート計算機記憶媒体においてプログラムモジュールを配置できる。
【００１２】
図１を参照し、本発明を実施する例示的なシステムは、計算機（１１０）の形式の汎用計算装置を含む。計算機（１１０）のコンポーネントは、処理ユニット（１２０）、システムメモリ（１３０）及びシステムメモリを含む多様なシステムコンポーネントを処理ユニット（１２０）に接続するシステムバス（１２１）を含むがこれらに限定されない。システムバス（１２１）は、メモリバス又はメモリコントローラを含むいくつかの任意のタイプのバス構造、周辺機器用バス及び様々なバスアーキテクチャのうちいくつかを使用するローカルバスであり得る。制限ではなく例として、そのようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ機器に関する標準化団体（ＶＥＳＡ）ローカルバス及びメザニンバスとして知られる周辺機器相互接続（ＰＣＩ）バスを含む。
【００１３】
計算機（１１０）は一般に、様々な計算機可読媒体を含む。計算機可読媒体は、計算機（１１０）によってアクセスされ得る使用可能ないくつかの媒体であり得、揮発性及び不揮発性の双方の媒体及び取り外し可能及び取り外し不可能な双方の媒体を含む。制限ではなく例として、計算機可読媒体は、計算機記憶媒体及び通信媒体を含む。計算機記憶媒体は、計算機可読命令、データ構造、プログラムモジュール又は他のデータなどの情報の記憶に関する任意の方法又は技術にて実装される揮発性及び不揮発性の取り外し可能及び取り外し不可能な媒体を含む。計算機記憶媒体は、制限ではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又は他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置又は所望の情報をストアするために使用され得、計算機（１１０）によってアクセスされ得る任意の他の媒体を含む。通信媒体は一般に、搬送波又は別の移送メカニズムなどの変調データ信号で計算機可読命令、データ構造、プログラムモジュール又は他のデータを具現化したものであって、任意の情報伝達媒体を含む。語句「変調データ信号」は、１つ以上の特徴の組を有するか又は信号中の情報を符号化する方法によって変更された信号を意味する。制限ではなく例として、通信媒体は、有線ネットワーク又は直接有線接続のようなワイヤード媒体並びに音響、無線（ＲＦ）、赤外線及び他の無線媒体のようなワイヤレス媒体を含む。前述のうち任意の組み合わせもまた、計算機可読媒体の範囲内に含む必要がある。
【００１４】
システムメモリ（１３０）は、読み出し専用メモリ（ＲＯＭ）（１３１）及びランダムアクセスメモリ（ＲＡＭ）（１３２）などの揮発性及び／又は不揮発性メモリ形式の計算機記憶媒体を含む。基本入出力システム（ＢＩＯＳ）（１３３）は、起動の間など、計算機（１１０）の素子間の情報の送信を支援する基本ルーチンを含んでいて通常、ＲＯＭ（１３１）にストアされる。ＲＡＭ（１３２）は通常、データ及び／又はプログラムモジュールを含んでいて、処理ユニット（１２０）によって、即時アクセス可能及び／又は現在作動中である。制限ではなく例として、図１は、オペレーティングシステム（１３４）、アプリケーションプログラム（１３５）、他のプログラムモジュール（１３６）及びプログラムデータ（１３７）を示す。
【００１５】
計算機（１１０）はまた、別の取り外し可能／取り外し不可能、揮発性／不揮発性の計算機記憶媒体も含み得る。例に過ぎないが、図１は、取り外し不可能、不揮発性磁気媒体から読み出すか又は書き込むハードディスクドライブ（１４１）、取り外し可能、不揮発性磁気ディスク（１５２）から読み出すか又は書き込む磁気ディスクドライブ（１５１）、ＣＤ−ＲＯＭ又は他の光媒体のような取り外し可能、不揮発性光ディスク（１５６）から読み出すか又は書き込む光ディスクドライブ（１５５）を示す。例示的な動作環境において使用され得る別の取り外し可能／取り外し不可能、揮発性／不揮発性計算機記憶媒体は、限定しないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭ等を含む。ハードディスクドライブ（１４１）は通常、インタフェース（１４０）などの取り外し不可能メモリインタフェースを介し、システムバス（１２１）と接続され、磁気ディスクドライブ（１５１）及び光ディスクドライブ（１５５）は通常、インタフェース（１５０）などの取り外し可能メモリインタフェースによってシステムバス（１２１）と接続される。
【００１６】
前述の図１に例示されるドライブ及びそれらに関連する計算機記憶媒体は、計算機（１１０）のための計算機可読命令、データ構造、プログラムモジュール及び他のデータの記憶装置を提供する。図１において、例えばハードディスクドライブ（１４１）は、オペレーティングシステム（１４４）、アプリケーションプログラム（１４５）、他のプログラムモジュール（１４６）及びプログラムデータ（１４７）をストアするように示されている。これらのコンポーネントは、オペレーティングシステム（１３４）、アプリケーションプログラム（１３５）、他のプログラムモジュール（１３６）、及びプログラムデータ（１３７）と同等か又は異なるいずれかであり得ることに留意されたい。オペレーティングシステム（１４４）、アプリケーションプログラム（１４５）、他のプログラムモジュール（１４６）及びプログラムデータ（１４７）は、それらが異なる複製物であることを最小限示すように、本明細書においては異なる番号が与えられている。ユーザは、タブレット又は電子デジタイザ（１６４）、マイクロフォン（１６３）、キーボード（１６２）及び一般にマウス（１６１）、トラックボール又はタッチパッドとして呼ばれるポインティング装置などの入力装置を介し、計算機（１１０）にコマンド及び情報を入力できる。図１に表示されない別の入力装置は、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ又はその他を含み得る。これら及び他の入力装置は多くの場合、システムバスに接続されるユーザ入力インタフェース（１６０）を介し、処理ユニット（１２０）と接続されるが、パラレルポート、ゲームポート又はユニバーサルシリアルバス（ＵＳＢ）のような別のインタフェース及びバス構造によっても接続され得る。モニタ（１９１）又は別のタイプの表示装置もまた、ビデオインタフェース（１９０）などのインタフェースを介し、システムバス（１２１）に接続される。モニタ（１９１）もまた、タッチスクリーンパネル又はその他と一体化され得る。モニタ及び／又はタッチスクリーンパネルが、タブレットタイプのパーソナル計算機などの計算機装置（１１０）が組み込まれる筐体に、物理的に接続され得ることを留意されたい。追加すると、計算装置（１１０）などの計算機はまた、スピーカ（１９５）及びプリンタ（１９６）などの他の周辺出力装置も含み得、これらは出力周辺インタフェース（１９４）又はその他を介し接続され得る。
【００１７】
計算機（１１０）は、リモートコンピュータ（１８０）などの１つ以上のリモート計算機との論理的な接続を使用し、ネットワーク環境において作動できる。リモートコンピュータ（１８０）は、パーソナル計算機、サーバ、ルータ、ネットワークＰＣ、ピア装置又は他の一般的なネットワークノードであり得、図１に例示されたのはメモリ記憶装置（１８１）だけであるが、通常、計算機（１１０）に関連する前述の要素の多数又はすべてを含む。図１に示される論理的な接続は、ローカルエリアネットワーク（ＬＡＮ）（１７１）及び広域ネットワーク（ＷＡＮ）（１７３）を含むが、別のネットワークもまた含み得る。そのようなネットワーク環境は、オフィス、企業全体の計算機ネットワーク、イントラネット及びインターネットにおいて一般的である。
【００１８】
ＬＡＮネットワーク環境において使用されるとき、計算機（１１０）は、ネットワークインターフェース又はアダプタ（１７０）を経由し、ＬＡＮ（１７１）に接続される。ＷＡＮネットワーク環境において使用されるとき、計算機（１１０）は通常、インターネットなどのＷＡＮ（１７３）において通信を確立するためのモデム（１７２）又は別の手段を含む。内蔵又は外付けであり得るモデム（１７２）は、ユーザ入力インタフェース（１６０）又は別の適切なメカニズムを介し、システムバス（１２１）に接続され得る。ネットワーク環境においては、計算機（１１０）又はその一部に関連して表示されるプログラムモジュールは、リモートメモリ記憶装置にストアされ得る。制限ではなく例として、図１は、メモリ装置（１８１）に常駐するリモートアプリケーションプログラム（１８５）を示す。表示されたネットワーク接続が例示的であって、計算機間の通信リンクを確立する他の手段が使用され得ることが十分に理解されよう。
高速起動
本明細書に記載される技術の種々の特徴は、計算機装置を停止状態から短時間に起動する技術に方向付けられ、計算機装置を短時間に再起動することを含む。実装の一例においては、本技術の一部は、半導体不揮発性ＲＡＭ記憶装置からデータを読み出すことができ、特にディスクが停止状態から回転開始する必要がある場合、ディスクからデータをリトリーブするよりも高速である。しかし、理解されるように、本明細書に記載される高速起動技術は通常、ハードディスクから（現在の起動時間に対して）はるかに短時間に起動する体験も提供する。そのような本明細書に述べられるいくつかの例は、非限定的であって、本発明は一般にコンピューティングにおいて利益及び利点を提供する多様な方法が使用され得る。
【００１９】
オペレーティングシステム全体に対する毎回の起動時、計算機器は一般に、多くの同等な初期化を幾重にも実行する。反復されるこれらの初期化の中には、相対的に時間を必要とし得るものがある。本明細書に記載される高速起動メカニズムは、例えば、計算機器の初期セットアップの間、少なくとも初期化処理の１部を一度だけ実行させ、その後、その初期化状態の結果を不揮発性形式で存続することによって、時間を使用するこれらの初期化処理の数を減らすことを試みる。それらを毎回再計算するのでなく、むしろその後の起動において、これらの存続された状態を直ちにリストアすることによって、起動時間の大部分が除外される。
【００２０】
起動の間、使用されるコンポーネントは、動的データ及び静的データの双方を有することが留意されるべきであって、本明細書に使用される「静的」は、時折変更され得るが、起動の間は通常、変更されないデータを表わす。容易に正しく評価され得るように、動的な状態データをキャプチャし、リストアすることは、破損したシステムをもたらす。例えば、ファイルシステムは、クラスタビットマップのようなメタデータを含み、システムが起動され、使用されるとき、新しいファイルが生成され、古いファイルが削除され、既にキャプチャされたクラスタビットマップは、最新状態として不正になる。
【００２１】
一般に、本明細書に記載された高速起動技術によって、起動時間に作動するコンポーネントは、従来通り自己の動的データを列挙させる間、それらの静的データを保存し、リストアする。個々のコンポーネントは、何がそれらの静的及び動的な状態かを知っているので、高速起動プロシージャの間、コンポーネントはそれらの静的状態を識別し、単にそれらの静的状態のデータをリストアする間、動的初期化／動的状態のデータの列挙を実行できる。この様にして、遅い起動のシーケンスの間、発生する反復的な初期化の多くは排除される。
【００２２】
コンポーネントの中には、静的データを識別及び／又は保存するための記述されていないレガシーコンポーネントであり得るか、又は別の理由のために、所与の高速起動スキーマに関与しない選択をし得るものもある。関与と関与しないコンポーネントとの混合を可能にするために、高速起動を意識するそれらのコンポーネントだけが、ＡＰＩを呼び出すことによって関与するようなＡＰＩメカニズムが提供されるが、関与しないレガシーコンポーネントやその他は、提供される本機能性を無視する。
【００２３】
更にコンポーネントは、相互依存性を有し得るので、初期化は複数のパスで行われ、そのような複数フェーズの初期化は、Ｗｉｎｄｏｗｓ（登録商標）ベースのオペレーティングシステムにおいて既に構造化されている。例えば、ＮＴカーネルにおいては、（例えば、オブジェクト、セキュリティ、プロセス、ＰｎＰ、監視、カーネル、メモリ管理、レジストリなど）多様なカーネルコンポーネントは、異なる初期化フェーズにおいて呼び出される初期化のエントリポイントを有する。初期化フェーズそれぞれにおいては、コンポーネントは、以前のフェーズにおける別のコンポーネントの初期化の依存性に従って何を初期化すべきかを決定する。
【００２４】
初期化フェーズそれぞれにおいて高速起動に関与するために、コンポーネントは、その初期化のどれが時間がかかるか及び／又は初期化が１回、実行され、結果がセーブされ得るか否かを決定できる。この情報は、新しいコンポーネントがインストールされるときか、又は計算機オペレーティングシステム及びそのコンポーネントが初めてセットアップされるときなど、様々なときに高速起動基盤環境に対して提供され得る。この目的を達成するために、デバイスインストーラ又はその他が、高速起動の状態情報のためのカーネルコンポーネントを列挙し、不揮発性形式で状態情報をセーブするためにメモリマネージャ／ファイルシステムコンポーネントを呼び出す。
【００２５】
例えば、一般に図２に示されるように、カーネルコンポーネントそれぞれ（例えば（２０２１））は、オペレーティングシステムのセットアップの終わりに高速起動基盤環境（２０６）の（デバイスインストーラに関連するか又はそれを含む）セットアップコンポーネント（２０４）によって呼び出され得る。一実装においては、呼び出しは、例えば、アプリケーションプログラムインタフェース（ＡＰＩ）であるＡＰＩライブラリ（２１０）へのエントリポイント（単数又は複数）を特定するデータ（２０８）をコンポーネント（２０２１）に提供する。コンポーネント（２０２１）は、そのエントリポイントを介し、セーブされ得るコード及び／又は静的状態を含む記憶場所を特定でき、それによってこれらの記憶場所が、その後の高速起動セッション中にリストアされ得る。代替として、コンポーネント（２０２１）は、そのような呼び出しに応答し、（例えばコンポーネント（２０２１）によって理解されるデータ構造の）データを直接に提供できる。記憶場所及び／又はコード又はデータ自体は、（送信されるものとして）（２１２１）及び（存続するものとして）（２１４１）のようにラベル付けされる「静的データ」ブロックによって図２に示される。高速起動イメージを含む静的コード及び／又はデータ（２１４１）は、ＮＶＲＡＭのような不揮発性記憶装置（２１６）に維持されるか、又は代替として、ハードディスクのような別のタイプの記憶媒体の全部又は一部に維持され得る。
【００２６】
一旦、このデータが存続されると、その後の起動中、カーネルコンポーネントそれぞれが、初期化のために、例えば異なるフェーズにおいて呼び出されるとき、これらの記憶場所（又はデータ自体）が、コンポーネントに対して使用可能になる。結果として、関与するコンポーネントそれぞれの時間を必要とする初期化のうち少なくとも特定の部分が省略され得る。関与しないコンポーネントに対しては、従来の初期化は省略され得ず、それによってコンポーネントは、通常の長い起動と同等の時間を必要とすることに留意されたい。
【００２７】
一実装において、カーネルコンポーネントのための新しいインタフェース及び多様なコンポーネントにおけるいくつかの新しい支援用基盤環境を提供する。コード及び／又はデータ（又はコード／データ自体）を含むメモリブロックのリストを返答できるように、カーネルコンポーネントそれぞれを呼び出すことを許すための１つのカーネルコンポーネント・インタフェースが提供される。これらのメモリブロックは、不揮発性記憶装置（２１６）にセーブされ、現代の計算機装置のハードディスク又はＮＶＲＡＭ記憶装置又は将来の計算機装置の同様のものに高速起動状態イメージファイルを含み得る。
【００２８】
高速起動状態イメージを構築するために、オペレーティングシステムのセットアッププログラムによって開始されるとき、デバイスインストーラによって、静的データを存続するためのこのインタフェースが、呼び出され得る。本インタフェースはまた、新しいコンポーネントがインストールされるときは常に呼び出され得る。関与するコンポーネントそれぞれの役割は、その後の高速起動の起動時間に有益にするために、どのデータがセーブされる必要があるかを決定することである。進展の間、例えば関与するコンポーネントそれぞれは、起動のボトルネックを特定するために、その初期化コードパスに関するコードプロファイリングを実行できる。
【００２９】
例えばフェーズ毎を基本として存続されるようにコンポーネントが依頼されるメモリブロックのリストを、コンポーネントが受信できるための別のインタフェースが提供される。このインタフェースは、例えばＷｉｎｄｏｗｓ（登録商標）ベースのオペレーティングシステムにおいて、既に存在する既存のフェーズ初期化インタフェースの修正版に対応可能なことを留意されたい。静的状態データをリトリーブする能力によって、コンポーネントは、時間を必要とする初期化部分のいくつかを省略できる。支援インタフェースもまた提供されていて、それによってコンポーネントは、高速起動が進行中かどうかを見出し得る。このインタフェースは、コンポーネントが、セーブされた高速起動状態情報からキャッシュされた情報をいつ使用するか又は使用しないかを知り得るように提供される。更に、メモリマネージャコンポーネントなどのカーネルコンポーネント及び場合によっては他のコンポーネントは、高速起動状態のメモリブロックの識別及び／又はセーブを容易にする新規のユーティリティＡＰＩをエキスポートできる。例えば、高速起動状態情報を含むメモリ割当てにタグ付け可能なように、既存のメモリ割当てＡＰＩが拡張され得る。
【００３０】
図３は、不揮発性記憶装置において存続するデータが、その後の高速起動動作において使用される一例を示す。一般に高速起動の間、関与するコンポーネントが呼ばれるとき、コンポーネントは、（例えば、ハードディスク起動のためのローダコンポーネント（３１９）又はＮＶＲＡＭ起動のためのＢＩＯＳによって、メモリにセットされる）高速起動フラグ（３１８）を認識する。コンポーネント（例えば（２０２１））は次に、現在の起動フェーズに関する以前にキャッシュされたその状態データを受信するために、高速起動基盤環境（２０６）のＡＰＩライブラリ（２１０）を呼び出す。コンポーネントが解凍されるか又は不揮発性記憶装置（２１６）からＲＡＭ（１３２）に別の方法で送信されたその静的データへのポインタを実際に受信できることに留意されたい。例えば、コンポーネントの多様な静的データのいくつか又はすべては、高速起動イメージとしてストアされ得、スタートアップ時、解凍されるか又は別の方法でＲＡＭ（１３２）に送信され、コンポーネントそれぞれはＡＰＩ呼び出しを介し、それに対するアクセスを与えられる。
【００３１】
コンポーネントそれぞれ（例えば（２０２１）〜（２０２ｎ））が、１フェーズ毎に一度など順に呼び出され、こうして関与するコンポーネントは、それらの静的データへのアクセスをリトリーブし、それらの動的データを列挙し得る。不揮発性記憶装置（２１６）からのリトリーブ時、コンポーネント（２０２１）によって、アクセスされるＲＡＭ（１３２）のコンポーネント（２０２１）のフェーズ１に関するデータ（３１４１）を介し、これが図３に一般的に示される。高速起動基盤環境コード（３２０）は、ＡＰＩライブラリ（２１０）に対する呼び出し時、そのリトリーブを処理できる。そのような高速起動を意識するコンポーネントは「このフェーズに対して必要とされないデータ」のような応答を返し得るが、高速起動スキームに関与しない（例えばレガシー）コンポーネントは、特定のフェーズに関するキャッシュされたデータを有しないコンポーネントと同様にコールバックしない。
【００３２】
図４Ａに移ると、（典型的には）その静的状態が変更されるので、それによってコンポーネント（例えば、（２０２１））が、そのセーブされた状態イメージのいくつか又はすべてを無効化することを高速起動基盤環境コード（２０６）に通知できるＡＰＩライブラリ（２１０）における別のインタフェースの例が提供される。例えばユーザは、コントロールパネル及び／又はレジストリとの対話を介し、コンポーネントの標準的な静的データを変更できる。コンポーネント（２０２１）は、そのデータに対する変更を検出する。一実装においては、無効化されたデータ（４３０）が返答されず、それによってコンポーネント（２０２１）は、次の起動時、低速の起動動作においてあるように動的データと同様に静的データも列挙することを必要とし、再び有効なデータをキャッシュする。
【００３３】
代わりに図４Ｂに示されるように、送信される新しい静的状態データ（４４６１）及び存続する（状態データ４４８１）により、キャッシュされた高速起動データの無効化は、（例えば図５の）サイレント／バックグラウンドのスレッド（５６０）などを介して状態の再キャプチャ動作を開始でき、これは例えば、前述のようなオペレーティングシステムのセットアッププロセスによって実行される状態キャプチャと同様に作動可能である。任意の選択肢においては、通常静的であるデータに対する変更が発生したとき、以前にキャッシュされた状態データのうち少なくとも変更された部分はもはや使用されない。
【００３４】
図５に一般に示されるそのようなバックグラウンド処理は、コンポーネントが変更を検出したときに実行される必要があるだけでなく、それよりもむしろ別の時にも実行され得る。現在の起動時間の一部は、例えばユーザによって加えられ得る装置（例えばＩＤＥハードドライブ）を検索するための遅れによるものであって、（２つのＩＤＥチャンネルを有する計算機は、設置される１〜４個の装置を有し得、）そのような装置それぞれはクエリ時、応答するために約１秒が加えられる。しかし、内蔵型ドライブは、多くの場合、追加又は移動されず、その結果、起動の間、応答するための機会をそれぞれ与えるよりもむしろ、その後のバックグラウンド動作（５６０）によって任意の変更が検出され得る。
【００３５】
更に、コンポーネントは適切に記述されないこともあり得、またその静的データに対する変更も正しく検出しないこともあり得る。コンポーネントそれぞれが、その静的データを再列挙するように（例えばランダム又はラウンドロビンで）時折リクエストするバックグラウンドスレッド／処理（５６０）（図５）は、見逃された変化によるデータ破損を回避するために使用される。更に、コンポーネントのいくつか又はすべてが、高速起動の代わりに、遅い起動の全列挙を時折被ることがあり得、静的データの不正が疑われる場合、例えば、コンポーネントの失敗から変更されたデータを無効化にするために、ユーザ又は（ユーティリティなどの）他のメカニズムが遅い起動をリクエストできる。
【００３６】
前述のように、ＮＶＲＡＭなどいくつかの形式の半導体不揮発性記憶装置に高速起動状態情報をストアできる。そのような装置に対しては、例えばオペレーティングシステムがコントロールを取得する前にＢＩＯＳが、ＮＶＲＡＭから主記憶装置に必要とされるあらゆる高速起動状態情報をどのようにリトリーブし、リストアするかを指定するための新規の標準ＢＩＯＳインタフェースが確立され得る。
【００３７】
図６は、ハードドライブ上のファイルとしてストアされた高速起動の状態イメージを有するシステムと、ＮＶＲＡＭにストアされた高速起動の状態イメージを有する新しいシステムとの間のコードパスの相違の一例を示す。計算装置（例えばそのＢＩＯＳ）は、それがＮＶＲＡＭ又はディスクのいずれから起動しているかを知り得ることに留意されたい。
【００３８】
ステップ（６０２）は、ハードディスクの起動を示し、ローダのプロセス、例えばＮＴＬＤＲをロードして実行することによって開始する。ステップ（６０４）において、ローダは、有効なハイバネーションファイルをチェックし、存在する場合、（ＡＣＰＩのＳ４スリープ状態の）ハイバネーションからリジュームする。存在しない場合、ローダは、存続する高速起動イメージの存在をチェックするステップ（６０８）に続く。
【００３９】
ステップ（６０８）において見出されない場合、システムは低速（標準時間）の起動を実行する。前述のようなバックグラウンド動作において、関与するコンポーネントからの高速起動情報の取得などによって、次回高速起動することがまだ可能なことに留意されたい。例えばこれは、いくつかの理由のために高速起動イメージが削除された場合に生じ得る。
【００４０】
代わりにステップ（６０８）において、起動ローダプロセスが、高速起動イメージを探し、見出した場合、そのイメージをメモリにロードするために、例えばＢＩＯＳコールを使用してその高速起動状態情報をリストアする。
【００４１】
ステップ（６１４）は、ＲＡＭ（１３２）の最終的な場所にイメージを解凍（又は送信）することを示す。少なくともそれらの永続的記憶装置のいくつかとしてＮＶＲＡＭを有する将来の機器に対してＢＩＯＳは、ステップ（６０２）〜（６１０）を必要とせずにロードを実行するために、ステップ（６１２）と（６１４）とを実行することに留意されたい。ステップ（６１６）において、高速起動コード（例えばディスパッチャ）は次に、図３を参照し一般に前述したように、それを初期化するためのシステムコンポーネントそれぞれを呼び出す。
【００４２】
理論的には、ＮＶＲＡＭにストアされる高速起動状態イメージ及び関連するカーネルコンポーネントの大部分又はすべてを使用すると、停止状態からの高速起動時間は、（通常イメージをＮＶＲＡＭからリストアするための時間にＳ３リジューム時間と追加的な動的状態初期化を加えた）Ｓ３リジューム時間に近づき得る。既存技術を使用すると、（コンテンツ全体をＲＡＭへリトリーブするのに１秒未満を要するＰＣＩバス上に直接ある６４ＭＢのＮＶＲＡＭと仮定し、）これはおよそ５秒であり得る。
【００４３】
本発明は、様々な修正及び代替構造を受け入れられる余地があるが、特定の本発明の例示された実施形態を図面に表示し、詳細に前述した。しかし、本発明を開示された特定の形式に制限するという意図はないことが理解されるべきであって、それとは逆に意図することは、本発明の趣旨と範囲内に納まる全ての修正、代替構造及び同等物を本発明が含むということである。
【図面の簡単な説明】
【００４４】
【図１】本発明の様々な特徴が組み込まれ得る汎用計算環境の実例を示す。
【図２】例えば、システムコンポーネントのセットアップの間、静的データを存続するためのアーキテクチャの一例を示すブロック図である。
【図３】例えば、起動動作の間、静的データへのアクセスをシステムコンポーネントに提供するためのアーキテクチャの一例を示すブロック図である。
【図４Ａ】変更時、コンポーネントの静的データを無効化するためのアーキテクチャの一例を示すブロック図である。
【図４Ｂ】変更時、コンポーネントの変化に続く静的データを変更するためのアーキテクチャの一例を示すブロック図である。
【図５】バックグラウンド動作の間、システムコンポーネントの静的データを取得するためのアーキテクチャの一例を示すブロック図である。
【図６】ハードディスク又はＮＶＲＡＭからの高速起動プロセスの一例を示すブロック図である。
【図１】
2009512020.tif 000003
【図２】
2009512020.tif 000004
【図３】
2009512020.tif 000005
【図４Ａ】
2009512020.tif 000006
【図４Ｂ】
2009512020.tif 000007
【図５】
2009512020.tif 000008
【図６】
2009512020.tif 000009
【国際調査報告】
2009512020.tif 000010
2009512020.tif 000011