[0028]本発明者らは、コンピューティングデバイスのシャットダウンおよび/またはスタートアップシーケンスの部分とともに休止状態ファイルを使用することによって、コンピューティングデバイスのユーザーのエクスペリエンスが改善され得ることを認識し、理解している。そのようなファイルは、コンピューティングデバイスのパフォーマンスがユーザーの期待と一致するように、シャットダウン時に選択的に作成され、スタートアップ時に選択的に使用され得る。休止状態ファイルが作成されるまたは使用されるときでも、従来のシャットダウンまたはスタートアップシーケンスの部分が実行され得る。
[0029]ユーザーの期待と一致するコンピューティングデバイスの動作を提供するために、休止状態は、コンピューティングデバイスをターゲット状態に置く、コンピューティングデバイスの従来のシャットダウンシーケンスの部分とともに使用され得る。これらの部分は、シャットダウンコマンドを受け取ると、ユーザーセッションをブレークダウンする動作を含み得る。さらに、シャットダウンコマンドに応答することの一部として、ユーザーセッションがブレークダウンされた後で揮発性メモリーに保持されるが、不揮発性メモリーに保持されることが意図された情報は、不揮発性メモリーに移動する。例えば、従来のシャットダウンの間に実行されるものに近似した、従来のキャッシュフラッシュ動作が実行され得る。
[0030]逆に、スタートアップコマンドの処理時に、休止状態からの再開は、スタートアップシーケンスの部分と一緒に実行され得る。そのシーケンスは、オペレーティングシステムが読み込まれ、動作の準備ができた後に行われるスタートアップシーケンスの任意の部分を含み得る。スタートアップシーケンスのその部分は、例えば、ユーザーログオンおよびアプリケーションの読み込みを含み得る。
[0031]さらに、ユーザーの期待と一致した動作を提供するために、シャットダウンまたはスタートアップの一部としての休止状態ファイルの作成または使用は、動的に判定されたイベントを条件とすることができる。次にコンポーネントが読み込まれるまで、構成変更が適用されないように、コンポーネントが動作セッションの間に再構成されたシナリオでは、休止状態ファイルを作成することができない。コンピューターは、ユーザーからの次のスタートアップコマンドに応答して、休止状態ファイルが利用可能でないことを検出し、オペレーティングシステムを再度読み込むことによってターゲット状態を作成する。あるいはまたはこれに加えて、オペレーティングシステムは、他のコンポーネントが登録して、効果的に機能するために完全シャットダウンまたはスタートアップを必要とすることを示すことができるインターフェイスを提供し得る。実行コンポーネントが登録されると、完全シャットダウンシーケンスはシャットダウンコマンドに応答して実行され得る。
[0032]さらに、ユーザーの期待と一致して動作するために、いくつかの実施形態では、従来のシャットダウンを実行するか、またはターゲット状態が作成され、次いで休止状態プロセスが実行される修正されたシャットダウンを実行するかをユーザーが指定することができるユーザーインターフェイスが提供され得る。そのようなユーザーインターフェイスは、従来のシャットダウンおよび休止状態を組み込む修正されたシャットダウンシーケンスのための別個のオプションを表示し得る。コンピューティングデバイスは、従来のシャットダウンコマンドとしてラベル付けされた入力に応答して、修正されたシャットダウンシーケンスを条件付きで呼び出すことができる。別個のコマンドオプションは、ユーザーが従来のシャットダウンを指定することができるインターフェイスを介して提供され得る。
[0033]次に図1を参照すると、完全スタートアップシーケンスの機能ブロック図が示されている。図1は、本発明の実施形態に従って動作するように適合され得るコンピューティングデバイス100の機能ブロック図を示す。
[0034]この例では、コンピューティングデバイス100は、揮発性メモリー120を含む。揮発性メモリー120は、DRAMまたは任意の他の適切なメモリーコンポーネントを使用して実施され得る。コンピューティングデバイス100によって実行されるスタートアップシーケンスは、コンピューティングデバイス100が当技術分野において知られているようなコンピューティング動作を実行することができる状態情報を揮発性メモリー120内で作成することを含む。
[0035]この例では、その状態情報は、ユーザー状態情報130およびシステム状態情報140の2つの部分を有するものとして図示されている。システム状態情報140は、概して任意のユーザーによる動作のためにコンピューティングデバイス100を構成する状態情報を表す。対照的に、ユーザー状態情報130は、特定のユーザーによる動作のためにコンピューティングデバイス100を動作させ、構成するときに生成され得る状態情報を表す。
[0036]システム状態情報140およびユーザー状態情報130は、当技術分野において知られているようなスタートアッププロセスに従って、揮発性メモリー120で作成され得る。図1は、簡略化された概念方法で、従来のスタートアップシーケンスにおけるステップを示す。そのようなシーケンスは、例えば、コンピューティングデバイス100の電源が入れられたときか、またはスタートアップを示す他のコマンドが提供されたときに開始され得る。
[0037]コンピューティングデバイス100は、当技術分野において知られているようなコンポーネントを含み得る。これらのコンポーネントは、プロセッサ110を含み得る。プロセッサ110は、マイクロプロセッサまたは当技術分野において知られているようなマイクロプロセッサもしくはプロセッサコアの集合体として実施され得る。本明細書において記載される動作は、ソフトウェア命令を実行するプロセッサ110の結果であり得る。
[0038]加えて、コンピューティングデバイス100は、複数のタイプのコンピューター記憶媒体を組み込むことができる。この場合、これらのタイプは揮発性メモリーおよび不揮発性メモリーを含む。この例では、揮発性メモリー120が示されている。様々なタイプの情報が不揮発性メモリー150および152に保存される。ブートメモリー154も不揮発性メモリーである。異なる物理デバイスを使用して、不揮発性メモリー150および152ならびにブートメモリー154を実施することができる。例えば、不揮発性メモリー150は、回転式ハードディスクまたはソリッドステートドライブなどのディスクであってもよい。不揮発性メモリー152は同様にディスクであってもよく、不揮発性メモリー150を実施するために使用される同じディスク、同じディスク上の異なるパーティションまたは全く異なるディスクであってもよい。
[0039]不揮発性メモリー154は同じように、不揮発性メモリー150および152を実施するために使用される同じデバイスの一部分であってもよい。ただし、示された実施形態では、不揮発性メモリー154は、プロセッサ110に接続された不揮発性メモリーチップであってもよい。したがって、図1はメモリーアーキテクチャの単なる一例を表しており、任意の適切なメモリーアーキテクチャが使用され得ることを理解されたい。
[0040]この例では、不揮発性メモリーおよび揮発性メモリーが示されている。そのような構成は、従来のコンピューターアーキテクチャを表す。ただし、この特定のアーキテクチャが使用されることは要件ではない。もっと正確に言えば、揮発性メモリー120は、動作メモリーの例である。コンピューティングデバイス100の動作の間、プロセッサ110は主にソフトウェアおよびデータにアクセスして、揮発性メモリー120から動作を実行することができる。このメモリーは、動作がプロセッサ110によって迅速に実行され得るように、比較的高速とすることができる。
[0041]対照的に、不揮発性メモリー150および152などの不揮発性メモリーは、大量のデータを保存することが可能であってもよいが、揮発性メモリー120よりも動作が遅いことがある。概して、そのような不揮発性メモリーに情報を保存するコストは、揮発性メモリー120に情報を保存するコストに比べて比較的少額であり得る。コスト効率が良く、しかも高速の動作を実現するために、不揮発性メモリーと揮発性メモリーとの間で情報を転送することができる。これらの転送は、コンピューティングデバイス100の所望の動作をサポートする状態を揮発性メモリー120内に作成するために実行される。
[0042]コンピューターシステムの他のコンポーネントが存在し得るが、簡潔にするために省略されている。他の実施形態において存在し得るコンポーネントのさらなる詳細は、図8に関連して以下に提供される。しかし、図1における簡略化された例示は、スタートアッププロセスの説明に適したものである。
[0043]スタートアップコマンドに応答して、プロセッサ110はブートメモリー154における命令にアクセスし、命令を実行し得る。ブートメモリー154は、プロセッサ110に、不揮発性メモリー150および152に保存されたソフトウェアおよびデータに基づいてこれらのメモリーにアクセスさせ、適切な状態を揮発性メモリー120に生成させる命令を含み得る。
[0044]ブートメモリー154における命令は、プロセッサ110に、不揮発性メモリー150からソフトウェアを読み込ませることができる。ソフトウェアコンポーネントを読み込むことの一部として、プロセッサ110はソフトウェア命令を揮発性メモリー120に転送することができ、揮発性メモリー120からそのソフトウェアが実行され得る。ただし、ソフトウェアを読み込むことは、いくつかのコンポーネントの実行を含む、他の動作を含み得る。
[0045]揮発性メモリー120からのいくつかのコンポーネントの実行は、ソフトウェアが保存されている状態から、ソフトウェアが使用されるかソフトウェアが他のコンポーネントを不揮発性メモリーから揮発性メモリー120に転送させる状態にソフトウェアを変換することができる。ソフトウェアを読み込むプロセスでは、プロセッサ110は、不揮発性メモリー152に保存されたデータまたは他の情報に基づいて、ソフトウェアを構成することができる。その情報は、例えば、コンピューティングデバイス100にインストールされたハードウェアコンポーネントについての情報を含み得る。したがって、図1は、スタートアッププロセスの第2および第3のステップが、不揮発性メモリー150からソフトウェアを取得し、不揮発性メモリー152からデータを取得することであり得ることを示す。
[0046]このプロセスで読み込まれた1番目のソフトウェアは、システム状態140を確立することができる。最初に読み込まれたソフトウェアは、システム状態140に、ハードウェアコンポーネントを制御するドライバー146を追加することができる。ドライバーを読み込む前に、コンピューティングデバイス100に関連するハードウェアコンポーネントを識別することができ、適切なドライバーを選択することができる。ドライバーがインストールされると、オペレーティングシステムサービス、および他のコンポーネントは、ドライバーを介して制御されるデバイスと対話することができる。
[0047]次いで、オペレーティングシステムサービス142が読み込まれ得る。そのようなサービスの一例は、ファイルマネージャー144である。ファイルマネージャー144は揮発性メモリーにデータをまとめることができ、その結果として、オペレーティングシステムサービスおよびアプリケーションを実行すると、ファイルに従ってまとめられた、不揮発性メモリーにおけるデータにアクセスすることができる。オペレーティングシステムによって提供される他のサービスは、ユーザーインターフェイスと対話すること、ネットワーク接続を確立すること、または情報をプリンターに送ることを含み得る。ただし、特定のオペレーティングシステムサービス142は本発明を制限するものではない。
[0048]加えて、システム状態140を確立するプロセスの間、プロセッサ110はシステム状態データ148を保存し得る。そのようなデータは、不揮発性メモリー152などの不揮発性メモリーからコピーされ得るか、またはソフトウェアコンポーネントの実行によって生成され得る。データは、例えば、プロセッサ110がコンピューティングデバイス100内にインストールされたデバイスを発見する命令を実行するときに生成され得る。具体的な例として、特定のネットワークインターフェイスカードを発見すると、プロセッサ110は、システム状態データ148の一部として、ネットワークインターフェイスカードのタイプまたは機能を記録することができる。次いで、このデータはコンピューティングデバイスの動作の間に使用されて、ネットワークインターフェイスカードとの対話を制御し得る。ただし、システム状態データ148として保存された特定のデータは本発明に不可欠なものではないことを理解されたい。
[0049]特定のオペレーティングシステムサービス142およびシステム状態情報140で作成されるシステム状態データ148にかかわらず、そのシステム状態情報140が作成されると、コンピューティングデバイス100はユーザーによる動作の準備ができ得る。したがって、スタートアップシーケンスは、時としてユーザーログオンと呼ばれるプロセスを続けることができる。ユーザーログオンの一部として、特定のユーザーを識別することができ、さらなる状態情報を揮発性メモリー120に作成して、コンピューティングデバイス100がそのユーザーのための動作を実行することを可能にすることができる。この例では、ユーザー状態情報130は、アプリケーション命令132およびユーザー状態データ134を含むものとして示されている。
[0050]動作システムコンポーネントを表す命令およびシステム状態を表すデータと同様に、アプリケーション命令132は、揮発性メモリー150に保存されたソフトウェアに基づいて、メモリーに読み込まれ得る。ただし、ソフトウェアを読み込むプロセスは、ソフトウェアまたはコンピューティングデバイスを動作のために適切に構成する機能を実行することを必要とし得る。その構成は、システム状態データ148またはユーザー状態データ134に依存し得る。
[0051]単なる一例として、Webブラウザーを実施するアプリケーション命令を読み込むと、プロセッサ110は、不揮発性メモリー152またはユーザー状態データ134のいずれかから、ユーザーデータを表す情報にアクセスすることができ、この情報は、ユーザーが「お気に入り」として識別した特定のWebサイトを識別する。この例では、ユーザー状態データ130を確立すると、ユーザー嗜好に従ってWebブラウザーを実行するように構成し、このことは、コンピューティングデバイス100にログオンしている特定のユーザーに対してカスタマイズされたお気に入りのリストを表示することを含む。
[0052]ユーザーログオンが完了すると、ユーザーは次いで、コンピューティングデバイス100と対話することができる。これらの対話は、より多くのソフトウェアが読み込まれることまたはいくつかの読み込まれたアプリケーションが閉じられることをもたらし得る。加えて、ユーザー対話は、パラメーターを設定するか、またはユーザー状態130またはシステム状態140のいずれかを変更することができる他のアクションをとることができる。これらの対話は、ユーザーがセッションを終了する意図を示すコマンドを入力するまで続き得る。
[0053]セッションは、複数の方法のうちの1つで終了され得る。例えば、ユーザーがコンピューティングデバイス100との対話のセッションを完了すると、ユーザーはコンピューティングデバイス100をログオフおよび/またはシャットダウンすることができる。ログオフはユーザーセッションがブレークダウンされることをもたらし、その結果として、ユーザー状態情報130はもはやメモリー120で利用することができなくなる。ログオフシーケンスの一部は、ユーザー固有の設定をシステム状態140から削除することを必要とし得る。このようにして、第2のユーザーは、前のユーザーに影響されることなく、または前のユーザーによって生成された状態情報にアクセスすることが可能になることなく、コンピューティングデバイス100にログオンすることができる。この結果を実現するための動作は、時として、ユーザーセッションのブレークダウンとして説明され得る。
[0054]メモリー120への電源を維持することができるので、システム状態140はログオフの後に保持され得る。対照的に、シャットダウンは、ユーザー状態130およびシステム状態140の両方が揮発性メモリー120から削除されることをもたらし得る。揮発性メモリー120への電源が切られるので、シャットダウンシーケンスの終了時の揮発性メモリー120におけるいかなる情報も失われる。したがって、その状態を再作成する必要がある任意の情報は、まだ不揮発性メモリーに保存されていない場合、不揮発性メモリーに移動し得る。
[0055]不揮発性メモリーから生成された任意の情報を返す必要がないので、ログオフおよび/またはシャットダウンシーケンスは必ずしもスタートアップシーケンスの逆ではない。その同じ情報を、その後のスタートアップ時に再び生成することができる。しかし、セッションの間に動的に生成され、不揮発性メモリーにおける情報から再作成することができないユーザー状態130の部分は、ログオフまたはシャットダウン動作の一部として、不揮発性メモリーに記録され得る。同様に、シャットダウン時に、スタートアップシーケンスの再実行時に再作成することができないシステム状態データ148の部分は、シャットダウンシーケンスの一部として、不揮発性メモリーに転送され得る。
[0056]一例として、システム状態データ148は、不揮発性メモリー152に保存されたデータ項目の作業コピーとして働くことが意図されたキャッシュを含み得る。キャッシュは、不揮発性メモリーに保持されるべき情報のコピーを揮発性メモリーにおいて確立することによって、コンピューティングデバイス100の動作を速める。より高速の揮発性メモリーロケーションにおいて情報を読み取ることまたは書き込むことは、不揮発性メモリーにおいてその同じデータにアクセスすることに比べて、コンピューティングデバイスの動作を速める。
[0057]揮発性メモリーにおけるデータのコピーが変更されると、そのコピーはもはや不揮発性メモリーにおける対応するデータと一致しない。キャッシュにおけるデータは「ダーティ」であると言われる。不揮発性メモリーをキャッシュにおけるコピーと同期させ続けるために、ダーティデータは時々不揮発性メモリーにコピーされる。通常、ダーティデータは、コンピューターが他の点でビジーでないときにコピーバックされる。
[0058]ただし、ダーティデータのコピーが遅延すると、シャットダウン時に、キャッシュにおけるデータが不揮発性メモリーにおけるデータと一致しないという可能性を生み出す。不一致を回避するために、コンピューティングデバイス100をシャットダウンする前に、時としてダーティデータをフラッシュすると呼ばれる動作が実行され得る。この動作の間に、ダーティデータは不揮発性記憶装置にコピーされる。
[0059]図1に示されるスタートアップシーケンスは、ユーザーによる動作のためにコンピューティングデバイス100を構成するので望ましいが、スタートアップシーケンスは、場合によっては、フラストレーションの原因となることがある。ユーザーによって望まれるオペレーティングシステムおよびアプリケーションは、数千または数万ものコンポーネントを集合的に含み得る。したがって、スタートアップシーケンスは、不揮発性メモリー150および152からの複数の読取り動作を必要とし得る。概して、これらのメモリーは動作が遅いので、全体的なプロセスは比較的遅くなり得る。加えて、スタートアップシーケンスは、記憶装置に関連する動作以外の時間のかかる動作を必要とし得る。例えば、CPUによる計算またはデバイス初期化にさらなる時間が費やされ得る。
[0060]図2は、揮発性メモリーに状態情報を作成するための代替手法を示す。図2は、状態情報が休止状態シーケンスからの再開の一部として揮発性メモリー120に作成される動作のシーケンスの間のコンピューティングデバイス100を示す。
[0061]休止状態は、状態情報を揮発性メモリーから不揮発性メモリーにコピーすることによって作成され得る動作モードである。そのような状態情報は任意の適切な方法でまとめられ得る。図2に示される実施形態では、その状態情報は、不揮発性メモリー152における休止状態ファイル210に保存されているものとしてとして示されている。休止状態の間、プロセッサ110は、ユーザー状態情報130およびシステム状態情報140を含む状態情報を休止状態ファイル210にコピーすることができる。次いで、コンピューターシステム100のコンポーネントのすべてまたは一部分への電源を切ることによって、休止状態モードに入る。電源が切られると、揮発性メモリー120における状態情報が失われる。しかし、状態情報は、休止状態からの再開時に休止状態ファイルを揮発性メモリーにコピーすることによって、再作成され得る。
[0062]したがって、図2は、休止状態シーケンスからの再開が、ブートメモリー154に保存された命令にアクセスするプロセッサ110によって、図1に示されるスタートアップシーケンスと同様に開始し得ることを示す。これらの命令は、プロセッサ110に休止状態ファイル210の存在をチェックさせる。この例では、休止状態ファイル210を検出すると、プロセッサ110は休止状態ファイル210の内容を揮発性メモリー120にコピーする。このコピーは、直接コピーを必要とし得るか、またはファイルを展開するなどの、情報がコピーされるときに何らかの方法で情報を変換するための処理を必要とし得る。処理の一部として処理が実行されるかどうかにかかわらず、最終結果は状態情報を再保存することになる。状態情報が再保存されると、ユーザーは、休止状態時に中断されていたコンピューティングセッションを再開することができる。システム状態データ148およびユーザー状態データ134はいずれも、揮発性メモリー120に戻される。加えて、アプリケーション132、オペレーティングシステムサービス142およびドライバー146が同じように揮発性メモリー120に戻され、実行の準備ができる。
[0063]休止状態からの再開は、図1に関連して示される完全スタートアップシーケンスを実行することよりも高速であることが多い。休止状態からの再開および完全スタートアップの間に、同じ量の情報が最終的に揮発性メモリー120に置かれ得るが、ファイルからその情報を単にコピーすることは、ソフトウェアおよび構成データを読み込むことによって情報を生成することよりも高速であり得る。
[0064]しかし、休止状態モードに入り、次いで、休止状態から再開することは、必ずしも、シャットダウンに次いでスタートアップシーケンスを実行することの適切な代替ではない。出願者らは、ユーザーコマンドに応答して休止状態を実行して、コンピューティングデバイスをシャットダウンすること、およびその後にユーザーからのコマンドに応答して休止状態から再開して、コンピューティングデバイスをスタートアップすることは、ユーザーの期待に応えるコンピューティングデバイスの動作をもたらさないことがあることを認識し、理解している。
[0065]本発明者らは、既存のユーザーの期待を妨害することなく、より高速の動作エクスペリエンスを提供するための方法を特定した。図3は、コンピューティングデバイス100が休止状態をシャットダウンシーケンスに条件付きで組み込むことができる機能ブロック図を示す。加えて、コンピューティングデバイスは、休止状態からの再開をスタートアップシーケンスに条件付きで組み込むことができる。
[0066]図3に示される実施形態では、コンピューティングデバイス100は、不揮発性メモリー152にコピーされた状態情報を含むように示されている。この実施形態では、状態情報は休止状態ファイル310として書式設定される。休止状態ファイル310は、当技術分野において知られているような休止状態ファイルの形式であってもよい。ただし、任意の適切な形式が状態情報を不揮発性メモリーに保存するために使用され得ることを理解されたい。
[0067]休止状態ファイル210に保存された情報とは対照的に、休止状態ファイル310はシステム状態140を含む。ユーザー状態130を休止状態ファイル310の一部として保存する必要はないが、いくつかの実施形態では、ユーザー状態の部分が保存され得る。したがって、ユーザーがスタートアップコマンドをコンピューティングデバイス100に供給するとき、プロセッサ110は、図2に示される動作モードで行われる命令と同様の、ブートメモリー154からの命令の実行を開始し得る。休止状態ファイル310の存在を検出すると、プロセッサ110は休止状態ファイル310の内容を揮発性メモリー120にコピーすることができる。このコピーは、揮発性メモリー120にシステム状態140を再作成する。
[0068]この状態は、オペレーティングシステムソフトウェアが読み込まれた後であるが、ユーザーログオンが行われる前の、図1に示されるスタートアップシーケンスの間のコンピューティングデバイス100の状態に近似し得る。したがって、揮発性メモリー120における状態情報の作成を完了するために、プロセッサ110は、システム状態が作成された後に行われる、図1に関連して上記に記載されたスタートアップシーケンスのステップを実行することができる。この場合、これらの動作は、アプリケーション命令132を読み込むこと、および不揮発性メモリー150からソフトウェア命令を読み取り、不揮発性メモリー152におけるデータに基づいてユーザー状態データ134を構成することによってユーザー状態データ134を作成することを含み得る。動作のこれらのシーケンスが完了すると、揮発性メモリー120における状態情報は、図1に関連して上記に記載されたスタートアップシーケンスの実行の結果として読み込まれたものと類似したものになり得る。しかし、図3に示されるシーケンスを使用してスタートアップコマンドに応答するのに必要な時間は、図1に関連して記載されたスタートアップシーケンスを実行するのに必要な時間よりも短くなり得る。
[0069]図3に示される例では、休止状態ファイル310は、休止状態ファイル210(図2)と同じ形式であるが、異なる情報を含む。加えて、休止状態ファイル310は休止状態ファイル210とは異なる方法で作成される。上記に記載したように、休止状態ファイル210(図2)は、コンピューティングデバイス100の状態を休止状態コマンドの際に揮発性メモリー120に表されたものとして記録する。対照的に、休止状態ファイル310は、シャットダウンコマンドに応答して作成される。ただし、休止状態ファイル310でキャプチャされる状態情報は、シャットダウンコマンドの際のコンピューティングデバイス100の完全な状態を表すものではない。
[0070]もっと正確に言えば、いくつかの処理を実行して、コンピューティングデバイス100をターゲット状態に置くことができ、そのときに、休止状態ファイル310が作成され得る。示された実施形態では、ターゲット状態は、オペレーティングシステムを読み込んだ際に生成された可能性があるが、ユーザーがコンピューティングデバイス100にログオンしていない状態を表す。そのようなターゲット状態は、少なくとも部分的に、シャットダウンシーケンスの一部分を実行することによって作成され得る。例えば、その部分は、コンピューティングデバイス100の1人または複数のユーザーをログオフすること、またはそうでなければユーザー接続をブレークダウンすることを含み得る。そのような処理は、当技術分野において知られているような技法を使用して実行され得る。
[0071]あるいはまたはそれに加えて、コンピューティングデバイス100をターゲット状態に置くために他の処理を実行することができる。例えば、処理はシステム状態データ148からダーティデータをフラッシュすることを含み得る。
[0072]さらに、上記に述べたように、シャットダウンコマンドに対するコンピューティングデバイス100の反応に関するユーザーの期待を維持するために、休止状態を含むシャットダウンシーケンスは、そのときに存在し得る条件に基づいて条件付きで実行され得る。同様に、スタートアップシーケンスは、休止状態からの再開を条件付きで含み得る。図4、図5および図6は、そのような条件付き処理を示す。
[0073]図4は、スタートアップコマンドに応答してコンピューティングデバイス100によって実行され得るものなどのスタートアップシーケンスを示す。スタートアップコマンドは、例えば、ユーザーがオンボタンを押すこと、電源をコンピューティングデバイス100に供給すること、またはそうでなければコンピューティングデバイス100の動作を開始することによって、コンピューティングデバイス100に提供され得る。
[0074]スタートアップシーケンスが開始される方法にかかわらず、プロセスはブロック410で開始し得る。ブロック410では、プロセッサ110は、ブートメモリー154からプロセスを開始する命令をフェッチし、実行することができる。ただし、プロセスの後のステップでは、命令は、不揮発性メモリー150から、またはネットワーク接続を経由してからを含む任意の他の適切なソースからフェッチされ得る。
[0075]プロセッサ110を制御して、スタートアップシーケンスを開始するために使用される命令のソースにかかわらず、プロセスは、休止状態ファイルが不揮発性メモリー152で検出されたかどうかに応じて、決定ブロック412で分岐し得る。休止状態ファイルが不揮発性メモリー152で検出された場合、プロセスは終了ポイントAに分岐して、図6に示されるようにプロセスを続けることができる。逆に、休止状態ファイルが存在しない場合、プロセスはサブプロセス450に進むことができる。
[0076]サブプロセス450は、概して、当技術分野において知られているようにスタートアップシーケンスを実施する動作のシーケンスを表し得る。この例では、ブロック420、422、424、426、428、430および432での処理は、知られているスタートアップシーケンスの場合のような処理を表し得る。ただし、任意の適切な技法を使用して、任意の適切な動作のシーケンスが使用され得ることを理解されたい。
[0077]使用される特定の手法にかかわらず、サブプロセス450内の処理は、ブロック420で開始し得る。ブロック420では、プロセッサ110はオペレーティングシステムローダーを実行する。そのようなローダーは、実行されたときに、不揮発性メモリー150から揮発性メモリー120にオペレーティングシステムのコンポーネントを読み込むソフトウェアコンポーネントであってもよい。
[0078]ブロック422では、システム状態140の一部として作成されるオペレーティングシステムのイメージを構成する動作が構成され得る。この構成は、揮発性メモリーに読み込まれたコンポーネントのパラメーターの値を設定することまたはシステム状態140の他の側面を構成する命令を実行することを含む、任意の適切な処理を含み得る。
[0079]また、スタートアップサブプロセス450の一部として、コンピューティングデバイス100はデバイスを検出することができる。コンピューティングデバイス100に接続されたプリンター、ネットワークインターフェイスまたは他の周辺装置などの任意の適切なデバイスが検出され得る。検出されたデバイスに基づいて、ドライバーローダーがブロック426で実行され得る。ドライバーローダーは、ドライバーを読み込む、知られている技法を使用して構成されたソフトウェアコンポーネントであってもよい。ドライバーローダーの実行は、検出されたデバイスのためのドライバーソフトウェアを識別し、読み込むことを含み得る。ドライバーが読み込まれると、ドライバーはブロック428で開始され得る。この処理は、ドライバーおよびドライバーが制御するデバイスを、コンピューティングデバイス100で読み込まれた他のコンポーネントが利用できるようにする。
[0080]プロセスは、オペレーティングシステムサービスが開始され得るブロック430に続き得る。デバイスおよびオペレーティングシステムのサービスが利用できるようになると、処理はブロック432に進み得る。ブロック432では、アプリケーションコンポーネントが読み込まれ得る。この処理は、当技術分野において知られているような技法を使用して、または任意の他の適切な方法で、ユーザーログオンプロセスの一部として実行され得る。
[0081]アプリケーションコンポーネントが読み込まれると、図4に示されるプロセスは、ブロック432で読み込まれたアプリケーションコンポーネントの性質に応じて、分岐し得る。決定ブロック444での分岐により、コンピューティングデバイスは、コンピューティングデバイス100が従来のシャットダウンシーケンスではなく休止状態を使用してシャットダウンシーケンスを実行したときに1つまたは複数のアプリケーションコンポーネントが正常に動作しない場合に起こり得る問題を改善することが可能になる。いくつかのコンポーネントは再起動を必要とすることがあり、これは、読み込みプロセスを使用して状態が再作成されるように、次にコンピューティングデバイスの電源が入れられたときに完全スタートアップシーケンスが実行されることを意味する。
[0082]例として、コンピューティングデバイス100がスタートアップするときに応じて異なるように動作を実行するアプリケーションコンポーネントは、図3に示されるように休止状態を組み込むシャットダウンシーケンスが実行された場合、ユーザーが期待する通りに実行しないことがある。これらのコンポーネントの場合、その後のスタートアップが実行されると、そのスタートアップが休止状態からの復元に基づいて実行された場合、アプリケーションコンポーネントは、休止状態ファイル310から復元された状態情報に基づいて構成され得る。その状態情報は、コンピューターが最後に完全スタートアップシーケンスを実行したときの時間の指標を含み得る。したがって、その状態情報に基づいて読み込み時に構成されるアプリケーションコンポーネントは、図4に示されるスタートアップシーケンスが開始されたときを表す時間値を用いて構成されない。
[0083]考えられるユーザーの期待とは対照的に、そのコンポーネントは、完全スタートアップシーケンスが実行された前の時間を表す時間値を用いて構成される。この場合、ユーザーは、アプリケーションコンポーネントが図4のプロセスが開始した時間に基づいて構成されることを期待するので、アプリケーションコンポーネントの挙動はユーザーの期待とは異なる時間に基づく。
[0084]したがって、そのようなアプリケーションコンポーネントがコンピューティングデバイス100で読み込まれるとき、コンポーネントがユーザーからのシャットダウンコマンドに応答して完全シャットダウンシーケンスを必要とすると判定することが望ましいことがある。そのようなコンポーネントが実行中であるとき、コンピューティングデバイスは、完全シャットダウンシーケンスを実行することによってシャットダウンコマンドに応答し得る。このようにして、スタートアップコマンドをその後に受け取ると、休止状態ファイルが利用できなくなり、例えば、図1に示されているように、完全スタートアップシーケンスが実行される。他のときには、コンピューティングデバイスは、図3に示されるように、休止状態を組み込むシャットダウンシーケンスを用いてシャットダウンコマンドに応答し得る。
[0085]ユーザーの期待と一致した挙動をサポートするために、アプリケーションプログラムが完全シャットダウンおよび完全スタートアップシーケンスを実行することを要求することを示すための機構がアプリケーションプログラムに提供され得る。図4の例では、その機構はコンピューティングデバイス100のオペレーティングシステムによってサポートされるアプリケーションプログラミングインターフェイス(API)を介して実施され得る。いかなる場合にも完全シャットダウンおよび完全スタートアップシーケンスを要求しないアプリケーションコンポーネントでさえも、そのようなAPIを介して呼び出しを行うことがある。
[0086]したがって、読み込まれているアプリケーションコンポーネントが再起動を要求するとブロック440で判定された場合、処理はブロック442に分岐し得る。ブロック442では、アプリケーションプログラミングインターフェイスを呼び出して、そのアプリケーションコンポーネントを登録することができる。この例では、APIにより、オペレーティングシステムは、スタートアップコマンドが続いて受け取られたときに再起動を要求するアプリケーションコンポーネントが依然として実行中であるかどうかを追跡することができる。ただし、そのような呼び出しはいつでも行われ得ることを理解されたい。例えば、再構成されたまたはそうでなければコンポーネントが完全シャットダウンおよび完全スタートアップシーケンスを実行すると判定する動作状態が発生した任意のコンポーネントは、APIを介して呼び出しを行うことができる。
[0087]そのような呼び出しがAPIを介して行われない場合、シャットダウンコマンドが続いて受け取られると、オペレーティングシステムは、図3に示されるように休止状態を組み込むシャットダウンシーケンスが使用され得ると判定することができる。逆に、呼び出しがAPIを介して行われて、完全シャットダウンおよび完全スタートアップシーケンスが要求されていることを示す場合、オペレーティングシステムは、休止状態ファイルを作成することなく完全シャットダウンシーケンスを実行することができ、その結果として、スタートアップコマンドをその後に受け取ると、完全スタートアップシーケンスを実行することができる。
[0088]任意の適切な機構を使用して、アプリケーションコンポーネントが完全シャットダウンおよびその後の完全スタートアップシーケンスを含む再起動を必要とするかどうかを判定することができる。一例として、アプリケーションコンポーネントをプログラムして、ブロック442に示されるAPIを呼び出すことができる。あるいは、オペレーティングシステムは、再起動を要求し得る機能を識別するために読み込まれているときにアプリケーションコンポーネントを解析するためのコンピューター実行可能命令を含み得る。そのシナリオでは、決定ブロック440での処理は、読み込まれているときにそれぞれのアプリケーションコンポーネントを解析することを含み得る。ただし、任意の適切な技法を決定ブロック440で使用して、読み込まれたアプリケーションコンポーネントに基づいて再起動を必要とし得るかどうかを判定することができる。
[0089]図4は、読み込まれたアプリケーションコンポーネントに基づいて再起動を必要とするかどうかを判定することを示すが、コンピューティングデバイス100の他の要素について、同様の処理が実行され得る。例えば、オペレーティングシステムコンポーネントについて、同様の処理が実行され得る。あるいはまたはそれに加えて、コンピューティングデバイス100にインストールされたまたはコンピューティングデバイス100が接続されたデバイスに基づいて、同様の処理が実行され得る。
[0090]決定ブロック440で識別された、再起動の必要性を示し得る条件にかかわらず、これらの条件が識別された場合、処理は指標が保存されるブロック442に分岐し得る。その指標はユーザーからのシャットダウンコマンドに応答して完全シャットダウンをトリガーし得るか、あるいはまたはそれに加えて、休止状態ファイルが利用可能であっても、スタートアップするためのユーザーコマンドに応答して完全スタートアップシーケンスをトリガーし得る。これらの条件が検出されなかった場合、処理はブロック444に進み得る。
[0091]ブロック444では、データを収集して、コンピューティングデバイス100が休止状態を組み込むスタートアップシーケンスを使用することの有効性を判定することを可能にすることができる。この例では、ブロック444での処理は、サブプロセス450を実行するための時間を記録し、サブプロセス450は、この例では、完全スタートアップシーケンスの実行を示す。この情報は任意の適切な方法で記録され得る。例えば、スタートアップ時間に関する情報が不揮発性メモリー152に記録され得る。情報は、完全スタートアップシーケンスが実行されるたびにそのような完全スタートアップシーケンスを実行するのに必要な時間を示す、個々のスタートアップ時間として記録され得る。あるいは、情報は、複数の完全スタートアップシーケンスにおける移動平均として、または任意の他の適切な方法で記録され得る。
[0092]スタートアップ時間に関する情報は、ブロック444で任意の適切な方法で判定され得る。一例として、タイマーがサブプロセス450の開始時に開始され、処理がブロック444に達したときを読み取り得る。ただし、他の時間測定技法が知られており、ブロック444で適用され得る。
[0093]スタートアップ時間が記録されると、処理はブロック446に進み得る。ここで、コンピューティングデバイス100の従来の動作が行われ得る。そのような動作は、シャットダウンコマンドが受け取られるまで続き得る。
[0094]図5は、そのようなシャットダウンコマンドに応答して実行され得る処理を示す。図5に示されるプロセスは、当技術分野において知られているような技法を使用してコンピューティングデバイス100の動作を表すブロック510を含む。動作の間に、シャットダウンコマンド512が受け取られ得る。シャットダウンコマンド512は、グラフィカルユーザーインターフェイスまたはハードウェア制御を介してなどの任意の適切な方法でユーザー入力によって生成され得る。
[0095]いくつかの実施形態では、コンピューティングデバイス100は、シャットダウンシーケンスをトリガーすることができる複数のタイプのユーザー入力をサポートし得る。図7は、ユーザーがシャットダウンコマンドを入力し得るグラフィカルユーザーインターフェイスの例示である。この例では、グラフィカルユーザーインターフェイス710は、コンピューターオペレーティングシステムによって表示されたユーザーインターフェイス上に現れる「スタート」とラベル付けされたボタンを押すことによって呼び出される。ただし、異なるオペレーティングシステムが異なるインターフェイスをサポートし、ユーザーインターフェイスを呼び出すための任意の適切な技法が使用され得ることを理解されたい。
[0096]そのボタンを押すことに応答して、グラフィカルユーザーインターフェイス710は、当技術分野において知られているような技法を使用して、オペレーティングシステムによって表示され得る。グラフィカルユーザーインターフェイス710を介して、コンピューティングデバイス100のユーザーは、コンピューティングデバイス上の現在のセッションを終了するための複数の考えられるコマンドのなかから選択することができる。ここでは、3つのオプションが示されている。
[0097]コマンド714は、ここでは「シャットダウン」とラベル付けされている。そのようなシャットダウンコマンドは多くのコンピューティングデバイスで慣例的なものであり、コンピューティングデバイスが完全シャットダウンシーケンスを実行すべきであることを示すために従来から使用されている。しかし、図5に示される実施形態では、シャットダウンコマンド714のユーザー選択は、コンピューティングデバイス100のオペレーティングシステムが、その代わりに休止状態を組み込む部分的なシャットダウンシーケンスが実行され得るかどうかを判定することをもたらし得る。この実施形態では、オペレーティングシステムは、ユーザーに対してセマンティックな意味を有するコマンドのラベルを、場合によってはその意味と一致しない方法で使用する。それにもかかわらず、条件付き処理はユーザーの期待を維持する。
[0098]ただし、ユーザーが完全シャットダウンシーケンスが実行されることを保証したい場合、その理由により、異なるラベルを有する別個のコマンドが供給され得る。その後のスタートアップコマンド時に、不揮発性メモリー150からソフトウェアを読み込み、不揮発性メモリー152からのデータを用いてソフトウェアを構成することによってオペレーティングシステム状態が生成されるように、休止状態ファイルを作成することなく、コンピューティングデバイスに完全シャットダウンを実行するよう命令することをユーザーが望む場合、ユーザーは、コマンド715を選択することができる。この例では、コマンド715は「再起動」とラベル付けされている。そのようなラベル付けは、その後のスタートアップコマンド時に、完全スタートアップシーケンスが実行されるように、完全シャットダウンシーケンスが実行されることをユーザーに対して識別するために使用される。この場合、コマンド715は、「シャットダウン」コマンドが発行されたときに従来のコンピューティングシステムで実行されるものに類似したアクションを実行する。しかし、グラフィカルユーザーインターフェイス710を表示するコンピューティングデバイスでは、従来のシャットダウンコマンドに関連するセマンティックラベルはコマンド714に適用されている。したがって、コマンド715には異なるラベルが与えられる。
[0099]グラフィカルユーザーインターフェイス710は、ユーザーセッションを終了するための他のオプションも含み得る。この例では、グラフィカルユーザーインターフェイス710は、コマンド716を含む。コマンド716を選択すると、コンピューティングデバイス100は、指定されたユーザーのセッションをブレークダウンすることによって応答し得る。コンピューティングデバイスのそのような挙動は当技術分野において知られている。この場合、コマンド716は、従来のログオフコマンドに対応し得る。ただし、多くの適切なコマンドオプションをグラフィカルユーザーインターフェイス710に含めることができ、示されている実施形態では、コマンド714または716の選択のみが、図5に示されるプロセスの開始をもたらす。
[00100]シャットダウンコマンドが受け取られる方法およびその性質にかかわらず、コマンドを受け取ったことに応答して、処理はブロック510からブロック514に移行し得る。ブロック514では、シャットダウンシーケンスの冒頭部分が実行され得る。ブロック514で実行されるシャットダウンシーケンスの部分は、従来の処理を含み得る。この例では、ブロック514での処理は、コンピューティングデバイス100上の1つまたは複数の任意のユーザーセッションを終了する。図1に関連して上記に記載したように、そのような処理は、アプリケーションを閉じ、ユーザー状態データ134を保存することまたは任意の他の適切なアクションを実行することを含み得る。これらのアクションの結果として、1つのユーザーセッションから次のユーザーセッションに持続されるユーザー状態130における任意の情報は、ユーザー状態データ134から不揮発性メモリー152などの不揮発性メモリーに移動する。
[00101]ユーザーセッションを終了するか、そうでなければユーザー状態データ134を持続するためにとられた特定のステップにかかわらず、これらのステップが完了すると、処理は、決定ブロック516に進み得る。決定ブロック516では、図5のプロセスは、再起動が要求されたかどうかに応じて、分岐し得る。ブロック516での処理は、任意の適切な方法で実行され得る。任意の1つまたは複数の基準を決定ブロック516で適用して、再起動が要求されたかどうかを判定することができる。一例として、ユーザー入力を決定ブロック516で使用して、再起動が要求されたかどうかを判定することができる。例えば、ユーザーが再起動コマンド715(図7)を選択すると、そのユーザー選択は再起動が要求されたという指標として働き得る。
[00102]別の例として、ブロック442(図4)でAPIを呼び出すことなどによって、アプリケーションコンポーネントが再起動を要求し得ることが図4に関連して記載された。そのような呼び出しが行われた場合、決定ブロック516での処理は、再起動が要求されたと判定し得る。ただし、いくつかの実施形態では、決定ブロック516での処理は、複数の基準を条件とし得る。例えば、処理は、アプリケーションコンポーネントがブロック442でのAPIの呼び出しを介して再起動の要求を登録したと判定し得る。決定ブロック516でのさらなる処理は、そのような要求に応えるべきかどうかを判定し得る。そのような処理は、例えば、図5のプロセスが実行されたときに、要求しているアプリケーションコンポーネントが依然として実行中であるかどうかを判定することを含み得る。あるいはまたはそれに加えて、決定ブロック516での処理は、要求しているコンポーネントが再起動を命令するための十分なアクセス権限を有するかどうかを判定することを必要とし得る。
[00103]決定ブロック516で実行される処理の性質にかかわらず、その処理の結果として、再起動が要求されたと判定され、プロセスはブロック530に分岐する。このシナリオでは、ブロック530は、完全シャットダウンシーケンスを表す。そのような完全シャットダウンシーケンスは、当技術分野において知られているように実行され得る。完全シャットダウンシーケンスは、ユーザーセッションをブレークダウンすること、ダーティデータをフラッシュすること、およびコンピューティングデバイスの電源を切ることを必要とし得る。シャットダウンシーケンスを実行する際にとられた特定のステップにかかわらず、完了すると、図5のプロセスは、コンピューティングデバイス100を電源オフ状態にして、終了することができる。
[00104]逆に、再起動が決定ブロック516で要求されていない場合、プロセスは決定ブロック518に進み得る。決定ブロック518での処理は、完全シャットダウンシーケンスを実行すべきか、またはその後に休止状態が続く部分的なシャットダウンを実行すべきかを判定するための条件付き処理の例である。概して、決定ブロック518での処理は、任意の適切なポリシーのアプリケーションを必要とし得る。そのようなポリシーは、シャットダウンコマンドが受け取られたときに評価され得る。
[00105]示された例では、適用されるポリシーは、休止状態を使用して実現される時間節約に関するものである。決定ブロック518では、休止状態からスタートアップすることによって時間節約が実現されるかどうかが判定され得る。そのような判定は、コンピューティングデバイス100を動作状態に置くための相対時間について記録された情報を、完全スタートアップシーケンスまたはその後に部分的なスタートアップシーケンスが続く休止状態からの再開と比較することによって行われ得る。完全スタートアップを実行するための時間に関する情報は、例えば、ブロック444(図4)で保存された情報に基づき得る。休止状態からの再開に続いてコンピューティングデバイス100を動作状態に置くために必要な時間に関する情報は、同様の方法で、図6のプロセスの実行の終了時に記録された情報に基づいて判定され得る。
[00106]その後に部分的なスタートアップが続く再開に基づいて動作状態を作成するための時間が、完全スタートアップを実行するための時間より遅い場合、処理は決定ブロック518からサブプロセス530に分岐し得る。逆に、決定ブロック518での処理が、その後にスタートアップシーケンスの部分的な実行が続く休止状態からの再開が好ましいと判定した場合、処理は決定ブロック520に進み得る。
[00107]決定ブロック520では、さらなる条件付き処理を実行して、コンピューティングデバイス100が休止状態を組み込む部分的なシャットダウンシーケンスに適した状態にあるかどうかを判定することができる。そのような処理は、現在のセッションの間に、任意のコンポーネントに対して構成変更が指定されたかどうかを判定することを必要とし得る。そのような構成変更が、再起動が有効になることを要求する場合、シャットダウンコマンド714(図7)を選択することは、従来であればコンピューティングデバイスに次のスタートアップ時に構成変更を適用させることになるラベルに関連するので、休止状態を含むシャットダウンは、コンピューティングデバイス100の挙動に関するユーザーの期待を実施しないことがある。
[00108]コンピューティングデバイス100が、従来であれば完全スタートアップを示すために使用されるラベルを有するコマンドに応答して、休止状態を含むシャットダウンシーケンスを実施する場合、その後のスタートアップ時に、これらのコンポーネントの状態は、構成変更に基づいた状態ではなく、その以前の状態を再開する。したがって、そうでなければ完全シャットダウンシーケンスに関連し得るコマンドを呼び出すというユーザーの期待が期待された挙動を示さないシナリオが存在し得る。コンピューティングデバイス100が期待されたユーザー挙動と一致しない方法で動作することを回避するために、図5のプロセスは、コンピューティングデバイスが、ユーザーの期待と一致した動作を得るために完全シャットダウンシーケンスを実行すべきであると自動的に判定するかどうかに応じて、分岐し得る。完全シャットダウンシーケンスを実行すべきであると判定した場合、プロセスはサブプロセス530に分岐し、サブプロセス530では、完全シャットダウンシーケンスが上記に記載されたように実行され得る。
[00109]示された実施形態では、完全シャットダウンシーケンスが実行されるべき条件は、任意のコンポーネントが現在のセッションの間に構成設定を変更したかどうかを判定することによって識別される。当技術分野において知られているような、この判定を行うための技法は、決定ブロック520で適用され得る。一例として、実行コンポーネントの構成設定を変更するための処理は、フラグを設定すること、またはそうでなければ構成変更の指標を記録することを必要とし得る。そのシナリオでは、決定ブロック520での処理は、状態フラグの値をチェックすることを必要とし得る。ただし、あるいはまたはそれに加えて、他の適切な処理が使用され得る。例えば、処理は、1つまたは複数のメモリーロケーションをスキャンして、未適用の構成設定を検出することを必要とし得る。
[00110]決定ブロック520でどのように判定が行われるかにかかわらず、完全シャットダウンおよび/またはその後の完全スタートアップが要求される条件が存在しない場合、処理は決定ブロック522に進み得る。ブロック522では、コンピューティングデバイス100を、休止状態が行われるターゲット状態に完全に置くための動作が実行される。図3に関連して上記に記載したように、そのターゲット状態は、オペレーティングシステム状態は維持されるが、すべてのユーザーセッションがブレークダウンされ、ユーザーのその後のログオン時に要求される任意のユーザー状態が持続されている、不揮発性メモリーにおける適切な形態での状態に対応し得る。
[00111]このターゲット状態を実現するために実行され得る動作の例は、ダーティデータをフラッシュすることである。あるいはこれに加えて、システム状態データ148の一部として保存された他のデータがログオンしたユーザーのセッションに関するものである場合、ブロック522での処理は、不揮発性メモリー152にそのデータを保存することを必要とし得る。
[00112]ターゲット状態を完全に実現するためにどの動作が実行されるかにかかわらず、処理は次いで、ブロック524に進み得る。ブロック524では、コンピューティングデバイス100でターゲット状態を再作成するための休止状態ファイルの適合性を確認するために後で使用され得る情報を取り出すことができる。例として、いくつかのコンピューティングデバイスは、複数のオペレーティングシステムまたはオペレーティングシステムの複数のインスタンスを用いて構成され得る。オペレーティングシステムの特定のインスタンスのシャットダウンの一部として作成された休止状態ファイルを使用して、オペレーティングシステムのその同じインスタンスをスタートアップするためのコマンドに応答して、オペレーティングシステム状態のみを再保存することができる。
[00113]しかし、休止状態ファイルが作成されたときに使用中であったオペレーティングシステム以外のオペレーティングシステムを用いてコンピューティングデバイスを動作させる場合がある可能性は、休止状態ファイルが作成されたときと、そのファイルに基づいた状態の再作成をトリガーするその後のスタートアップコマンドとの間で、オペレーティングシステムがコンピューティングデバイスで実行中である可能性を生み出す。別のオペレーティングシステムまたは同じオペレーティングシステムのインスタンスによって動作に介入することは、休止状態ファイルにおいてキャプチャされた状態がもはや、ユーザーの期待と一致した動作を実現するために作成されるべきコンピューティングデバイスの状態を表さない可能性を生み出し得る。
[00114]例えば、ユーザーが、第1のオペレーティングシステムを用いたシャットダウン動作の後に、第2のオペレーティングシステムを読み込み、第1のオペレーティングシステムによって使用された任意のデータまたは他のコンポーネントに対する変更を行った場合、このインスタンスにおける休止状態ファイルからの再開は、介入するユーザー変更を反映しない状態を作成することになる。
[00115]したがって、その後のスタートアップコマンド時に、休止状態ファイルがコンピューティングデバイス100の動作状態の再作成に使用するのに適切なものかどうかを判定するための機構を用いることができる。図5に示される実施形態では、その機構は、休止状態ファイルが作成されたときに情報を保存することを必要とする。この特定の例では、その情報は、ファイルシステムによって維持されるシーケンス番号である。具体的には、シーケンス番号は、NTFSファイルシステムまたはコンピューティングデバイスで動作させることができる他のファイルシステムによって維持され得る。そのようなシーケンス番号は、ディスク記憶装置のボリュームが読み込まれるたびにインクリメントされ得る。したがって、ブロック524での処理は、休止状態ファイルおよびオペレーティングシステムに関連する他のデータを含むボリュームに関連するNTFSシーケンス番号を保存することを必要とし得る。この値は、その後のスタートアップコマンドに関連してその値にアクセスすることができるように、不揮発性メモリーに保存され得る。
[00116]休止状態ファイルの適合性のその後の判定を可能にするためにブロック524で記録された特定の情報にかかわらず、プロセスはサブプロセス526に進み得る。サブプロセス526は、休止状態ファイルを保存することを含み得る。ブロック526での処理は、コンピューティングデバイスの休止状態に関連する従来の技法を使用して実行され得る。ただし、休止状態ファイルを実行する任意の適切な技法が使用され得ることを理解されたい。
[00117]サブプロセス526の一部として休止状態ファイルを保存するために使用される特定の技法にかかわらず、休止状態ファイルを保存すると、コンピューティングデバイス100への電源がシャットダウンされ得る。コンピューティングデバイス100は、スタートアップコマンドが受け取られるまで、電源が切られた状態にとどまり得る。
[00118]その後のスタートアップコマンドは、図4および図6に示されるように処理され得る。図4は、開始コマンドを受け取ったことに応答して実行され得る処理を示す。その処理は、ブロック410および決定ブロック412での処理を含む。処理が決定ブロック412に達すると、プロセスは、直前に先行するシャットダウンの間にサブプロセス526が実行された場合に存在し得るかなど、休止状態ファイルが存在するかどうかに応じて、分岐し得る。その休止状態ファイルが存在する場合、図4のプロセスはAとラベル付けされた結合子を介して分岐して、図6に示される処理を続けることができる。
[00119]図6での処理は、休止状態ファイルが存在するときに実行され得るプロセスを示す。図6のプロセスは、ブロック601で開始し得る。ブロック601では、プロセスは、決定ブロック412(図4)で検出された休止状態ファイルが、サブプロセス526に関連して示されるものなどの、シャットダウンの間にターゲット状態をキャプチャする休止状態ファイルを表すかどうかに応じて、分岐し得る。当該の休止状態ファイルを表す場合、プロセスは決定ブロック610に進み得る。
[00120]あるいは、休止状態ファイルは、システム状態情報に加えてユーザー状態を組み込む従来の休止状態ファイルを表し得る。そのような休止状態ファイルを従来の技法に従って使用して、その状態を再保存することができる。規則処理をサブプロセス670で実行することができ、サブプロセス670では、休止状態ファイルを使用して、以前の休止状態時の、ユーザー状態を含むコンピューティングデバイスの状態を再確立する。サブプロセス670の完了に続いて、処理はブロック638に続き得る。
[00121]逆に、決定ブロック601で判定されたときに、休止状態ファイルがシャットダウンプロセスの一部として記録された場合、プロセスは決定ブロック610に続く。決定ブロック610で開始すると、1つまたは複数の動作を実行して、スタートアップコマンドに応答して、完全スタートアップシーケンスを実行すべきか、またはその後に部分的なスタートアップシーケンスが続く休止状態からの再開を実行すべきかを判定することができる。この例では、複数の条件がチェックされて、休止状態ファイルが存在すると判定されても、休止状態からの再開を実行すべきかどうかを判定する。決定ブロック610でチェックされるそのような条件の1つは、休止状態からの再開が現在のコンピューター構成と一致しない状態情報を再作成することをもたらし得るように、コンピューティングデバイス100について、ハードウェア構成の変更があったかどうかを判定することを必要とする。そのような変更は、コンピューティングデバイスの最後のセッションの間に作成され、不揮発性メモリーに保存されたハードウェアコンポーネントのインベントリをチェックすることを含む、任意の適切な方法で検出され得る。その後のスタートアップ時のコンピューティングデバイスのハードウェア構成をチェックして、インベントリ上のそれぞれの項目がインストールされていることを保証することができる。ただし、インベントリをチェックすることは、そのような処理がどのように実行され得るかという一例にすぎないことを理解されたい。どのように判定が行われるかにかかわらず、ハードウェア構成が変化した場合、処理は、決定ブロック610からサブプロセス650に分岐し得る。サブプロセス650は、オペレーティングシステムを再読み込みすることを必要とし得る。サブプロセス650での処理は、当技術分野で知られているような技法を使用して実行され得る。サブプロセス650におけるオペレーティングシステムの読み込みに続いて、プロセスはブロック632に進み得る。
[00122]逆に、決定ブロック610での処理が、ハードウェア構成が行われなかったと判定した場合、処理はブロック612に進み得る。ブロック612では、さらなる処理を実行して、コンピューティングデバイス100が休止状態からの再開が実行されるべき状態にあるかどうかを動的に判定することができる。この場合、決定ブロック612での処理は、休止状態からの再開が実行された場合にユーザーの期待を満たさないように、ブロック524(図5)で保存された情報を利用して、休止状態ファイルの作成の間に変更が行われたかどうかを判定することができる。
[00123]この例では、ブロック612での処理は、休止状態ファイルを含むボリュームに関連するNTFSシーケンス番号をチェックすることを含む。休止状態ファイルが作成されたので、そのボリュームが読み込まれなかった場合、ブロック612で読み取られるシーケンス番号は、スタートアップ時のシーケンス番号の確率を表す既知の量だけ、ブロック524で保存されたシーケンス番号とは異なる。逆に、シーケンス番号の差が既知の量より大きい場合、ブロック612での処理は、休止状態ファイルの作成時と休止状態からの再開をトリガーしたスタートアップコマンドとの間に、変更が行われた可能性があることを識別する。
[00124]決定ブロック620では、プロセスは、ブロック612で実行された比較に基づいて分岐し得る。シーケンス番号が一致しない場合、プロセスはサブプロセス750に分岐する。シーケンス番号の差が、休止状態ファイルがユーザーの期待と一致したコンピューティングデバイスの動作状態を確立しない可能性があることを示すときに、そのような分岐が起こり得る。したがって、システム状態140がオペレーティングシステムソフトウェアを再読み込みすることによって作成されるサブプロセス650が実行される。
[00125]逆に、ブロック612で実行された比較が、シーケンス番号が一致することを示す場合、プロセスはサブプロセス630に進み得る。その分岐をとるとき、休止状態ファイルは、コンピューティングデバイスの状態を再確立するのに適切であると判定されている。したがって、サブプロセス630は、休止状態ファイルからコンピューティングデバイスのターゲット状態を再確立することを必要とする。サブプロセス630は、休止状態から再開するための既知の技法を使用して実行され得る。ただし、このシナリオでは、ユーザー状態を含むコンピューティングデバイスの状態を再確立するのではなく、休止状態ファイルに基づいて再開することで、休止状態ファイルが作成されたときのターゲット状態を再作成する。この状態は、例えば、サブプロセス526(図5)の開始時のコンピューティングデバイスの状態を表し得る。ただし、他の実施形態では、オペレーティングシステムが、スタートアップシーケンスの完了時にアプリケーションがユーザーによって開かれている可能性があると予測し、これらのアプリケーションが依然として開いている間にコンピューティングデバイスの状態をキャプチャするための休止状態ファイルを保存するときに起こり得るものなどの、部分的なユーザー状態は、休止状態ファイルに保存され得る。
[00126]サブプロセス630が完了すると、図6のプロセスはブロック632に進み得る。処理がサブプロセス630を介してブロック632に達するか、またはサブプロセス650を介してブロック632に達するかにかかわらず、ブロック632では、スタートアップコマンドに応答するのに必要な時間が記録され得る。記録される値の意味は、処理がブロック632に達した経路に依存し得る。処理がサブプロセス630を介してブロック632に達するとき、時間は、処理の一部として休止状態からの再開を使用したスタートアップの時間を表し、それに応じて記録される。逆に、処理がサブプロセス650を介してブロック632に達するとき、時間は、完全スタートアップシーケンスを使用したスタートアップの時間を表し、それに応じて記録される。ブロック632での処理は、ブロック444(図4)に関連して記載された技法を使用することを含む、任意の適切な方法で実行され得る。
[00127]ブロック632で情報を記録した結果として、決定ブロック518(図5)での処理は、休止状態からの再開およびスタートアップシーケンスの一部分を含む完全スタートアップシーケンスに基づいてスタートアップコマンドに応答する時間を比較するのに利用可能な情報を有し得る。この情報は、任意の適切な方法で記録され、比較され得る。
[00128]次いで、処理はサブプロセス634に進み得る。サブプロセス634では、スタートアップシーケンスの一部分を実行して、コンピューティングデバイスの所望の動作状態を作成することができる。この部分は、ユーザーをログオンすることを含み得る。この動作を既知の方法で実行することができ、この動作は自動ログオンを含み得るか、またはユーザーが情報を表示して、手動でログオンプロセスを実行するログオン画面を表示することを含み得る。処理がサブプロセス650を介してサブプロセス634に達するシナリオでは、サブプロセス650およびサブプロセス634での処理の組合せは、完全スタートアップシーケンスを表し得る。逆に、処理がサブプロセス630を介してサブプロセス634に達する場合、スタートアップコマンドへの応答は、休止状態からの再開およびスタートアップシーケンスの一部分を含む。
[00129]この例では、スタートアップシーケンスのその部分は、サブプロセス634においてユーザーをログオンすることを表す。そのような処理は、従来の技法を使用して実行され得る。ただし、休止状態からの再開に続いて、スタートアップシーケンスを完了するために使用される特定のステップは、任意の適切な技法であってもよい。
[00130]次いで、プロセスは、休止状態ファイルを無効化することができるブロック638に進み得る。また、処理は、サブプロセス670に続いてブロック638に達し得る。処理がどのようにブロック638に達するにかかわらず、休止状態ファイルが正しくない動作状態を再作成する可能性があるときに、その休止状態ファイルを後で使用しないことを示す任意の適切な方法で、休止状態ファイルを無効化することができる。例えば、何らかの方法でその内容を変更し、ファイルが無効であることを別個のメモリー構造に記録することによって、またはファイルを削除することによって、休止状態ファイルを無効化することができる。
[00131]次いで、図6のプロセスは終了し得る。プロセスが終了すると、コンピューティングデバイス100を動作状態に構成することができ、その後、コンピューティングデバイス100は、シャットダウンまたは再起動コマンドが受け取られるまで、動作を続けることができる。
[00132]図8は、本発明が実施され得る適切なコンピューティングシステム環境800の例を示す。コンピューティングシステム環境800は、適切なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関して任意の限定を示唆することを意図するものではない。コンピューティング環境800を、例示的な動作環境800に示されるコンポーネントの任意の1つまたは組合せに関する任意の依存性または要件を有するものとして解釈すべきでもない。
[00133]本発明は、多くの他の汎用または専用コンピューティングシステム環境または構成で使用可能である。本発明とともに使用するのに適切であり得る周知のコンピューティングシステム、環境、および/または構成の例としては、パーソナルコンピューター、サーバーコンピューター、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルコンシューマーエレクトロニクス、ネットワークPC、ミニコンピューター、メインフレームコンピューター、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが挙げられるが、これらに限定されない。
[00134]コンピューティング環境は、プログラムモジュールなどのコンピューター実行可能命令を実行し得る。概して、プログラムモジュールは、特定のタスクを実行するまたは特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。また、本発明は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実施され得る。分散コンピューティング環境では、プログラムモジュールは、メモリー記憶デバイスを含む、ローカルおよびリモートの両方のコンピューター記憶媒体に配置され得る。
[00135]図8を参照すると、本発明を実施するための例示的なシステムは、コンピューター810の形態の汎用コンピューティングデバイスを含む。コンピューター810のコンポーネントとしては、処理装置820、システムメモリー830、およびシステムメモリーを含む様々なシステムコンポーネントを処理装置820に結合するシステムバス821が挙げられ得るが、これらに限定されない。システムバス821は、様々なバスアーキテクチャのいずれかを使用するメモリーバスまたはメモリーコントローラー、周辺バス、およびローカルバスを含む、いくつかのタイプのバス構造のいずれかであってもよい。例として、限定することなく、そのようなアーキテクチャは、ISA(Industry Standard Architecture:業界標準アーキテクチャ)バス、MCA(Micro Channel Architecture:マイクロチャネルアーキテクチャ)バス、EISA(Enhanced ISA:拡張ISA)バス、VESA(Video Electronics Standards Association:ビデオ電子規格協会)ローカルバス、およびメザニン(Mezzanine)バスとしても知られているPCI(Peripheral Component Interconnect:周辺コンポーネント相互接続)バスを含む。
[00136]コンピューター810は、典型的には、様々なコンピューター可読媒体を含む。コンピューター可読媒体は、コンピューター810によってアクセスすることができる任意の利用可能な媒体とすることができ、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体の両方を含む。例として、限定することなく、コンピューター可読媒体は、コンピューター記憶媒体および通信媒体を含み得る。コンピューター記憶媒体は、コンピューター可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体の両方を含む。コンピューター記憶媒体としては、RAM、ROM、EEPROM、フラッシュメモリーもしくは他のメモリーテクノロジ、CD−ROM、デジタル多用途ディスク(DVD)もしくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または所望の情報を保存するために使用することができ、コンピューター810によってアクセスすることができる任意の他の媒体が挙げられるが、これらに限定されない。通信媒体は、典型的には、搬送波または他の伝送機構などの変調データ信号におけるコンピューター可読命令、データ構造、プログラムモジュールまたは他のデータを具体化し、任意の情報伝達媒体を含む。「変調データ信号」という用語は、信号内の情報を符号化する方法で設定または変更された特徴のうちの1つまたは複数を有する信号を意味する。例として、限定することなく、通信媒体は、有線ネットワークまたは有線直接接続などの有線媒体、ならびにアコースティック、RF、赤外線および他のワイヤレス媒体などのワイヤレス媒体を含む。上記のいずれかの組合せも、コンピューター可読媒体の範囲内に含まれるべきである。
[00137]システムメモリー830は、読取り専用メモリー(ROM)831およびランダムアクセスメモリー(RAM)832などの揮発性および/または不揮発性メモリーの形態のコンピューター記憶媒体を含む。スタートアップの間などにコンピューター810内の要素間で情報を伝送するのに役立つ基本ルーチンを含む基本入力/出力システム833(BIOS)は、典型的には、ROM831に保存される。RAM832は、典型的には、処理装置820に即座にアクセス可能なおよび/または処理装置820が現在動作させているデータおよび/またはプログラムモジュールを含む。例として、限定することなく、図8は、オペレーティングシステム834、アプリケーションプログラム835、他のプログラムモジュール836、およびプログラムデータ837を示す。
[00138]コンピューター810は、他のリムーバブル/非リムーバブル媒体、揮発性/不揮発性コンピューター記憶媒体も含み得る。例のみとして、図8は、非リムーバブル不揮発性磁気媒体から読み取るまたはこれに書き込むハードディスクドライブ840、リムーバブル不揮発性磁気ディスク852から読み取るまたはこれに書き込む磁気ディスクドライブ851、およびCD ROMまたは他の光学式媒体などの、リムーバブル不揮発性光学ディスク856から読み取るまたはこれに書き込む光学ディスクドライブ855を示す。ハードディスクドライブ840は、磁気媒体に書き込むまたはこれから読み取ることができる1つまたは複数の磁気ヘッドを含む回転式磁気媒体として実施され得る。例示的な動作環境で使用することができる他のリムーバブル/非リムーバブル揮発性/不揮発性コンピューター記憶媒体としては、磁気テープカセット、フラッシュメモリーカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが挙げられるが、これらに限定されない。ハードディスクドライブ841は、典型的には、インターフェイス840などの非リムーバブルメモリーインターフェイスを介してシステムバス821に接続され、磁気ディスクドライブ851および光学ディスクドライブ855は、典型的には、インターフェイス850などのリムーバブルメモリーインターフェイスによってシステムバス821に接続される。
[00139]上記に述べ、図8に示されるドライブおよびそれに関連するコンピューター記憶媒体は、コンピューター810のコンピューター可読命令、データ構造、プログラムモジュールおよび他のデータの記憶装置を提供する。図8では、例えば、ハードディスクドライブ841は、オペレーティングシステム844、アプリケーションプログラム845、他のプログラムモジュール846、およびプログラムデータ847を保存するものとして示されている。これらのコンポーネントは、オペレーティングシステム834、アプリケーションプログラム835、他のプログラムモジュール836、およびプログラムデータ837と同じであってもよく、これらとは異なっていてもよいことに留意されたい。オペレーティングシステム844、アプリケーションプログラム845、他のプログラムモジュール846、およびプログラムデータ847には、ここでは、少なくともこれらが異なるコピーであることを示すために異なる番号が与えられている。ユーザーは、キーボード862および一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス861などの入力デバイスを介して、コマンドおよび情報をコンピューター810に入力することができる。他の入力デバイス(図示せず)は、マイクロホン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナーなどを含み得る。これらおよび他の入力デバイスは、多くの場合、システムバスに結合されたユーザー入力インターフェイス860を介して処理装置820に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェイスおよびバス構造によって接続され得る。モニター891または他のタイプのディスプレイデバイスも、ビデオインターフェイス890などのインターフェイスを介してシステムバス821に接続される。モニターに加えて、コンピューターは、出力周辺インターフェイス895を介して接続され得るスピーカー897およびプリンター896などの他の周辺出力デバイスも含み得る。
[00140]コンピューター810は、リモートコンピューター880などの1つまたは複数のリモートコンピューターへの論理接続を使用して、ネットワーク化環境で動作し得る。リモートコンピューター880は、パーソナルコンピューター、サーバー、ルーター、ネットワークPC、ピアデバイスまたは他の共通ネットワークノードであってもよく、典型的には、コンピューター810に関して上記に記載された要素の多くまたはすべてを含むが、図8にはメモリー記憶デバイス881のみが示されている。図8に図示された論理接続は、ローカルエリアネットワーク(LAN)871およびワイドエリアネットワーク(WAN)873を含むが、他のネットワークも含み得る。そのようなネットワーキング環境は、オフィス、エンタープライズ規模のコンピューターネットワーク、イントラネットおよびインターネットにおいてありふれたものである。
[00141]LANネットワーキング環境で使用されるとき、コンピューター810は、ネットワークインターフェイスまたはアダプター870を介してLAN871に接続される。WANネットワークキング環境で使用されるとき、コンピューター810は、典型的には、モデム872またはインターネットなどのWAN873を介して通信を確立するための他の手段を含む。内部でも外部でもよいモデム872は、ユーザー入力インターフェイス860、または他の適切な機構を介してシステムバス821に接続され得る。ネットワーク化環境では、コンピューター810に関して図示されたプログラムモジュールまたはその部分は、リモートメモリー記憶デバイスに保存され得る。例として、限定することなく、図8は、メモリーデバイス881に常駐するものとしてのリモートアプリケーションプログラム885を示す。示されたネットワーク接続は例示的なものであり、コンピューター間の通信リンクを確立する他の手段が使用され得ることを理解されたい。
[00142]この発明の少なくとも1つの実施形態のいくつかの態様について記載してきたが、当業者であれば、様々な変更、修正、および改善を容易に思いつくことを理解されたい。
[00143]例えば、それぞれのシーケンスの実行について観測された相対時間に基づいて、スタートアップ時に、完全スタートアップシーケンスを実行するか、またはその後にスタートアップシーケンスの一部分が続く休止状態からの再開を実行するかの判定が行われることが記載されている。シャットダウン時に同様の処理を実行することができることを理解されたい。シャットダウン時に実行される場合、休止状態ファイルを保存することまたは保存しないことによって、決定を実施することができる。したがって、スタートアップ時に行われるものとして記載された動作を、その代わりにシャットダウン時に実行することができ、その逆もまた同様であることを理解されたい。
[00144]上記に記載された利点は、他の方法で実現され得る。例えば、状態をセットアップするプロセスの間にコンピューターのCPUおよびディスクなどの他のコンポーネントによる作業を回避することに加えて、そのような手法は、シャットダウンコマンドに応答して、休止状態ファイルにデータを保存することを可能にし、その後のスタートアップコマンドへの応答の間および/またはスタートアップコマンドの処理が完了した後にユーザーのエクスペリエンスを促進するのに役立つ。例えば、ユーザーがログオンするとき、いくつかのアプリケーションが起動され得る(例えば、WINDOWS(登録商標) EXPLORER Webブラウザー、スタートアップアプリケーションなど)。オペレーティングシステムは、スタートアップコマンドの処理が完了した後の規定された期間の間にユーザーがアクセスするファイル(およびそのオフセット)を明示的に追跡し得る。これらのアプリケーション、または他のコンポーネントをメモリーに読み込んで、シャットダウンコマンドのその後の処理の間に作成された休止状態ファイルに保存することができる。このようにして、これらのアプリケーション、または他のコンポーネントは、これらのアプリケーションを起動することの一部としてランダムに読み込む必要なく、順次ディスクからメモリーに読み込まれる。
[00145]また、ユーザーログオンおよびログオフについて記載されている。複数のユーザーがコンピューターにログオンするシナリオにおいて、シャットダウンコマンドが提供され得ることを理解されたい。シャットダウンシーケンスが部分的に実行され、次いで、休止状態動作が実行される場合、部分的なシャットダウンシーケンスは複数のユーザーのログオフをもたらし得るが、それにもかかわらず、上記に記載された技法が適用され得る。
[00146]例えば、本明細書に記載された技法を使用して、ユーザー介入なしで自動化サービスを提供することができる。例えば、部分的なシャットダウンシーケンスを実行し、次いで、休止することによってシャットダウンコマンドに応答したコンピューティングデバイスは、真夜中などの、ユーザーアクティビティが予期されていないときに自動的に起動(wake)するように構成され得る。起動すると、コンピューティングデバイスは、ソフトウェア更新を適用するなどのメンテナンスアクティビティを実行し得る。ユーザーにとっては、メンテナンスアクティビティがユーザーに対して透過的になるように、コンピューティングデバイスが一日の終わりにシャットダウンされたかのように見える。そのような機能は、例えば、コンピューティングデバイスが、シャットダウンコマンドに応答して、メンテナンスアクティビティまたは適用すべきパッチがあると検出し、都合の良い時間に起動するように備えた場合に実施され得る。起動すると、コンピューティングデバイスは、必要であれば、パッチを適用するなどのいかなるメンテナンスアクティビティも実行する。次いで、システムは完全再起動を行ってから、その後に休止状態が続く部分的なシャットダウンを再び実行する。このシナリオにより、ソフトウェアベンダーが、メンテナンスアクティビティをユーザーの目に見えないようにするソリューションを提供することが可能になる。この機能をコンシューマーPCとエンタープライズPCの両方に適用することができる。ユーザーエクスペリエンスを改善することに加えて、そのような手法は、エンタープライズユーザーの場合は特に、電力を節約することもできる。
[00147]そのような変更形態、修正形態、および改良形態は、この開示の一部であることを意図するものであり、本発明の趣旨および範囲内にあることを意図するものである。したがって、上記の記載および図面は例にすぎない。
[00148]本発明の上記に記載された実施形態を任意の多数の方法で実施することができる。例えば、実施形態は、ハードウェア、ソフトウェアまたはそれらの組合せを使用して実施され得る。ソフトウェアで実施されるとき、単一のコンピューターにおいて提供されるか、または複数のコンピューター間で分散されるかにかかわらず、任意の適切なプロセッサまたはプロセッサの集合体でソフトウェアコードを実行することができる。そのようなプロセッサは、集積回路コンポーネントに1つまたは複数のプロセッサを有する集積回路として実施され得る。ただし、プロセッサは、任意の適切な形式の回路を使用して実施され得る。
[00149]さらに、コンピューターは、ラックマウントコンピューター、デスクトップコンピューター、ラップトップコンピューター、またはタブレットコンピューターなどのいくつかの形態のいずれかで具体化され得ることを理解されたい。加えて、コンピューターは、一般的にはコンピューターとはみなされないが、適切な処理機能を有する、携帯情報端末(PDA)、スマートフォンまたは任意の他の適切なポータブルもしくは固定電子デバイスを含むデバイスで具体化され得る。
[00150]また、コンピューターは、1つまたは複数の入力および出力デバイスを有し得る。これらのデバイスを、とりわけ、ユーザーインターフェイスを表示するために使用することができる。ユーザーインターフェイスを提供するために使用することができる出力デバイスの例としては、出力の視覚表現のためのプリンターまたはディスプレイ画面および出力の音響表現のためのスピーカーまたは他のサウンド生成デバイスが挙げられる。ユーザーインターフェイスに使用することができる入力デバイスの例としては、キーボード、およびマウス、タッチパッドなどのポインティングデバイス、およびデジタル化タブレットが挙げられる。別の例として、コンピューターは、音声認識を介してまたは他の可聴形式で入力情報を受け取ることができる。
[00151]そのようなコンピューターは、ローカルエリアネットワークまたはワイドエリアネットワークとして、エンタープライズネットワークまたはインターネットなどを含む、任意の適切な形態の1つまたは複数のネットワークによって相互接続され得る。そのようなネットワークは、任意の適切な技術に基づくことができ、任意の適切なプロトコルに従って動作することができ、ワイヤレスネットワーク、有線ネットワークまたは光ファイバーネットワークを含み得る。
[00152]また、本明細書において概説した様々な方法またはプロセスは、様々なオペレーティングシステムまたはプラットフォームのうちの任意の1つを用いる1つまたは複数のプロセッサで実行可能なソフトウェアとして符号化され得る。加えて、いくつかの適切なプログラミング言語および/またはプログラミングツールもしくはスクリプティングツールのいずれかを使用して、そのようなソフトウェアを書くことができ、フレームワークまたは仮想マシンで実行される実行可能な機械言語コードまたは中間コードとしてコンパイルすることもできる。
[00153]この点において、本発明は、1つまたは複数のコンピューターまたは他のプロセッサで実行されたときに、上記に述べた本発明の様々な実施形態を実施する方法を実行する1つまたは複数のプログラムで符号化されたコンピューター可読記憶媒体(または複数のコンピューター可読媒体)(例えば、コンピューターメモリー、1つまたは複数のフロッピーディスク(登録商標)、コンパクトディスク(CD)、光学ディスク、デジタルビデオディスク(DVD)、磁気テープ、フラッシュメモリー、フィールドプログラマブルゲートアレイもしくは他の半導体デバイスにおける回路構成、または他の非一時的な有形コンピューター記憶媒体)として具体化され得る。1つまたは複数のコンピューター可読記憶媒体は、それに保存された1つまたは複数のプログラムを1つまたは複数の異なるコンピューターまたは他のプロセッサに読み込んで、上記に述べた本発明の様々な態様を実施することができるように、可搬式とすることができる。本明細書において使用される場合、「非一時的コンピューター可読記憶媒体」という用語は、製品(manufacture)(すなわち、製造品(article of manufacture))または機械とみなすことができるコンピューター可読媒体のみを包含する。あるいはまたはそれに加えて、本発明は、伝搬信号などの、コンピューター可読記憶媒体以外のコンピューター可読媒体として具体化され得る。
[00154]「プログラム」または「ソフトウェア」という用語は、本明細書において概括的な意味で使用されて、コンピューターまたは他のプロセッサが上記に述べた本発明の様々な態様を実施するようにプログラムするのに用いることができる任意のタイプのコンピューターコードまたはコンピューター実行可能命令のセットを指す。加えて、この実施形態の一態様によれば、実行されたときに、本発明の方法を実行する1つまたは複数のコンピュータープログラムは、単一のコンピューターまたはプロセッサに常駐する必要はないが、いくつかの異なるコンピューターまたはプロセッサ間でモジュール式に分散されて、本発明の様々な態様を実施し得ることを理解されたい。
[00155]コンピューター実行可能命令は、1つまたは複数のコンピューターまたは他のデバイスによって実行される、プログラムモジュールなどの多くの形態であってもよい。概して、プログラムモジュールは、特定のタスクを実行するまたは特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的には、プログラムモジュールの機能を、様々な実施形態において所望通りに組み合わせるまたは分散することができる。
[00156]また、データ構造は、任意の適切な形態でコンピューター可読媒体に保存され得る。例示を簡略化するために、データ構造はデータ構造内のロケーションを介して関連するフィールドを有するものとして示され得る。そのような関係は、そのフィールド用の記憶装置に、フィールド間の関係を伝えるコンピューター可読媒体内のロケーションを割り当てることによって、同じように実現され得る。しかし、データ要素間の関係を確立するポインター、タグまたは他の機構を使用することによってなど、任意の適切な機構を使用して、データ構造のフィールド内の情報間の関係を確立することができる。
[00157]本発明の様々な態様を、単独で、組み合わせて、または上記に記載された実施形態において具体的に述べられていない様々な配置で使用することができ、したがって、その適用において、上記の説明に記載されたまたは図面に示されたコンポーネントの詳細および配置に限定されない。例えば、1つの実施形態に記載された態様を、他の実施形態に記載された態様と任意の方法で組み合わせることができる。
[00158]また、本発明は、その例が提供された方法として具体化され得る。方法の一部として実行される行為は、任意の適切な方法で順序付けられ得る。したがって、示されている順序とは異なる順序で行為が実行される実施形態を構成することができ、これらの実施形態は、例示的な実施形態において順次的な行為として示されていなくても、いくつかの行為を同時に実行することを含み得る。
[00159]クレーム要素を修正するための、特許請求の範囲における「first」、「second」、「third」などの順序を表す語の使用は、それ自体で任意の優先、上位、または別のクレーム要素に対するあるクレーム要素の順序もしくは方法の行為が実行される時間的順序を暗示するものではなく、特定の名前を有するあるクレーム要素を、同じ名前を有する(ただし、順序を表す語を使用するための)別の要素と区別して、これらのクレーム要素を区別するためのラベルとして使用されるにすぎない。
[00160]また、本明細書において使用される語法および用語は説明を目的とするものであり、限定的であるとみなされるべきではない。本明細書における「including」、「comprising」または「having」、「containing」、「involving」およびその変形形態の使用は、それ以降に列挙される項目およびその等価物ならびに追加の項目を包含するものである。