(57)【特許請求の範囲】
【請求項１】
複数のハードウェア・コンポーネントを含む計算デバイスで実行される方法であって、前記複数のハードウェア・コンポーネントが、前記計算デバイスのユーザー状態と前記計算デバイスのシステム状態とを保持した揮発性メモリーを含み、前記方法が、
停止命令を受けたことに応答して前記計算デバイスを停止させるために構成された停止シーケンスを実行することを含み、該停止シーケンスが、
前記計算デバイスにおけるユーザー・セッションを強制終了させるステップであって、これにより前記ユーザー状態が前記揮発性メモリーにもはや保持されなくなる、ステップと、
前記強制終了に続いて、前記揮発性メモリーの内容を不揮発性メモリーにコピーするステップであって、前記不揮発性メモリーにコピーされた内容が、保持された前記システム状態を含むが、もはや保持されていない前記ユーザー状態を含まない、ステップと、
前記計算デバイスの前記複数のハードウェア・コンポーネントの内少なくとも一部のハードウェア・コンポーネントの電源を切るステップと、
を含む、方法。
【請求項２】
請求項１に記載の方法において、
前記強制終了は、前記システム状態からユーザー特定の設定を除去することを含む、方法。
【請求項３】
請求項１又は２に記載の方法であって、前記停止シーケンスは、更に、
前記電源を切ったことに続きかつ起動命令を受けたことに応答して、前記複数のハードウェア・コンポーネントの内少なくとも前記一部のハードウェア・コンポーネントに電源を入れるステップ、
を含む、方法。 
【請求項４】
請求項３に記載の方法であって、前記停止シーケンスは、更に、
前記複数のハードウェア・コンポーネントの内少なくとも前記一部のハードウェア・コンポーネントに電源を入れたことに続いて、前記不揮発性メモリーから前記揮発性メモリーに前記コピーされた内容をコピーするステップ、
を含む、方法。
【請求項５】
請求項４に記載の方法であって、前記不揮発性メモリーから前記揮発性メモリーに前記コピーされた内容をコピーするステップは、前記コピーされた内容を含むファイルを検出することに基づく、方法。
【請求項６】
請求項１〜５のいずれか一項に記載の方法において、前記揮発性メモリーの内容を不揮発性メモリーにコピーするステップは、ファイルを作成することを含む、方法。
【請求項７】
請求項１〜６のいずれか一項に記載の方法において、前記停止シーケンスは、更に、ダーティー・データを前記不揮発性メモリーに一掃することを含む、方法。
【請求項８】
コンピューター実行可能命令を格納した少なくとも１つのコンピューター記憶デバイスであって、前記コンピューター実行可能命令は、計算デバイスによって実行されると、停止命令を受けたことに応答して前記計算デバイスを停止させるために構成された停止シーケンスを前記計算デバイスに実行させ、前記計算デバイスが、該計算デバイスのユーザー状態と前記計算デバイスのシステム状態とを保持する揮発性メモリーを含む複数のハードウェア・コンポーネントを含み、前記停止シーケンスが、
前記計算デバイスにおけるユーザー・セッションを強制終了させるステップであって、これにより前記ユーザー状態が前記揮発性メモリーにもはや保持されなくなる、ステップと、
前記強制終了に続いて、前記揮発性メモリーの内容を不揮発性メモリーにコピーするステップであって、前記不揮発性メモリーにコピーされた内容が、保持された前記システム状態を含むが、もはや保持されていない前記ユーザー状態を含まない、ステップと、
前記計算デバイスの前記複数のハードウェア・コンポーネントの内少なくとも一部のハードウェア・コンポーネントの電源を切るステップと、
を含む、少なくとも１つのコンピューター記憶デバイス。
【請求項９】
請求項８に記載の少なくとも１つのコンピューター記憶デバイスにおいて、前記強制終了は、前記システム状態からユーザー特定の設定を除去することを含む、少なくとも１つのコンピューター記憶デバイス。
【請求項１０】
請求項８又は９に記載の少なくとも１つのコンピューター記憶デバイスにおいて、前記停止シーケンスは、更に、前記電源を切ったことに続きかつ起動命令を受けたことに応答して、前記複数のハードウェア・コンポーネントの内少なくとも前記一部のハードウェア・コンポーネントに電源を入れるステップ、を含む、少なくとも１つのコンピューター記憶デバイス。
【請求項１１】
請求項１０に記載の少なくとも１つのコンピューター記憶デバイスにおいて、前記停止シーケンスは、更に、前記複数のハードウェア・コンポーネントの内少なくとも前記一部のハードウェア・コンポーネントに電源を入れたことに続いて、前記不揮発性メモリーから前記揮発性メモリーに前記コピーされた内容をコピーするステップを含む、少なくとも１つのコンピューター記憶デバイス。
【請求項１２】
請求項１１に記載の少なくとも１つのコンピューター記憶デバイスにおいて、前記揮発性メモリーの内容を不揮発性メモリーにコピーするステップは、前記コピーされた内容を含むファイルを検出することに基づく、コンピューター記憶デバイス。
【請求項１３】
請求項８〜１２のいずれか一項に記載の少なくとも１つのコンピューター記憶デバイスにおいて、前記揮発性メモリーの内容を不揮発性メモリーにコピーするステップは、ファイルを作成することを含む、少なくとも１つのコンピューター記憶デバイス。
【発明の詳細な説明】
【従来技術】
【０００１】
[0001]  コンピューターには、完全動作(full operation)から完全停止(full shutdown)までに及ぶ様々な動作モードがある。完全動作では、オペレーティング・システムの実行部分を定めるソフトウェアが、不揮発性メモリーから揮発性メモリーにロードされており、揮発性メモリーから一層素早く実行することができる。コンピューターは、「起動」(startup)プロセスを経てこの完全動作に入る。起動プロセスは、ハードウェアを構成設定し(configure)、コンピューターのオペレーティング・システムをロードする。この起動プロセスの一部として、ドライバーがインストールされ、オペレーティング・システムのサービスが開始される。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
[0002]  一旦コンピューターが任意のユーザーによる動作の準備ができたなら、ユーザーはコンピューターにログオンすることができる。このログオンは、更に、ログオンしたユーザーに特定のプロファイルに基づく、コンピューターの構成設定を更に必要とする場合がある。次に、自動的にまたはユーザー入力に応答してのいずれかで、アプリケーションをロードすることができ、これらのアプリケーションは、計算デバイスのハードウェアおよびオペレーティング・システムの能力を利用して実行することができる。
【０００３】
[0003]  ソフトウェアをロードするプロセスでは、オペレーティング・システムであれアプリケーションであれ、メモリーを割り当てることができ、コンピューターまたはユーザー・プロファイルのハードウェア構成に基づいて、ソフトウェアのパラメータに値を割り当てることができ、そして他の構成設定動作も実行することができる。
【０００４】
[0004]  これらの動作が計算デバイスの「状態」を確定する。更に、ユーザーが、実行中のアプリケーションまたはオペレーティング・システム・サービスと相互作用するコマンドを供給すると、システムのメモリーや他のパラメータに対して、その動作状態を定める変更も行うことができる。
【０００５】
[0005]  完全停止モードでは、コンピューターのハードウェア・コンポーネントに電力が供給されない。揮発性メモリーにはソフトウェアも状態情報も格納されていない。何故なら、このメモリーは、電源が切られると、情報を保持できないからである。代わりに、後にコンピューターを完全動作モードに再構成設定するために使用される任意の情報は、不揮発性メモリーに格納される。
【０００６】
[0006]  コンピューターは、停止(shutdown)と呼ばれるプロセスによって、停止モードに入る。停止の間、コンピューターを構成設定し直すために必要となり得るあらゆる情報は、不揮発性メモリーに未だ格納されていない場合、不揮発性メモリーに格納することができる。不揮発性メモリーから揮発性メモリーにコピーされたソフトウェアおよび他の構成設定情報は、非揮発性メモリーにはコピーされない。何故なら、以後の起動プロセスにおいて作り直すことができるからである。しかしながら、揮発性メモリーが不揮発性メモリーからコピーされたデーターをキャッシュし、コピーされた後に変更された場合に限って（「ダーティ」データーと呼ばれることもある）、そのデーターは停止の間に不揮発性メモリーにコピーされる。
【０００７】
[0007]  別の変種(variation)にログオフと呼ばれるものがある。ユーザー・セッションをサポートするコンピューターにおいては、ユーザーはコンピューターの機能にアクセスするために、これにログオンすることができる。停止は事実上ユーザーをログオフするが、別のログオフ・プロセスを実行することもでき、この後では、コンピューターの電源は落とさない。むしろ、オペレーティング・システムはロードされたままであり、他のユーザーがログオンする準備ができている。ログオフの間、コンピューターはユーザー・セッションを「強制終了」(break down)する。ユーザー・セッションを強制終了する場合、ユーザーによって始められた(launched)アプリケーションを閉じ、不揮発性メモリーに未だ入っていないユーザー特定データーを格納することを伴う場合がある。
【０００８】
[0008]  完全停止またはログオフに加えて、節電モードがある場合もある。このモードでは、コンピューターのハードウェア・コンポーネントの一部または全部がオフに切り替えられる。節電モードは、スリープ・モードと呼ばれることもあり、コンピューター・プロセッサー、ネットワーク・インターフェースの電源が切られ、そして他のコンポーネントの電源も切られることもある。しかしながら、揮発性メモリーの電源は維持される。このように、コンピューターのブートまたはその後の動作の間に作られた任意の状態情報は、揮発性メモリーに保持される。電力が再度プロセッサーに供給されると、スリープ・モードに入ったときに置かれた状態で、動作を再開することができる。
【０００９】
[0009]  休止(hibernate)モードとも呼ばれることがある、更に他のモードもある。コンピューターは、休止(hibernation)と呼ばれるプロセスによってこのモードに入る。休止の間、コンピューターの動作状態を取り込んだファイルが作られ、不揮発性メモリー、通例では、ハード・ディスクに格納される。休止から再開するプロセスの間に、このファイルをディスクから読み出して、コンピューターが休止のときに存在していたコンピューターの状態を再現するために使用することができる。休止から再開すると、休止の時点に存在していた動作の間に設定されたソフトウェアやパラメータのコピーが、揮発性メモリー内に復元され、任意のユーザー状態が復元されるようになっている。
【００１０】
[0010]  休止からの再開は、様々な理由のために、完全起動を実行するよりも速くすることができる。１つの理由は、休止ファイル内の状態情報を揮発性メモリーにコピーすることによって完全起動プロセスの結果を作り直し、ＣＰＵ消費、デバイス初期化、およびブートの間に行われなければならない多くの他のタイプの作業というような、起動プロセスのステップを実行するのに費やされる時間が避けられるからである。加えて、起動中にアクセスされた情報は、多くの異なるファイルに格納され、オペレーティング・システムにおける数万にもなる可能性があるコンポーネントをロードし構成設定するためにアクセスされる異なるコンポーネントを表す。これらのコンポーネント、およびこれらを構成設定するためにアクセスされる情報は、ハード・ディスクにわたってランダムに分散されているかもしれない。ハード・ディスク・ドライブ、および他の何らかの形態の大容量ストレージはシーケンシャル・データーにアクセスするには最も効率的なので、ランダムに分散されたデーターにアクセスするには、かなりのディスク・アクセス時間が含まれ、起動プロセスが長くなる可能性がある。対照的に、休止ファイルを読み出すときのアクセス時間は短い。何故なら、このファイルにおける情報は、ディスクに順次格納されているからである。
【００１１】
[0011]  休止からの再開と起動との間における他の相違は、休止し次いで再開すると、コンピューターの全状態が復元され、コンピューターが休止した時点におけるコンピューターのユーザーについての任意のユーザー状態が含まれることである。対照的に、ユーザーがログオンするまで、起動はあらゆるユーザーに対して包括的にコンピューターを構成設定する。次いで、特定のユーザーがログオンするか、またはそれ以外の操作を行って、彼ら自身のためにコンピューターを構成設定することができる。この理由のために、ユーザーがしばらくの間コンピューターから離れるがコンピューターに戻って来るつもりでいる場合、休止がユーザーによって選択されるのが一般的である。停止は、ユーザーがもっと長い時間コンピューターから離れ、恐らくはコンピューターに全く戻ってこようとしないユーザー、あるいはユーザーが戻って来る前に他のユーザーがコンピューターを使用するかもしれないと考えるユーザーによって使用されるのが一般的である。
【課題を解決するための手段】
【００１２】
[0012]  ユーザー体験を改善するために、休止モードに入ることによって、停止のユーザー・コマンドに応答するように、コンピューターを構成することができる。このようなコンピューターは、ユーザーがコンピューターを起動するコマンドを与えた後に、一層素早くユーザーによる操作の準備を終えることができる。ユーザーの期待と一致する状態でコンピューターが動作の準備を素早く終えることを可能にするために、休止ファイルが、ユーザーの期待を実現する目標状態を取り込む。停止コマンドに応答して、コンピューターは、休止の前に、停止プロセスにおけるステップの内一部のみを実行することによって、この目標状態を作る。これらのステップを実行すると、オペレーティング・システムはロードされたままであるがユーザー・セッションは強制終了させられた状態に対応する目標状態に、コンピューターを置くことができる。
【００１３】
[0013]  起動コマンドを受けると、コンピューターは、ソフトウェアをロードし構成設定することによって動作状態を作るのではなく、休止ファイルを揮発性メモリーにコピーすることによって、目標状態を再度作ることができる。次いで、コンピューターは、起動シーケンスの部分のみを実行することができる。これらの部分は、従来であれば、オペレーティング・システムがロードされた後に起動シーケンスにおいて行われていた動作を含むことができる。これらのステップは、例えば、ユーザーのログオンを実行し、ユーザー状態を定めるアプリケーションをロードするためにユーザーと相互作用することを含むことができる。
【００１４】
[0014]  実施形態の中には、停止を指示するユーザー・コマンドに応答して、条件付き処理を実行することができる場合もある。計算デバイスは、たとえば、完全停止が要求される動作状態に当該計算デバイスがあるか否か、または後続の起動コマンドに応答して使用するために休止ファイルを作成することが適しているか否か判断することができる。
【００１５】
[0015]  このような状態は、複数の方法の内任意のものにおいて特定することができ、何らかのインストールされているコンポーネントの構成設定が変化し、そのコンポーネントが完全起動シーケンスの一部として再度ロードされるまで適用されないと判断することによって特定することを含む。あるいは、プログラミング・インターフェースを設けることもでき、完全停止を要求するものとして、アプリケーション・コンポーネントを登録することができる。
【００１６】
[0016]  このような状態が検出された場合、計算デバイスの電源が完全に落ちるまで、従来の停止処理を実行することができる。検出されない場合、計算デバイスが目標状態になるまで、停止シーケンスを実行することができ、目標状態から、休止ファイルを作ることができる。
【００１７】
[0017]  実施形態の中には、ユーザーの起動コマンドに応答して、条件付き処理を実行することができる場合もある。この条件付き処理は、休止ファイルが存在するか否か判断することを含むことができる。存在する場合、計算デバイスの目標状態が、休止ファイルが作られたときと起動コマンドが受け入れられたときとの間で変化した可能性があるか否かについて、他のチェックを行うことができる。状態変化を起こし得るイベントが検出された場合、計算デバイスは完全起動シーケンスを実行することができる。
【００１８】
[0018]  以上は、添付した特許請求の範囲によって定められる、本発明の非限定的な摘要である。
【図面の簡単な説明】
【００１９】
[0019]  添付図面は、同じ縮尺で描かれることは意図していない。図面において、同じコンポーネントまたはほぼ同じコンポーネントが種々の図において図示されている場合、各々、同じ番号で表すこととする。明確化のために、各図面において全てのコンポーネントには番号を付けていない。図面において、
【図１】図１は、計算デバイス内における起動シーケンスを示す概念ブロック図である。
【図２】図２は、計算デバイス内における休止シーケンスからの再開を示す機能ブロック図である。
【図３】図３は、本発明の実施形態による高速起動シーケンスを示す機能ブロック図である。
【図４】図４は、本発明の実施形態にしたがって、起動コマンドに応答するように計算デバイスを動作させる方法のフロー・チャートである。
【図５】図５は、本発明の実施形態にしたがって、停止コマンドに応答するように計算デバイスを動作させる方法のフロー・チャートである。
【図６】図６は、本発明の実施形態にしたがって条件付きで実行することができる起動シーケンスの一部のフロー・チャートである。
【図７】図７は、ユーザーが、停止時に計算デバイスの異なる挙動を起こさせるコマンドの中から選択することができる、グラフィカル・ユーザー・インターフェースの一部のスケッチである。
【図８】図８は、本発明の実施形態が動作することができる環境を示す、計算デバイス例のブロック図である。
【発明を実施するための形態】
【００２０】
[0028]  本発明者は、計算デバイスのユーザーの体験が、計算デバイスの停止および／または起動シーケンスの一部と合わせて休止ファイルを使用することによって改善できることを確認し認識した。このようなファイルは、計算機のふるまい(performance)がユーザーの期待と一致するように、停止時に選択的に作ることができ、起動時に選択的に使用することができる。休止ファイルが作られるまたは使用されるときでも、従来の停止または起動シーケンスの一部を実行することができる。
【００２１】
[0029]  ユーザーの期待と相容れる計算デバイスの動作を提供するために、休止は、計算デバイスの従前からの停止シーケンスの内、計算デバイスを目標状態に置く部分と共に使用することができる。これらの部分は、停止コマンドを受けたときに、ユーザー・セッションを強制終了する動作を含むことができる。加えて、停止コマンドに応答する部分として、ユーザー・セッションが強制終了された後に揮発性メモリー内に保持されていたが、不揮発性メモリー内に保持されることが意図されている情報が、不揮発性メモリーに移動させられる。例えば、従前のキャッシュ一掃動作(cache flushing operation)は、従来の停止の間に行われるものを模しているが、これを実行することができる。
【００２２】
[0030]  逆に、起動コマンドの処理時に、休止からの再開を起動シーケンスの部分と共に実行することができる。このシーケンスは、オペレーティング・システムがロードされ動作の準備ができた後に行われる起動シーケンスの任意の部分を含むことができる。起動シーケンスのこの部分は、例えば、ユーザーのログオンおよびアプリケーションのロードを含むことができる。  
【００２３】
[0031]  更に、ユーザーの期待と相容れる動作に備えるために、休止ファイルの作成および使用は、停止または起動の一部として、動的に決定されるイベントを条件として行うことができる。動作セッション中にあるコンポーネントが構成設定し直され、次にこのコンポーネントがロードされるときまで構成変更が適用されないというシナリオでは、休止ファイルを作成しないこともできる。ユーザーからの次の起動コマンドに応答して、コンピューターは、休止ファイルが入手できないことを検出し、オペレーティング・システムを再ロードすることによって、目標状態を作る。あるいはまたは加えて、オペレーティング・システムは、インターフェースを提供することができる。このインターフェースを介して、他のコンポーネントは、効果的に機能するためには完全停止または起動が必要となることを表明するために登録することができる。実行コンポーネントが登録されると、停止コマンドに応答して完全停止シーケンスを実行することができる。
【００２４】
[0032]  更に、ユーザーの期待と相容れる動作を行うために、ユーザー・インターフェースを提供することができ、これを介して、ユーザーは従来の停止、または、目標状態が作られ次いで休止プロセスが実行される、変更停止(modified shutdown)を実行するか否か指定することができる。このようなユーザー・インターフェースは、従来の停止、および休止を組み込んだ変更停止シーケンスのために、別の選択肢を提示することができる。計算デバイスは、従来の停止コマンドと名付けられた(labeled as)入力に応答して、条件付きで、変更停止シーケンスを呼び出すことができる。別のコマンド選択肢を、このインターフェースを介して提供することもでき、これを使用してユーザーは従来の停止を指定することもできる。
【００２５】
[0033]  これより図１に移ると、完全起動シーケンスの機能ブロック図が示されている。図１は、本発明の実施形態にしたがって動作するように構成することができる計算デバイス１００の機能ブロック図を示す。
【００２６】
[0034]  この例では、計算デバイス１００は揮発性メモリー１２０を含む。揮発性メモリー１２０は、ＤＲＡＭまたは任意の他の適したメモリー・コンポーネントを使用して実現することができる。計算デバイス１００によって実行される起動シーケンスは、揮発性メモリー１２０内に状態情報を作ることを伴う。この状態情報は、計算デバイス１００が、当技術分野では周知のように計算動作を実行することを可能にする。
【００２７】
[0035]  この例では、この状態情報は、２つの部分、即ち、ユーザー状態情報１３０およびシステム状態情報１４０を有するように示されている。システム状態情報１４０は、任意のユーザーによる動作のために計算デバイス１００を包括的に構成設定する状態情報を表す。対照的に、ユーザー状態情報１３０は、計算デバイス１００が特定のユーザーによる動作のために動作するまたは構成設定されるときに生成することができる状態情報を表す。
【００２８】
[0036]  システム状態情報１４０およびユーザー状態情報１３０は、当技術分野では周知のように、起動プロセスにしたがって揮発性メモリー１２０内に作ることができる。図１は、簡素化した概念で、従来の起動シーケンスにおけるステップを示す。このようなシーケンスは、例えば、計算機１００に電源を入れるとき、または起動を知らせる他のコマンドが与えられたときに開始することができる。
【００２９】
[0037]  計算デバイス１００は、当技術分野では周知のコンポーネントを含むことができる。これらのコンポーネントにはプロセッサー１１０を含むことができる。プロセッサー１１０は、マイクロプロセッサーあるいはマイクロプロセッサーまたはプロセッサー・コアの集合体として実現することができる。これは当技術分野では周知のことである。本明細書において記載する動作は、プロセッサー１１０がソフトウェア命令を実行する結果とすることができる。
【００３０】
[0038]  加えて、計算デバイス１００は、複数のタイプのコンピューター記憶媒体を組み込むことができる。この場合、これらのタイプには、揮発性メモリーおよび不揮発性メモリーが含まれる。この例では、揮発性メモリー１２０が示されている。種々のタイプの情報が、不揮発性メモリー１５０および１５２に格納される。ブート・メモリー１５４も不揮発性メモリーである。異なる物理デバイスが、不揮発性メモリー１５０および１５２ならびにブート・メモリー１５４を実現するために使用されてもよい。例えば、不揮発性メモリー１５０は、回転ハード・ディスクまたはソリッド・ステート・ドライブのような、ディスクであってもよい。不揮発性メモリー１５２も、同様に、ディスクであってもよく、不揮発性メモリー１５０を実現するために使用される同じディスクであっても、同じディスクにおける異なるパーティションであっても、あるいは完全に異なるディスクであってもよい。
【００３１】
[0039]  不揮発性メモリー１５４は、同様に、不揮発性メモリー１５０および１５２を実現するために使用された同じデバイスの一部であってもよい。しかし、図示する実施形態では、不揮発性メモリー１５４は、プロセッサー１１０に接続された不揮発性メモリー・チップであってもよい。したがって、図１は、メモリー・アーキテクチャの単なる一例を表すに過ぎず、任意の適したメモリー・アーキテクチャを使用すればよいことは認められてしかるべきである。
【００３２】
[0040]  この例では、不揮発性メモリーおよび揮発性メモリーが示されている。このような構成は、従前からのコンピューター・アーキテクチャを代表する。しかし、この特定のアーキテクチャーを使用することは必須ではない。逆に、揮発性メモリー１２０は動作メモリーの一例である。計算デバイス１００の動作中、プロセッサー１１０は主に揮発性メモリー１２０からソフトウェアおよびデーターにアクセスして、動作を実行することができる。このメモリーは、動作がプロセッサー１１０によって素早く実行できるように、比較的高速であるとよい。
【００３３】
[0041]  対照的に、不揮発性メモリー１５０および１５２のような不揮発性メモリーは、大量のデーターを格納することができるとよいが、揮発性メモリー１２０よりも遅く動作するのでもよい。一般に、このような不揮発性メモリーに情報を格納するコストは、揮発性メモリー１２０に情報を格納するコストと比較すると、比較的小さくすることができる。価格効率的で、しかも高速の動作を達成するためには、情報を不揮発性メモリーと揮発性メモリーとの間で送るとよい。これらの伝送は、計算デバイス１００の所望の動作をサポートする状態を、揮発性メモリー１２０内に作るために行われる。
【００３４】
[0042]  コンピューター・システムには他のコンポーネントがあってもよいが、簡略化のために省略されている。他の実施形態においてあってもよいコンポーネントの更なる詳細は、図８と関連付けて以下で説明する。しかしながら、図１における簡略化した図は、起動プロセスの説明にも適している。
【００３５】
[0043]  起動コマンドに応答して、プロセッサー１１０はブート・メモリー１５４内の命令にアクセスし実行することができる。ブート・メモリー１５４は、プロセッサー１１０に不揮発性メモリー１５０および１５２にアクセスさせ、これらのメモリーに格納されているソフトウェアおよびデーターに基づいて、揮発性メモリー１２０においてしかるべき状態を生成させる命令を含むことができる。
【００３６】
[0044]  ブート・メモリー１５４内の命令は、プロセッサー１１０に不揮発性メモリー１５０からソフトウェアをロードさせることができる。ソフトウェア・コンポーネントをロードする一部として、プロセッサー１１０はソフトウェア命令を揮発性メモリー１２０に送り、そのソフトウェアを揮発性メモリー２０から実行することができる。しかし、ソフトウェアをロードするには、何らかのコンポーネントの実行を含む、他の動作を含むこともできる。
【００３７】
[0045]  揮発性メモリー１２０からの何らかのコンポーネントの実行により、ソフトウエアを、それが格納されていた状態から、それが使用される、即ち、他のコンポーネントを不揮発性メモリーから揮発性メモリー１２０に送らせる状態に変換させることができる。ソフトウェアをロードするプロセスにおいて、プロセッサー１１０は、不揮発性メモリー１５２に格納されているデーターまたは他の情報に基づいて、ソフトウェアを構成設定することができる。この情報は、たとえば、計算デバイス１００にインストールされているハードウェア・コンポーネントについての情報を含むことができる。したがって、図１は、起動プロセスの第２および第３ステップが、不揮発性メモリー１５０からソフトウェアを得て、不揮発性メモリー１５２からデーターを得ることとすればよい。
【００３８】
[0046]  このプロセスにおいてロードされる最初のソフトウェアが、システム状態１４０を確定させることができる。最初にロードされるソフトウェアは、システム状態１４０に、ハードウェア・コンポーネントを制御するドライバー１４６を追加することができる。ドライバーをロードする前に、計算デバイス１００と関連するハードウェア・コンポーネントを識別するとよく、しかるべきドライバーを選択するとよい。一旦ドライバーがインストールされたなら、オペレーティング・システム・サービス、および他のコンポーネントは、そのドライバーを介して制御されるデバイスと相互作用を行うことができる。
【００３９】
[0047]   次に、オペレーティング・システム・サービス１５２をロードすることができる。このようなサービスの一例に、ファイル・マネージャー１４４がある。ファイル・マネージャー１４４は、実行中のオペレーティング・システム・サービスおよびアプリケーションが、ファイルにしたがって編成されている不揮発性メモリー内のデーターにアクセスすることができるように、揮発性メモリーにおいてデーターを編成することができる。オペレーティング・システムによって設けられる他のサービスは、ユーザー・インターフェースと相互作用し、ネットワーク接続を作り、情報をプリンターに送ることを含むことができる。しかし、これら特定のオペレーティング・システム・サービス１４２は、本発明に対する限定ではない。
【００４０】
[0048]  加えて、システム状態１４０を確定するプロセスの間、プロセッサー１１０はシステム状態データー１４８を格納することができる。このようなデーターは、不揮発性メモリー１５２のような不揮発性メモリーからコピーすればよく、またはソフトウェア・コンポーネントの実行によって生成してもよい。このデーターは、例えば、プロセッサー１１０が、計算デバイス１００内部にインストールされているデバイスを発見する命令を実行するときに生成してもよい。特定の例として、特定のネットワーク・インターフェース・カードを発見したとき、プロセッサー１１０はシステム状態データー１４８の一部として、ネットワーク・インターフェース・カードのタイプまたは能力を記録することができる。このデーターは、次に、計算デバイスの動作中に使用され、ネットワーク・インターフェース・カードとの相互作用を制御することができる。しかし、システム状態データー１４８に格納される特定のデーターは、本発明にとって重要ではないことは、認められてしかるべきである。
【００４１】
[0049]  特定のオペレーティング・システム・サービス１４２や、システム状態情報１４０において作られるシステム状態データー１４８には関係なく、このシステム状態情報１４０が作られるとき、計算デバイス１００は、ユーザーによる動作の準備ができているとよい。したがって、起動シーケンスは、ユーザー・ログオンと呼ばれることもあるプロセスに継続することができる。ユーザー・ログオンの一部として、特定のユーザーを特定することができ、揮発性メモリー１２０内において、計算デバイス１００がそのユーザーのために動作を実行することを可能にするために、更に他の状態情報を作ることができる。この例では、ユーザー状態情報１３０が、アプリケーション命令１３２およびユーザー状態データー１３４を含むことが示されている。
【００４２】
[0050]  オペレーティング・システム・コンポーネントを表す命令や、システム状態を表すデーターと同様、アプリケーション命令１３２は、揮発性メモリー１５０に格納されているソフトウェアに基づいて、メモリーにロードされるとよい。ソフトウェアをロードするプロセスは、ソフトウェアまたは計算デバイスを動作に対してしかるべき構成設定する機能を実行することを伴うことができる。この構成は、システム状態データー１４８またはユーザー状態データー１３４に依存するのであってもよい。
【００４３】
[0051]  単なる一例として、ウェブ・ブラウザを実現するアプリケーション命令をロードすると、プロセッサー１１０は、不揮発性メモリー１５２またはユーザー状態データー１３４のいずれかからのユーザー・データーを表す情報にアクセスすることができる。この情報は、ユーザーが「お気に入り」として特定した具体的なウェブ・サイトを特定する。この例では、ユーザー状態データー１３０を作ると、ユーザーの好みにしたがって、実行用にウェブ・ブラウザを構成設定する。これは、計算デバイス１００においてログオンした特定のユーザーに対してカスタム化されたお気に入りのリストを提示することを含む。
【００４４】
[0052]  一旦ユーザー・ログオンが完了すると、次に、ユーザーは計算デバイス１００と対話処理することができる。これらの対話処理の結果、他のソフトウェアをロードするか、または何らかのロードされているアプリケーションを閉じることができる。加えて、ユーザーの対話処理によって、パラメータを設定することもでき、あるいはユーザー状態１３０またはシステム状態１４０のいずれかを変化させる他の動作を行うことができる。これらの対話処理は、ユーザーがそのセッションを終了する意図を示すコマンドを入力するまで、継続することができる。
【００４５】
[0053]  セッションは、複数の方法の内１つで終了させればよい。例えば、ユーザーが計算デバイス１００との対話処理のセッションを完了したとき、ユーザーはログオフすること、および／または計算デバイス１００を停止させることができる。ログオフした結果、ユーザー・セッションは強制終了させられ、ユーザー状態情報１３０はもはやメモリー１２０内では得ることができなくなる。ログオフ・シーケンスの一部には、ユーザー特定設定をシステム状態１４０から除去することを伴うこともできる。このように、第２ユーザーが、以前のユーザーによって生成された状態情報によって影響されることなく、またこの状態情報にアクセスすることができずに、計算デバイス１００においてログオンすることができる。この結果を得る動作は、ユーザー・セッションを強制終了すると記述するとよい場合もある。
【００４６】
[0054]  システム状態１４０は、ログオフの後にも保持されているとよい。何故なら、メモリー１２０への電力を維持することができるからである。対照的に、停止の結果、ユーザー状態１３０およびシステム状態１４０の双方は、揮発性メモリー１２０から取り除くことができる。揮発性メモリー１２０への電源が止まるので、揮発性メモリー１２０内の情報は、停止シーケンスの終了時に失われる。したがって、その状態を再度作るために必要とされる任意の情報は、不揮発性メモリーに予め格納されていない場合、不揮発性メモリーに移動させることができる。
【００４７】
[0055]  ログオフおよび／または停止シーケンスは、必ずしも起動シーケンスの逆ではない。何故なら、不揮発性メモリーから生成される情報を全く戻す必要がないからである。この同じ情報は、後続の起動時に再度生成することができる。しかしながら、ユーザー状態１３０の内、セッション中に動的に生成され不揮発性メモリー内の情報から再度作ることができない部分は、ログオフまたは停止動作の一部として、不揮発性メモリーに記録するとよい。同様に、停止のときに、システム状態データー１４８の内、起動シーケンスの再実行時に再度作ることができない部分は、停止シーケンスの一部として、不揮発性メモリーに移すこともできる。
【００４８】
[0056]  一例として、システム状態データー１４８は、キャッシュを含むことができ、不揮発性メモリー１５２に格納されているデーター項目の作業用コピーとして機能する。キャッシュは、揮発性メモリー内に、不揮発性メモリー内に保持すべき情報のコピーを作ることによって、計算デバイス１００の動作を高速化する。より速い揮発性メモリーにおいて情報の読み出しまたは書き込みを行うと、不揮発性メモリーにおいて同じデーターにアクセスすることと比較して、計算デバイスの動作が高速化される。
【００４９】
[0057]  揮発性メモリー内にあるデーターのコピーが変化すると、もはや不揮発性メモリーにおける対応データーとは一致しない。このキャッシュ内のデーターは「ダーティ」と言われる。不揮発性メモリーをキャッシュ内のコピーと同期させるために、ダーティ・データーを適宜不揮発性メモリーにコピーする。通常、コンピューターが特にビジーでないときに、ダーティ・データーがコピーされる。
【００５０】
[0058]  しかし、ダーティ・データーのコピーが遅れると、停止時に、キャッシュ内のデーターが、不揮発性メモリー内にあるデーターと一致しない可能性が生ずる。不一致を回避するために、計算デバイス１００を停止する前に、ダーティ・データー一掃とも呼ばれる動作を実行するとよい。この動作の間に、ダーティ・データーは不揮発性ストレージにコピーされる。
【００５１】
[0059]  図１に示す起動シーケンスは、計算デバイス１００をユーザーによる動作のために構成設定するので望ましいが、起動シーケンスは、場合によっては、苛々の元となる可能性がある。オペレーティング・システムおよびユーザーによって望まれるアプリケーションは、合計すると、数千または数万ものコンポーネントを含むことがある。したがって、起動シーケンスは、不揮発性メモリー１５０、１５２からの複数の読み出し動作を伴う可能性がある。これらのメモリーは一般に動作が遅いので、プロセス全体も相対的に遅くなる可能性がある。加えて、起動シーケンスは、記憶関連動作以外にも時間のかかる動作を伴う場合がある。加えて、例えば、ＣＰＵまたはデバイスの初期化によって、計算に時間が費やされる可能性がある。
【００５２】
[0060]  図２は、揮発性メモリーに状態データーを作る手法例を示す。図２は、休止シーケンスからの再開の一部として、状態データーが揮発性メモリー１２０において作られる動作のシーケンスにおける計算デバイス１００を示す。
【００５３】
[0061]  休止とは、状態情報を揮発性メモリーから不揮発性メモリーにコピーすることによって作ることができる動作モードである。このような状態情報は、任意の適した方法で編成することができる。図２に示す実施形態では、この状態情報は、不揮発性メモリー１５２内にある休止ファイル２１０に格納されていることが示されている。休止の間、プロセッサー１１０は、ユーザー状態情報１３０およびシステム状態情報１４０を含む状態情報を、休止ファイル２１０にコピーすることができる。次いで、コンピューター・システム１００のコンポーネントの全部または一部への電源を切ることによって、休止モードに入る。電源を切ると、揮発性メモリー１２０内の状態情報は失われる。しかしながら、これは、休止ファイルを揮発性メモリーにコピーすることによって、再度作ることができる。
【００５４】
[0062]  したがって、図２は、休止シーケンスからの再開が、プロセッサー１１０がブート・メモリー１５４に格納されている命令にアクセスすることによって、図１に示した起動シーケンスと同様に開始することができることを示す。これらの命令は、プロセッサー１１０に休止ファイル２１０の存在をチェックさせる。この例では、休止ファイル２１０を検出すると、プロセッサー１１０は休止ファイル２１０の内容を揮発性メモリー１２０にコピーする。このコピー動作は、直接コピーを伴うことができ、あるいはファイルを伸張するというような、何らかの方法で、コピーされるときに、この情報を変換する処理を伴うこともある。処理がこの処理の一部として実行されるか否かには関係なく、最終的に状態情報が復元される。一旦状態情報が復元されたなら、ユーザーは、休止の時点で中断された計算セッションを再開することができる。システム状態データー１４８およびユーザー状態データー１３４の双方は、揮発性メモリー１２０に戻される。加えて、アプリケーション１３２、オペレーティング・システム・サービス１４２、およびドライバー１４６も同様に揮発性メモリー１２０に戻され、実行の準備ができる。
【００５５】
[0063]  休止からの再開の方が、図１と関連付けて例示した全起動シーケンスを実行するよりも速いことが多い。休止および全起動の間に、同じ量の情報が最終的には揮発性メモリー１２０に置かれるが、この情報をファイルから単純にコピーする方が、ソフトウェアおよび構成設定データーをロードすることによってそれを生成するよりも速くすることができる。
【００５６】
[0064]  しかしながら、休止モードに入り次いで休止から再開することは、停止を実行し、次いで起動シーケンスを実行することに対して常に適した代案ではない。本出願人は、計算デバイスを停止するユーザー・コマンドに応答して休止を実行し、その後計算デバイスを起動するユーザーからのコマンドに応答して休止から再開すると、ユーザーの期待を満たす計算デバイスの動作が行われない場合があることを確認し、認識した。
【００５７】
[0065]  本発明者は、既存のユーザーの期待を裏切ることなく、動作体験を高速化する方法を確認した。図３は、計算デバイス１００が条件付きで休止を停止シーケンスに組み込む機能ブロック図を示す。加えて、計算機は、条件付きで、起動シーケンスにおいて休止からの再開も組み込むことができる。
【００５８】
[0066]  図３に示す実施形態では、計算デバイス１００は、不揮発性メモリー１５２にコピーされた状態情報を含むことが示されている。この実施形態では、状態情報は、休止ファイル３１０としてフォーマットされる。休止ファイル３１０は、当技術分野で周知のような、休止ファイルの形態であってよい。しかし、状態情報を不揮発性メモリーに格納するためには、任意の適したフォーマットを使用すればよいことは、認められてしかるべきである。
【００５９】
[0067]  休止ファイル２１０に格納された情報とは対照的に、休止ファイル３１０はシステム状態１４０を含む。ユーザー状態１３０は、休止ファイル３１０の一部として格納される必要はない。しかし、実施形態の中には、ユーザー状態の一部を格納するとよい場合もある。したがって、ユーザーが起動コマンドを計算デバイス１００に供給すると、プロセッサー１１０は、ブート・メモリー１５４から命令を実行し始めることができる。これは、図２に示した動作モードにおいて行われることと同様である。休止ファイル３１０の存在を検出すると、プロセッサー１１０は休止ファイル３１０の内容を揮発性メモリー１２０にコピーすることができる。このコピー動作によって、システム状態１４０を揮発性メモリー１２０内に再度作る。
【００６０】
[0068]  この状態は、オペレーティング・システム・ソフトウェアをロードした後で、ユーザー・ログオンが行われる前における、図１に示した起動シーケンスにおける計算デバイス１００の状態を真似ることもできる。したがって、揮発性メモリー１２０において状態情報の作成を完了するために、プロセッサー１１０は、システム状態が作られた後に行われる、図１と関連付けて先に説明した起動シーケンスのステップを実行することができる。この場合、これらの動作は、不揮発性メモリー１５０からソフトウェア命令を読み出し、不揮発性メモリー１５２内のデーターに基づいてそれを構成設定することによって、アプリケーション命令１３２をロードすること、およびユーザー状態データー１３４を作ることを含むことができる。これらの動作シーケンスの完了時には、揮発性メモリー１２０における状態情報は、図１と関連付けて先に説明した起動シーケンスを実行した結果としてロードされたものに相応することができる。しかしながら、図３に示すシーケンスを使用して起動コマンドに応答するのに要する時間は、図１と関連付けて説明した起動シーケンスを実行するのに要する時間よりも短くすることができる。
【００６１】
[0069]  図３に示す例では、休止ファイル３１０は、休止ファイル２１０（図２）と同じフォーマットであるが、異なる情報を含む。加えて、休止ファイル３１０は、休止ファイル２１０とは異なる方法で作られる。前述のように、休止ファイル２１０（図２）は、休止コマンドの時点において揮発性メモリー１２０内に表現されていた、計算デバイス１００の状態を記録する。対照的に、休止ファイル３１０は、停止コマンドに応答して作られる。しかし、休止ファイル３１０に取り込まれる状態情報は、停止コマンドの時点における計算デバイス１００の全状態を表すのではない。
【００６２】
[0070]  逆に、一部の処理は、計算デバイス１００を目標状態に置くために実行することができ、その時点で、休止ファイル３１０を作ることができる。図示した実施形態では、目標状態は、オペレーティング・システムをロードしたときに生成されているが、ユーザーが計算デバイス１００にログオンしていない状態を表す。このような目標状態は、少なくとも部分的に、停止シーケンスの一部を実行することによって、作ることができる。例えば、その一部は、計算デバイス１００のひとりまたは複数のユーザーがログオフすること、またそれ以外ではユーザー接続を強制終了することを含むことができる。このような処理は、当技術分野では周知の技法を使用して実行すればよい。
【００６３】
[0071]  代わりにまたは加えて、計算デバイス１００を目標状態に置くために、他の処理を実行してもよい。例えば、処理は、システム状態データー１４８からダーティ・データーを一掃することを含んでもよい。
【００６４】
[0072]  更に、先に注記したように、停止コマンドに対してユーザーが期待する計算デバイス１００の反応を保存するために、休止を伴う停止シーケンスを、その時点において存在している可能性がある状態に基づいて、条件付きで実行することもできる。同様に、起動シーケンスも、休止からの再開を条件付きで伴うこともできる。図４、図５、および図６は、このような条件付き処理を示す。
【００６５】
[0073]  図４は、起動コマンドに応答して計算デバイス１００によって実行することができるような起動シーケンスを示す。起動コマンドは、例えば、ユーザーがボタンを押し、計算デバイス１００に電力を供給し、またはそれ以外で計算デバイス１００の動作を開始することによって、計算デバイス１００に供給することができる。
【００６６】
[0074]  起動シーケンスが開始されるやり方には関係なく、本プロセスはブロック４１０において開始することができる。ブロック４１０において、プロセッサー１１０はこのプロセスを開始する命令をブート・メモリー１５４から取り出して実行することができる。しかし、このプロセスの後のステップにおいて、不揮発性メモリー１５０、またはネットワーク・接続を含む任意の他の適したソースから命令を取り込むこともできる。
【００６７】
[0075]  プロセッサー１１０を制御して起動シーケンスを開始するために使用される命令のソースに関係なく、本プロセスは、休止ファイルが不揮発性メモリー１５２において検出されたか否かに依存して、判断ブロック４１２において分岐することができる。検出された場合、本プロセスは終点Ａに分岐し、図６に示すようなプロセスに継続することができる。逆に、休止ファイルが存在しない場合、本プロセスはサブプロセス４５０に進むことができる。
【００６８】
[0076]  サブプロセス４５０は、当技術分野では一般に周知の起動シーケンスを実現する動作のシーケンスを表すことができる。この例では、ブロック４２０、４２２、４２４、４２６、４２８、４３０、および４３２における処理が、既知の起動シーケンスにおけるような処理を表すことができる。しかし、任意の適した技法を使用する、任意の適した動作のシーケンスを使用すればよいことは、認められてしかるべきである。
【００６９】
[0077]  使用される特定の手法には関係なく、サブプロセス４５０における処理は、ブロック４２０において開始することができる。ブロック４２０において、プロセッサー１１０はオペレーティング・システム・ローダーを行する。このようなローダーは、ソフトウェア・コンポーネントとするとよく、実行されると、オペレーティング・システムのコンポーネントを不揮発性メモリー１５０から揮発性メモリー１２０にロードする。
【００７０】
[0078]  ブロック４２２において、作成されたオペレーティング・システムのイメージをシステム状態１４０の一部として構成設定する動作を構成設定することができる。この構成設定は、任意の適した処理を伴うことができ、揮発性メモリーにロードされたコンポーネントのパラメータの値を設定すること、またはシステム状態１４０の他の形態(aspect)を構成設定する命令を実行することを含む。
【００７１】
[0079]  また、起動サブプロセス４５０の一部として、計算デバイス１００がデバイスを検出することもできる。プリンター、ネットワーク・インターフェース、または計算デバイス１００に接続されている他の周辺機器というような、任意の適したデバイスを検出することができる。検出されたデバイスに基づいて、ドライバー・ローダーをブロック４２６において実行することができる。ドライバー・ローダーとは、既知の技法を使用して構築された、ドライバーをロードするソフトウェア・コンポーネントとすることができる。ドライバー・ローダーの実行には、検出されたデバイスのドライバー・ソフトウェアを特定しロードすることを伴うことができる。一旦ドライバーがロードされたなら、これらをブロック４２８において始動させることができる。この処理は、ドライバー、およびこれらが制御するデバイスを、計算デバイス１００にロードされている他のコンポーネントによる使用のために利用可能にすることができる。
【００７２】
[0080]  本プロセスは、ブロック４３０に進むことができ、ここでオペレーティング・システム・サービスを始動させることができる。一旦デバイスおよびオペレーティング・システムのサービスが使用のために利用可能になったなら、処理はブロック４３２に進むことができる。ブロック４３２において、アプリケーション・コンポーネントをロードすることができる。この処理は、ユーザー・ログオン・プロセスの一部で、当技術分野では周知の技法を使用して、または任意の他の適した方法で実行することができる。
【００７３】
[0081]  アプリケーション・コンポーネントがロードされると、図４に示すプロセスは、ブロック４３２においてロードされたアプリケーション・コンポーネントの性質に依存して分岐することができる。判断ブロック４４４において分岐することによって、計算デバイス１００は、この計算デバイスが従来の停止シーケンスではなく休止を使用して停止シーケンスを実行するときに、１つ以上のアプリケーション・コンポーネントが適正に動作しない場合に起こり得る問題を改善することが可能になる。コンポーネントによってはブートのやり直しが必要になるものもある。これは、計算デバイスに次に電源を入れるときに、ロード・プロセスを使用して状態が再度作られるように、起動シーケンス全体が実行されることを意味する。
【００７４】
[0082]  一例として、計算デバイス１００が起動した時刻に依存して異なる動作を実行するアプリケーション・コンポーネントは、図３に示すような休止を組み込んだ停止シーケンスが実行された場合、ユーザーが期待したように動作しない可能性がある。これらのコンポーネントでは、後続の起動が実行されるときに、その起動が休止からの復元に基づいて実行される場合、アプリケーション・コンポーネントは、休止ファイル３１０から復元された状態情報に基づいて構成設定することができる。この状態情報は、コンピューターが最後に全起動シーケンスで実行した時刻の指示を含むことができる。したがって、この状態情報に基づいてロード時に構成設定されるアプリケーション・コンポーネントには、図４に示す起動シーケンスが開始されたときを表す時刻値が設定されない。
【００７５】
[0083]  可能なユーザーの期待とは対照的に、そのコンポーネントには、全起動シーケンスが実行された以前の時刻を表す時刻値が設定される。この場合、このアプリケーション・コンポーネントの挙動は、ユーザーの期待とは異なる時刻に基づく。何故なら、ユーザーは、図４のプロセスが開始した時刻に基づいて、アプリケーション・コンポーネントが構成設定されることを期待するからである。
【００７６】
[0084]  したがって、このようなアプリケーション・コンポーネントが計算デバイス１００にロードされたとき、このコンポーネントが、ユーザーからの停止コマンドに応答して、全停止シーケンスを必要とすると判断することが望ましいと考えられる。このようなコンポーネントが実行しているとき、計算デバイスは、全停止シーケンスを実行することによって、停止コマンドに応答することができる。このように、起動コマンドをその後受けたとき、休止ファイルは利用できず、例えば、図１に示したような全起動シーケンスが実行される。他のときには、計算デバイスは、停止コマンドに対して、図３に示したような休止を組み込んだ停止シーケンスで応答することができる。
【００７７】
[0085]  このようなユーザーの期待と相容れる挙動をサポートするために、アプリケーション・プログラムには、全停止または全起動シーケンスを実行することを要求することを示すメカニズムを設けることができる。図４の例では、そのメカニズムは、計算デバイス１００のオペレーティング・システムによってサポートされるアプリケーション・プログラミング・インターフェース（ＡＰＩ）によって実現することができる。全停止および全起動シーケンスを全ての場合に必要とするのではないアプリケーション・コンポーネントであっても、このようなＡＰＩを介してコールをかけることができる。
【００７８】
[0086]  したがって、ブロック４４０において、ロードされているアプリケーション・コンポーネントが再ブートを要求すると判断した場合、処理はブロック４４２に分岐することができる。ブロック４４２において、アプリケーション・プログラミング・インターフェースをコールして、このアプリケーション・コンポーネントを登録することができる。この例では、ＡＰＩは、再ブートを要求するこのアプリケーション・コンポーネントが、起動コマンドが後に受け入れられたときにまだ実行しているか否か、オペレーティング・システムが追跡することを可能にする。しかし、このようなコールは任意の時点に行われてもよいことは認められてしかるべきである。例えば、任意のコンポーネントが構成設定し直されるとき、または全停止および全起動シーケンスが実行されることを決定する動作状態に遭遇したとき、ＡＰＩを介してコールを行うことができる。
【００７９】
[0087]  このようなコールがＡＰＩを介して行われた場合、停止コマンドがその後受け入れられたときに、オペレーティング・システムは、図３に示したような休止を組み込んだ停止シーケンスを使用することができると判断するとよい。逆に、全停止および全起動シーケンスが要求されることを知らせるためにＡＰＩを介してコールが行われている場合、オペレーティング・システムは、後に起動コマンドが受け入れられたときに、全起動シーケンスを実行することができるように、休止ファイルを作らずに、全停止シーケンスを実行することができる。
【００８０】
[0088]  アプリケーション・コンポーネントが、全停止および後続の全起動シーケンスを伴う再ブートを必要とするか否か判断するためには、任意の適したメカニズムを使用すればよい。一例として、アプリケーション・コンポーネントは、ブロック４４２において示されたＡＰＩをコールするようにプログラミングすることができる。あるいは、オペレーティング・システムがコンピューター実行可能命令を含み、アプリケーション・コンポーネントがロードされているときにこれらを分析し、再ブートを要求するかもしれない機能を特定することもできる。このシナリオでは、判断ブロック４４０における処理は、各アプリケーション・コンポーネントがロードされるときに、それを分析することを伴うとよい。しかし、ロードされたアプリケーション・コンポーネントに基づいて再ブートが必要とされ得るか否か判断するためには、判断ブロック４４０において、任意の適した技法を使用すればよい。
【００８１】
[0089]  図４は、ロードされたアプリケーション・コンポーネントに基づいて、再ブートが必要とされるか否か判断することを示すが、同様の処理は、計算デバイス１００の他のエレメントに対して実行することもできる。例えば、オペレーティング・システムのコンポーネントに対して同様の処理を実行することもできる。あるいはまたは加えて、計算デバイス１００にインストールされたデバイス、または計算デバイス１００に接続されているデバイスに基づいて、同様の処理を実行することもできる。
【００８２】
[0090]  再ブートの必要性を示すことができる、判断ブロック４４０において特定された状態には関係なく、これらの状態が特定された場合、処理はブロック４４２に分岐することができ、ここで指示が格納される。この指示は、ユーザーからの停止コマンドに応答して、休止ファイルが利用可能であっても、全停止をトリガーすることができ、あるいは、代わりにまたは加えて、ユーザーの起動コマンドに応答して全起動シーケンスをトリガーすることができる。これらの状態が検出されない場合、処理はブロック４４４に進むことができる。
【００８３】
[0091]  ブロック４４４において、計算デバイス１００が、休止を組み込んだ起動シーケンスを使用することの有効性を判断することを可能にするデーターを収集することができる。この例は、ブロック４４４における処理では、サブプロセス４５０を実行する時刻を記録する。この例では、全起動シーケンスの実行を示す。この情報は、任意の適した方法で記録されればよい。例えば、起動時刻についての情報は、不揮発性メモリー１５２に記録されるとよい。この情報は、個々の起動時刻として記録され、このような全起動シーケンスが実行されるときに全起動シーケンスを実行するのに要する時間を示すことができる。あるいは、この情報は、複数の全起動シーケンスにわたる移動平均として記録してもよく、または任意の他の適した方法で記録してもよい。
【００８４】
[0092]  起動時刻についての情報は、ブロック４４４において任意の適した方法で判断すればよい。一例として、サブプロセス４５０の開始時にタイマーを始動させ、処理がブロック４４４に達したときに読み出すことができる。しかし、他の時間測定技法も知られており、ブロック４４４において適用することもできる。
【００８５】
[0093]  一旦起動時刻が記録されたなら、処理はブロック４４６に進むことができる。ここでは、計算デバイス１００の従来の動作が行われるとよい。このような動作は、停止コマンドが受け入れられるまで続くことができる。
【００８６】
[0094]  図５は、このような停止コマンドに応答して実行することができる処理を示す。図５に示すプロセスは、ブロック５１０を含み、当技術分野では周知の技法を使用する計算デバイス１００の動作を表す。動作の間、停止コマンド５１２を受けることができる。停止コマンド５１２は、グラフィカル・ユーザー・インターフェースまたはハードウェア制御によってというように、任意の適した方法で、ユーザー入力によって生成することができる。
【００８７】
[0095]  実施形態の中には、計算デバイス１００が、停止シーケンスをトリガーすることができる複数のタイプのユーザー入力をサポートするとよい場合がある。図７は、ユーザーが停止コマンドを入力することができるグラフィカル・ユーザー・インタフェースの図である。この例では、グラフィカル・ユーザー・インターフェース７１０は、コンピューターのオペレーティング・システムによって提示されるユーザー・インターフェース上に現れる「開始」(start)と称されるボタンを押すことによって呼び出される。しかし、異なるオペレーティング・システムは異なるインターフェースをサポートし、ユーザー・インターフェースを読み出す任意の適した技法を使用すればよいことは、認められてしかるべきである。
【００８８】
[0096]  このボタンを押したことに応答して、当技術分野では周知の技法を使用して、グラフィカル・ユーザー・インターフェース７１０がオペレーティング・システムによって提示されればよい。グラフィカル・ユーザー・インターフェース７１０を介して、計算デバイス１００のユーザーは、計算デバイスにおける現在のセッションを終了するための複数の可能なコマンドの中から、選択することができる。ここでは、３つの選択肢が示されている。
【００８９】
[0097]  コマンド７１４は、ここでは「停止」と称される。このような停止コマンドは、多くの計算デバイスにおいて従来と同様であり、従前より、計算デバイスが全停止シーケンスを実行することを示すために使用されている。しかしながら、図５に示す実施形態では、停止コマンド７１４をユーザーが選択すると、計算デバイス１００のオペレーティング・システムは、休止を組み込んだ部分的な停止シーケンスを代わりに実行するとよいと判断する。この実施形態では、オペレーティング・システムは、ユーザーにとって意味的意味(semantic meaning)を有するコマンドに、その意味とは相反する可能性があるような名称(label)を使用する。しかしながら、条件付き処理は、ユーザーの期待を保存する。
【００９０】
[0098]  しかし、全停止シーケンスが実行されることをユーザーが確保したい場合、異なる名称を有する別のコマンドを、この理由のために供給することができる。ユーザーが、後続の起動コマンドのときに、不揮発性メモリー１５０からソフトウェアをロードし、不揮発性メモリー５１２からのデーターでそれを構成設定することによって、オペレーティング・システムの状態が生成されるように、休止ファイルを作成せずに、計算デバイスに全停止を実行するように命令することを望む場合、ユーザーはコマンド7１５を選択するとよい。この例では、コマンド７１５は「再ブート」と称されている。このような名称は、後続の起動コマンドのときに、全起動シーケンスが実行されるように、全停止シーケンスが実行されることをユーザーに対して確認するために使用される。この場合、コマンド７１５は、「停止」コマンドが出されたときに従来の計算システムにおいて実行される動作と同様の動作を実行する。しかしながら、グラフィカル・ユーザー・インターフェース７１０を提示する計算デバイスでは、従前からの停止コマンドに関連する意味的名称は、コマンド７１４に付けられている。したがって、コマンド７１５には異なる名称が与えられる。
【００９１】
[0099]  また、グラフィカル・ユーザー・インターフェース７１０は、ユーザー・セッションを終了させるための他の選択肢も含むことができる。この例では、グラフィカル・ユーザー・インターフェース７１０は、コマンド７１６を含む。コマンド７１６が選択されたとき、計算デバイス１００は、指定されたユーザーに対するセッションを強制終了させることによって応答することができる。計算デバイスのこのような挙動は、当技術分野では周知である。この場合、コマンド７１６は、従来のログオフ・コマンドに対応する。図示した実施形態には、多くの適したコマンドの選択肢が、グラフィカル・ユーザー・インターフェース７１０には含まれていてもよいが、コマンド７１４または７１６の選択のみが、図５に示したプロセスを開始させる結果になる。
【００９２】
[00100]  停止コマンドが受け入れられるやり方やその性質には関係なく、このコマンドの受入に応答して、処理はブロック５１０からブロック５１４に移ることができる。ブロック５１４において、停止シーケンスの開始部分を実行することができる。ブロック５１４において実行される停止シーケンスの部分は、従来の処理を伴うのでよい。この例では、ブロック５１４における処理は、計算デバイス１００における任意の１つまたは複数のユーザー・セッションを終了させる。図１と関連付けて先に説明したように、このような処理は、アプリケーションを閉じてユーザー状態データー１３４をセーブすること、または任意の他の適した動作を実行することを伴うことができる。これらの動作の結果、１つのユーザー・セッションから次のセッションにわたって存続していたユーザー状態１３０におけるあらゆる情報が、ユーザー状態データー１３４から、不揮発性メモリー１５２のような、不揮発性メモリーに移動させられる。
【００９３】
[00101]  ユーザー・セッションを終了させるため、またはそれ以外でユーザー状態データー１３４を永続させるために行われる具体的なステップには関係なく、これらのステップが完了したときに、処理は判断ブロック５１６に進むことができる。判断ブロック５１６において、図５のプロセスは、再ブートが要求されていたか否かに依存して分岐することができる。ブロック５１６における処理は、任意の適した方法で実行すればよい。再ブートが要求されていたか否か判断するために、任意の１つ以上の判断基準を判断ブロック５１６において適用することができる。一例として、ユーザー入力を判断ブロック５１６において使用して、再ブートが要求されていたか否か判断することができる。例えば、ユーザーが再ブート・コマンド７１５（図７）を選択したとき、このユーザー選択は、再ブートが要求されていたことの指示として役割を果たすことができる。
【００９４】
[00102]  他の例として、図４と関連付けて、アプリケーション・コンポーネントが、ブロック４４２（図４）においてＡＰＩをコールすることによってというようにして、再ブートを要求することもできると説明した。このようなコールが行われた場合、判断ブロック５１６における処理は、再ブートが要求されていたと判断することができる。しかし、実施形態の中には、判断ブロック５１６における処理が、複数の判断基準を条件にしてもよい。例えば、アプリケーション・コンポーネントが、ブロック４４２におけるＡＰＩに対するコールによって、再ブートの要求を登録していたことを判断することができる。判断ブロック５１６の他の処理は、このような要求を有効と認めるか否か判断することであってもよい。このような処理は、例えば、図５の処理が実行されている時点で、要求元アプリケーション・コンポーネントが未だ実行しているか否か判断することを含むことができる。あるいはまたは加えて、判断ブロック５１６における処理は、要求元コンポーネントが再ブートを命令するための十分なアクセス特権を有するか否か判断することを伴うのでもよい。
【００９５】
[00103]  判断ブロック５１６において実行する処理の性質には無関係に、この処理の結果として、再ブートが要求されていたと判断した場合、本プロセスはブロック５３０に分岐する。このシナリオでは、ブロック５３０は全停止シーケンスを表す。このような全停止シーケンスは、当技術分野では周知のように実行すればよい。これは、ユーザー・セッションを強制終了させ、ダーティ・データーを一掃し、計算デバイスの電源を切ることを伴うこともある。この停止シーケンスを実行するときに行われる具体的なステップには関係なく、完了時に、図５のプロセスが終了し、計算デバイス１００を電源停止状態にすることができる。
【００９６】
[00104]  逆に、判断ブロック５１６において再ブートが要求されていなかった場合、本プロセスは判断ブロック５１８に進むことができる。判断ブロック５１８における処理は、全停止シーケンスを実行すべきか、または部分的停止続いて休止を実行すべきか判断する条件付き処理の一例である。一般に、判断ブロック５１８における処理は、任意の適した方針の適用を伴うことができる。このような方針は、停止コマンドが受け入れられたときに評価することができる。
【００９７】
[00105]  図示した例では、適用される方針は、休止を使用して得られる時間節約に関する。判断ブロック５１８において、休止から起動することによって、時間の節約が得られるか否か判断することができる。このような判断は、計算デバイス１００を全起動シーケンスによる動作状態、または休止からの再開およびそれに続く部分的起動シーケンスがある動作状態に置くための相対的な時間についての記録情報を比較することによって行うことができる。全起動を実行するための時間についての情報は、例えば、ブロック４４４（図４）において格納した情報に基づくとよい。計算デバイス１００を休止からの再開に続く動作状態に置くために要する時間についての情報は、同様に、図６のプロセスの実行終了時に記録される情報に基づいて判断することができる。
【００９８】
[00106]  再開およびそれに続く部分的起動に基づく動作状態を作るための時間が、全起動を実行するための時間よりも長い(slow)場合、本処理は判断ブロック５１８からサブプロセス５３０に分岐することができる。逆に、判断ブロック５１８における処理が、休止からの再開およびそれに続く起動シーケンスの部分的実行の方が好ましいと判断した場合、処理は判断ブロック５２０に進むことができる。
【００９９】
[00107]  判断ブロック５２０において、計算デバイス１００が休止を組み込んだ部分的停止シーケンスに適した状態にあるか否か判断するために、更に他の条件付き処理を実行することができる。このような処理は、現在のセッション中に、いずれかのコンポーネントに対して構成変更が指定されたか否か判断することを伴うことができる。このような構成変更が有効になるために再ブートを必要とする場合、休止を伴う停止は、計算デバイス１００の挙動に対するユーザーの期待を実現しない可能性がある。何故なら、停止コマンド７１４（図７）の選択には、従前では計算デバイスに構成変更を次の起動時に適用させる名称(label)が関連付けられているからである。
【０１００】
[00108]  計算デバイス１００が、従前では全起動を示すために使用されていた名称があるコマンドに応答して、休止を伴う停止シーケンスを実現する場合、以後の起動時に、これらのコンポーネントの状態は、構成変更に基づく状態を再開するのではなく、これらの以前の状態を再開する。したがって、他の場合では全停止シーケンスと関連付けられるかもしれないコマンドが呼び出されることをユーザーが期待しても、期待された動作が実行されないシナリオが存在することもある。計算デバイス１００が、ユーザーが期待する動作と相反する動作を行うことを回避するために、図５のプロセスは、計算デバイスが自動的に、ユーザーの期待と相容れる動作を得るために、全停止シーケンスを実行すべきであると判断するか否かに依存して、分岐することができる。自動的に判断する場合、本プロセスはサブプロセス５３０に分岐し、前述のように全停止シーケンスが実行される。
【０１０１】
[00109]  図示した実施形態では、全停止シーケンスを実行することになる状態は、任意のコンポーネントに現在のセッション中に構成設定があったか否か判断することによって、識別される。この判断を行うための当技術分野で周知の技法を、判断ブロック５２０において適用すればよい。一例として、実行コンポーネントの構成設定を変更する処理は、フラグを設定するか、またそうでなければ構成変更の指示を記録することを伴うとよい。このシナリオでは、判断ブロック５２０における処理は、ステータス・フラグの値をチェックすることを伴うとよい。しかし、他の適した処理を代わりにまたは加えて使用してもよい。例えば、処理は、適用されていない構成設定を検出するために、１つ以上のメモリー位置を走査することを伴ってもよい。
【０１０２】
[00110]  判断ブロック５２０においてどのように判断を行うかには関係なく、全停止および／または後続の全起動を必要とする状態が存在しない場合、処理は判断ブロック５２２に進むことができる。ブロック５２２において、休止が行われる前の目標状態に計算デバイス１００を完全に置く動作が行われる。図３と関連付けて先に説明したように、この目標状態は、オペレーティング・システムの状態は維持されているが、ユーザー・セッションの全てが強制終了され、ユーザーの後続のログオンのときに要求されるユーザー状態が全て、しかるべき形態で、不揮発性メモリー内に永続しているという状態に対応することができる。
【０１０３】
[00111]  この目標状態を得るために実行することができる動作の一例は、ダーティ・データーの一掃である。あるいはまたは加えて、システム状態データー１４８の一部として格納されている他のデーターが、ログオンされているユーザーのセッションに関係がある場合、ブロック５２２における処理は、そのデーターを不揮発性メモリー１５２に格納することを伴うとよい。
【０１０４】
[00112]  目標状態を完全に得るためにどの動作が行われるかには関係なく、次に、処理はブロック５２４に進むことができる。ブロック５２４では、計算デバイス１００において目標状態を再度作るための休止ファイルの適切性を確認するために後に使用するかもしれない情報を取り込むことができる。一例として、計算デバイスの中には、複数のオペレーティング・システムまたは１つのオペレーティング・システムの複数のインスタンスが設定されている場合がある。１つのオペレーティング・システムの特定のインスタンスの停止の一部として作られた休止ファイルが、そのオペレーティング・システムの同じインスタンスを起動するコマンドのみに応答して、オペレーティング・システムの状態を復元するために使用されればよい。
【０１０５】
[00113]  しかしながら、計算デバイスが、休止ファイルが作られたときに使用中であったオペレーティング・システム以外のオペレーティング・システムで動作させられているかもしれないという可能性から、休止ファイルが作られた時刻と、そのファイルに基づいて状態の再作成をトリガーする後続の起動コマンドとの間で、オペレーティング・システムが計算デバイスにおいて実行している可能性が生ずる。他のオペレーティング・システムまたは同じオペレーティング・システムの他のインスタンスによる仲介動作によって、休止ファイル内に取り込まれた状態が、ユーザーの期待と相容れる動作を得るために作られなければならない計算デバイスの状態をもはや表さないという可能性が生ずる場合がある。
【０１０６】
[00114]  例えば、ユーザーが、第１オペレーティング・システムによる停止動作の後、第２オペレーティング・システムをロードし、第１オペレーティング・システムによって使用される任意のデーターまたは他のコンポーネントに対して変更を行った場合、この場合に休止ファイルから再開すると、仲介するユーザー変更を反映しない状態が生ずる結果になる。
【０１０７】
[00115]  したがって、後続の起動コマンドのときに、計算デバイス１００の動作状態を再度作るときに用いるのに休止ファイルが適しているか否か判断するためのメカニズムを採用するとよい。図５に示す実施形態では、このメカニズムは、休止ファイルが作られる時点で情報を格納することを伴う。この具体的な例では、この情報は、ファイル・システムによって維持されるシーケンス番号である。具体的には、このシーケンス番号は、ＮＴＦＳファイル・システム、または計算デバイスにおいて動作することができる他のファイル・システムによって維持されるとよい。このようなシーケンス番号は、ディスク・ストレージのボリュームがロードされる毎に増えていくとよい。したがって、ブロック５２４における処理は、休止ファイルを含むボリュームに関連するＮＴＦＳシーケンス番号、およびオペレーティング・システムに関連する他のデーターを格納することを伴うとよい。この値は、後続の起動コマンドと関連付けてアクセスすることができるように、不揮発性メモリーに格納するとよい。
【０１０８】
[00116]  休止ファイルの使用可能性を後に判断することを可能にするためにブロック５２４において記録される具体的な情報には関係なく、本プロセスはサブプロセス５２６に進むことができる。サブプロセス５２６は、休止ファイルを格納することを伴うことができる。ブロック５２６における処理は、計算デバイスの休止に関連する従来の技法を使用して実行すればよい。しかし、休止ファイルを実行する任意の適した技法を使用してもよいことは認められてしかるべきである。
【０１０９】
[00117]  サブプロセス５２６の一部として休止ファイルを格納するために使用される具体的な技法には関係なく、休止ファイルを格納するとき、計算デバイス１００への電源を切ることができる。計算デバイス１００は、起動コマンドが受け入れられるまで、停電状態に留まるのでよい。
【０１１０】
[00118]  後続の起動コマンドは、図４および図６に示すように処理することができる。図４は、開始コマンドを受けたことに応答して実行することができる処理を示す。この処理は、ブロック４１０における処理および判断ブロック４１２を含む。処理が判断ブロック４１２に達すると、本プロセスは、サブプロセス５２６が直前の停止の間に実行された場合に存在するような、休止ファイルが存在するか否かに依存して、分岐することができる。この休止ファイルが存在するとき、図４のプロセスは、分岐してＡと称される接続を経由して、図６に示すような処理に進むことができる。
【０１１１】
[00119]  図６における処理は、休止ファイルが存在するときに実行することができる処理を示す。図６の処理は、ブロック６０１において開始することができる。ブロック６０１において、本プロセスは、判断ブロック４１２（図４）において検出された休止ファイルが、サブプロセス５２６と関連付けて示されたような、停止の間に目標状態を取り込んだ休止ファイルを表すか否かに依存して分岐することができる。表す場合、本プロセスは判断ブロック６１０に進むことができる。
【０１１２】
[00120]  あるいは、休止ファイルは、システム状態情報に加えてユーザー状態も組み込んだ従来の休止ファイルを表す場合もある。このような休止ファイルは、その状態を復元するために従来の技法にしたがって使用するとよい。この従来の処理は、サブプロセス６７０において実行することができ、直前の休止の時点における、ユーザー状態を含む、計算デバイスの状態を再度確定するために、休止ファイルが使用される。サブプロセス６７０の完了に続いて、処理はブロック６３８に進むことができる。
【０１１３】
[00121]  逆に、休止ファイルが停止プロセスの一部として記録されたと判断ブロック６０１において判断された場合、本プロセスは判断ブロック６１０に進む。判断ブロック６１０から開始して、起動コマンドに応答して、全起動シーケンスを実行すべきか、または休止からの再開およびそれに続く部分的起動シーケンスを実行すべきか判断するために、１つ以上の動作を実行することができる。この例では、複数の条件をチェックして、休止ファイルが存在すると判断されたとしても、休止からの再開を実行すべきか否か判断することができる。判断ブロック６１０においてチェックされるこのような条件の１つは、計算デバイス１００に対して、休止からの再開によって現在のコンピューター構成と一致しない状態情報が作り直されることになり得るような、ハードウェア構成の変更があったか否か判断することを伴う。このような変化は、計算デバイスの最後のセッションの間に作られ不揮発性メモリーに格納されたハードウェア・コンポーネントの一覧表(inventory)をチェックすることを含む、任意の適した方法で検出すればよい。後続の起動時における計算デバイスのハードウェア構成をチェックして、一覧表(inventor)における各項目がインストールされていることを確認することができる。しかし、一覧表のチェックは、このような処理をどのように実行すればよいかについての一例に過ぎないことは認められてしかるべきである。どのように判断を下すかには関係なく、ハードウェア構成が変更した場合、本処理は判断ブロック６１０からサブプロセス６５０に分岐することができる。サブプロセス６５０は、オペレーティング・システムを再ロードすることを伴うことがある。サブプロセス６５０における処理は、当技術分野では周知の技法を使用して実行すればよい。サブプロセス６５０におけるオペレーティング・システムのロードに続いて、本プロセスはブロック６３２に進むことができる。
【０１１４】
[00122]  逆に、判断ブロック６１０における処理が、ハードウェアの構成設定が行われなかったと判断した場合、処理はブロック６１２に進むことができる。ブロック６１２において、計算デバイス１００が、休止からの再開を開始すべき状態にあるか否か動的に判断するために、他の処理を実行することができる。この場合、判断ブロック６１２における処理は、ブロック５２４（図５）において格納された情報を利用し、休止ファイルの作成の間に、休止からの再開が行われるとユーザーの期待を満たさないような変更が行われれるか否か判断することができる。
【０１１５】
[00123]  この例では、ブロック６１２における処理は、休止ファイルを含むボリュームに関連するＮＴＦＳシーケンス番号をチェックすることを伴う。このボリュームが、休止ファイルが作られて以来ロードされていない場合、ブロック６１２において読み出されたシーケンス番号は、ブロック５２４において格納されたシーケンス番号とは、起動時におけるシーケンス番号の見込み(chance)を表す既知の量だけ異なることになる。逆に、シーケンス番号の差がこの既知の量よりも大きい場合、ブロック６１２における処理は、休止ファイルの作成時と、休止からの再開をトリガーした起動コマンドとの間で、恐らく変更が行われたことを特定する。
【０１１６】
[00124]  判断ブロック６２０において、本プロセスは、ブロック６１２において行われた比較に基づいて、分岐することができる。シーケンス番号に一貫性がない場合、本プロセスはサブプロセス７５０に分岐する。このような分岐が行われるとよいのは、休止ファイルが、ユーザーの期待と相容れる計算デバイスの動作状態を作らないかもしれないことを、シーケンス番号の差が示すときである。したがって、サブプロセス６５０が実行され、オペレーティング・システム・ソフトウェアをロードし直すことによって、システム状態１４０が作られる。
【０１１７】
[00125]  逆に、ブロック６１２において行われた比較が、シーケンス番号に一貫性があることを示す場合、本プロセスはサブプロセス６３０に進むことができる。この分岐に進む場合、休止ファイルが計算デバイスの状態を再確定するのに適していると判断されたことになる。したがって、サブプロセス６３０は、休止ファイルから計算デバイスの目標状態を再確定することを伴う。サブプロセス６３０は、休止から再開するための既知の技法を使用して実行すればよい。しかし、このシナリオでは、ユーザー状態を含む計算デバイスの状態を再確定するのではなく、休止ファイルに基づく再開によって、休止ファイルが作られた時点における目標状態を再度作る。この状態は、例えば、サブプロセス５２６（図５）の開始時における計算デバイスの状態を表すことができる。しかし、他の実施形態では、オペレーティング・システムが起動シーケンスの完了時にユーザーによってアプリケーションが開かれそうであることを予測し、これらのアプリケーションが未だ開いている間に計算デバイスの状態を取り込むために休止ファイルを格納するときに行われるように、部分的なユーザー状態を休止ファイルに格納してもよい。
【０１１８】
[00126]  サブプロセス６３０の完了時に、図６のプロセスはブロック６３２に進むことができる。処理がサブプロセス６３０または６５０を介してブロック６３２に到達したか、またはブロック６３２に到達したかには関係なく、ブロック６３２において、起動コマンドに応答するのに要する時間を記録することができる。記録される値の意味は、処理がブロック６３２に達した経路に依存するとよい。処理がサブプロセス６３０を介してブロック６３２に到達したとき、この時間は、処理の一部として休止からの再開を使用する起動のための時間を表し、それ相応に記録される。逆に、処理がサブプロセス６５０を介してブロック６３２に到達したとき、この時間は、全起動シーケンスを使用する起動のための時間を表し、それ相応に記録される。ブロック６３２における処理は、ブロック４４４（図４）と関連付けて説明したような技法を使用することを含む、任意の適した方法で実行すればよい。
【０１１９】
[00127]  ブロック６３２において情報を記録した結果、判断ブロック５１８（図５）における処理は、休止からの再開および起動シーケンスの一部を含む全起動シーケンスに基づいて、起動コマンドに応答するための時間を比較するために利用可能な情報を有することができる。この情報は、任意の適した方法で記録され、比較されればよい。
【０１２０】
[00128]  次いで、処理はサブプロセス６３４に進むことができる。サブプロセス６３４において、起動シーケンスの一部を実行して、計算デバイスに対して所望の動作状態を作ることができる。この一部は、ユーザーがログオンすることを含むとよい。この動作は、周知の方法で実行すればよく、自動ログオンを含むことができ、あるいはログオン画面を提示し、これを介してユーザーが情報を提示し手動でログオン・プロセスを実行できることを含むのでもよい。処理がサブプロセス６５０を介してサブプロセス６３４に到達するシナリオでは、サブプロセス６５０およびサブプロセス６３４における処理の組み合わせが全起動シーケンスを表すことができる。逆に、処理がサブプロセス６３０を介してサブプロセス６３４に到達した場合、起動コマンドに対する応答は、休止からの再開および起動シーケンスの一部を伴う。
【０１２１】
[00129]  この例では、起動シーケンスのこの部分は、サブプロセス６３４においてユーザーがログオンすることを表す。このような処理は、従来の技法を使用して実行すればよい。しかし、休止からの再開に続いて起動シーケンスを完了するために使用される具体的なステップは、任意の適した技法であればよい。
【０１２２】
[00130]  本プロセスは、次に、ブロック６３８に進むことができ、休止ファイルを無効化することができる。また、処理は、サブプロセス６７０に続いて、ブロック６３８に到達することもできる。処理がどのようにしてブロック６３８に到達したかには関係なく、休止ファイルは、後に休止ファイルが正しくない動作状態を再度作るかもしれないときにこのファイルは使われることはないことを示す任意の適した方法で無効化すればよい。休止ファイルは、例えば、そのコンテンツを何らかの方法で変更し、ファイルが無効である別のメモリー構造に記録することによって、またはファイルを削除することによって、無効化することができる。
【０１２３】
[00131]  次いで、図６のプロセスは終了することができる。このプロセスが終了すると、計算デバイス１００を動作状態に構成設定することができ、その後、停止または再ブート・コマンドが受け入れられるまで、動作し続けることができる。
【０１２４】
[00132]  図８は、本発明を実現することができる、適した計算システム環境８００の一例を示す。この計算システム環境８００は、適した計算環境の一例に過ぎず、本発明の使用範囲や機能に関して何の限定も示唆することは意図していない。また、計算環境８００が、動作環境例８００に示されているコンポーネントの内任意の１つまたはその組み合わせ関して、何の依存性も要件も有するように解釈してはならない。
【０１２５】
[00133]  本発明は、複数の他の汎用または特殊目的計算システム環境あるいは構成とでも動作する。周知の計算システム、環境、および／または構成で、本発明と共に使用するのに適していると考えられる例には、パーソナル・コンピューター、サーバー・コンピューター、ハンド・ヘルドまたはラップ・トップ・デバイス、マルチプロセッサー・システム、マイクロコントローラ・ベース・システム、セット・トップ・ボックス、プログラマブル消費者電子機器、ネットワークＰＣ、ミニコンピューター、メインフレーム・コンピューター、以上のシステムまたはデバイスの内任意のものを含む分散型計算環境等が含まれるが、これらに限定されるのではない。
【０１２６】
[00134]  この計算環境は、プログラム・モジュールのような、コンピューター実行可能命令を実行することができる。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データー構造等を含み、これらは特定のタスクを実行するか、または特定の抽象的データー型を実現する。また、本発明は、分散型計算環境も使用することができ、この場合、通信ネットワークを通じてリンクされているリモート処理デバイスによってタスクが実行される。分散型計算環境では、プログラム・モジュールは、メモリー記憶デバイスを含むローカルおよびリモート双方のコンピューター・ストレージに配置することができる。
【０１２７】
[00135]  図８を参照すると、本発明を実現するシステム例は、コンピューター８１０の形態とした汎用計算デバイスを含む。コンピューター８１０のコンポーネントは、処理ユニット８２０、システム・メモリー８３０、およびシステム・バス８２１を含むことができるが、これらに限定されるのではない。システム・バス８２１は、システム・メモリーを含む種々のシステム・コンポーネントを処理ユニット８２０に結合する。システム・バス８２１は、メモリー・バスまたはメモリー・コントローラ、周辺バス、および種々のバス・アーキテクチャーの内任意のものを使用するローカル・バスを含む、様々なタイプのバス構造の内任意のものとすることができる。一例として、そして限定ではなく、このようなアーキテクチャーは、業界標準アーキテクチャー（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャー（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス標準連盟（ＶＥＳＡ）ローカル・バス、 メザニン・バス(Mezzanine bus)としても知られている周辺素子相互接続（ＰＣＩ）バスを含む。
【０１２８】
[00136]  コンピューター８１０は、通例、種々のコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューター８１０によってアクセスすることができる任意の入手可能な媒体とすることができ、揮発性および不揮発性双方の媒体、リムーバブルおよび非リムーバブル媒体を含む。一例として、そして限定ではなく、コンピューター読み取り可能媒体は、コンピューター記憶媒体および通信媒体を含むことができる。コンピューター記憶媒体は、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような情報の任意の記憶方法または技術で実現される。コンピューター記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリーまたは他のメモリー技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために使用することができ、計算デバイス８１０によってアクセスすることができる任意の他の媒体が含まれる。通信媒体は、通例、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターを、搬送波または他の伝送メカニズムのような、変調データー信号に具体化することができ、任意の情報配信媒体を含むことができる。「変調データー信号」という用語は、属性を有する信号であって、その信号の中に情報をエンコードするような態様でその特性の１つ以上が設定された信号または変化させられた信号を指す。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体、ならびに音響、ＲＦ、赤外線、および他のワイヤレス媒体というような、ワイヤレス媒体を含む。以上の内任意のものの組み合わせも、コンピューター読み取り可能媒体の範囲内に含まれてよい。
【０１２９】
[00137]  システム・メモリー８３０は、リード・オンリ・メモリー（ＲＯＭ）８３１およびランダム・アクセス・メモリー（ＲＡＭ）８３２のような揮発性および／または不揮発性メモリーの形態をなすコンピューター記憶媒体を含む。基本入出力システム８３３（ＢＩＯＳ）は、起動中のように、コンピューター８１０内のエレメント間における情報転送を補助する基本的なルーチンを含み、通例ＲＯＭ８３１内に格納されている。ＲＡＭ８３２は、通例、処理ユニット８２０が直ちにアクセス可能であるデーターおよび／またはプログラム・モジュール、および／または現在処理ユニット８２０によって処理されているデーターおよび／またはプログラム・モジュールを含む。一例として、そして限定ではなく、図８は、オペレーティング・システム８３４、アプリケーション・プログラム８３５、その他のプログラム・モジュール８３６、およびプログラム・データー８３７を示す。
【０１３０】
[00138]  また、コンピューター８１０は、その他のリムーバブル／非リムーバブル揮発性／不揮発性コンピューター記憶媒体も含むことができる。一例として示すに過ぎないが、図８は、非リムーバブル不揮発性磁気媒体からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ８４０、リムーバブル不揮発性磁気ディスク８５２からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ８５１、ならびにＣＤＲＯＭまたはその他の光媒体のようなリムーバブル不揮発性光ディスク８５６からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ８５５を示す。ハード・ディスク・ドライブ８４０は、磁気媒体への書き込みおよび磁気媒体からの読み出しを行うことができる１つ以上の磁気ヘッドを含む、回転磁気媒体として実現することもできる。本動作環境例において使用可能なその他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピューター記憶媒体には、磁気テープ・カセット、フラッシュ・メモリー・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭ等が含まれるが、これらに限定されるのではない。ハード・ディスク・ドライブ８４１は、インターフェース８４０のような非リムーバブル・メモリー・インターフェースを介してシステム・バス８２１に接続することができ、磁気ディスク・ドライブ８５１および光ディスク・ドライブ８５５は、通例、インターフェース８５０のようなリムーバブル・メモリー用インターフェースによって、システム・バス８２１に接続することができる。
【０１３１】
[00139]  先に論じ図８に示すドライブおよびそれらに関連するコンピューター記憶媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、およびコンピューター８１０のその他のデーターを格納する。図８では、例えば、ハード・ディスク・ドライブ８４１は、オペレーティング・システム８４４、アプリケーション・プログラム８４５、その他のプログラム・モジュール８４６、およびプログラム・データー８４７を格納するように示されている。尚、これらの構成要素は、オペレーティング・システム８３４、アプリケーション・プログラム８３５、その他のプログラム・モジュール８３６、およびプログラム・データー８３７と同じでも異なっていても可能であることを注記しておく。オペレーティング・システム８４４、アプリケーション・プログラム８４５、その他のプログラム・モジュール８４６、およびプログラム・データー８４７は、ここで、少なくともこれらが異なるコピーであることを示すために、異なる番号が与えられている。ユーザーは、キーボード８６２のような入力デバイス、および一般にマウス、トラックボールまたはタッチ・パッドと呼ばれているポインティング・デバイス８６１によって、コマンドおよび情報をコンピューター８１０に入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナー等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、ユーザー入力インターフェース８６０を介して、処理ユニット８２０に接続されている。ユーザー入力インターフェース８６０は、システム・バスに結合されているが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス（ＵＳＢ）のようなその他のインターフェースおよびバス構造によって接続することも可能である。また、モニター８９１またはその他の形式のディスプレイ・デバイスも、ビデオ・インターフェース８９０のようなインターフェースを介して、システム・バス８２１に接続されている。モニターに加えて、コンピューターは、スピーカー８９７およびプリンター８９６のような、その他の周辺出力装置も含むことができ、これらは出力周辺インターフェース８９５を介して接続することができる。
【０１３２】
[00140]  コンピューター８１０は、リモート・コンピューター８８０のような１つ以上のリモート・コンピューターへの論理接続を使用して、ネットワーク接続環境において動作することも可能である。リモート・コンピューター８８０は、パーソナル・コンピューター、サーバー、ルーター、ネットワークＰＣ、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、通例、コンピューター８１０に関して先に説明したエレメントの多くまたは全てを含むが、図８にはメモリー記憶装置８８１のみを示す。図８に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）８７１およびワイド・エリア・ネットワーク（ＷＡＮ）８７３を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピューター・ネットワーク、イントラネットおよびインターネットにおいては、極一般的である。
【０１３３】
[00141]  ＬＡＮネットワーク環境で使用する場合、コンピューター８１０は、ネットワーク・インターフェースまたはアダプター８７０を介してＬＡＮ８７１に接続される。ＷＡＮネットワーク環境で使用する場合、コンピューター８１０は、通例、モデム８７２、またはインターネットのようなＷＡＮ８７３を通じて通信を行うその他の手段を含む。モデム８７２は、内蔵でも外付けでもよく、ユーザー入力インターフェース８６０またはその他のしかるべきメカニズムを介してシステム・バス８２１に接続することができる。ネットワーク接続環境では、コンピューター８１０に関して図示したプログラム・モジュール、またはその一部は、リモート・メモリー記憶装置に格納することもできる。一例として、そして限定ではなく、図８は、リモート・アプリケーション・プログラム８８５がメモリー・デバイス８８１に存在するものとして示している。尚、図示のネットワーク接続は一例であり、コンピューター間で通信リンクを作る他の手段も使用可能であることは認められよう。
【０１３４】
[00142]  以上のように、本発明の少なくとも１つの実施形態の様々な形態について説明したが、種々の変形、変更、および改善は当業者には容易に想起されることは認められてしかるべきである。
【０１３５】
[00143]  例えば、全起動シーケンス、または休止からの再開およびそれに続く起動シーケンスの一部のどちらを実行すべきか、各シーケンスを実行するために観察された相対的な時間に基づいて判断を行うことを記載した。尚、同様の処理は、停止時にも実行できることは認められてしかるべきである。停止時に実行する場合、休止ファイルを格納するまたは格納しないことによって、判断を実施することができる。したがって、起動時に行われると記載された動作は、代わりに、停止時に実行してもよく、その逆でもよいことは認められてしかるべきである。
【０１３６】
[00144]  以上で記載したような利点は、他の方法でも得ることができる。例えば、コンピューターのＣＰＵまたはディスクのような他のコンポーネントによる、状態を設定するプロセスにおける作業を回避することに加えて、このような手法は、停止コマンドに応答して、データーを休止ファイルにセーブすることも可能にする。これによって、後続の起動コマンドに対する応答の間および／または起動コマンドの処理を完了した後に、ユーザーの体験を高速化するのに役立つ。例えば、ユーザーがログオンするとき、複数のアプリケーションを始動させることができる（例えば、WINDOWS（登録商標） EXPLORERウェブ・ブラウザ、起動アプリ等）。オペレーティング・システムは、起動コマンドの処理が完了した後、定められた間隔においてユーザーがアクセスするファイル（およびそれらのオフセット）を明示的に追跡することができる。これらのアプリケーション、または他のコンポーネントは、停止コマンドの後続処理の間に作成される休止ファイルにセーブするために、メモリーに読み込むことができる。このように、これらのアプリケーション、またはコンポーネントは、これらのアプリケーションの始動の一部としてランダムに読み出さなければならない代わりに、ディスクからメモリーに順次読み取られる。
【０１３７】
[00145]  また、ユーザーのログオンおよびログオフについても説明した。尚、停止コマンドは、複数のユーザーが１つのコンピューターにログオンしているシナリオでも供給してもよいことは認められてしかるべきである。停止シーケンスが部分的に実行され、次いで休止動作が実行される場合、この部分的停止シーケンスの結果、複数のユーザーがログオフされるが、先に説明したような技法を適用することができる。
【０１３８】
[00146]  例えば、本明細書において説明した技法は、ユーザーの介入がない自動化サービスを提供するために使用することができる。例えば、部分的停止シーケンスを実行し次いで休止を実行することによって停止コマンドに応答した計算デバイスを、夜中のような、ユーザー活動が期待されないときに、自動的に起動する(wake)ように構成することもできる。起動時に、計算デバイスは、ソフトウェア更新を適用するというような、維持動作を実行することができる。ユーザーにとっては、維持動作がユーザーにとって透過性となるように、計算デバイスが１日の終わりに停止したかのように見える。このような能力は、例えば、計算デバイスが停止コマンドに応答して、維持動作または適用するパッチを有することを検出し、適切な時点に起動するようにそれ自体装備すれば、実現することができる。起動するとき、計算デバイスは、パッチを適用するというような、必要な維持動作であれば何でも実行する。次いで、本システムは全再開を行い、再度部分的停止およびそれに続く休止を実行する。このシナリオにより、ソフトウェア販売業者は、維持動作をユーザーに見えるようにする解決策を提供することが可能になる。この能力は、消費者および企業ＰＣ双方に適用することができる。ユーザー体験を改善することに加えて、このような手法は、特に企業ユーザーにとって電力を節約することができる。
【０１３９】
[00147]  このような変形、変更、および改良は、本開示の一部であることを意図しており、本発明の主旨および範囲内に該当することを意図している。したがって、以上の説明および図面は、一例に過ぎない。
【０１４０】
[00148]  本発明の以上で説明した実施形態は、複数の方法の内任意のもので実現することができる。例えば、これらの実施形態は、ハードウェア、ソフトウェア、またはその組み合わせを使用して実現することもできる。ソフトウェアで実現する場合、任意の適したプロセッサーまたはプロセッサーの集合体において、１つのコンピューターに設けられるのかまたは複数のコンピューター間で分散されるのかには関係なく、ソフトウェア・コードを実行することができる。このようなプロセッサーは、集積回路として実現するとよく、１つ以上のプロセッサーが集積回路コンポーネント内にある。しかし、任意の適したフォーマットの回路を使用して、プロセッサーを実現することもできる。
【０１４１】
[00149]  更に、コンピューターは、ラック組み立てコンピューター(rack-mounted computer)、デスクトップ・コンピューター、ラップトップ・コンピューター、またはタブレット・コンピューターというような、複数の形態の内任意のもので具体化することもできることは認められてしかるべきである。加えて、コンピューターが、パーソナル・ディジタル・アシスタント（ＰＤＡ）、スマート・フォン、あるいは任意の他の適した携帯用または固定電子デバイスを含む、一般にはコンピューターとは見なされないが、適した処理能力を有するデバイスに埋め込まれてもよい。
【０１４２】
[00150]  また、コンピューターが１つ以上の入力および出力デバイスを有してもよい。これらのデバイスは、とりわけ、ユーザー・インターフェースを提示するために使用することができる。ユーザー・インターフェースを提供するために使用することができる出力デバイスの例には、出力の視覚的提示のためのプリンターまたはディスプレイ、および出力の可聴提示のためのスピーカーまたは他の音響生成デバイスが含まれる。ユーザー・インターフェースのために使用することができる入力デバイスの例には、キーボード、ならびにマウス、タッチ・パッド、およびディジタル化タブレットというようなポインティング・デバイスを含む。他の例として、コンピューターが音声認識によって、または他の可聴フォーマットで入力情報を受けても良い。
【０１４３】
[00151]  このようなコンピューターは、企業ネットワークまたはインターネットのような、ローカル・エリア・ネットワークまたはワイド・エリア・ネットワークを含む、任意の適した形態１つ以上のネットワークによって相互接続することができる。このようなネットワークは、任意の適した技術に基づけばよく、任意の適したプロトコルにしたがって動作すればよく、ワイヤレス・ネットワーク、有線ネットワーク、または光ファイバ・ネットワークを含むことができる。
【０１４４】
[00152]  また、本明細書で概要を説明した種々の方法またはプロセスは、ソフトウェアとしてコード化することができる。このソフトウェアは、種々のオペレーティング・システムまたはプラットフォームの内任意のものを採用する１つ以上のプロセッサーにおいて実行可能である。加えて、このようなソフトウェアは、複数の適したプログラミング言語および／またはプログラミングまたはスクリプティング・ツールの内任意のものを使用して書くこともでき、更にまた、フレームワークまたは仮想機械(virtual machine)において実行される、実行可能機械語コードまたは中間コードとしてコンパイルされてもよい。
【０１４５】
[00153]  これに関して、本発明は、１つ以上のプログラムがエンコードされたコンピューター読み取り可能記憶媒体（複数のコンピューター読み取り可能媒体（例えば、コンピューター・メモリー、１つ以上のフロッピ・ディスク、コンパクト・ディスク（ＣＤ）、光ディスク、ディジタル・ビデオ・ディスク（ＤＶＤ）、磁気テープ、フラッシュ・メモリー、フィールド・プログラマブル・ゲート・アレイまたは他の半導体デバイスにおける回路構成、あるいは他の一時的でない、有形コンピューター記憶媒体）として具体化することもできる。このプログラムが１つ以上のコンピューターまたは他のプロセッサーにおいて実行されると、以上で説明した本発明の種々の実施形態を実現する。１つまたは複数のコンピューター読み取り可能記憶媒体は移植可能とすることができ、そこに格納されている１つ以上のプログラムは、１つ以上の異なるコンピューターまたはプロセッサーにロードして、先に論じたような本発明の種々の形態を実現することができる。本明細書において使用する場合、「一時的でないコンピューター読み取り可能記憶媒体」という用語は、生産物（即ち、生産品目）または機械(machine)であると見なすことができるコンピューター読み取り可能媒体のみを含む。あるいはまたは加えて、本発明は、伝搬信号のような、コンピューター読み取り可能記憶媒体以外のコンピューター読み取り可能媒体として具体化することもできる。
【０１４６】
[00154]  「プログラム」または「ソフトウェア」という用語は、先に論じた本発明の種々の態様を実施するようにコンピューターまたは他のプロセッサーをプログラミングするために採用することができる、あらゆるタイプのコンピューター・コードまたはコンピューター実行可能命令を指すように、本明細書では包括的な意味で用いられている。加えて、この実施形態の一態様によれば、実行されると本発明の方法を実行する１つ以上のコンピューター・プログラムは、１つのコンピューターまたはプロセッサー上に常駐する必要はなく、本発明の種々の態様を実施するために、モジュール状に多数の異なるコンピューターまたはプロセッサー間に分散されていてもよいことは認められてしかるべきである。
【０１４７】
[00155]  コンピューター実行可能命令は、１つ以上のコンピューターまたは他のデバイスによって実行する、プログラム・モジュールのような多くの形態とすることができる。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データー構造等を含み、特定のタスクを実行するか、または特定の抽象データー・タイプを実施する。通例、プログラム・モジュールの機能は、種々の実施形態において所望に応じて組み合わせること、または分散することもできる。
【０１４８】
[00156]  また、データー構造は、適した形態の任意のもので、コンピューター読み取り可能媒体に格納することができる。図示を簡略化するために、データー構造は、当該データー構造における場所によって関係付けられたフィールドを有するように示すことができる。同様に、このような関係は、コンピューター読み取り可能媒体においてフィールド間で関係を伝える場所と共に、これらのフィールドにストレージを割り当てることによって達成することができる。しかしながら、データー構造のフィールドにおいて情報間に関係を確立するためには、任意の適したメカニズムを使用することができ、ポインター、タグ、またはデーター・エレメント間に関係を作るその他のメカニズムの使用によることが含まれる。
【０１４９】
[00157]  本発明の種々の態様は、単独でも、組み合わせでも、または先に説明した実施形態において具体的な論じられなかった種々の構成でも用いることができ、したがって、前述の説明において明記したコンポーネントや図面に示したコンポーネントの詳細や構成には、その応用は限定されない。例えば、一実施形態において説明した態様を、他の実施形態において説明した態様といかように組み合わせてもよい。
【０１５０】
[00158]  また、本発明は、方法として具体化することができ、その例を示した。この方法の一部として実行される動作は、いずれの適した方法でも順序を決定することができる。したがって、実施形態は、図示した順序とは異なる順序で動作が実行される構成にすることもでき、一部の動作を同時に実行することを含むことができるが、例示的な実施形態では連続的な動作として示されている。
【０１５１】
[00159]  「第１」、「第２」、「第３」等のような序数を請求項において使用して請求項の要素を修飾する場合、それ自体は、優先順位も、時間的先行も、あるいは１つの請求項要素の他の要素に対する順序、即ち、方法の動作が実行される時間的順序も言外に含むことはなく、単に、請求項要素を区別するために、ある名称を有する１つの請求項要素を、同じ名称を有する他の要素（序数項の使用を除く）から区別する付箋として用いられるに過ぎない。
【０１５２】
[00160]  また、本明細書において用いた言葉づかいや用語は、説明を目的にしているのであり、限定と見なしてはならない。「含む」(including)、「含む」(comprising)、または「有する」(having)、「含む」(containing)、「伴う」(involving)、およびこれらの派生形は、本明細書では、その後に羅列される項目、その均等物、および付加的な項目も包含することを意味する。
【図７】
0005732141.tif 000002
【図１】
0005732141.tif 000003
【図２】
0005732141.tif 000004
【図３】
0005732141.tif 000005
【図４】
0005732141.tif 000006
【図５】
0005732141.tif 000007
【図６】
0005732141.tif 000008
【図８】
0005732141.tif 000009