JP5732141B2 - 高速コンピューター起動 - Google Patents

高速コンピューター起動 Download PDF

Info

Publication number
JP5732141B2
JP5732141B2 JP2013543148A JP2013543148A JP5732141B2 JP 5732141 B2 JP5732141 B2 JP 5732141B2 JP 2013543148 A JP2013543148 A JP 2013543148A JP 2013543148 A JP2013543148 A JP 2013543148A JP 5732141 B2 JP5732141 B2 JP 5732141B2
Authority
JP
Japan
Prior art keywords
volatile memory
computing device
user
state
stop
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013543148A
Other languages
English (en)
Other versions
JP2014501976A5 (ja
JP2014501976A (ja
Inventor
イィグン,マーメット
バク,エフゲニー
ウィルソン,エミリー・エヌ
スターク,カーステン・ヴイ
チャン,スシュー
ステメン,パトリック・エル
キング,ブライアン・イー
カラグーニス,ヴァシリオス
ジェイン,ニール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014501976A publication Critical patent/JP2014501976A/ja
Publication of JP2014501976A5 publication Critical patent/JP2014501976A5/ja
Application granted granted Critical
Publication of JP5732141B2 publication Critical patent/JP5732141B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/4408Boot device selection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/442Shutdown

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Power Sources (AREA)

Description

従来技術
[0001] コンピューターには、完全動作(full operation)から完全停止(full shutdown)までに及ぶ様々な動作モードがある。完全動作では、オペレーティング・システムの実行部分を定めるソフトウェアが、不揮発性メモリーから揮発性メモリーにロードされており、揮発性メモリーから一層素早く実行することができる。コンピューターは、「起動」(startup)プロセスを経てこの完全動作に入る。起動プロセスは、ハードウェアを構成設定し(configure)、コンピューターのオペレーティング・システムをロードする。この起動プロセスの一部として、ドライバーがインストールされ、オペレーティング・システムのサービスが開始される。
[0002] 一旦コンピューターが任意のユーザーによる動作の準備ができたなら、ユーザーはコンピューターにログオンすることができる。このログオンは、更に、ログオンしたユーザーに特定のプロファイルに基づく、コンピューターの構成設定を更に必要とする場合がある。次に、自動的にまたはユーザー入力に応答してのいずれかで、アプリケーションをロードすることができ、これらのアプリケーションは、計算デバイスのハードウェアおよびオペレーティング・システムの能力を利用して実行することができる。
[0003] ソフトウェアをロードするプロセスでは、オペレーティング・システムであれアプリケーションであれ、メモリーを割り当てることができ、コンピューターまたはユーザー・プロファイルのハードウェア構成に基づいて、ソフトウェアのパラメータに値を割り当てることができ、そして他の構成設定動作も実行することができる。
[0004] これらの動作が計算デバイスの「状態」を確定する。更に、ユーザーが、実行中のアプリケーションまたはオペレーティング・システム・サービスと相互作用するコマンドを供給すると、システムのメモリーや他のパラメータに対して、その動作状態を定める変更も行うことができる。
[0005] 完全停止モードでは、コンピューターのハードウェア・コンポーネントに電力が供給されない。揮発性メモリーにはソフトウェアも状態情報も格納されていない。何故なら、このメモリーは、電源が切られると、情報を保持できないからである。代わりに、後にコンピューターを完全動作モードに再構成設定するために使用される任意の情報は、不揮発性メモリーに格納される。
[0006] コンピューターは、停止(shutdown)と呼ばれるプロセスによって、停止モードに入る。停止の間、コンピューターを構成設定し直すために必要となり得るあらゆる情報は、不揮発性メモリーに未だ格納されていない場合、不揮発性メモリーに格納することができる。不揮発性メモリーから揮発性メモリーにコピーされたソフトウェアおよび他の構成設定情報は、非揮発性メモリーにはコピーされない。何故なら、以後の起動プロセスにおいて作り直すことができるからである。しかしながら、揮発性メモリーが不揮発性メモリーからコピーされたデーターをキャッシュし、コピーされた後に変更された場合に限って(「ダーティ」データーと呼ばれることもある)、そのデーターは停止の間に不揮発性メモリーにコピーされる。
[0007] 別の変種(variation)にログオフと呼ばれるものがある。ユーザー・セッションをサポートするコンピューターにおいては、ユーザーはコンピューターの機能にアクセスするために、これにログオンすることができる。停止は事実上ユーザーをログオフするが、別のログオフ・プロセスを実行することもでき、この後では、コンピューターの電源は落とさない。むしろ、オペレーティング・システムはロードされたままであり、他のユーザーがログオンする準備ができている。ログオフの間、コンピューターはユーザー・セッションを「強制終了」(break down)する。ユーザー・セッションを強制終了する場合、ユーザーによって始められた(launched)アプリケーションを閉じ、不揮発性メモリーに未だ入っていないユーザー特定データーを格納することを伴う場合がある。
[0008] 完全停止またはログオフに加えて、節電モードがある場合もある。このモードでは、コンピューターのハードウェア・コンポーネントの一部または全部がオフに切り替えられる。節電モードは、スリープ・モードと呼ばれることもあり、コンピューター・プロセッサー、ネットワーク・インターフェースの電源が切られ、そして他のコンポーネントの電源も切られることもある。しかしながら、揮発性メモリーの電源は維持される。このように、コンピューターのブートまたはその後の動作の間に作られた任意の状態情報は、揮発性メモリーに保持される。電力が再度プロセッサーに供給されると、スリープ・モードに入ったときに置かれた状態で、動作を再開することができる。
[0009] 休止(hibernate)モードとも呼ばれることがある、更に他のモードもある。コンピューターは、休止(hibernation)と呼ばれるプロセスによってこのモードに入る。休止の間、コンピューターの動作状態を取り込んだファイルが作られ、不揮発性メモリー、通例では、ハード・ディスクに格納される。休止から再開するプロセスの間に、このファイルをディスクから読み出して、コンピューターが休止のときに存在していたコンピューターの状態を再現するために使用することができる。休止から再開すると、休止の時点に存在していた動作の間に設定されたソフトウェアやパラメータのコピーが、揮発性メモリー内に復元され、任意のユーザー状態が復元されるようになっている。
[0010] 休止からの再開は、様々な理由のために、完全起動を実行するよりも速くすることができる。1つの理由は、休止ファイル内の状態情報を揮発性メモリーにコピーすることによって完全起動プロセスの結果を作り直し、CPU消費、デバイス初期化、およびブートの間に行われなければならない多くの他のタイプの作業というような、起動プロセスのステップを実行するのに費やされる時間が避けられるからである。加えて、起動中にアクセスされた情報は、多くの異なるファイルに格納され、オペレーティング・システムにおける数万にもなる可能性があるコンポーネントをロードし構成設定するためにアクセスされる異なるコンポーネントを表す。これらのコンポーネント、およびこれらを構成設定するためにアクセスされる情報は、ハード・ディスクにわたってランダムに分散されているかもしれない。ハード・ディスク・ドライブ、および他の何らかの形態の大容量ストレージはシーケンシャル・データーにアクセスするには最も効率的なので、ランダムに分散されたデーターにアクセスするには、かなりのディスク・アクセス時間が含まれ、起動プロセスが長くなる可能性がある。対照的に、休止ファイルを読み出すときのアクセス時間は短い。何故なら、このファイルにおける情報は、ディスクに順次格納されているからである。
[0011] 休止からの再開と起動との間における他の相違は、休止し次いで再開すると、コンピューターの全状態が復元され、コンピューターが休止した時点におけるコンピューターのユーザーについての任意のユーザー状態が含まれることである。対照的に、ユーザーがログオンするまで、起動はあらゆるユーザーに対して包括的にコンピューターを構成設定する。次いで、特定のユーザーがログオンするか、またはそれ以外の操作を行って、彼ら自身のためにコンピューターを構成設定することができる。この理由のために、ユーザーがしばらくの間コンピューターから離れるがコンピューターに戻って来るつもりでいる場合、休止がユーザーによって選択されるのが一般的である。停止は、ユーザーがもっと長い時間コンピューターから離れ、恐らくはコンピューターに全く戻ってこようとしないユーザー、あるいはユーザーが戻って来る前に他のユーザーがコンピューターを使用するかもしれないと考えるユーザーによって使用されるのが一般的である。
[0012] ユーザー体験を改善するために、休止モードに入ることによって、停止のユーザー・コマンドに応答するように、コンピューターを構成することができる。このようなコンピューターは、ユーザーがコンピューターを起動するコマンドを与えた後に、一層素早くユーザーによる操作の準備を終えることができる。ユーザーの期待と一致する状態でコンピューターが動作の準備を素早く終えることを可能にするために、休止ファイルが、ユーザーの期待を実現する目標状態を取り込む。停止コマンドに応答して、コンピューターは、休止の前に、停止プロセスにおけるステップの内一部のみを実行することによって、この目標状態を作る。これらのステップを実行すると、オペレーティング・システムはロードされたままであるがユーザー・セッションは強制終了させられた状態に対応する目標状態に、コンピューターを置くことができる。
[0013] 起動コマンドを受けると、コンピューターは、ソフトウェアをロードし構成設定することによって動作状態を作るのではなく、休止ファイルを揮発性メモリーにコピーすることによって、目標状態を再度作ることができる。次いで、コンピューターは、起動シーケンスの部分のみを実行することができる。これらの部分は、従来であれば、オペレーティング・システムがロードされた後に起動シーケンスにおいて行われていた動作を含むことができる。これらのステップは、例えば、ユーザーのログオンを実行し、ユーザー状態を定めるアプリケーションをロードするためにユーザーと相互作用することを含むことができる。
[0014] 実施形態の中には、停止を指示するユーザー・コマンドに応答して、条件付き処理を実行することができる場合もある。計算デバイスは、たとえば、完全停止が要求される動作状態に当該計算デバイスがあるか否か、または後続の起動コマンドに応答して使用するために休止ファイルを作成することが適しているか否か判断することができる。
[0015] このような状態は、複数の方法の内任意のものにおいて特定することができ、何らかのインストールされているコンポーネントの構成設定が変化し、そのコンポーネントが完全起動シーケンスの一部として再度ロードされるまで適用されないと判断することによって特定することを含む。あるいは、プログラミング・インターフェースを設けることもでき、完全停止を要求するものとして、アプリケーション・コンポーネントを登録することができる。
[0016] このような状態が検出された場合、計算デバイスの電源が完全に落ちるまで、従来の停止処理を実行することができる。検出されない場合、計算デバイスが目標状態になるまで、停止シーケンスを実行することができ、目標状態から、休止ファイルを作ることができる。
[0017] 実施形態の中には、ユーザーの起動コマンドに応答して、条件付き処理を実行することができる場合もある。この条件付き処理は、休止ファイルが存在するか否か判断することを含むことができる。存在する場合、計算デバイスの目標状態が、休止ファイルが作られたときと起動コマンドが受け入れられたときとの間で変化した可能性があるか否かについて、他のチェックを行うことができる。状態変化を起こし得るイベントが検出された場合、計算デバイスは完全起動シーケンスを実行することができる。
[0018] 以上は、添付した特許請求の範囲によって定められる、本発明の非限定的な摘要である。
[0019] 添付図面は、同じ縮尺で描かれることは意図していない。図面において、同じコンポーネントまたはほぼ同じコンポーネントが種々の図において図示されている場合、各々、同じ番号で表すこととする。明確化のために、各図面において全てのコンポーネントには番号を付けていない。図面において、
図1は、計算デバイス内における起動シーケンスを示す概念ブロック図である。 図2は、計算デバイス内における休止シーケンスからの再開を示す機能ブロック図である。 図3は、本発明の実施形態による高速起動シーケンスを示す機能ブロック図である。 図4は、本発明の実施形態にしたがって、起動コマンドに応答するように計算デバイスを動作させる方法のフロー・チャートである。 図5は、本発明の実施形態にしたがって、停止コマンドに応答するように計算デバイスを動作させる方法のフロー・チャートである。 図6は、本発明の実施形態にしたがって条件付きで実行することができる起動シーケンスの一部のフロー・チャートである。 図7は、ユーザーが、停止時に計算デバイスの異なる挙動を起こさせるコマンドの中から選択することができる、グラフィカル・ユーザー・インターフェースの一部のスケッチである。 図8は、本発明の実施形態が動作することができる環境を示す、計算デバイス例のブロック図である。
[0028] 本発明者は、計算デバイスのユーザーの体験が、計算デバイスの停止および/または起動シーケンスの一部と合わせて休止ファイルを使用することによって改善できることを確認し認識した。このようなファイルは、計算機のふるまい(performance)がユーザーの期待と一致するように、停止時に選択的に作ることができ、起動時に選択的に使用することができる。休止ファイルが作られるまたは使用されるときでも、従来の停止または起動シーケンスの一部を実行することができる。
[0029] ユーザーの期待と相容れる計算デバイスの動作を提供するために、休止は、計算デバイスの従前からの停止シーケンスの内、計算デバイスを目標状態に置く部分と共に使用することができる。これらの部分は、停止コマンドを受けたときに、ユーザー・セッションを強制終了する動作を含むことができる。加えて、停止コマンドに応答する部分として、ユーザー・セッションが強制終了された後に揮発性メモリー内に保持されていたが、不揮発性メモリー内に保持されることが意図されている情報が、不揮発性メモリーに移動させられる。例えば、従前のキャッシュ一掃動作(cache flushing operation)は、従来の停止の間に行われるものを模しているが、これを実行することができる。
[0030] 逆に、起動コマンドの処理時に、休止からの再開を起動シーケンスの部分と共に実行することができる。このシーケンスは、オペレーティング・システムがロードされ動作の準備ができた後に行われる起動シーケンスの任意の部分を含むことができる。起動シーケンスのこの部分は、例えば、ユーザーのログオンおよびアプリケーションのロードを含むことができる。
[0031] 更に、ユーザーの期待と相容れる動作に備えるために、休止ファイルの作成および使用は、停止または起動の一部として、動的に決定されるイベントを条件として行うことができる。動作セッション中にあるコンポーネントが構成設定し直され、次にこのコンポーネントがロードされるときまで構成変更が適用されないというシナリオでは、休止ファイルを作成しないこともできる。ユーザーからの次の起動コマンドに応答して、コンピューターは、休止ファイルが入手できないことを検出し、オペレーティング・システムを再ロードすることによって、目標状態を作る。あるいはまたは加えて、オペレーティング・システムは、インターフェースを提供することができる。このインターフェースを介して、他のコンポーネントは、効果的に機能するためには完全停止または起動が必要となることを表明するために登録することができる。実行コンポーネントが登録されると、停止コマンドに応答して完全停止シーケンスを実行することができる。
[0032] 更に、ユーザーの期待と相容れる動作を行うために、ユーザー・インターフェースを提供することができ、これを介して、ユーザーは従来の停止、または、目標状態が作られ次いで休止プロセスが実行される、変更停止(modified shutdown)を実行するか否か指定することができる。このようなユーザー・インターフェースは、従来の停止、および休止を組み込んだ変更停止シーケンスのために、別の選択肢を提示することができる。計算デバイスは、従来の停止コマンドと名付けられた(labeled as)入力に応答して、条件付きで、変更停止シーケンスを呼び出すことができる。別のコマンド選択肢を、このインターフェースを介して提供することもでき、これを使用してユーザーは従来の停止を指定することもできる。
[0033] これより図1に移ると、完全起動シーケンスの機能ブロック図が示されている。図1は、本発明の実施形態にしたがって動作するように構成することができる計算デバイス100の機能ブロック図を示す。
[0034] この例では、計算デバイス100は揮発性メモリー120を含む。揮発性メモリー120は、DRAMまたは任意の他の適したメモリー・コンポーネントを使用して実現することができる。計算デバイス100によって実行される起動シーケンスは、揮発性メモリー120内に状態情報を作ることを伴う。この状態情報は、計算デバイス100が、当技術分野では周知のように計算動作を実行することを可能にする。
[0035] この例では、この状態情報は、2つの部分、即ち、ユーザー状態情報130およびシステム状態情報140を有するように示されている。システム状態情報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に送り、そのソフトウェアを揮発性メモリー20から実行することができる。しかし、ソフトウェアをロードするには、何らかのコンポーネントの実行を含む、他の動作を含むこともできる。
[0045] 揮発性メモリー120からの何らかのコンポーネントの実行により、ソフトウエアを、それが格納されていた状態から、それが使用される、即ち、他のコンポーネントを不揮発性メモリーから揮発性メモリー120に送らせる状態に変換させることができる。ソフトウェアをロードするプロセスにおいて、プロセッサー110は、不揮発性メモリー152に格納されているデーターまたは他の情報に基づいて、ソフトウェアを構成設定することができる。この情報は、たとえば、計算デバイス100にインストールされているハードウェア・コンポーネントについての情報を含むことができる。したがって、図1は、起動プロセスの第2および第3ステップが、不揮発性メモリー150からソフトウェアを得て、不揮発性メモリー152からデーターを得ることとすればよい。
[0046] このプロセスにおいてロードされる最初のソフトウェアが、システム状態140を確定させることができる。最初にロードされるソフトウェアは、システム状態140に、ハードウェア・コンポーネントを制御するドライバー146を追加することができる。ドライバーをロードする前に、計算デバイス100と関連するハードウェア・コンポーネントを識別するとよく、しかるべきドライバーを選択するとよい。一旦ドライバーがインストールされたなら、オペレーティング・システム・サービス、および他のコンポーネントは、そのドライバーを介して制御されるデバイスと相互作用を行うことができる。
[0047] 次に、オペレーティング・システム・サービス152をロードすることができる。このようなサービスの一例に、ファイル・マネージャー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] 単なる一例として、ウェブ・ブラウザを実現するアプリケーション命令をロードすると、プロセッサー110は、不揮発性メモリー152またはユーザー状態データー134のいずれかからのユーザー・データーを表す情報にアクセスすることができる。この情報は、ユーザーが「お気に入り」として特定した具体的なウェブ・サイトを特定する。この例では、ユーザー状態データー130を作ると、ユーザーの好みにしたがって、実行用にウェブ・ブラウザを構成設定する。これは、計算デバイス100においてログオンした特定のユーザーに対してカスタム化されたお気に入りのリストを提示することを含む。
[0052] 一旦ユーザー・ログオンが完了すると、次に、ユーザーは計算デバイス100と対話処理することができる。これらの対話処理の結果、他のソフトウェアをロードするか、または何らかのロードされているアプリケーションを閉じることができる。加えて、ユーザーの対話処理によって、パラメータを設定することもでき、あるいはユーザー状態130またはシステム状態140のいずれかを変化させる他の動作を行うことができる。これらの対話処理は、ユーザーがそのセッションを終了する意図を示すコマンドを入力するまで、継続することができる。
[0053] セッションは、複数の方法の内1つで終了させればよい。例えば、ユーザーが計算デバイス100との対話処理のセッションを完了したとき、ユーザーはログオフすること、および/または計算デバイス100を停止させることができる。ログオフした結果、ユーザー・セッションは強制終了させられ、ユーザー状態情報130はもはやメモリー120内では得ることができなくなる。ログオフ・シーケンスの一部には、ユーザー特定設定をシステム状態140から除去することを伴うこともできる。このように、第2ユーザーが、以前のユーザーによって生成された状態情報によって影響されることなく、またこの状態情報にアクセスすることができずに、計算デバイス100においてログオンすることができる。この結果を得る動作は、ユーザー・セッションを強制終了すると記述するとよい場合もある。
[0054] システム状態140は、ログオフの後にも保持されているとよい。何故なら、メモリー120への電力を維持することができるからである。対照的に、停止の結果、ユーザー状態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は、休止シーケンスからの再開が、プロセッサー110がブート・メモリー154に格納されている命令にアクセスすることによって、図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は、ブート・メモリー154から命令を実行し始めることができる。これは、図2に示した動作モードにおいて行われることと同様である。休止ファイル310の存在を検出すると、プロセッサー110は休止ファイル310の内容を揮発性メモリー120にコピーすることができる。このコピー動作によって、システム状態140を揮発性メモリー120内に再度作る。
[0068] この状態は、オペレーティング・システム・ソフトウェアをロードした後で、ユーザー・ログオンが行われる前における、図1に示した起動シーケンスにおける計算デバイス100の状態を真似ることもできる。したがって、揮発性メモリー120において状態情報の作成を完了するために、プロセッサー110は、システム状態が作られた後に行われる、図1と関連付けて先に説明した起動シーケンスのステップを実行することができる。この場合、これらの動作は、不揮発性メモリー150からソフトウェア命令を読み出し、不揮発性メモリー152内のデーターに基づいてそれを構成設定することによって、アプリケーション命令132をロードすること、およびユーザー状態データー134を作ることを含むことができる。これらの動作シーケンスの完了時には、揮発性メモリー120における状態情報は、図1と関連付けて先に説明した起動シーケンスを実行した結果としてロードされたものに相応することができる。しかしながら、図3に示すシーケンスを使用して起動コマンドに応答するのに要する時間は、図1と関連付けて説明した起動シーケンスを実行するのに要する時間よりも短くすることができる。
[0069] 図3に示す例では、休止ファイル310は、休止ファイル210(図2)と同じフォーマットであるが、異なる情報を含む。加えて、休止ファイル310は、休止ファイル210とは異なる方法で作られる。前述のように、休止ファイル210(図2)は、休止コマンドの時点において揮発性メモリー120内に表現されていた、計算デバイス100の状態を記録する。対照的に、休止ファイル310は、停止コマンドに応答して作られる。しかし、休止ファイル310に取り込まれる状態情報は、停止コマンドの時点における計算デバイス100の全状態を表すのではない。
[0070] 逆に、一部の処理は、計算デバイス100を目標状態に置くために実行することができ、その時点で、休止ファイル310を作ることができる。図示した実施形態では、目標状態は、オペレーティング・システムをロードしたときに生成されているが、ユーザーが計算デバイス100にログオンしていない状態を表す。このような目標状態は、少なくとも部分的に、停止シーケンスの一部を実行することによって、作ることができる。例えば、その一部は、計算デバイス100のひとりまたは複数のユーザーがログオフすること、またそれ以外ではユーザー接続を強制終了することを含むことができる。このような処理は、当技術分野では周知の技法を使用して実行すればよい。
[0071] 代わりにまたは加えて、計算デバイス100を目標状態に置くために、他の処理を実行してもよい。例えば、処理は、システム状態データー148からダーティ・データーを一掃することを含んでもよい。
[0072] 更に、先に注記したように、停止コマンドに対してユーザーが期待する計算デバイス100の反応を保存するために、休止を伴う停止シーケンスを、その時点において存在している可能性がある状態に基づいて、条件付きで実行することもできる。同様に、起動シーケンスも、休止からの再開を条件付きで伴うこともできる。図4、図5、および図6は、このような条件付き処理を示す。
[0073] 図4は、起動コマンドに応答して計算デバイス100によって実行することができるような起動シーケンスを示す。起動コマンドは、例えば、ユーザーがボタンを押し、計算デバイス100に電力を供給し、またはそれ以外で計算デバイス100の動作を開始することによって、計算デバイス100に供給することができる。
[0074] 起動シーケンスが開始されるやり方には関係なく、本プロセスはブロック410において開始することができる。ブロック410において、プロセッサー110はこのプロセスを開始する命令をブート・メモリー154から取り出して実行することができる。しかし、このプロセスの後のステップにおいて、不揮発性メモリー150、またはネットワーク・接続を含む任意の他の適したソースから命令を取り込むこともできる。
[0075] プロセッサー110を制御して起動シーケンスを開始するために使用される命令のソースに関係なく、本プロセスは、休止ファイルが不揮発性メモリー152において検出されたか否かに依存して、判断ブロック412において分岐することができる。検出された場合、本プロセスは終点Aに分岐し、図6に示すようなプロセスに継続することができる。逆に、休止ファイルが存在しない場合、本プロセスはサブプロセス450に進むことができる。
[0076] サブプロセス450は、当技術分野では一般に周知の起動シーケンスを実現する動作のシーケンスを表すことができる。この例では、ブロック420、422、424、426、428、430、および432における処理が、既知の起動シーケンスにおけるような処理を表すことができる。しかし、任意の適した技法を使用する、任意の適した動作のシーケンスを使用すればよいことは、認められてしかるべきである。
[0077] 使用される特定の手法には関係なく、サブプロセス450における処理は、ブロック420において開始することができる。ブロック420において、プロセッサー110はオペレーティング・システム・ローダーを行する。このようなローダーは、ソフトウェア・コンポーネントとするとよく、実行されると、オペレーティング・システムのコンポーネントを不揮発性メモリー150から揮発性メモリー120にロードする。
[0078] ブロック422において、作成されたオペレーティング・システムのイメージをシステム状態140の一部として構成設定する動作を構成設定することができる。この構成設定は、任意の適した処理を伴うことができ、揮発性メモリーにロードされたコンポーネントのパラメータの値を設定すること、またはシステム状態140の他の形態(aspect)を構成設定する命令を実行することを含む。
[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を実行する時刻を記録する。この例では、全起動シーケンスの実行を示す。この情報は、任意の適した方法で記録されればよい。例えば、起動時刻についての情報は、不揮発性メモリー152に記録されるとよい。この情報は、個々の起動時刻として記録され、このような全起動シーケンスが実行されるときに全起動シーケンスを実行するのに要する時間を示すことができる。あるいは、この情報は、複数の全起動シーケンスにわたる移動平均として記録してもよく、または任意の他の適した方法で記録してもよい。
[0092] 起動時刻についての情報は、ブロック444において任意の適した方法で判断すればよい。一例として、サブプロセス450の開始時にタイマーを始動させ、処理がブロック444に達したときに読み出すことができる。しかし、他の時間測定技法も知られており、ブロック444において適用することもできる。
[0093] 一旦起動時刻が記録されたなら、処理はブロック446に進むことができる。ここでは、計算デバイス100の従来の動作が行われるとよい。このような動作は、停止コマンドが受け入れられるまで続くことができる。
[0094] 図5は、このような停止コマンドに応答して実行することができる処理を示す。図5に示すプロセスは、ブロック510を含み、当技術分野では周知の技法を使用する計算デバイス100の動作を表す。動作の間、停止コマンド512を受けることができる。停止コマンド512は、グラフィカル・ユーザー・インターフェースまたはハードウェア制御によってというように、任意の適した方法で、ユーザー入力によって生成することができる。
[0095] 実施形態の中には、計算デバイス100が、停止シーケンスをトリガーすることができる複数のタイプのユーザー入力をサポートするとよい場合がある。図7は、ユーザーが停止コマンドを入力することができるグラフィカル・ユーザー・インタフェースの図である。この例では、グラフィカル・ユーザー・インターフェース710は、コンピューターのオペレーティング・システムによって提示されるユーザー・インターフェース上に現れる「開始」(start)と称されるボタンを押すことによって呼び出される。しかし、異なるオペレーティング・システムは異なるインターフェースをサポートし、ユーザー・インターフェースを読み出す任意の適した技法を使用すればよいことは、認められてしかるべきである。
[0096] このボタンを押したことに応答して、当技術分野では周知の技法を使用して、グラフィカル・ユーザー・インターフェース710がオペレーティング・システムによって提示されればよい。グラフィカル・ユーザー・インターフェース710を介して、計算デバイス100のユーザーは、計算デバイスにおける現在のセッションを終了するための複数の可能なコマンドの中から、選択することができる。ここでは、3つの選択肢が示されている。
[0097] コマンド714は、ここでは「停止」と称される。このような停止コマンドは、多くの計算デバイスにおいて従来と同様であり、従前より、計算デバイスが全停止シーケンスを実行することを示すために使用されている。しかしながら、図5に示す実施形態では、停止コマンド714をユーザーが選択すると、計算デバイス100のオペレーティング・システムは、休止を組み込んだ部分的な停止シーケンスを代わりに実行するとよいと判断する。この実施形態では、オペレーティング・システムは、ユーザーにとって意味的意味(semantic meaning)を有するコマンドに、その意味とは相反する可能性があるような名称(label)を使用する。しかしながら、条件付き処理は、ユーザーの期待を保存する。
[0098] しかし、全停止シーケンスが実行されることをユーザーが確保したい場合、異なる名称を有する別のコマンドを、この理由のために供給することができる。ユーザーが、後続の起動コマンドのときに、不揮発性メモリー150からソフトウェアをロードし、不揮発性メモリー512からのデーターでそれを構成設定することによって、オペレーティング・システムの状態が生成されるように、休止ファイルを作成せずに、計算デバイスに全停止を実行するように命令することを望む場合、ユーザーはコマンド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] 他の例として、図4と関連付けて、アプリケーション・コンポーネントが、ブロック442(図4)においてAPIをコールすることによってというようにして、再ブートを要求することもできると説明した。このようなコールが行われた場合、判断ブロック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] 再開およびそれに続く部分的起動に基づく動作状態を作るための時間が、全起動を実行するための時間よりも長い(slow)場合、本処理は判断ブロック518からサブプロセス530に分岐することができる。逆に、判断ブロック518における処理が、休止からの再開およびそれに続く起動シーケンスの部分的実行の方が好ましいと判断した場合、処理は判断ブロック520に進むことができる。
[00107] 判断ブロック520において、計算デバイス100が休止を組み込んだ部分的停止シーケンスに適した状態にあるか否か判断するために、更に他の条件付き処理を実行することができる。このような処理は、現在のセッション中に、いずれかのコンポーネントに対して構成変更が指定されたか否か判断することを伴うことができる。このような構成変更が有効になるために再ブートを必要とする場合、休止を伴う停止は、計算デバイス100の挙動に対するユーザーの期待を実現しない可能性がある。何故なら、停止コマンド714(図7)の選択には、従前では計算デバイスに構成変更を次の起動時に適用させる名称(label)が関連付けられているからである。
[00108] 計算デバイス100が、従前では全起動を示すために使用されていた名称があるコマンドに応答して、休止を伴う停止シーケンスを実現する場合、以後の起動時に、これらのコンポーネントの状態は、構成変更に基づく状態を再開するのではなく、これらの以前の状態を再開する。したがって、他の場合では全停止シーケンスと関連付けられるかもしれないコマンドが呼び出されることをユーザーが期待しても、期待された動作が実行されないシナリオが存在することもある。計算デバイス100が、ユーザーが期待する動作と相反する動作を行うことを回避するために、図5のプロセスは、計算デバイスが自動的に、ユーザーの期待と相容れる動作を得るために、全停止シーケンスを実行すべきであると判断するか否かに依存して、分岐することができる。自動的に判断する場合、本プロセスはサブプロセス530に分岐し、前述のように全停止シーケンスが実行される。
[00109] 図示した実施形態では、全停止シーケンスを実行することになる状態は、任意のコンポーネントに現在のセッション中に構成設定があったか否か判断することによって、識別される。この判断を行うための当技術分野で周知の技法を、判断ブロック520において適用すればよい。一例として、実行コンポーネントの構成設定を変更する処理は、フラグを設定するか、またそうでなければ構成変更の指示を記録することを伴うとよい。このシナリオでは、判断ブロック520における処理は、ステータス・フラグの値をチェックすることを伴うとよい。しかし、他の適した処理を代わりにまたは加えて使用してもよい。例えば、処理は、適用されていない構成設定を検出するために、1つ以上のメモリー位置を走査することを伴ってもよい。
[00110] 判断ブロック520においてどのように判断を行うかには関係なく、全停止および/または後続の全起動を必要とする状態が存在しない場合、処理は判断ブロック522に進むことができる。ブロック522において、休止が行われる前の目標状態に計算デバイス100を完全に置く動作が行われる。図3と関連付けて先に説明したように、この目標状態は、オペレーティング・システムの状態は維持されているが、ユーザー・セッションの全てが強制終了され、ユーザーの後続のログオンのときに要求されるユーザー状態が全て、しかるべき形態で、不揮発性メモリー内に永続しているという状態に対応することができる。
[00111] この目標状態を得るために実行することができる動作の一例は、ダーティ・データーの一掃である。あるいはまたは加えて、システム状態データー148の一部として格納されている他のデーターが、ログオンされているユーザーのセッションに関係がある場合、ブロック522における処理は、そのデーターを不揮発性メモリー152に格納することを伴うとよい。
[00112] 目標状態を完全に得るためにどの動作が行われるかには関係なく、次に、処理はブロック524に進むことができる。ブロック524では、計算デバイス100において目標状態を再度作るための休止ファイルの適切性を確認するために後に使用するかもしれない情報を取り込むことができる。一例として、計算デバイスの中には、複数のオペレーティング・システムまたは1つのオペレーティング・システムの複数のインスタンスが設定されている場合がある。1つのオペレーティング・システムの特定のインスタンスの停止の一部として作られた休止ファイルが、そのオペレーティング・システムの同じインスタンスを起動するコマンドのみに応答して、オペレーティング・システムの状態を復元するために使用されればよい。
[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の完了に続いて、処理はブロック638に進むことができる。
[00121] 逆に、休止ファイルが停止プロセスの一部として記録されたと判断ブロック601において判断された場合、本プロセスは判断ブロック610に進む。判断ブロック610から開始して、起動コマンドに応答して、全起動シーケンスを実行すべきか、または休止からの再開およびそれに続く部分的起動シーケンスを実行すべきか判断するために、1つ以上の動作を実行することができる。この例では、複数の条件をチェックして、休止ファイルが存在すると判断されたとしても、休止からの再開を実行すべきか否か判断することができる。判断ブロック610においてチェックされるこのような条件の1つは、計算デバイス100に対して、休止からの再開によって現在のコンピューター構成と一致しない状態情報が作り直されることになり得るような、ハードウェア構成の変更があったか否か判断することを伴う。このような変化は、計算デバイスの最後のセッションの間に作られ不揮発性メモリーに格納されたハードウェア・コンポーネントの一覧表(inventory)をチェックすることを含む、任意の適した方法で検出すればよい。後続の起動時における計算デバイスのハードウェア構成をチェックして、一覧表(inventor)における各項目がインストールされていることを確認することができる。しかし、一覧表のチェックは、このような処理をどのように実行すればよいかについての一例に過ぎないことは認められてしかるべきである。どのように判断を下すかには関係なく、ハードウェア構成が変更した場合、本処理は判断ブロック610からサブプロセス650に分岐することができる。サブプロセス650は、オペレーティング・システムを再ロードすることを伴うことがある。サブプロセス650における処理は、当技術分野では周知の技法を使用して実行すればよい。サブプロセス650におけるオペレーティング・システムのロードに続いて、本プロセスはブロック632に進むことができる。
[00122] 逆に、判断ブロック610における処理が、ハードウェアの構成設定が行われなかったと判断した場合、処理はブロック612に進むことができる。ブロック612において、計算デバイス100が、休止からの再開を開始すべき状態にあるか否か動的に判断するために、他の処理を実行することができる。この場合、判断ブロック612における処理は、ブロック524(図5)において格納された情報を利用し、休止ファイルの作成の間に、休止からの再開が行われるとユーザーの期待を満たさないような変更が行われれるか否か判断することができる。
[00123] この例では、ブロック612における処理は、休止ファイルを含むボリュームに関連するNTFSシーケンス番号をチェックすることを伴う。このボリュームが、休止ファイルが作られて以来ロードされていない場合、ブロック612において読み出されたシーケンス番号は、ブロック524において格納されたシーケンス番号とは、起動時におけるシーケンス番号の見込み(chance)を表す既知の量だけ異なることになる。逆に、シーケンス番号の差がこの既知の量よりも大きい場合、ブロック612における処理は、休止ファイルの作成時と、休止からの再開をトリガーした起動コマンドとの間で、恐らく変更が行われたことを特定する。
[00124] 判断ブロック620において、本プロセスは、ブロック612において行われた比較に基づいて、分岐することができる。シーケンス番号に一貫性がない場合、本プロセスはサブプロセス750に分岐する。このような分岐が行われるとよいのは、休止ファイルが、ユーザーの期待と相容れる計算デバイスの動作状態を作らないかもしれないことを、シーケンス番号の差が示すときである。したがって、サブプロセス650が実行され、オペレーティング・システム・ソフトウェアをロードし直すことによって、システム状態140が作られる。
[00125] 逆に、ブロック612において行われた比較が、シーケンス番号に一貫性があることを示す場合、本プロセスはサブプロセス630に進むことができる。この分岐に進む場合、休止ファイルが計算デバイスの状態を再確定するのに適していると判断されたことになる。したがって、サブプロセス630は、休止ファイルから計算デバイスの目標状態を再確定することを伴う。サブプロセス630は、休止から再開するための既知の技法を使用して実行すればよい。しかし、このシナリオでは、ユーザー状態を含む計算デバイスの状態を再確定するのではなく、休止ファイルに基づく再開によって、休止ファイルが作られた時点における目標状態を再度作る。この状態は、例えば、サブプロセス526(図5)の開始時における計算デバイスの状態を表すことができる。しかし、他の実施形態では、オペレーティング・システムが起動シーケンスの完了時にユーザーによってアプリケーションが開かれそうであることを予測し、これらのアプリケーションが未だ開いている間に計算デバイスの状態を取り込むために休止ファイルを格納するときに行われるように、部分的なユーザー状態を休止ファイルに格納してもよい。
[00126] サブプロセス630の完了時に、図6のプロセスはブロック632に進むことができる。処理がサブプロセス630または650を介してブロック632に到達したか、またはブロック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を動作状態に構成設定することができ、その後、停止または再ブート・コマンドが受け入れられるまで、動作し続けることができる。
[00132] 図8は、本発明を実現することができる、適した計算システム環境800の一例を示す。この計算システム環境800は、適した計算環境の一例に過ぎず、本発明の使用範囲や機能に関して何の限定も示唆することは意図していない。また、計算環境800が、動作環境例800に示されているコンポーネントの内任意の1つまたはその組み合わせ関して、何の依存性も要件も有するように解釈してはならない。
[00133] 本発明は、複数の他の汎用または特殊目的計算システム環境あるいは構成とでも動作する。周知の計算システム、環境、および/または構成で、本発明と共に使用するのに適していると考えられる例には、パーソナル・コンピューター、サーバー・コンピューター、ハンド・ヘルドまたはラップ・トップ・デバイス、マルチプロセッサー・システム、マイクロコントローラ・ベース・システム、セット・トップ・ボックス、プログラマブル消費者電子機器、ネットワークPC、ミニコンピューター、メインフレーム・コンピューター、以上のシステムまたはデバイスの内任意のものを含む分散型計算環境等が含まれるが、これらに限定されるのではない。
[00134] この計算環境は、プログラム・モジュールのような、コンピューター実行可能命令を実行することができる。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データー構造等を含み、これらは特定のタスクを実行するか、または特定の抽象的データー型を実現する。また、本発明は、分散型計算環境も使用することができ、この場合、通信ネットワークを通じてリンクされているリモート処理デバイスによってタスクが実行される。分散型計算環境では、プログラム・モジュールは、メモリー記憶デバイスを含むローカルおよびリモート双方のコンピューター・ストレージに配置することができる。
[00135] 図8を参照すると、本発明を実現するシステム例は、コンピューター810の形態とした汎用計算デバイスを含む。コンピューター810のコンポーネントは、処理ユニット820、システム・メモリー830、およびシステム・バス821を含むことができるが、これらに限定されるのではない。システム・バス821は、システム・メモリーを含む種々のシステム・コンポーネントを処理ユニット820に結合する。システム・バス821は、メモリー・バスまたはメモリー・コントローラ、周辺バス、および種々のバス・アーキテクチャーの内任意のものを使用するローカル・バスを含む、様々なタイプのバス構造の内任意のものとすることができる。一例として、そして限定ではなく、このようなアーキテクチャーは、業界標準アーキテクチャー(ISA)バス、マイクロ・チャネル・アーキテクチャー(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス標準連盟(VESA)ローカル・バス、 メザニン・バス(Mezzanine bus)としても知られている周辺素子相互接続(PCI)バスを含む。
[00136] コンピューター810は、通例、種々のコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューター810によってアクセスすることができる任意の入手可能な媒体とすることができ、揮発性および不揮発性双方の媒体、リムーバブルおよび非リムーバブル媒体を含む。一例として、そして限定ではなく、コンピューター読み取り可能媒体は、コンピューター記憶媒体および通信媒体を含むことができる。コンピューター記憶媒体は、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような情報の任意の記憶方法または技術で実現される。コンピューター記憶媒体には、RAM、ROM、EEPROM、フラッシュ・メモリーまたは他のメモリー技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために使用することができ、計算デバイス810によってアクセスすることができる任意の他の媒体が含まれる。通信媒体は、通例、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターを、搬送波または他の伝送メカニズムのような、変調データー信号に具体化することができ、任意の情報配信媒体を含むことができる。「変調データー信号」という用語は、属性を有する信号であって、その信号の中に情報をエンコードするような態様でその特性の1つ以上が設定された信号または変化させられた信号を指す。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体、ならびに音響、RF、赤外線、および他のワイヤレス媒体というような、ワイヤレス媒体を含む。以上の内任意のものの組み合わせも、コンピューター読み取り可能媒体の範囲内に含まれてよい。
[00137] システム・メモリー830は、リード・オンリ・メモリー(ROM)831およびランダム・アクセス・メモリー(RAM)832のような揮発性および/または不揮発性メモリーの形態をなすコンピューター記憶媒体を含む。基本入出力システム833(BIOS)は、起動中のように、コンピューター810内のエレメント間における情報転送を補助する基本的なルーチンを含み、通例ROM831内に格納されている。RAM832は、通例、処理ユニット820が直ちにアクセス可能であるデーターおよび/またはプログラム・モジュール、および/または現在処理ユニット820によって処理されているデーターおよび/またはプログラム・モジュールを含む。一例として、そして限定ではなく、図8は、オペレーティング・システム834、アプリケーション・プログラム835、その他のプログラム・モジュール836、およびプログラム・データー837を示す。
[00138] また、コンピューター810は、その他のリムーバブル/非リムーバブル揮発性/不揮発性コンピューター記憶媒体も含むことができる。一例として示すに過ぎないが、図8は、非リムーバブル不揮発性磁気媒体からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ840、リムーバブル不揮発性磁気ディスク852からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ851、ならびにCDROMまたはその他の光媒体のようなリムーバブル不揮発性光ディスク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に接続されている。ユーザー入力インターフェース860は、システム・バスに結合されているが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)のようなその他のインターフェースおよびバス構造によって接続することも可能である。また、モニター891またはその他の形式のディスプレイ・デバイスも、ビデオ・インターフェース890のようなインターフェースを介して、システム・バス821に接続されている。モニターに加えて、コンピューターは、スピーカー897およびプリンター896のような、その他の周辺出力装置も含むことができ、これらは出力周辺インターフェース895を介して接続することができる。
[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は、リモート・アプリケーション・プログラム885がメモリー・デバイス881に存在するものとして示している。尚、図示のネットワーク接続は一例であり、コンピューター間で通信リンクを作る他の手段も使用可能であることは認められよう。
[00142] 以上のように、本発明の少なくとも1つの実施形態の様々な形態について説明したが、種々の変形、変更、および改善は当業者には容易に想起されることは認められてしかるべきである。
[00143] 例えば、全起動シーケンス、または休止からの再開およびそれに続く起動シーケンスの一部のどちらを実行すべきか、各シーケンスを実行するために観察された相対的な時間に基づいて判断を行うことを記載した。尚、同様の処理は、停止時にも実行できることは認められてしかるべきである。停止時に実行する場合、休止ファイルを格納するまたは格納しないことによって、判断を実施することができる。したがって、起動時に行われると記載された動作は、代わりに、停止時に実行してもよく、その逆でもよいことは認められてしかるべきである。
[00144] 以上で記載したような利点は、他の方法でも得ることができる。例えば、コンピューターのCPUまたはディスクのような他のコンポーネントによる、状態を設定するプロセスにおける作業を回避することに加えて、このような手法は、停止コマンドに応答して、データーを休止ファイルにセーブすることも可能にする。これによって、後続の起動コマンドに対する応答の間および/または起動コマンドの処理を完了した後に、ユーザーの体験を高速化するのに役立つ。例えば、ユーザーがログオンするとき、複数のアプリケーションを始動させることができる(例えば、WINDOWS(登録商標) EXPLORERウェブ・ブラウザ、起動アプリ等)。オペレーティング・システムは、起動コマンドの処理が完了した後、定められた間隔においてユーザーがアクセスするファイル(およびそれらのオフセット)を明示的に追跡することができる。これらのアプリケーション、または他のコンポーネントは、停止コマンドの後続処理の間に作成される休止ファイルにセーブするために、メモリーに読み込むことができる。このように、これらのアプリケーション、またはコンポーネントは、これらのアプリケーションの始動の一部としてランダムに読み出さなければならない代わりに、ディスクからメモリーに順次読み取られる。
[00145] また、ユーザーのログオンおよびログオフについても説明した。尚、停止コマンドは、複数のユーザーが1つのコンピューターにログオンしているシナリオでも供給してもよいことは認められてしかるべきである。停止シーケンスが部分的に実行され、次いで休止動作が実行される場合、この部分的停止シーケンスの結果、複数のユーザーがログオフされるが、先に説明したような技法を適用することができる。
[00146] 例えば、本明細書において説明した技法は、ユーザーの介入がない自動化サービスを提供するために使用することができる。例えば、部分的停止シーケンスを実行し次いで休止を実行することによって停止コマンドに応答した計算デバイスを、夜中のような、ユーザー活動が期待されないときに、自動的に起動する(wake)ように構成することもできる。起動時に、計算デバイスは、ソフトウェア更新を適用するというような、維持動作を実行することができる。ユーザーにとっては、維持動作がユーザーにとって透過性となるように、計算デバイスが1日の終わりに停止したかのように見える。このような能力は、例えば、計算デバイスが停止コマンドに応答して、維持動作または適用するパッチを有することを検出し、適切な時点に起動するようにそれ自体装備すれば、実現することができる。起動するとき、計算デバイスは、パッチを適用するというような、必要な維持動作であれば何でも実行する。次いで、本システムは全再開を行い、再度部分的停止およびそれに続く休止を実行する。このシナリオにより、ソフトウェア販売業者は、維持動作をユーザーに見えるようにする解決策を提供することが可能になる。この能力は、消費者および企業PC双方に適用することができる。ユーザー体験を改善することに加えて、このような手法は、特に企業ユーザーにとって電力を節約することができる。
[00147] このような変形、変更、および改良は、本開示の一部であることを意図しており、本発明の主旨および範囲内に該当することを意図している。したがって、以上の説明および図面は、一例に過ぎない。
[00148] 本発明の以上で説明した実施形態は、複数の方法の内任意のもので実現することができる。例えば、これらの実施形態は、ハードウェア、ソフトウェア、またはその組み合わせを使用して実現することもできる。ソフトウェアで実現する場合、任意の適したプロセッサーまたはプロセッサーの集合体において、1つのコンピューターに設けられるのかまたは複数のコンピューター間で分散されるのかには関係なく、ソフトウェア・コードを実行することができる。このようなプロセッサーは、集積回路として実現するとよく、1つ以上のプロセッサーが集積回路コンポーネント内にある。しかし、任意の適したフォーマットの回路を使用して、プロセッサーを実現することもできる。
[00149] 更に、コンピューターは、ラック組み立てコンピューター(rack-mounted computer)、デスクトップ・コンピューター、ラップトップ・コンピューター、またはタブレット・コンピューターというような、複数の形態の内任意のもので具体化することもできることは認められてしかるべきである。加えて、コンピューターが、パーソナル・ディジタル・アシスタント(PDA)、スマート・フォン、あるいは任意の他の適した携帯用または固定電子デバイスを含む、一般にはコンピューターとは見なされないが、適した処理能力を有するデバイスに埋め込まれてもよい。
[00150] また、コンピューターが1つ以上の入力および出力デバイスを有してもよい。これらのデバイスは、とりわけ、ユーザー・インターフェースを提示するために使用することができる。ユーザー・インターフェースを提供するために使用することができる出力デバイスの例には、出力の視覚的提示のためのプリンターまたはディスプレイ、および出力の可聴提示のためのスピーカーまたは他の音響生成デバイスが含まれる。ユーザー・インターフェースのために使用することができる入力デバイスの例には、キーボード、ならびにマウス、タッチ・パッド、およびディジタル化タブレットというようなポインティング・デバイスを含む。他の例として、コンピューターが音声認識によって、または他の可聴フォーマットで入力情報を受けても良い。
[00151] このようなコンピューターは、企業ネットワークまたはインターネットのような、ローカル・エリア・ネットワークまたはワイド・エリア・ネットワークを含む、任意の適した形態1つ以上のネットワークによって相互接続することができる。このようなネットワークは、任意の適した技術に基づけばよく、任意の適したプロトコルにしたがって動作すればよく、ワイヤレス・ネットワーク、有線ネットワーク、または光ファイバ・ネットワークを含むことができる。
[00152] また、本明細書で概要を説明した種々の方法またはプロセスは、ソフトウェアとしてコード化することができる。このソフトウェアは、種々のオペレーティング・システムまたはプラットフォームの内任意のものを採用する1つ以上のプロセッサーにおいて実行可能である。加えて、このようなソフトウェアは、複数の適したプログラミング言語および/またはプログラミングまたはスクリプティング・ツールの内任意のものを使用して書くこともでき、更にまた、フレームワークまたは仮想機械(virtual machine)において実行される、実行可能機械語コードまたは中間コードとしてコンパイルされてもよい。
[00153] これに関して、本発明は、1つ以上のプログラムがエンコードされたコンピューター読み取り可能記憶媒体(複数のコンピューター読み取り可能媒体(例えば、コンピューター・メモリー、1つ以上のフロッピ・ディスク、コンパクト・ディスク(CD)、光ディスク、ディジタル・ビデオ・ディスク(DVD)、磁気テープ、フラッシュ・メモリー、フィールド・プログラマブル・ゲート・アレイまたは他の半導体デバイスにおける回路構成、あるいは他の一時的でない、有形コンピューター記憶媒体)として具体化することもできる。このプログラムが1つ以上のコンピューターまたは他のプロセッサーにおいて実行されると、以上で説明した本発明の種々の実施形態を実現する。1つまたは複数のコンピューター読み取り可能記憶媒体は移植可能とすることができ、そこに格納されている1つ以上のプログラムは、1つ以上の異なるコンピューターまたはプロセッサーにロードして、先に論じたような本発明の種々の形態を実現することができる。本明細書において使用する場合、「一時的でないコンピューター読み取り可能記憶媒体」という用語は、生産物(即ち、生産品目)または機械(machine)であると見なすことができるコンピューター読み取り可能媒体のみを含む。あるいはまたは加えて、本発明は、伝搬信号のような、コンピューター読み取り可能記憶媒体以外のコンピューター読み取り可能媒体として具体化することもできる。
[00154] 「プログラム」または「ソフトウェア」という用語は、先に論じた本発明の種々の態様を実施するようにコンピューターまたは他のプロセッサーをプログラミングするために採用することができる、あらゆるタイプのコンピューター・コードまたはコンピューター実行可能命令を指すように、本明細書では包括的な意味で用いられている。加えて、この実施形態の一態様によれば、実行されると本発明の方法を実行する1つ以上のコンピューター・プログラムは、1つのコンピューターまたはプロセッサー上に常駐する必要はなく、本発明の種々の態様を実施するために、モジュール状に多数の異なるコンピューターまたはプロセッサー間に分散されていてもよいことは認められてしかるべきである。
[00155] コンピューター実行可能命令は、1つ以上のコンピューターまたは他のデバイスによって実行する、プログラム・モジュールのような多くの形態とすることができる。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データー構造等を含み、特定のタスクを実行するか、または特定の抽象データー・タイプを実施する。通例、プログラム・モジュールの機能は、種々の実施形態において所望に応じて組み合わせること、または分散することもできる。
[00156] また、データー構造は、適した形態の任意のもので、コンピューター読み取り可能媒体に格納することができる。図示を簡略化するために、データー構造は、当該データー構造における場所によって関係付けられたフィールドを有するように示すことができる。同様に、このような関係は、コンピューター読み取り可能媒体においてフィールド間で関係を伝える場所と共に、これらのフィールドにストレージを割り当てることによって達成することができる。しかしながら、データー構造のフィールドにおいて情報間に関係を確立するためには、任意の適したメカニズムを使用することができ、ポインター、タグ、またはデーター・エレメント間に関係を作るその他のメカニズムの使用によることが含まれる。
[00157] 本発明の種々の態様は、単独でも、組み合わせでも、または先に説明した実施形態において具体的な論じられなかった種々の構成でも用いることができ、したがって、前述の説明において明記したコンポーネントや図面に示したコンポーネントの詳細や構成には、その応用は限定されない。例えば、一実施形態において説明した態様を、他の実施形態において説明した態様といかように組み合わせてもよい。
[00158] また、本発明は、方法として具体化することができ、その例を示した。この方法の一部として実行される動作は、いずれの適した方法でも順序を決定することができる。したがって、実施形態は、図示した順序とは異なる順序で動作が実行される構成にすることもでき、一部の動作を同時に実行することを含むことができるが、例示的な実施形態では連続的な動作として示されている。
[00159] 「第1」、「第2」、「第3」等のような序数を請求項において使用して請求項の要素を修飾する場合、それ自体は、優先順位も、時間的先行も、あるいは1つの請求項要素の他の要素に対する順序、即ち、方法の動作が実行される時間的順序も言外に含むことはなく、単に、請求項要素を区別するために、ある名称を有する1つの請求項要素を、同じ名称を有する他の要素(序数項の使用を除く)から区別する付箋として用いられるに過ぎない。
[00160] また、本明細書において用いた言葉づかいや用語は、説明を目的にしているのであり、限定と見なしてはならない。「含む」(including)、「含む」(comprising)、または「有する」(having)、「含む」(containing)、「伴う」(involving)、およびこれらの派生形は、本明細書では、その後に羅列される項目、その均等物、および付加的な項目も包含することを意味する。

Claims (13)

  1. 複数のハードウェア・コンポーネントを含む計算デバイスで実行される方法であって、前記複数のハードウェア・コンポーネントが、前記計算デバイスのユーザー状態と前記計算デバイスのシステム状態とを保持した揮発性メモリーを含み、前記方法が、
    停止命令を受けたことに応答して前記計算デバイスを停止させるために構成された停止シーケンスを実行することを含み、該停止シーケンスが、
    前記計算デバイスにおけるユーザー・セッションを強制終了させるステップであって、これにより前記ユーザー状態が前記揮発性メモリーにもはや保持されなくなる、ステップと、
    前記強制終了に続いて、前記揮発性メモリーの内容を不揮発性メモーにコピーするステップであって、前記不揮発性メモリーにコピーされた内容が、保持された前記システム状態を含むが、もはや保持されていない前記ユーザー状態を含まない、ステップと、
    前記計算デバイスの前記複数のハードウェア・コンポーネントの内少なくとも一部のハードウェア・コンポーネントの電源を切るステップと、
    を含む、方法。
  2. 請求項1記載の方法において、
    前記強制終了は、前記システム状態からユーザー特定の設定を除去することを含む、方法。
  3. 請求項1又は2に記載の方法であって、前記停止シーケンスは、更に、
    前記電源を切ったことに続きかつ起動命令を受けたことに応答して、前記複数のハードウェア・コンポーネントの内少なくとも前記一部のハードウェア・コンポーネントに電源を入れるステップ、
    を含む、方法。
  4. 請求項3記載の方法であって、前記停止シーケンスは、更に、
    前記複数のハードウェア・コンポーネントの内少なくとも前記一部のハードウェア・コンポーネントに電源を入れたことに続いて、前記不揮発性メモリーから前記揮発性メモリーに前記コピーされた内容をコピーするステップ、
    を含む、方法。
  5. 請求項4に記載の方法であって、前記不揮発性メモリーから前記揮発性メモリーに前記コピーされた内容をコピーするステップは、前記コピーされた内容を含むファイルを検出することに基づく、方法。
  6. 請求項1〜5のいずれか一項に記載の方法において、前記揮発性メモリーの内容を不揮発性メモリーにコピーするステップは、ファイルを作成することを含む、方法。
  7. 請求項1〜6のいずれか一項に記載の方法において、前記停止シーケンスは、更に、ダーティー・データを前記不揮発性メモリーに一掃することを含む、方法。
  8. コンピューター実行可能命令を格納した少なくとも1つのコンピューター記憶デバイスであって、前記コンピューター実行可能命令は、計算デバイスによって実行されると、停止命令を受けたことに応答して前記計算デバイスを停止させるために構成された停止シーケンスを前記計算デバイスに実行させ、前記計算デバイスが、該計算デバイスのユーザー状態と前記計算デバイスのシステム状態とを保持する揮発性メモリーを含む複数のハードウェア・コンポーネントを含み、前記停止シーケンスが、
    前記計算デバイスにおけるユーザー・セッションを強制終了させるステップであって、これにより前記ユーザー状態が前記揮発性メモリーにもはや保持されなくなる、ステップと、
    前記強制終了に続いて、前記揮発性メモリーの内容を不揮発性メモリーにコピーするステップであって、前記不揮発性メモリーにコピーされた内容が、保持された前記システム状態を含むが、もはや保持されていない前記ユーザー状態を含まない、ステップと、
    前記計算デバイスの前記複数のハードウェア・コンポーネントの内少なくとも一部のハードウェア・コンポーネントの電源を切るステップと、
    を含む、少なくとも1つのコンピューター記憶デバイス。
  9. 請求項8記載の少なくとも1つのコンピューター記憶デバイスにおいて、前記強制終了は、前記システム状態からユーザー特定の設定を除去することを含む、少なくとも1つのコンピューター記憶デバイス。
  10. 請求項8又は9に記載の少なくとも1つのコンピューター記憶デバイスにおいて、前記停止シーケンスは、更に、前記電源を切ったことに続きかつ起動命令を受けたことに応答して、前記複数のハードウェア・コンポーネントの内少なくとも前記一部のハードウェア・コンポーネントに電源を入れるステップ、を含む、少なくとも1つのコンピューター記憶デバイス。
  11. 請求項10記載の少なくとも1つのコンピューター記憶デバイスにおいて、前記停止シーケンスは、更に、前記複数のハードウェア・コンポーネントの内少なくとも前記一部のハードウェア・コンポーネントに電源を入れたことに続いて、前記不揮発性メモリーから前記揮発性メモリーに前記コピーされた内容をコピーするステップを含む、少なくとも1つのコンピューター記憶デバイス。
  12. 請求項11に記載の少なくとも1つのコンピューター記憶デバイスにおいて、前記揮発性メモリーの内容を不揮発性メモリーにコピーするステップは、前記コピーされた内容を含むファイルを検出することに基づく、コンピューター記憶デバイス。
  13. 請求項8〜12のいずれか一項に記載の少なくとも1つのコンピューター記憶デバイスにおいて、前記揮発性メモリーの内容を不揮発性メモリーにコピーするステップは、ファイルを作成することを含む、少なくとも1つのコンピューター記憶デバイス。
JP2013543148A 2010-12-06 2010-12-18 高速コンピューター起動 Active JP5732141B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/960,835 US9032194B2 (en) 2010-12-06 2010-12-06 Fast computer startup
US12/960,835 2010-12-06
PCT/US2010/061180 WO2012078175A1 (en) 2010-12-06 2010-12-18 Fast computer startup

Publications (3)

Publication Number Publication Date
JP2014501976A JP2014501976A (ja) 2014-01-23
JP2014501976A5 JP2014501976A5 (ja) 2014-03-06
JP5732141B2 true JP5732141B2 (ja) 2015-06-10

Family

ID=45984466

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013543148A Active JP5732141B2 (ja) 2010-12-06 2010-12-18 高速コンピューター起動

Country Status (10)

Country Link
US (3) US9032194B2 (ja)
EP (1) EP2649517B1 (ja)
JP (1) JP5732141B2 (ja)
KR (1) KR101702700B1 (ja)
CN (1) CN102436387B (ja)
AU (1) AU2010365029B2 (ja)
CA (2) CA3015051C (ja)
RU (1) RU2568280C2 (ja)
TW (1) TWI610238B (ja)
WO (1) WO2012078175A1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8788798B2 (en) 2010-12-06 2014-07-22 Microsoft Corporation Fast computer startup
US8543849B2 (en) 2010-12-06 2013-09-24 Microsoft Corporation Fast computer startup
US9009407B2 (en) * 2011-03-29 2015-04-14 Dell Products L.P. System and method for performing system memory save in tiered/cached storage
US8719609B2 (en) * 2011-10-12 2014-05-06 Apple Inc. Using latched events to manage sleep/wake sequences on computer systems
US8977879B2 (en) 2012-03-30 2015-03-10 Motorola Solutions, Inc. Method and apparatus for enhancing a multi-stage hibernate and resume process
JP6041522B2 (ja) * 2012-04-18 2016-12-07 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、プログラム及び記憶媒体
EP2914166B1 (en) * 2012-10-31 2022-05-25 Philips Image Guided Therapy Corporation Dependency-based startup in a multi-modality medical system
TWI479420B (zh) * 2013-01-16 2015-04-01 Wistron Corp 電腦裝置及其開機方法
TWI493447B (zh) * 2013-01-18 2015-07-21 Acer Inc 雙碟式資料快取方法及系統
CN104123081B (zh) * 2013-04-23 2017-04-26 神讯电脑(昆山)有限公司 电子装置及该电子装置的休眠唤醒方法
CN103425506B (zh) * 2013-05-20 2016-12-07 华为技术有限公司 关机方法及开机方法及通信终端
TWI610239B (zh) * 2013-12-27 2018-01-01 財團法人工業技術研究院 休眠喚醒方法及電子裝置
TWI646463B (zh) * 2013-12-27 2019-01-01 財團法人工業技術研究院 休眠喚醒方法及電子裝置
KR102193021B1 (ko) * 2014-04-21 2020-12-18 삼성전자주식회사 영상처리장치, 영상처리방법 및 컴퓨터 판독가능 기록매체
TWI514280B (zh) * 2014-07-16 2015-12-21 Inventec Corp 計算機系統
WO2017048283A1 (en) * 2015-09-18 2017-03-23 Hewlett-Packard Development Company, L.P. System memory migration
CN106775833B (zh) * 2016-11-28 2021-03-16 青岛海信移动通信技术股份有限公司 设备驱动程序加载方法、终端及系统
US10394304B2 (en) 2016-12-07 2019-08-27 Microsoft Technology Licensing, Llc Optimized power transitions based on user or platform conditions
US10782955B2 (en) * 2017-01-03 2020-09-22 Ford Global Technologies, Llc Pre-shutdown swap verification
US10606656B2 (en) * 2017-09-07 2020-03-31 Microsoft Technology Licensing, Llc Dynamic command generation for automated control of computing machines
CN108399081B (zh) * 2018-02-09 2021-01-26 广州洋葱时尚集团有限公司 一种MyBatis逆向工程生成器
US10592354B2 (en) * 2018-03-20 2020-03-17 Microsoft Technology Licensing, Llc Configurable recovery states
CN110928591B (zh) * 2019-11-22 2024-02-20 东莞市小精灵教育软件有限公司 一种分析开关机状态的方法、系统、设备及存储介质
US11349780B2 (en) * 2020-09-03 2022-05-31 Mellanox Technologies, Ltd. Enhancing port link-up time
US11907153B2 (en) 2022-01-07 2024-02-20 Dell Products L.P. System and method for distributed subscription management
US11888690B2 (en) 2022-01-07 2024-01-30 Dell Products L.P. System and method for subscription limitation enforcement in distributed system
US11947433B2 (en) * 2022-01-07 2024-04-02 Dell Products L.P. System and method for subscription based solution management

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07101376B2 (ja) * 1991-06-10 1995-11-01 松下電器産業株式会社 システム再起動装置
US5696897A (en) * 1994-01-31 1997-12-09 Sun Microsystems, Inc. Method and apparatus for a multi-layer system quiescent suspend and resume operation
US5710930A (en) * 1995-08-04 1998-01-20 Intel Corporation Apparatus and a method for allowing an operating system of a computer system to persist across a power off and on cycle
US5974552A (en) * 1995-12-29 1999-10-26 Samsung Electronics Co., Ltd. Method and apparatus for executing a scheduled operation after wake up from power off state
JP2988866B2 (ja) 1996-02-29 1999-12-13 株式会社東芝 コンピュータシステム
ZA973609B (en) * 1997-03-21 1998-07-17 Canal Plus Sa Computer memory organization.
KR100247274B1 (ko) * 1997-04-18 2000-03-15 윤종용 컴퓨터의전원오프확인방법
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6473855B1 (en) 1999-06-18 2002-10-29 Phoenix Technologies Ltd. Method and apparatus for providing content on a computer system based on usage profile
KR100319292B1 (ko) * 1999-12-02 2002-01-05 윤종용 빠른 부팅 속도를 갖는 컴퓨터 시스템 및 그 방법
US6636963B1 (en) 1999-12-30 2003-10-21 Cardiac Pacemakers, Inc. Quick starting for microprocessor-based system by retrieving a target state memory image and a target state data structure from an image storage medium
US20010047473A1 (en) 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US6564286B2 (en) 2001-03-07 2003-05-13 Sony Corporation Non-volatile memory system for instant-on
CN1467625A (zh) 2002-07-08 2004-01-14 尹启凤 一种快速启动的计算机系统
US7131011B2 (en) * 2002-10-30 2006-10-31 Microsoft Corporation System and method for preserving state data of a personal computer in a standby state in the event of an AC power failure
US7073052B2 (en) * 2003-05-22 2006-07-04 International Business Machines Corporation Method and system for storing active files and programs in a hibernation mode
JP2006526831A (ja) * 2003-06-03 2006-11-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 不揮発性メモリからのブート
JP4281421B2 (ja) 2003-06-06 2009-06-17 ソニー株式会社 情報処理システム及びその制御方法、並びにコンピュータ・プログラム
US7412565B2 (en) 2003-08-18 2008-08-12 Intel Corporation Memory optimization for a computer system having a hibernation mode
US8014012B2 (en) * 2003-10-30 2011-09-06 Xerox Corporation Software upgrades from a printer module with on-board intelligence
US7483966B2 (en) * 2003-12-31 2009-01-27 International Business Machines Corporation Systems, methods, and media for remote wake-up and management of systems in a network
US20050223209A1 (en) 2004-03-31 2005-10-06 Giga-Byte Technology Co., Ltd. Apparatus for fast booting computer and method for the same
TW200622897A (en) 2004-12-31 2006-07-01 Mitac Technology Corp Computer system and its processing method with instantly booting function
US7590839B2 (en) 2005-03-22 2009-09-15 Qnx Software Systems Gmbh & Co. Kg System employing fast booting of application programs
JP2006277472A (ja) 2005-03-30 2006-10-12 Mitsubishi Electric Corp 情報処理装置
US20060265437A1 (en) 2005-05-23 2006-11-23 Coulson Richard L Contiguous boot and resume start-up files
US7489923B2 (en) 2005-08-05 2009-02-10 Research In Motion Limited Methods and systems for handling software operations associated with startup and shutdown of handheld devices
EP1755038B1 (en) 2005-08-05 2017-05-24 BlackBerry Limited Methods and systems for handling software operations associated with startup and shutdown of handheld devices
US7457928B2 (en) 2005-10-28 2008-11-25 International Business Machines Corporation Mirroring system memory in non-volatile random access memory (NVRAM) for fast power on/off cycling
US20070112899A1 (en) 2005-11-14 2007-05-17 Edwards Matthew F Method and apparatus for fast boot of an operating system
US7640395B2 (en) 2006-03-30 2009-12-29 Intel Corporation Maintaining write ordering in a system
US8225314B2 (en) * 2006-03-31 2012-07-17 Intel Corporation Support for personal computing in a public computing infrastructure by using a single VM delta image for each VM base image utilized by a user
US8533700B1 (en) * 2006-04-11 2013-09-10 Open Invention Networks, Llc Workstation uptime, maintenance, and reboot service
US7640440B2 (en) 2006-04-25 2009-12-29 Apple Inc. Method and apparatus for facilitating device hibernation
US7624260B2 (en) 2006-05-04 2009-11-24 Qnx Software Systems Gmbh & Co. Kg System executing a fast boot wake-up
US7802083B2 (en) * 2006-12-20 2010-09-21 Intel Corporation Utilization based installation on a computing system
JP4517303B2 (ja) 2006-12-28 2010-08-04 ソニー株式会社 情報処理装置、起動方法、およびプログラム
US8291209B2 (en) 2007-08-01 2012-10-16 Splashtop Inc. Integration model for instant-on environment
US8375440B2 (en) * 2007-10-15 2013-02-12 Microsoft Corporation Secure bait and switch resume
JP2009146061A (ja) 2007-12-12 2009-07-02 Canon Inc 情報処理装置及び前記装置の起動方法
EP2229625B1 (en) * 2007-12-13 2011-08-31 Telefonaktiebolaget LM Ericsson (publ) Updating firmware of an electronic device
US7900072B2 (en) * 2007-12-21 2011-03-01 Intel Corporation Tri-layered power scheme for architectures which contain a micro-controller
US7971081B2 (en) * 2007-12-28 2011-06-28 Intel Corporation System and method for fast platform hibernate and resume
CN101515194B (zh) 2008-02-21 2011-11-09 鸿富锦精密工业(深圳)有限公司 计算机工作状态转换方法
TW200937177A (en) 2008-02-29 2009-09-01 Hon Hai Prec Ind Co Ltd Method for switching work states of a computer
JP2009276887A (ja) 2008-05-13 2009-11-26 Seiko Epson Corp 情報処理装置およびテープ印刷装置
US20090303097A1 (en) * 2008-06-09 2009-12-10 Echostar Technologies Llc Systems, methods and apparatus for changing an operational mode of a remote control
US8250350B2 (en) 2008-08-26 2012-08-21 Texas Digital And Multimedia Systems Computer system with non-volatile write-protected memory based operating system and secure system architecture
US8914653B2 (en) 2008-09-05 2014-12-16 Hewlett-Packard Development Company, L.P. Method and system for providing hybrid-shutdown and fast startup processes
TWI375912B (en) 2008-10-17 2012-11-01 Asrock Inc Method for reducing time of booting and computer system
US8296553B2 (en) 2008-11-19 2012-10-23 Intel Corporation Method and system to enable fast platform restart
US20100281474A1 (en) * 2009-04-30 2010-11-04 Eason Patrick C Firmware updating
US8788798B2 (en) 2010-12-06 2014-07-22 Microsoft Corporation Fast computer startup
US8543849B2 (en) 2010-12-06 2013-09-24 Microsoft Corporation Fast computer startup

Also Published As

Publication number Publication date
AU2010365029A1 (en) 2013-05-30
US9032194B2 (en) 2015-05-12
CA3015051C (en) 2020-12-15
CA2817196C (en) 2018-11-06
US20150234666A1 (en) 2015-08-20
WO2012078175A1 (en) 2012-06-14
KR101702700B1 (ko) 2017-02-03
US9361128B2 (en) 2016-06-07
RU2568280C2 (ru) 2015-11-20
TWI610238B (zh) 2018-01-01
EP2649517A1 (en) 2013-10-16
RU2013125951A (ru) 2014-12-10
CN102436387A (zh) 2012-05-02
EP2649517B1 (en) 2021-01-20
CA2817196A1 (en) 2012-06-14
AU2010365029B2 (en) 2016-07-28
JP2014501976A (ja) 2014-01-23
EP2649517A4 (en) 2015-02-18
KR20130127465A (ko) 2013-11-22
US20120144177A1 (en) 2012-06-07
CA3015051A1 (en) 2012-06-14
TW201224931A (en) 2012-06-16
US20160232009A1 (en) 2016-08-11
CN102436387B (zh) 2015-05-20

Similar Documents

Publication Publication Date Title
JP5732141B2 (ja) 高速コンピューター起動
US10417009B2 (en) Fast computer startup
US10268487B2 (en) Fast computer startup
US8875160B2 (en) Dynamic application migration
JP5911892B2 (ja) ハイバネイトからの多段レジューム
US7707400B2 (en) Direct computing experience
TWI559227B (zh) 具有內建雙可隨機關閉開啟電源作業裝置的電腦系統

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131217

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150410

R150 Certificate of patent or registration of utility model

Ref document number: 5732141

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250