JP5911892B2 - ハイバネイトからの多段レジューム - Google Patents

ハイバネイトからの多段レジューム Download PDF

Info

Publication number
JP5911892B2
JP5911892B2 JP2013555508A JP2013555508A JP5911892B2 JP 5911892 B2 JP5911892 B2 JP 5911892B2 JP 2013555508 A JP2013555508 A JP 2013555508A JP 2013555508 A JP2013555508 A JP 2013555508A JP 5911892 B2 JP5911892 B2 JP 5911892B2
Authority
JP
Japan
Prior art keywords
information
hibernation
computing device
resume
operating system
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.)
Expired - Fee Related
Application number
JP2013555508A
Other languages
English (en)
Other versions
JP2014506708A5 (ja
JP2014506708A (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 JP2014506708A publication Critical patent/JP2014506708A/ja
Publication of JP2014506708A5 publication Critical patent/JP2014506708A5/ja
Application granted granted Critical
Publication of JP5911892B2 publication Critical patent/JP5911892B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

コンピュータは、完全な動作から完全なシャットダウンまで、幾つかの動作モードを有する。完全な動作中は、オペレーティングシステムの実行中部分を定めるソフトウェアは、不揮発性メモリから運用メモリにロードされている。運用メモリは、通常、揮発性メモリであり、揮発性メモリからはソフトウェアがより早く実行できる。コンピュータは、「起動」プロセスを通じて、この完全な動作モードに入る。起動プロセスは、ハードウェアを設定し、コンピュータのオペレーティングシステムをロードする。起動プロセスの一部として、ドライバがインストールされ、オペレーティングシステムサービスが開始される。
コンピュータがユーザによる動作のための準備が整うと、ユーザは該コンピュータにログオンできる。このログオンは、ログオンするユーザに固有のプロファイルに基づくコンピュータの更なる設定を含み得る。次に、自動的に又はユーザ入力に応答して、アプリケーションがロードされ、該アプリケーションはコンピュータ装置のハードウェア及びオペレーティングシステムサービスの機能を利用して実行可能になっても良い。
ソフトウェアをロードする過程で、オペレーティングシステムのためか又はアプリケーションのためかに拘わらず、メモリが割り当て、ソフトウェアのパラメータがコンピュータのハードウェア設定又はユーザプロファイルに基づき値を割り当てられ、及び他の設定動作が実行されても良い。これらの動作は、コンピューティング装置の「状態」を確立する。ユーザが実行中アプリケーション又はオペレーティングシステムサービスと相互作用するためにコマンドを与えるとき、システムの動作状態を定める該システムのメモリ及び他のパラメータに対する更なる変更が行われても良い。
完全なシャットダウンモードでは、コンピュータのハードウェアコンポーネントに電力が供給されない。揮発性メモリは電源がオフのときには情報を保持しないので、如何なるソフトウェア又は状態情報も揮発性メモリに格納されていない。むしろ、後に完全な動作モードのためにコンピュータを再設定するために用いられる情報は、不揮発性メモリに格納される。
コンピュータは、シャットダウンと呼ばれる過程を通じてシャットダウンモードに入る。
シャットダウン中、コンピュータを再設定するために必要であり得る情報は、不揮発性メモリに未だ格納されていない場合、不揮発性メモリに格納されても良い。
不揮発性メモリから揮発性メモリへコピーされたソフトウェア及び他の設定情報は、後続の起動プロセスのときに再生成できるので、不揮発性メモリにコピーバックされない。
完全なシャットダウンに加えて、コンピュータの一部の又は全部のハードウェアコンポーネントへの電力がオフにされる省電力モードがあっても良い。スリープモードと呼ばれる場合もある省電力モードでは、コンピュータプロセッサ、ネットワークインタフェース、及び場合によっては他のコンポーネントに対して、電力はオフにされる。しかしながら、電力は揮発性メモリのために保持される。このように、ブート又はコンピュータの後続の動作中に生成される状態情報は、揮発性メモリに保持される。再び電力がプロセッサに供給されると、プロセッサは、スリープモードに入るときに中止した状態で動作を再開しても良い。
更なるモードは、ハイバネイトモードと呼ばれることがある。コンピュータは、ハイバネーションと呼ばれる過程を通じてこのモードに入る。ハイバネーション中、コンピュータの動作状態をキャプチャするファイルが生成され、不揮発性メモリ、通常はハードディスクに格納される。システムの状態を表すデータは、ハイバネーションファイルに格納されるときに圧縮されても良い。ハイバネイトからレジュームする過程の間、このファイルは、ディスクからリードされ、解凍され、ハイバネーションのときに存在していたようにコンピュータの状態を復帰するために用いられても良い。ハイバネイトからのレジュームは、ハイバネイトするときに存在していた動作中に設定されたパラメータ又はソフトウェアのコピーを揮発性メモリ内に復帰させ、ユーザ状態も復帰できるようにする。
ハイバネーションからのレジュームは、幾つかの理由で完全な起動を実行するよりも速い。1つの理由は、ハイバネーションファイル内の状態情報を揮発性メモリにコピーすることで、完全な起動プロセスの結果を再生成し、同時に、CPU消費、デバイスの初期化、及びブート中に行われるべき多くの他の種類の作業のような起動プロセスのステップを実行するための時間の消費を回避するからである。さらに、起動中にアクセスされる情報は、多くの異なるファイルに格納され、ロード及び設定するためにアクセスされる、場合によってはオペレーティングシステム内の何万個ものコンポーネントであり得る異なるコンポーネントを表す。これらのコンポーネント、及びそれらを設定するためにアクセスされる情報は、ハードディスク全体にランダムに分散し得る。ハードディスクドライブ、及び幾つかの他の形式の大容量記憶装置は、シーケンシャルデータにアクセスするときに最も効率的であり、分散したデータへのランダムなアクセスは、多大なディスクアクセス時間を含み、その結果、長い起動プロセスをもたらし得る。これに対し、ハイバネーションファイル内の情報はディスクにシーケンシャルに格納され得るので、ハイバネーションファイルをリードする際のアクセス時間は短い。
コンピューティング装置がハイバネーションモードからレジュームする速度を増大するために、コンピューティング装置はハイバネーションモードから複数段階でレジュームするよう構成されても良い。各段階は、ハイバネーション情報に基づき、コンピューティング装置の状態を部分的に復帰しても良い。複数の段階は異なる環境で実行されても良いので、コンピューティング装置の異なるリソースが異なる段階で用いられる。幾つかの実施形態では、ある段階中の処理は、レジュームの別の段階が実行される環境を確立しても良い。
幾つかの実施形態では、レジューム処理の段階は、第1のコンピュータ実行可能命令セットの実行により行われても良い。これらの命令は、プレオペレーティングシステム環境で実行されても良い。例えば、命令は、コンピューティング装置のBIOSの一部であるブートローダを有しても良く、又はコンピューティング装置のファ―ムウェア内に存在しても良い。これらの命令は、不揮発性メモリに格納されたハイバネーション情報の第1の部分の運用メモリへの転送を制御しても良い。第1の環境は、プレオペレーティングシステム環境で従来のような比較的希薄な(sparse)環境であっても良い。第1の命令セットは、ハイバネーション情報を有する記憶媒体への非同期アクセスをサポートしない単一のプロセッサで実行されても良い。
第1のコンピュータ実行可能命令セットの実行は、ハイバネーション情報の第2の部分の不揮発性メモリから運用メモリへの転送を制御するために第2のコンピュータ実行可能命令セットが実行され得る第2の環境を確立しても良い。第2の環境は、より豊富なリソースセットを有しても良い。
例えば、第2の環境は、複数のプロセッサに対するサポートを有しても良い。1より多いプロセッサは、第2の段階での処理を実行するために用いられ、ハイバネーションからのレジュームを完了するために必要な処理負荷を共有しても良い。例えば、1又は複数のプロセッサは、ハイバネーション情報をリードして、1又は複数の他のプロセッサによる処理のために利用可能にしても良い。これらのリード動作は、同期して実行されても良い。他のプロセッサは、データを解凍して、必要に応じて運用メモリへ転送しても良い。
代替又は追加で、豊かなリソースセットは、ハイバネーション情報を含む記憶媒体への非同期アクセスを可能にするメモリアクセス機能を有しても良い。例えば、第2の環境は、従来のようにオペレーティングシステム環境で非同期ディスク入力/出力(I/O)をサポートしても良い。コンピューティング装置が単一プロセッサを有する場合、プロセッサは、不揮発性記憶からハイバネーション情報の別のセグメントをリードするためにI/O動作が保留されている期間中に、ハイバネーション情報のセグメントに基づき、コンピューティング装置の状態を復帰する処理を実行できるので、非同期アクセスの使用は、レジュームを高速化できる。
ハイバネーションからの複数段階のレジュームを実施するために、各レジューム段階中に復帰される運用メモリからの情報は、別個に記録されても良い。この情報は、各段階で復帰されるべき情報を識別するメタデータとともに格納されても良い。幾つかの実施形態では、ハイバネーション情報は、運用メモリに戻ったときに各先行する段階のために記録された情報が後続の段階のための環境を確立するように区分されても良い。幾つかの実施形態では、第1の段階で復帰した情報は、オペレーティングシステムを通じてレジューム処理を完了するために十分な、該オペレーティングシステムの一部を再生成する。オペレーティングシステムのこれらの部分は、ハードウェアアクセスをサポートするオペレーティングシステムのカーネルの部分及びカーネルモードレジュームローダを有してもよい。
一部又は全部のハイバネーション情報は、圧縮形式で記録されても良い。幾つかの実施形態では、1又は複数の適切な圧縮アルゴリズムは、プロセッサ及びコンピューティング装置のディスクI/Oの能力に基づき動的に選択されても良い。例えば、圧縮アルゴリズムは、プロセッサの数及び処理速度に基づき、及びコンピューティング装置内のディスクのI/O速度に基づき、選択されても良い。圧縮アルゴリズムは、より多くの処理能力が利用可能なときに更なる圧縮の使用を支持するという基準に基づき選択されても良い。基準は、ハイバネーション情報を格納しているディスク又は他の不揮発性メモリへのアクセス時間が遅いとき、更なる圧縮を支持しても良い。ハイバネーション情報と共に格納されるメタデータは、使用される圧縮の特性を示すパラメータ値を有しても良い。
一態様によると、少なくとも1つのプロセッサを有するコンピューティング装置の動作方法が実施されても良い。方法は、ハイバネーションのときに、少なくとも1つの圧縮アルゴリズムを動的に選択するステップと、ハイバネーション情報の第1の部分を不揮発性メモリに記録するステップであって、前記第1の部分は、前記ハイバネーションのときの前記コンピューティング装置の状態を表す運用メモリからの情報を有する、ステップと、前記ハイバネーション情報の第2の部分を前記不揮発性メモリに記録するステップであって、前記第2の部分は、前記ハイバネーションのときの前記コンピューティング装置の前記状態を表す前記運用メモリからの情報を有する、ステップと、を有しても良い。前記第1及び/又は前記第2の部分は、少なくとも1つの動的に選択された圧縮アルゴリズムのうちの1つの動的に選択された圧縮アルゴリズムに従って圧縮され、前記第1の部分及び前記第2の部分が異なる圧縮量を有するようにしても良い。
別の態様によると、揮発性記憶媒体と、ハイバネーション情報を有する不揮発性記憶媒体とを備えたコンピュータシステムが提供されても良い。前記ハイバネーション情報は、ハイバネーションのときの前記コンピューティング装置の状態の一部を示す第1の情報を格納する第1の部分であって、前記第1の部分は第1の圧縮アルゴリズムで圧縮される、第1の部分と、前記ハイバネーションのときの前記システムの状態に関する第2の情報を格納する第2の部分であって、前記第2の部分は第2の圧縮アルゴリズムで圧縮される、第2の部分と、を有しても良い。前記ハイバネーション情報は、少なくとも前記第2の部分及び前記第2の圧縮アルゴリズムを識別するヘッダ情報を更に有しても良い。
更に別の態様によると、コンピューティング装置の動作方法が提供される。前記方法は、少なくとも1つの圧縮アルゴリズムで、前記コンピューティング装置のオペレーティングシステムの一部を復帰するために用いられる運用メモリからの少なくとも1つの第1の情報、及び前記ハイバネーションのときの前記コンピューティング装置の状態に関する前記運用メモリからの情報を有する第2の情報を圧縮するステップと、不揮発性メモリ内のハイバネーション情報の第1の部分に前記第1の情報を記録するステップと、前記不揮発性メモリ内の前記ハイバネーション情報の第2の部分に前記第2の情報を記録するステップと、前記ハイバネーション情報に関連するメタデータに、前記少なくとも1つの圧縮アルゴリズムの少なくとも1つのパラメータを識別する少なくとも1つの値を記録するステップと、を有する。
以上は、本発明の非限定的な要約であり、添付の請求の範囲により定められる。
添付の図面は、縮尺通りであることを目的としていない。図中、種々の図に示される各々の同一又はほぼ同一の構成要素は、同様の参照符号により表現される。明確化のため、全ての構成要素が全ての図中でラベル付けされない。以下の図面がある。
本発明の幾つかの実施形態が実装され得るシステムを示す概念的ブロック図である。 本発明の幾つかの実施形態による、コンピューティング装置におけるハイバネーションシーケンスからのレジュームを説明する機能ブロック図である。 本発明の幾つかの実施形態による、ハイバネーションシーケンスからコンピューティング装置をレジュームさせるコンピューティング装置の動作方法を説明するフローチャートである。 本発明の幾つかの実施形態による、複数のプロセッサによるハイバネーション情報のリードを説明するフローチャートである。 本発明の幾つかの実施形態による、ハイバネーションに入るためのコンピューティング装置の動作方法を説明するフローチャートである。 本発明の幾つかの実施形態による、ハイバネーション情報を圧縮する圧縮アルゴリズムを動的に選択する方法のフローチャートである。 本発明の幾つかの実施形態による、ハイバネーション情報を圧縮する圧縮アルゴリズムを動的に選択する方法のフローチャートである。 本発明の幾つかの実施形態が動作し得る環境を示す、例示的なコンピューティング装置のブロック図である。
出願人は、コンピューティング装置のブートファームウェアの制御下での該コンピューティング装置の状態の復帰を含む、ハイバネーションからの従来のレジュームが、該コンピューティング装置の処理リソースを効率的に利用できないことを認識し及び理解している。コンピューティング装置は、複数のプロセッサを有し得る。しかしながら、ブートファームウェアは、複数のプロセッサをサポートしないかも知れない。さらに、ブートファームウェアは、通常、非同期I/Oをサポートしない。したがって、コンピューティング装置の利用可能リソースは十分に利用されず、これが該コンピューティング装置がハイバネーションモードからレジュームする速度を制限し得る。
出願人は、コンピューティング装置がハイバネーションモードからレジュームする速度を増大するために、コンピューティング装置はハイバネーションモードから複数段階でレジュームするよう構成されても良いことを認識及び理解した。各レジューム段階は、ハイバネーション情報から、コンピューティング装置の状態を部分的に復帰しても良く、後続のレジューム段階の各々は更なる状態情報を復帰する。さらに、各レジューム段階は、連続段階が実行し得る環境を確立しても良い。その結果、レジューム段階は異なる環境で実行されても良く、したがって、コンピューティング装置の異なるリソースが異なる段階で用いられ、レジューム動作を素早く完了するようにできる。
幾つかの実施形態では、ハイバネイト処理からのレジューム段階は、第1のコンピュータ実行可能命令セットの実行により行われても良い。例えば、命令は、コンピューティング装置のBIOSの一部であるブートローダを有しても良く、又はコンピューティング装置のファ―ムウェア内に存在しても良い。これらの命令は、不揮発性メモリに格納されたハイバネーション情報の第1の部分の運用メモリへの転送を制御しても良い。
これらの命令は、第1の環境で実行されても良い。第1の環境は、プレオペレーティングシステム環境のような比較的希薄な(sparse)環境であっても良い。例えば、第1の命令セットは、ハイバネーション情報を有する記憶媒体への非同期アクセスをサポートしない単一のプロセッサで実行されても良い。
第1のコンピュータ実行可能命令セットの実行は、第2のコンピュータ実行可能命令セットが実行され得る第2の環境を確立しても良い。第2のコンピュータ実行可能命令セットは、不揮発性メモリから運用メモリへのハイバネーション情報の第2の部分の転送を制御しても良い。特殊な例として、プレオペレーティングシステム環境でのブートレベルローダの実行は、結果として、オペレーティングシステムのカーネルレベルローダをレジュームし得る。カーネルレベルローダは、マルチプロセッササポート又は非同期I/Oサポートのような、オペレーティングシステムを通じて提供されるリソースを用いて、揮発性メモリへのハイバネーション情報の転送を制御しても良い。
第2の環境は、第1の環境よりも豊富なリソースセットを有しても良い。オペレーティングシステム環境がマルチプロセッサのサポートを提供するとき、例えば、1より多いプロセッサは、第2の段階での処理を実行するために用いられ、ハイバネーションからのレジュームを完了するために必要な処理負荷を共有しても良い。1又は複数のプロセッサは、不揮発性メモリからハイバネーション情報をリードして、1又は複数の他のプロセッサによる処理のために利用可能にしても良い。例えば、このような1又は複数のプロセッサは、ハイバネーション情報を揮発性メモリ内の共有バッファへ転送しても良い。他のプロセッサは、共有バッファにアクセスし、情報が圧縮形式で格納されている場合は該情報を解凍しても良い。次に、解凍された情報は、運用メモリ内の適切な場所に転送されて戻されても良い。幾つかの実施形態では、不揮発性メモリからハイバネーション情報をリードする1又は複数のプロセッサは、同期I/O動作を用いても良い。それにもかかわらず、他のプロセッサが情報を同時に処理して運用メモリへ転送できるので、レジューム処理は、素早く進行し得る。
豊かなオペレーティングシステム環境は、ハイバネーション情報を含む記憶媒体への非同期アクセスを可能にするメモリアクセス機能に対するサポートも有し得る。この機能も、利用可能なプロセッサの数に無関係に、レジューム動作を高速化し得る。例えば、オペレーティングシステム環境は、非同期ディスク入力/出力(I/O)をサポートしても良い。したがって、プロセッサは、ハイバネーション情報を不揮発性メモリからバッファとして動作する記憶媒体へ転送しても良い。このバッファは、ハイバネーション情報に基づき状態情報を復帰する処理のためにアクセスされ得る。処理は、他のプロセッサにより実行されても良く、又は非同期リード動作が保留されている間に情報をリードする同じプロセッサにより実行されても良い。したがって、コンピューティング装置が単一プロセッサを有する場合でも、非同期アクセスを用いてレジュームを高速化できる。
別の例として、非同期I/Oがサポートされるとき、非同期I/O動作のパラメータは、レジューム動作を高速化するよう設定されても良い。例えば、第2の環境は、保留中の複数のI/O動作を同時にサポートしても良い。このような同時保留動作の数は設定可能であっても良く、このような動作の数は、コンピューティング装置を第2の環境で動作させるための設定の一部として指定されても良い。さらに、各I/O動作のサイズを制御するパラメータも、第2の環境の確立の一部として設定されても良い。これらのパラメータは、コンピューティング装置のハードウェアに基づき動的に、又は任意の適切な方法で設定されても良い。
幾つかの実施形態では、ハイバネーションからの複数段階のレジュームを実施するために、各レジューム段階中に復帰される運用メモリからの情報は、別個に記録されても良い。運用メモリからのどの情報を各段階での使用のために格納するかを決定するために、任意の適切な技術が用いられても良い。幾つかの実施形態では、ハイバネーション情報は、ハイバネーションシーケンス中に、コンピューティング装置の状態に基づき動的に決定されても良い。例えば、ハイバネーション情報の格納を管理する、コンピュータオペレーティングシステム内のユーティリティは、第1の段階の後に使用するために復帰されるべき、オペレーティングシステムのコンポーネントのリストでプログラミングされても良い。ハイバネイトユーティリティは、オペレーティングシステムにより保持されるメモリ管理構造の中で、これらのコンポーネントにより用いられるメモリページを識別しても良い。これらのメモリページは、第1の段階に関連するハイバネーション情報の部分の一部として格納されても良い。
ハイバネーション情報は、任意の適切な方法で格納され、各段階に適切なハイバネーション情報の部分が該段階のレジュームローダにより識別できるようにしても良い。例えば、ハイバネーション情報は、多段レジュームの各段階で復帰されるべき情報を識別するメタデータとともに格納されても良い。ハイバネーション情報がハイバネーションファイルとして格納される実施形態では、ファイルのヘッダはメタデータを格納しても良い。しかしながら、他の実装で代替されても良い。
幾つかの実施形態では、一部又は全部のハイバネーション情報は、圧縮形式で記録されても良い。幾つかの実施形態では、適切な圧縮アルゴリズムは、プロセッサ及びコンピューティング装置のディスクI/Oの能力に基づき動的に選択されても良い。例えば、圧縮アルゴリズムは、プロセッサの数及び処理速度に基づき、及びコンピューティング装置内のディスクのI/O速度に基づき、選択されても良い。
幾つかの実施形態では、圧縮アルゴリズムは、より多くの処理能力が利用可能なときに更なる圧縮の使用を好むという基準に基づき選択されても良い。また、高い圧縮率を有する圧縮アルゴリズムは、ハイバネーション情報を格納しているディスク又は他の不揮発性メモリへのアクセス時間が遅いときに選択されても良い。
幾つかの実施形態では、レジュームの異なる段階は異なる環境で実行されるので、異なる圧縮アルゴリズムは、異なる段階で異なる性能の利益を生み出し得る。したがって、異なる圧縮アルゴリズムは、個々のレジューム段階でコンピューティング装置に利用可能なリソースに基づき、異なる段階のハイバネーション情報を圧縮するために選択されても良い。
ハイバネーション情報と共に格納されるメタデータは、使用される圧縮の特性を示すパラメータ値を有しても良い。これらのパラメータは、ハイバネーションからのレジューム中にアクセスされても良い。したがって、レジューム中、異なる解凍アルゴリズムが、メタデータに基づき選択されても良い。その結果、異なるアルゴリズムは、ハイバネーション情報を圧縮するために選択された対応する圧縮アルゴリズムに基づき、ハイバネーション情報の部分を解凍するために用いられても良い。
図1を参照すると、本発明の実施形態に従い動作するために適応され得るコンピューティング装置100の機能ブロック図が示される。本例では、コンピューティング装置100は揮発性メモリ102を有する。
揮発性メモリ102は、DRAM又は任意の他の適切なメモリコンポーネントを用いて実装されても良い。コンピューティング装置100は、任意の適切なメモリコンポーネントを用いて実装され得る不揮発性メモリ104も有する。
任意の適切な物理装置が、不揮発性メモリ104を実装するために用いられても良い。例えば、不揮発性メモリ104は、回転式ハードディスク又は固体ドライブのようなディスクであっても良い。
コンピューティング装置100は、従来知られている任意の他のコンポーネントを有しても良い。これらのコンポーネントは、複数のプロセッサ106を有しても良い。各プロセッサ106は、従来知られている別個の物理チップ又は他の装置として実装されても良い。しかしながら、幾つかの実施形態では、各プロセッサは、マルチコア装置のコアであっても良い。理解されるべきことに、コンピューティング装置100は、簡単のために省略された任意の他の適切なコンポーネントを有しても良い。本願明細書に記載する技術は、ハイバネーション処理からのレジュームの少なくとも一部の間に1より多いプロセッサ106の利用を可能にする。
揮発性メモリ102は、運用メモリの一例であり得る。動作中、揮発性メモリ102は、コンピュータシステムを動作させるために用いられる情報を格納しても良い。情報は、実行可能コード、該コードにより用いられるデータ、及び/又は他の状態情報を有しても良い。
本願明細書に記載する技術は、ハイバネーションからのコンピューティング装置100のレジュームを実施して、コンピューティング装置がハイバネーションからレジュームする速度を増大する。コンピューティング装置100がハイバネーションモードに入るとき、装置は、ハイバネーションからレジュームするために後に用いられるべきハイバネーション情報の格納を含むハイバネーションシーケンスを実行しても良い。このハイバネーション情報は不揮発性メモリ104に格納されても良い。幾つかの実施形態では、ハイバネーション情報は、不揮発性メモリ104内の、ハイバファイル(hiberfile)と呼ばれるファイル108に格納されても良い。しかしながら、理解されるべきことに、本発明の実施形態は、ハイバネーション情報が不揮発性メモリ104に格納される方法に限定されない。また、ハイバネーション情報は、任意の適切な記憶媒体に格納されても良い。特定種類の不揮発性メモリ104が重要ではないが、ハードディスク又は固体ディスクのようなシーケンシャルアクセスディスクであっても良い。
幾つかの実施形態では、ハイバネーションからのレジュームは、複数段階で実行されても良い。ここで、2つのレジューム段階が、単に例のために説明される。理解されるべきことに、ハイバネーションからのレジュームは2より多い段階を介して実行され、各段階で復帰される情報が後続の段階のための環境を確立するために用いられても良い。各段階で復帰される情報は、不揮発性メモリに格納されたハイバネーション情報内の別の場所に格納されても良い。
各段階は、レジュームの別の段階が実行され得る環境を確立するために、コンピューティング装置を部分的に復帰しても良い。ハイバネーションからのレジュームは、任意の適切な方法で複数の段階に分けられても良い。
複数の段階を介してハイバネーションからレジュームするために、ハイバネーション情報は、セクションに区分されても良い。各セクションは、運用メモリに戻ったときに後続の段階のための環境を確立する個々の段階の情報を記録しても良い。
したがって、ハイバファイル108の異なる部分は、ハイバネーションからのレジュームの異なる段階のために必要な情報を格納しても良い。図示の例では、ハイバファイル108は、ヘッダ110、第1の部分112、及び第2の部分114を有しても良い。各部分112、114は、ハイバネーションからのレジュームの個々の段階中に運用メモリへ転送されるハイバネーション情報を格納しても良い。理解されるべきことに、ハイバファイル108の部分112、114は、単に例として図1に示され、不揮発性メモリ104内のハイバネーション情報の任意の適切な構成がハイバネーション情報を格納するために用いられても良い。さらに、ハイバネーション処理からのレジュームは2より多い段階を有しても良いので、この情報は2より多い部分で格納されても良い。
個々のレジューム段階のために後に使用される格納すべき情報を特定するために、任意の適切な技術が用いられても良い。幾つかの実施形態では、運用メモリの内容を識別するハイバネーション情報の異なる部分の場所は、例えばハイバネーションファイル108のヘッダ110内に、メタデータとして記録されても良い。このメタデータは、代替で又は追加で、ハイバネーション情報の1又は複数の部分を圧縮するために適用される圧縮アルゴリズムの識別情報のような、ハイバネーションからのレジュームで用いられる他の情報を有しても良い。
ハイバファイル108の第2の部分112は、第1の段階中にコンピューティング装置のオペレーティングシステムの一部を復帰するために用いられる情報を有しても良い。幾つかの実施形態では、オペレーティングシステムのこの部分は、オペレーティングシステムのカーネルの一部を有しても良い。第2の部分114は、ハイバネーションモードに入るときにコンピューティング装置100の状態の復帰を完了するために用いられる情報を有しても良い。ヘッダ110は、第1の部分112及び第2の部分114を識別する情報を有しても良い。
オペレーティングシステムは、ブートファームウェアのプレオペレーティングシステム環境118と比べて豊かなリソースを有する環境116を提供し得る。したがって、幾つかの実施形態では、プレオペレーティングシステム環境は、オペレーティングシステムを部分的に復帰するのに十分なハイバネーション情報のみを復帰しても良い。復帰された部分は、レジューム処理の大部分が実行され得るオペレーティングシステム環境を確立しても良い。したがって、第1の段階中に運用メモリへ移動されるべきハイバネーション情報の量は、第2の段階中に運用メモリへ移動されるべきハイバネーション情報の量よりも少なくても良い。その結果、オペレーティングシステムのカーネルを部分的に復帰するために十分な状態情報のみが、第1の段階で復帰されるハイバネーションファイル108の部分112に格納されても良い。コンピューティング装置のハイバネーションからの復帰を完了するために後に用いられる残りの状態情報は、ハイバファイル108の部分114に格納される。
図1は、オペレーティングシステム環境116内で実行されるコンポーネントに関する状態情報が、それぞれ120、121と付された2つの部分に区分されても良いことを概略的に示す。各部分120、121は、個々のレジューム段階で復帰され、ハイバファイル108内に別個に格納されても良い。したがって、状態情報120は、第1のレジューム段階中に復帰される、ハイバファイル108の部分112に格納されても良い。状態情報120は、カーネルレベルレジュームローダ122、幾つかのオペレーティングシステムサービス124、及びドライバ126を実装するためにコードを有しても良い。ドライバ126は、第2のレジューム段階中に動作するハードウェアコンポーネントを制御し、例えばディスクハードウェアと通信するための1又は複数のドライバ、クラッシュダンプスタックのためのドライバ、ACPI(Advanced Configuration and Power Interface)ドライバ、等を有しても良い。
任意の他の適切なコンポーネントに関する情報は、ハイバファイル108の部分112に格納されても良い。
幾つかの実施形態では、ハイバファイル108の第1の部分112に格納された情報は、プレオペレーティングシステム環境118のファームウェア130に格納されたブートレベルレジュームローダ128により、再開中に動作中メモリに戻されても良い。ブートローダ128は、オペレーティングシステム環境116でのカーネルレベルレジュームローダ122の動作を可能にするために、ハイバネーションからのコンピューティング装置100の部分的なレジュームを制御しても良い。
図1に示すように、状態情報121は、ハイバファイル108の部分114に格納されても良い。この情報は、第2のレジューム段階中に運用メモリに戻されるとき、レジューム処理を完了するために用いられても良い。ハイバネーションのときのコンピューティング装置100の状態に関する情報120が部分112に部分的に格納されるとき、状態情報121は、従来知られている技術を用いて実装されても良い。動作中メモリから不揮発性記憶へ状態情報を転送しても良く、次に従来のコンピューティング装置におけるような技術を用いてコンピューティング装置への電力の遮断をトリガしても良い。状態情報は、メモリマネジャ138により定められるメモリページのようなセグメントで転送されても良い。各ページは、格納される前に圧縮されても良い。さらに、各セグメントは、タグ付けされ、又はハイバネーションからレジュームすると、セグメントが動作中メモリ内のコピーされたのと同じメモリ位置に戻されるような特定の方法で識別されても良い。これら全ての動作は、従来の技術又は任意の適切な技術を用いて実行されても良い。しかしながら、ハイバネイトユーティリティ132は、多段レジュームをサポートする点で、状態情報を動作中メモリから不揮発性メモリへ転送する従来のユーティリティとは異なる。これらの動作をサポートするために、ハイバネイトユーティリティ132は、各段階で復帰されるべき状態情報を格納している動作中メモリのセグメントを識別し、その情報を適切なフォーマットでハイバファイル108に格納しても良い。幾つかの実施形態では、ハイバネイトユーティリティは、多段レジュームをサポートするために、ハイバファイルに情報を追加しても良い。一例として、ハイバネイトユーティリティ132は、後続の段階のためにローダをどのように呼び出すかに関する情報を追加しても良い。代替又は追加で、ハイバネイトのときに動作中メモリ内にローダ122を有するのではなく、ユーティリティ132は、ローダ122をハイバファイル108に追加しても良い。
ハイバファイル108の部分114に格納された命令は、ハイバネイトユーティリティ132を有しても良い。ハイバネイトユーティリティ132は、第2のレジューム段階中に、ハイバファイル108の部分114に格納されたハイバネーション情報の、揮発性メモリ102への転送を制御する。ハイバネイトユーティリティ132は、ハイバファイル108の部分114に格納された命令を揮発性メモリ102にロードするために実行し得る、第1の段階で有効にされるカーネルレベルレジュームローダ122を有しても良い。
状態情報121は、レジューム中に復帰されるべき、ハイバネーションのときのコンピューティング装置100の状態に関する任意の適切な情報を有しても良い。状態情報121は、オペレーティングシステムサービス134、ドライバ136、メモリマネジャ138、及び簡単のために示されない任意の他のコンポーネントを有しても良い。ドライバ136は、ハードウェアコンポーネントを制御しても良い。メモリマネジャ138は、オペレーティングシステムサービス134の一例であり、揮発性メモリ102内の情報を整理する。オペレーティングシステムにより提供される任意の他の適切なサービス(例えば、ユーザインタフェースとの相互作用、及びネットワークコネクションの確立)が実装され、特定のオペレーティングシステムサービス134が本発明を限定しない。
幾つかの実施形態では、ハイバファイル108の第1の部分112に格納された情報及び第2の部分114に格納された情報は、格納される前に圧縮されても良い。各部分112、114に格納される情報を圧縮するために、異なる圧縮アルゴリズムが選択されても良い。このような実施形態では、ヘッダ110は、ハイバファイル108又は該ファイルの1若しくは複数の部分の各々に用いられた圧縮アルゴリズムの特性を示すパラメータ値を有するメタデータを含んでも良い。
幾つかの実施形態では、ハイバネイトユーティリティ132は、ハイバネイト情報の1又は複数の部分に含まれる情報のための圧縮アルゴリズムを選択しても良い。適切な圧縮アルゴリズムは、情報が解凍される環境の特性を含む多数の基準に基づき動的に選択されても良い。したがって、ハイバファイル108の第1の部分112に格納された情報を圧縮するための第1の圧縮アルゴリズムは、この情報を運用メモリに格納するために部分112にアクセスするために用いられるべきコンピューティング装置100の少なくとも1つのコンポーネントの能力に基づき動的に選択されても良い。ハイバファイル108の第2の部分114に格納された情報を圧縮するために、第2の圧縮アルゴリズムは、少なくとも1つのディスク入力(I/O)速度、並びに運用メモリ内のこの部分からの情報を格納するために第2の部分114にアクセスするために用いられるべきコンピューティング装置100のプロセッサ106の能力に基づき動的に選択されても良い。
理解されるべきことに、幾つかの実施形態では、ハイバファイル108の第1の部分112に格納された情報のみ、又はハイバファイル108の第2の部分114に格納された情報のみが、圧縮形式で格納されても良い。
ハイバファイル108又は不揮発性メモリ104内の他の適切な記憶に格納されたハイバネーション情報は、コンピューティング装置100をハイバネーションからレジュームするために用いられても良い。図2は、幾つかの実施形態によるハイバネーションシーケンスからのレジューム中のコンピューティング装置100を示す。図2に示したコンピューティング装置は、図1に示したものと同様のコンポーネントを有する。
幾つかの実施形態では、ハイバネーションからのレジュームは、複数のレジューム段階で実行される。図1に関して議論したように、各レジューム段階中に復帰される運用メモリからの情報(例えば、状態情報120及び状態情報121)は、不揮発性メモリに格納されたハイバネーション情報内に別個に記録されても良い。図示の例では、ハイバネーション情報は、不揮発性メモリ104に格納されたハイバネーションファイル108に格納されても良い。ハイバファイル108は、第1のレジューム段階で復帰され得る情報を格納する第1の部分112、及び第2のレジューム段階で復帰され得る情報を格納する第2の部分114を有する。ハイバネーション情報は、各段階で復帰されるべき情報を識別するメタデータとともに格納されても良い。
図示の例では、ハイバファイル108内のメタデータは、各レジューム段階で復帰されるべき情報を識別するために用いられても良い。メタデータは、例えばハイバファイル108のヘッダ110に格納されても良い。しかしながら、理解されるべきことに、異なる個々のレジューム段階で処理されるべきハイバネーション情報は、各段階の部分を示すために所定のアドレスを用いること又は後続の段階の一部を識別する部分の終わりにあるポインタを用いることを含む任意の適切な方法で識別されても良い。ハイバネーションシーケンスからのレジュームは、ブートファームウェア130に格納された命令にアクセスすることにより開始しても良い。これらの命令は、例えば複数のプロセッサ106のうちのプロセッサ202のようなプロセッサに、ハイバネーションファイル108にアクセスさせる。本例では、ハイバネーションファイル108にアクセスすると、プロセッサ202は、ハイバネーションファイル108の内容の一部を運用メモリ(例えば、揮発性メモリ102)にコピーする。例えば、命令は、プロセッサ202に、ブートレベルレジュームローダ128を有効にするためにハイバファイル108の部分112から情報をリードさせる。
ハイバファイル108の第1の部分112に格納されたハイバネーション情報は、第1のレジューム段階でオペレーティングシステムの一部を再生成するために用いられる、オペレーティングシステムを通じて第2の段階でプロセスのレジュームを完了するのに十分な情報を有しても良い。図示の例では、第1のレジューム段階で、ハイバファイル108の第1の部分112に格納された状態情報120が復帰されても良い。
ハイバファイル108の第1の部分112は、ブートレベルレジュームローダ128により動作中メモリに戻されても良い。ブートローダは、コンピューティング装置のBIOSの一部であっても良く、又はコンピューティング装置のファ―ムウェア130内に存在しても良い。ブートローダ128は、ジュライのハイバネイトからのレジューム技術を用いて、ハイバファイル108の部分112に格納されたハイバネーション情報の、揮発性メモリ102への転送を制御しても良い。したがって、ブートレベルレジュームローダ128は、プレオペレーティングシステム環境118で実行し得る。
ブートレベルレジュームローダ128は、レジューム処理中に実行される第1のコンピュータ実行可能命令セットを有しても良い。これらの命令の実行は、カーネルレベルレジュームローダ122のような、オペレーティングシステムのカーネルの一部を復帰しても良い。第1のコンピュータ実行可能命令セットが実行されるプレオペレーティングシステム環境118は、比較的希薄な環境であっても良い。例えば、ブートレベルレジュームローダ128は、複数のプロセッサが存在する場合でも、複数のプロセッサをサポートできなくても良い。したがって、第1の命令セットは、単一のプロセッサ202で実行されても良く、ハイバファイル108のような、ハイバネーション情報を有する記憶媒体への非同期アクセスをサポートしなくても良い。例えば、プレオペレーティングシステム環境118は、非同期I/O動作をサポートしなくも良い。
第1のレジューム段階での第1のコンピュータ実行可能命令セットの実行は、第2のコンピュータ実行可能命令セットが実行され得る別の環境を確立しても良い。第2の命令セットは、ハイバファイル108の第2の部分114に基づき、オペレーティングシステム環境116で実行されても良い。この環境は、オペレーティングシステムの一部のみが先行する段階中に復帰されるので、完全なオペレーティングシステム環境とは異なっても良い。ハイバファイル108の第2の部分114に記録された状態情報121からのコンポーネントのような、ハイバファイルに格納された情報を復帰するために用いられる多数のコンポーネントは、この「早期の」オペレーティングシステム環境で実行しても良い。オペレーティングシステム環境116での第2のコンピュータ実行可能命令セットの実行は、最終的に、ハイバネーションからのコンピューティング装置100のレジュームの完了をもたらす。
第1の段階では、ブートレベルローダ128は、オペレーティングシステム環境116でのカーネルレベルレジュームローダ122を有効にするために、ハイバネーションからのコンピューティング装置100の部分的なレジュームを制御しても良い。ブートレベルローダ128は、コンピュータユーザからのレジューム入力又は他の適切なイベントに応答して、動作をトリガされても良い。ブートレベルローダは、従来のコンピュータシステムで動作しても良い。しかしながら、ブートレベルローダは、レジュームの次の段階のローダに制御を移すようプログラミングされても良い。図示の実施形態では、第2の段階で、カーネルレベルレジュームローダ122は、ハイバファイル108の第2の部分114に格納されたハイバネーション情報の、揮発性メモリ102への転送を制御しても良い。部分114に格納されたハイバネーション情報は、ハイバネーションのときのコンピューティング装置100の状態を保存する状態情報121を有しても良い。カーネルレベルレジュームローダ122は、ハイバネーションからのコンピューティング装置100のレジュームを完了するために、及びハイバネーションのときのコンピューティング装置100の状態を復帰するために、命令を実行しても良い。
オペレーティングシステム環境116のような、第1のコンピュータ実行可能命令セットを実行した結果として確立された環境は、プレオペレーティングシステム環境118よりも豊かなリソースセットを有しても良い。したがって、オペレーティングシステム環境116は、複数のプロセッサに対するサポートを有しても良い。代替又は追加で、オペレーティングシステム環境116の豊かなリソースセットは、ハイバネーションファイル108のような、ハイバネーション情報を含む記憶媒体への非同期アクセスを可能にするメモリアクセス機能を有しても良い。
したがって、1より多いプロセッサは、第2の段階での処理を実行するために用いられ、ハイバネーションからのレジュームを完了するために必要な処理負荷を共有しても良い。例えば、1又は複数のプロセッサは、ハイバネーション情報をリードして、1又は複数の他のプロセッサによる処理のために利用可能にしても良い。これらの他のプロセッサは、ハイバネーション情報を解凍して、必要に応じて運用メモリへ転送しても良い。これは、コンピューティング装置がハイバネーションモードを終了して、そのリソースを完全な動作状態に復帰し得る速度を増大させることができる。
レジュームの第2の段階の処理負荷を共有するためにプロセッサ106が用いられる方法は、本発明に絶対不可欠ではない。図2に示した実施形態では、プロセッサ202のような単一のプロセッサが、ハイバファイル108の第2の部分をリードして、複数のプロセッサ106のうちの1又は複数の他のプロセッサ204による処理のために利用可能にしても良い。プロセッサ202は、ページ又はページ群のようなセグメントを、第2の部分114からリードし、該セグメントを揮発性メモリ102内の共有バッファ206に記録しても良い。第2の部分114の1又は複数のセグメントが共有バッファ206内で利用可能なとき、該セグメントは、他のプロセッサ204により読み出されても良い。第2の部分114がハイバネーション情報を圧縮形式で格納する実施形態では、共有バッファ206からセグメントを読み出すと、プロセッサ204は、該セグメントを解凍して、揮発性メモリ102内の適切な場所へ転送しても良い。解凍アルゴリズムは、用いられた圧縮に関する情報に基づき選択されても良く、ハイバファイル108(例えば、ヘッダ110)に格納されたメタデータへのアクセスに基づき決定されても良い。
オペレーティングシステム環境116が内の豊かなリソースセットは、プロセッサ202によるハイバネーション情報の不揮発性メモリから共有バッファへの同時転送、及びプロセッサ204による共有バッファからのハイバネーション情報のセグメントの読み出しを可能にするメモリアクセス機能を有しても良い。これらの豊かなリソースは、非同期入力/出力(I/O)動作に対するサポートを有しても良い。
図示の実施形態では、プロセッサ202は、不揮発性メモリ104に同期アクセスしても良い。同期アクセスは、不揮発性メモリ素子からの情報のリードを加速し得る。他のプロセッサが、それらが不揮発性メモリからリードした後に動作中メモリへセグメントを復帰する追加処理のために利用可能な限り、全体のレジューム処理は素早く実行できる。複数のプロセッサが利用可能な場合、それらは、高速レジューム処理を提供するために任意の適切な方法で用いられても良い。例えば、複数のプロセッサは、不揮発性メモリから情報をリードするために用いられても良い。或いは、幾つかのプロセッサはセグメントを解凍しても良く、他のプロセッサは解凍されたセグメントを動作中メモリ内にコピーしても良い。
理解されるべきことに、コンピューティング装置100は単一プロセッサを有しても良いので、複数のプロセッサ106は単に例として示される。このようなシナリオでは、単一プロセッサは、共有バッファ内の部分のセグメントを記録するために不揮発性記憶からハイバネーション情報の第2の部分をリードすることと、共有バッファからセグメントを読み出すことの両方を実行しても良い。プロセッサは、非同期入力/出力(I/O)動作を介して不揮発性記憶から第2の部分をリードしても良い。したがって、コンピューティング装置が単一プロセッサを有する場合、プロセッサは、不揮発性記憶からハイバネーション情報の別のセグメントをリードするためにI/O動作が保留されている期間中に、ハイバネーション情報のセグメントに基づき、コンピューティング装置の状態を復帰する処理を実行できるので、非同期アクセスの使用は、レジュームを高速化できる。
図3は、ハイバネーションモードからコンピューティング装置(例えば、図1、2のコンピューティング装置100)をレジュームする処理300を示す。処理300は、任意の適切なときに開始しても良い。例えば、処理300は、装置がサービスされ得るようにコンピューティング装置にハイバネーションから周期的にウェイクアップさせるタイマにより生成されるイベントに従って開始しても良い。他のシナリオでは、処理300は、ユーザからコマンドを受信すると開始しても良い。しかしながら、この点について本発明の実施形態は限定されないので、ハイバネーション処理からのレジュームを開始するために、任意の適切なトリガが用いられても良い。
ブロック302で、処理300は、任意的に、ハイバネーションからレジュームするコマンドの受信を含むように示される。このコマンドは、任意の適切な方法で受信されても良い。例えば、コンピューティング装置のユーザは、ハイバネーションからコンピューティング装置をレジュームするために(例えば、電源ボタン又は他の入力装置を介して)入力を供給しても良い。
代替又は追加で、レジュームコマンドは、コンピューティング装置100の適切なコンポーネントから受信されても良い。
ブロック304で、コンピューティング装置のプレオペレーティングシステム環境におけるブートローダが実行されても良い。ブートローダは、コンピューティング装置のファームウェアに格納されたブートレベルレジュームローダで(例えば、図1及び2のブートレベルレジュームローダ128)あっても良い。ブートレベルレジュームローダは、不揮発性メモリ内の適切な場所に格納されたハイバネーション情報の一部の、不揮発性メモリからの転送を制御しても良い。例えば、幾つかの実施形態では、ハイバネーション情報は、ハイバネーションファイル(例えば、図1及び2のハイバファイル)と称されるコンポーネントに格納されても良い。複数段階を介してコンピューティング装置をレジュームするために、ハイバファイル108は、各レジューム段階で復帰されるべき情報を別個に格納しても良い。例えば、図2に示すように、第1の段階で復帰されるべき情報は、ハイバファイル108の第1の部分112に格納されても良い。第2の段階で復帰されるべき情報は、ハイバファイル108の第2の部分114に格納されても良い。
次に、ブロック306で、ハイバネーション情報の第1の部分(例えば、ハイバファイル108の第1の部分112)は、ハイバネーションファイルからリードされても良い。ブートレベルレジュームローダは、コンピューティング装置で実行され、不揮発性メモリからコンピューティング装置の運用メモリへのハイバネーション情報の転送を制御しても良い。
不揮発性メモリ104からハイバネーション情報の第1の部分をリードした結果、ブロック308で、ハイバネーション情報の第1の部分の内容は、揮発性メモリ102内で復帰され得る。ハイバネーションからのレジュームの第1の段階309は、ブロック304−308の処理を含み、オペレーティングシステムを通じてレジュ―ムを完了するのに十分な、オペレーティングシステムのカーネルの一部の復帰を伴っても良い。
したがって、処理300は、ブロック310へ進み、レジュームローダがカーネルレベルレジュームローダ(例えば、図1及び2のカーネルレベルレジュームローダ122)として、オペレーティングシステムのカーネルで実行されても良い。
カーネルレベルレジュームローダへの制御の転送は、任意の適切な方法で生じても良い。例えば、カーネルレベルレジュームローダは、段階1における状態の部分的な復帰の結果として、所定のメモリ位置に格納されても良い。ブートレベルレジュームローダは、制御を転送するために、これらの位置へのブランチを生じても良い。したがって、他のメカニズムが代替又は追加で用いられても良い。例えば、第1の段階の実行後の、カーネルレベルレジュームローダの動作中メモリ内の位置は、ハイバネーション情報と関連するメタデータ内に記録されても良く、ブートレベルローダは、該メタデータをリードし適切な位置へ分岐するよう構成されても良い。更なる可能性として、ブートレベルローダは、ハイバネーション情報以外のソースからカーネルレベルローダをロードし、次いでカーネルレベルローダの実行を開始しても良い。
ブロック312で、カーネルレベルレジュームローダは、不揮発性メモリからのハイバネーション情報の第2の部分のリードを制御しても良い。この情報は、ハイバネーションのときのコンピューティング装置の状態に関する情報を有しても良い。ブロック314で、ハイバネーション情報の第2の部分の内容は、揮発性メモリ102内に復帰されても良い。その結果、ハイバネーションのときのコンピューティング装置の状態は、揮発性メモリ102へ転送され、したがってハイバネーションからコンピューティング装置を完全に復帰できる。したがって、ハイバネーションからのレジュームの第2の段階315は、ブロック310−314での処理を含み、ハイバネーションからのレジュームを完了し得る。
理解されるべきことに、図3のハイバネーション処理からのレジュームは2つの段階309及び315を有するが、幾つかの実施形態によるハイバネーション処理からのレジュームは、2より多いレジューム段階を有しても良い。このようなシナリオでは、各レジューム段階は、コンピューティング装置を更に復帰するために十分なリソースを復帰し及び/又は確立しても良い。このようなハイバネーションからの漸次的レジュームは、最終的に、コンピューティング装置の完全なレジュームをもたらす。
幾つかの実施形態では、ハイバネーション処理からのレジュームを完了するレジューム段階は、豊かなリソースセットを有する環境で実施される。この環境は、例えば、オペレーティングシステムの環境(例えば、図1及び2のオペレーティングシステム環境116)を有しても良い。このような環境は、不揮発性メモリから適切な記憶媒体(例えば図2の共有バッファ206)に転送されたハイバネーション情報にアクセスし得る複数のプロセッサに対するサポートを提供しても良い。共有バッファ206は、揮発性メモリ内の(例えば、ハイバファイル108の第2の部分114に格納された)ハイバネーション情報の1又は複数の部分の内容の復帰に関与する複数のプロセッサの各々によりアクセス可能なメモリ位置を有しても良い。
単一プロセッサ(例えば、図2のプロセッサ202)は、不揮発性メモリからのハイバネーション情報の第2の部分をリードし、その情報を同期ディスクI/O動作を介して共有バッファに記録しても良い。他のプロセッサ(例えば、図2のプロセッサ204)は、単一プロセッサにより不揮発性メモリからのハイバネーション情報の第2の部分をリードするのと同時に、共有バッファに記録されたハイバネーション情報にアクセスし読み出しても良い。
メモリリソースを効率的に利用するために、ハイバネーション情報は、不揮発性メモリに圧縮形式で格納されても良い。したがって、共有バッファに記録された情報にアクセスし読み出す複数のプロセッサは、読み出した情報を解凍し、解凍した情報を揮発性メモリに移動しても良い。複数のプロセッサによる共有バッファからのハイバネーション情報の読み出し及び解凍は、コンピューティング装置の目標状態が再生成される速度を増大する。
ハイバネイトからのレジューム中、各段階は、別の段階のための環境を確立しても良い。例えば、コンピューティング装置のオペレーティングシステムのカーネルの一部の復帰を含む段階は、オペレーティングシステム環境のような、豊かなリソースセットを有し得る環境を確立しても良い。このような環境は、複数プロセッサに対するサポートを有しても良い。
図4は、コンピューティング装置100のオペレーティングシステム環境116によりサポートされる複数プロセッサの動作を概略的に示す。ブロック402は、例えばカーネルレベルローダ122の一部により制御される処理を含む。カーネルレベルレジュームローダ122は、ハイバネーションファイルの一部からの情報の転送を制御しても良い。本願明細書に示される例では、このような部分は、ハイバファイル108の部分114を有する。幾つかの実施形態では、ブロック402の処理は、コンピューティング装置の複数のプロセッサ106のうちのプロセッサ202(図2)のような単一プロセッサにより実行されても良い。
ブロック404及び406の各々は、複数のプロセッサ106のうちの1又は複数のプロセッサ(例えば、図2のプロセッサ204)により実行される処理を示す。幾つかの実施形態では、ブロック404及び406の処理は、ブロック402の処理と同時に実行されても良い。
図4に示す処理は、任意の適切なときに開始しても良い。処理は、複数のレジューム段階のうちの1つの間に、ハイバネーション処理からのレジュームの一部として開始される。例えば、処理は、レジュームを完了するのに十分なオペレーティングシステムのリソースを復帰する、先行するレジューム段階が完了すると開始されても良い。
図4は、ブロック402がブロック408を含み、ブロック408で、プロセッサ202はハイバネーション情報の第2の部分のセグメントをリードしても良いことを示す。次に、ブロック410で、このセグメントは、共有バッファ(例えば、図2の共有バッファ206)に記録されても良い。次に、決定ブロック412で、共有バッファへ転送されるべき更なるハイバネーション情報が利用可能か否かが決定されても良い。決定ブロック412で、ハイバネーション情報が利用可能であると決定された場合、ブロック402の処理は、ブロック408へ戻っても良い。ブロック408では、ハイバネーション情報の別のブロックが、不揮発性記憶からリードされても良い。決定ブロック412で、更なるハイバネーション情報が利用可能ではないと決定された場合、ブロック402で処理は終了しても良い。プロセッサ202は、同期入力/出力(I/O)動作を介して不揮発性記憶からハイバネーション情報の第2の部分のセグメントをリードしても良い。
ブロック404は、複数のプロセッサのうちのプロセッサ204による処理を有する。ブロック404で、プロセッサは、共有バッファにアクセスしても良い。次に、決定ブロック416で、プロセッサは、ハイバネーション情報の第2の部分の1又は複数のセグメントが共有バッファ内で利用可能か否かを決定しても良い。決定ブロック416で少なくとも1つのセグメントが共有バッファ内で利用可能であると決定されるとき、該セグメントは、ブロック402の処理を介して共有バッファに記録されたハイバネーション情報の少なくとも一部を示し、プロセッサは、共有バッファから該セグメントを読み出しても良い。
次に、ブロック420で、読み出したセグメントは圧縮されても良い。コンピューティング装置の適切なコンポーネントは、情報を圧縮するためにプロセッサが実行するコンピュータ実行可能命令を格納しても良い。適切な圧縮アルゴリズムは、使用された圧縮の特性を示すパラメータ値を格納するハイバネーション情報と関連するメタデータ内で識別される使用された圧縮アルゴリズムに基づき選択されても良い。
ブロック422で、解凍された情報は運用メモリに転送されても良い。情報が転送される揮発性メモリ内の位置は、ハイバネーションファイルに情報と一緒にメタデータとして記録されても良い。
情報が共有バッファ内で利用可能でないと決定されたとき、プロセッサはブロック414へ戻り、プロセッサは、共有バッファに再びアクセスしても良い。このような動作の間、プロセッサは共有ファイル内のハイバネーション情報の第2の部分のセグメントの存在を絶え間なく調べても良く、このような動作はビジーウェイトと称され得る。図4に矢印421により示すように、ブロック402及び404の処理は、同時に実行されても良い。このような実施形態では、シグナリングメカニズムが用いられ、どのプロセッサが共有バッファ内の各セグメントを処理するかを調整しても良い。幾つかの実施形態では、マルチプロセッサコンピュータのオペレーティングシステムによりサポートされるようなコンテキストスイッチングメカニズムが用いられても良い。しかしながら、図示の実施形態では、図4に示す処理は、オペレーティングシステムの任意の部分が復帰された環境で生じる。したがって、コンテキストスイッチングは利用可能ではなく、セマフォのようなもっと単純なシステムが用いられても良い。
ブロック406の処理は、ブロック404における個々のブロック414、416、418、420及び422と同じ動作を実行するブロック415、417、419、421及び423を含む。ブロック404の処理を実行するプロセッサとは異なる、複数のプロセッサのうちの別のプロセッサ204は、ブロック406の処理を実行しても良い。ブロック406は、矢印425により示すように複数のプロセッサが、共有ファイルへのアクセスと、共有ファイル内で情報が利用可能な場合には情報のリード及び圧縮と、そして運用メモリへ戻すこととを同時に実行しても良いことを説明する目的で示される。
理解されるべきことに、ハイバネーションからのレジューム中のコンピューティング装置の目標状態の復帰の一部として、プロセッサ204により異なる処理が実行されても良い。
図5は、本発明の幾つかの実施形態による、コンピューティング装置によるハイバネーションの開始の処理500を示す。処理500は、任意の適切なときに開始しても良い。例えば、処理は、コンピューティング装置にハイバネイトを指示する適切なユーザ入力が受信されると開始しても良い。図5に示さないが、従来知られている種類の処理を含む異なる又は追加の処理が実行されても良い。例えば、ハイバネーション情報をライトする前に、各プロセッサの状態が集められても良く(例えば、スタックポインタ、レジスタカウンタ、等)、状態は、第1の段階で復帰されるべきハイバネーション情報のメタデータの一部として格納されても良い。
幾つかの実施形態では、ハイバネーションからの複数段階のレジュームを実施するために、各レジューム段階中に復帰される運用メモリからの情報は、別個に記録されても良い。したがって、ハイバネーション情報は、運用メモリに戻ったときに各先行する段階のために記録された情報が後続の段階のための環境を確立するように区分されても良い。
処理500が開始される方法に拘わらず、ブロック502で、処理は、ハイバネーションファイル(例えば、図1のハイバファイル108)のようなハイバネーション情報の第1の部分に記録するために揮発性メモリ内の第1の情報を決定しても良い。このような第1の情報は、例えば、揮発性メモリ102の状態情報120(図1)であっても良い。
第1の情報は、任意の適切な方法で決定されても良く、ハイバネイトからのレジュームの第1のレジューム段階中に復帰される情報を有しても良い。この情報は、レジューム中に運用メモリに戻されるとき、該情報が後続のレジューム段階のための環境を確立するように、選択されても良い。
幾つかの実施形態では、ハイバネーションのときのコンピューティング装置の状態は、どの情報がレジュームの各段階で記録されるかを決定するために用いられても良い。幾つかの実施形態では、ハイバネイトユーティリティ132は、レジューム処理の第2の段階を実行するために復帰されるべき、オペレーティングシステムのコンポーネントのセットに関する情報でプログラミングされる。このシナリオでは、ハイバネイトユーティリティ132は、これらのコンポーネントに割り当てられた又はこれらのコンポーネントにより使用中の動作中メモリのページを識別することにより、第1の部分を識別しても良い。しかしながら、第1の部分を識別するために任意の適切な技術が用いられても良い。内容を識別する情報は、例えばハイバネーションファイル108のヘッダ110にメタデータとして記録されても良い。
幾つかの実施形態では、レジュームの第1の段階は、第2の段階のための環境を確立しても良い。図1及び2と関連して示す例では、第2の段階は、複数のプロセッサをサポートするオペレーティングシステム環境116で実行されても良い。したがって、第1のレジューム段階は、十分な量のプロセッサ状態を復帰して、第2の段階中にプロセッサにハイバネーション情報をリードさせ解凍させても良い。
幾つかの実施形態では、ハイバネーション情報の第1の部分の第1の情報は、圧縮形式で格納されても良い。したがって、次に、ブロック504で、ブロック502で決定された第1の情報は、第1の圧縮アルゴリズムを用いて圧縮されても良い。第1の情報を圧縮するための圧縮アルゴリズムは、図6A及び6Bに関連して議論したように、第1の情報を運用メモリに格納するために第1の部分にアクセスするために用いられるべきコンピューティング装置の少なくとも1つのコンポーネントの能力に基づき動的に選択されても良い。ハイバネーション情報と共に格納されるメタデータは、第1の圧縮アルゴリズムの特性を示すパラメータ値を有しても良い。
理解されるべきことに、幾つかの実施形態では、第1の情報は、ハイバネーション情報の第1の部分に圧縮形式で格納されなくても良い。このような実施形態では、ブロック504の処理は省略されても良く、処理500は、ハイバネーション情報の第1の部分に圧縮されていない第1の情報を格納しても良い。
ブロック506で、圧縮された第1の情報は、不揮発性メモリ内のハイバファイルの第1の部分に記録されても良い。
次に、処理500はブロック508へ進み、処理は、ハイバネーション情報の第2の部分に記録すべき揮発性メモリ内の第2の情報を決定しても良い。第2の情報の例は、揮発性メモリ102の状態情報121(図1)を有しても良い。ハイバネーション情報の第2の部分に記録される第2の情報は、ハイバネーション情報の第1の部分に記録される第1の情報とは別個に記録されても良い。
ハイバネーション情報の第2の部分に記録される第2の情報は、第2のレジューム段階中に、第1の段階で復帰された情報を用いて復帰される。本例では、第1の段階は、オペレーティングシステムのカーネルの一部を復帰することによりコンピューティング装置を部分的にレジュームしても良い。オペレーティングシステムのカーネルの復帰した部分は、第2の段階で、豊かなリソースセットを有するオペレーティングシステム環境でハードウェアリソース及びコンピューティング装置の目標状態を復帰するために後に用いられても良い。
ブロック508で、第2の情報は任意の適切な方法で決定されても良く、本発明の実施形態はこの点に関して限定されない。例えば、第2の情報は、ハイバネーションのときのコンピューティング装置の状態を有しても良い。次に、ブロック510で、第2の情報は圧縮されても良い。適切な第2の圧縮アルゴリズムは、図6A及び6Bに関連して議論したように、動的に選択されても良い。第2の圧縮アルゴリズムは、ハイバネーション情報の第1の部分に格納される第1の情報を圧縮するために用いられる第1の圧縮アルゴリズムとは異なっても良い。ハイバネーション情報と共に格納されるメタデータは、第2の圧縮アルゴリズムの特性を示すパラメータ値を有しても良い。
ブロック512で、圧縮された第2の情報は、ハイバファイルの第2の部分に記録されても良い。ハイバネーション情報が不揮発性メモリに記録されるとき、コンピューティング装置のハードウェアは電源を切られ、コンピューティング装置がハイバネイトするときにハードウェアにより電力が消費されないようにしても良い。次に、処理500は終了しても良い。
上述のように、一部又は全部のハイバネーション情報は、コンピューティング装置の不揮発性メモリに圧縮形式で記録されても良い。ハイバネーション情報の圧縮は、コンピューティング装置をハイバネーションモードからレジュームするのにかかる時間を削減できる。しかしながら、レジューム処理の速度に与える影響は、計算時間に対するメモリアクセス時間に依存し得る。したがって、圧縮は、不揮発性メモリが低速か又は十分な処理能力が利用可能なシナリオで特に有用である。
幾つかの実施形態では、ハイバネーション情報を圧縮するために、適切な圧縮アルゴリズムが動的に選択されても良い。圧縮アルゴリズムは、プロセッサ及びコンピューティング装置のディスクI/Oの能力のような多数の異なる基準に基づき動的に選択されても良い。例えば、圧縮アルゴリズムは、プロセッサの数及び処理速度に基づき、及びコンピューティング装置内のディスクのI/O速度に基づき、選択されても良い。
幾つかの実施形態では、個々のレジューム段階中に運用メモリに戻されるべきハイバネーション情報の1より多い部分が、圧縮形式で記録されても良い。このような場合には、ハイバネーション情報の異なる部分に格納される情報を圧縮するために、異なる圧縮アルゴリズムが選択されても良い。異なるレジューム段階は異なる環境で実行されるので、コンピューティング装置の異なるリソースが異なる段階で用いられても良い。したがって、圧縮アルゴリズムは、個々のレジューム段階でコンピューティング装置に利用可能なリソースに基づき、ハイバネーション情報内のセクションに格納されるべき情報を圧縮するために動的に選択されても良い。
圧縮アルゴリズムは、より多くの処理能力が利用可能なときに更なる圧縮を使用するという基準に基づき選択されても良い。基準は、ハイバネーション情報を格納しているディスク又は他の不揮発性メモリへのアクセス時間が遅いとき、更なる圧縮を支持しても良い。図6A及び6Bは、幾つかの実施形態による圧縮アルゴリズムを動的に選択する2つの例を示す。圧縮アルゴリズムは、コンピューティング装置の適切なコンポーネント(例えば、図1及び2のハイバネイトユーティリティ132)がどの情報がハイバネーション情報として格納されるか、ハイバネーション情報はどのように区分されるか、及びハイバネーションからのレジュームの各段階での使用のためにどんなコンピューティングリソースが利用可能かを決定するとき、ハイバネーションのときに選択されても良い。
図6Aは、処理600のブロック602で、圧縮アルゴリズムを選択するために、コンピューティング装置内のプロセッサの能力が先ず評価されることを示す。次に、決定ブロック604で、プロセッサの数及び速度が特定の閾より高いか否かが決定されても良い。この閾は、任意の適切な方法で決定されても良い。例えば、オペレーティングシステムは、コンピューティング装置内でどんな処理能力が必要かを決定するためにハードウェア情報にアクセスしても良い。理解されるべきことに、プロセッサの数及び速度の評価は、単に例としてブロック604に示される。プロセッサの任意の適切な性能特性が評価されても良く、実施形態はこの点に関して限定されない。
決定ブロック604でプロセッサの数及び速度が閾である又はそれより高いと決定されると、処理600はブロック606へ分岐し、より高い圧縮率を有する圧縮アルゴリズムが選択されても良い。
代替として、決定ブロック604でプロセッサの数及び速度が閾より低いと決定されると、処理600はブロック608へ分岐し、より低い圧縮率を有する圧縮アルゴリズムが選択されても良い。
図6Bは、幾つかの実施形態による圧縮アルゴリズムを動的に選択する技術の別の例を示す。本例では、圧縮アルゴリズムは、プロセッサの能力(例えば、数及び処理速度)に基づき、及びコンピューティング装置内のディスクのI/O速度に基づき、選択されても良い。
図6Bに示すように、処理700はブロック702で開始し、ディスクI/O速度、及びプロセッサの数及び速度のようなプロセッサの能力、又は任意の他の適切なプロセッサの特性が評価されても良い。次に、決定ブロック704でディスク速度I/Oがプロセッサのそれより速いと決定されると、処理700はブロック706へ分岐し、より高い圧縮率を有する圧縮アルゴリズムが選択されても良い。決定ブロック704でディスク速度I/Oがプロセッサのそれより速くないと決定されると、処理700はブロック708へ分岐し、より低い圧縮率を有する圧縮アルゴリズムが選択されても良い。
幾つかの実施形態では、ハイバネーション情報と共に格納されるメタデータは、使用される圧縮の特性を示すパラメータ値を有しても良い。したがって、ハイバネーションからのレジューム中、適切な解凍アルゴリズムが、パラメータ値に基づき選択されても良い。異なる圧縮アルゴリズムがハイバネーション情報の部分に用いられても良いので、個々の異なる解凍アルゴリズムが、レジューム段階中に情報を解凍するために用いられても良い。
理解されるべきことに、圧縮アルゴリズムは任意の適切な基準に基づき選択されても良く、本発明の実施形態はこの点に関して限定されない。例えば、圧縮されるべき情報量が考慮されても良い。
理解されるべきことに、図6A及び6Bは、圧縮アルゴリズムを選択する単純なアプローチを示す。各々の場合に、選択は、単一の基準に基づき、2つの圧縮アルゴリズムの間で行われる。他の実施形態では、選択は、同時に考慮される複数の基準に基づき、2より多いアルゴリズムの間で行われても良い。例えば、コンピューティング装置が使用するよう構成されるアルゴリズム毎に、コンピューティング装置の検出されたハードウェアが与えられた場合のレジューム時間又はレジュームレートが計算されても良い。最速時間又はレートを有するアルゴリズムが選択されても良い。
図7は、本発明が実施され得る適切なコンピューティングシステム環境800の一例を示す。
コンピューティングシステム環境800は、適切なコンピューティング環境の単なる一例であり、本発明の使用又は機能の範囲に関する限定を示唆するものではない。また、コンピューティング環境800は、例示的な動作環境800内に示した1コンポーネントまたはコンポーネントの組合せへの依存性又はそれらに対する要件を有すると解釈されるべきではない。
本発明は、多数の他の汎用目的の又は特定目的のコンピューティングシステム環境又は構成で動作可能である。本発明と共に使用するのに適するコンピューティングシステム、環境及び/又は構成の良く知られた例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド若しくはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサに基づくシステム、セットトップボックス、プログラマブル消費者電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上述のシステム若しくは装置のうちの任意のものを含む分散型コンピューティング環境、等を含むが、これらに限定されない。
コンピューティング環境は、プログラムモジュールのようなコンピュータ実行可能命令を実行しても良い。概して、プログラムモジュールは、特定のタスクを実行し又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。本発明は、タスクが通信ネットワークを通じて接続されるリモート処理装置により実行される分散型コンピューティング環境で実施されても良い。分散型コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカル及びリモートの両方のコンピュータ記憶媒体に置かれても良い。
図7を参照すると、本発明を実施する例示的なシステムは、コンピュータ810の形式の汎用コンピューティング装置を有する。コンピュータ810のコンポーネントは、処理ユニット820、システムメモリ830、及びシステムメモリを含む種々のシステムコンポーネントを処理ユニット820に結合するシステムバス821を有し得るが、これらに限定されない。システムバス821は、メモリバス又はメモリ制御部、周辺バス、及び種々のバスアーキテクチャのうちの任意のものを用いるローカルバスを含む複数種類のバス構造のうちの任意のものであっても良い。例として、限定ではなく、このようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、Mezzanineバスとしても知られているPCI(Peripheral Component Interconnect)バスを含む。
コンピュータ810は、通常、種々のコンピュータ可読媒体を有する。コンピュータ可読媒体は、コンピュータ810によりアクセス可能な任意の利用可能な媒体であり、揮発性及び不揮発性媒体並びに取り外し可能及び非取り外し可能媒体の両方を含む。例として、限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を有しても良い。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータのような情報を記憶する方法又は技術で実装される揮発性及び不揮発性、取り外し可能及び非取り外し可能媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD−ROM、DVD(digital versatile disk)又は他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、又は所望の情報を格納するために用いることができコンピュータ810によりアクセスできる任意の他の媒体を含むがこれらに限定されない。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール又は搬送波又は他のトランスポート機構のような変調されたデータ信号内の他のデータを具現化しても良く、任意の情報配信媒体を有しても良い。用語「変調データ信号」は、1又は複数の特性セットを有する信号を意味し、又は信号内の情報をエンコードするために変更されても良い。例として限定ではなく、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体、並びに音響、RF、赤外線(IR)のような無線媒体及び他の無線媒体を含む。上述のうちの任意の組合せも、コンピュータ可読媒体の範囲に包含されるべきである。
システムメモリ830は、ROM(read only memory)831及びRAM(random access memory)832のような、揮発性メモリ及び/又は不揮発性メモリの形式のコンピュータ記憶媒体を含む。BIOS(basic input/output system)833は、起動中のような、コンピュータ810内の要素間の情報転送を助ける基本ルーチンを含み、通常、ROM831に格納される。RAM832は、通常、処理ユニット820により直ちにアクセス可能な及び/又はそれにより現在動作中のデータ及び/又はプログラムモジュールを有する。例として、限定ではなく、図7は、オペレーティングシステム834、アプリケーションプログラム835、他のプログラムモジュール836、及びプログラムデータ837を示す。
コンピュータ810は、他の取り外し可能/非取り外し可能な、揮発性/不揮発性コンピュータ記憶媒体を有しても良い。単なる例として、図7は、非取り外し可能不揮発性磁気媒体からリードし及びそれにライトするハードディスクドライブ840、取り外し可能不揮発性磁気ディスク852からリードし又はそれにライトする磁気ディスクドライブ851、及びCD ROM若しくは他の光学媒体のような取り外し可能不揮発性光ディスク856からリードし又はそれにライトする光ディスクドライブ855を示す。ハードディスクドライブ840は、磁気媒体にライトし又はそれからリード可能な1又は複数の磁気ヘッドを有する回転式磁気媒体として実装されても良い。例示的な動作環境で使用可能な、他の取り外し可能/非取り外し可能な揮発性/不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、DVD(digital versatile disk)、デジタルビデオテープ、固体RAM、固体ROM、等を有するが、これらに限定されない。ハードディスクドライブ841は、通常、インタフェース840のような非取り外し可能メモリインタフェースを通じてシステムバス821に接続される。磁気ディスクドライブ851及び光ディスクドライブ855は、通常、インタフェース850のような取り外し可能メモリインタフェースによりシステムバス821に接続される。
上述の及び図7に示したドライブ及びそれらの関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及びコンピュータ810のための他のデータの記憶を提供する。例えば、図7では、ハードディスクドライブ841は、オペレーティングシステム844、アプリケーションプログラム845、他のプログラムモジュール846、及びプログラムデータ847を格納するとして示される。留意すべきことに、これらのコンポーネントは、オペレーティングシステム834、アプリケーションプログラム835、他のプログラムモジュール836、及びプログラムデータ837と同じか又は異なり得る。オペレーティングシステム844、アプリケーションプログラム845、他のプログラムモジュール846、及びプログラムデータ847は、少なくともそれらが異なるコピーであることを示すために、ここで異なる番号が与えられる。ユーザは、キーボード862及び通常マウス、トラックボール又はタッチパッドと称されるポインティング装置861のような入力装置を通じて、コンピュータ810にコマンド及び情報を入力しても良い。他の入力装置(図示しない)は、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ、等を有しても良い。上述の及び他の入力装置は、システムバス820に結合されるユーザ入力インタフェース860を通じて、処理ユニット820に接続される場合が多いが、パラレルポート、ゲームポート又はUSB(universal serial bus)ポートのような他のインタフェース及びバス構造により接続することもできる。モニタ891又は他の種類のディスプレイ装置は、ビデオインタフェース890のようなインタフェースを介してシステムバス821にも接続される。モニタに加えて、コンピュータは、スピーカ897及びプリンタ896のような、出力周辺機器インタフェース895を通じて接続され得る他の周辺出力装置を有しても良い。
コンピュータ810は、遠隔コンピュータ880のような1又は複数のリモートコンピュータへの論理コネクションを用いてネットワーク環境で動作しても良い。リモートコンピュータ880は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置又は他の一般的なネットワークノードであって良く、通常、コンピュータ810に関して上述した要素の多く又は全てを有する。しかしながら、メモリ記憶装置881のみを図7に示す。図7に示した論理コネクションは、LAN(local area network)871及びWAN(wide area network)873を有するが、他のネットワークも有しても良い。このようなネットワーク環境は、職場、企業規模のコンピュータネットワーク、イントラネット及びインターネットで一般的である。
LANネットワーク環境で用いられるとき、コンピュータ810は、ネットワークインタフェース又はアダプタ870を通じて、LAN871に接続される。WANネットワーク環境で用いられるとき、コンピュータ810は、通常、モデム872又はインターネットのようなWAN873を介して通信を確立する他の手段を有する。内蔵又は外付けであって良いモデム872は、ユーザ入力インタフェース860又は他の適切なメカニズムを介してシステムバス821に接続されても良い。ネットワーク環境では、コンピュータ810に関連して示されたプログラムモジュール又はその部分は、遠隔メモリ記憶装置に格納されても良い。例として、限定ではなく、図7は、リモートアプリケーションプログラム885がメモリ装置881に存在するとして示す。理解されるべきことに、図示のネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を用いることが出来る。
したがって、本発明の少なくとも1つの実施形態の幾つかの態様を記載したが、理解されるべきことに、当業者には種々の変形、修正及び改良が直ちに生じるだろう。
例えば、幾つかの実施形態によるコンピューティング装置は複数のプロセッサを有しても良いと記載した。レジューム処理は複数のプロセッサをサポートするオペレーティングシステム環境で完了し得るので、オペレーティングシステム環境で生じるレジューム段階中にこれらのプロセッサを用いることは、コンピューティング装置がハイバネーションからレジュームする速度を増大し得る。しかしながら、理解されるべきことに、コンピューティング装置は、単一のプロセッサを有しても良い。このようなシナリオでも、プロセッサは、不揮発性記憶からハイバネーション情報の別のセグメントをリードするためにI/O動作が保留されている期間中に、ハイバネーション情報のセグメントに基づき、コンピューティング装置の状態を復帰する処理を実行できるので、非同期アクセスの使用はレジュームを高速化できる。
どの情報をハイバネーション情報の各部分に格納するかを決定するために、任意の適切な技術が用いられても良く、この点について本発明の実施形態は限定されない。さらに、実施形態は、ハイバネーション情報の第1及び第2の部分の両方又はこれらの部分の一方のみを圧縮するか否かを決定するために用いられる方法に関して限定されない。圧縮アルゴリズム及び個々の解凍技術は、任意の適切な方法で選択されても良い。
理解されるべきことに、本願明細書にはハイバネーションからのレジュームの2つの段階が記載されたが、レジュームは任意の適切な数の段階を介して生じても良く、本発明の実施形態はこの点に関して限定されない。各段階は、次の段階が復帰されるポイントにコンピューティング装置を復帰しても良い。レジューム処理は、任意の適切な方法で複数の段階に分けられても良い。
このような代替、変更及び改良は、本開示の一部であると考えられ、本発明の精神及び範囲内に包含される。したがって、前述の説明及び図面は、単なる例である。
本発明の上述の実施形態は、種々の方法のうちの任意の方法で実施することができる。例えば、実施形態は、ハードウェア、ソフトウェア又はそれらの組み合わせで実施されても良い。ソフトウェアで実施されるとき、単一のコンピュータで又は複数のコンピュータ間で分散して提供されるかに関わらず、ソフトウェアコードは、任意の適切なプロセッサ又はプロセッサの集合で実行できる。このようなプロセッサは、集積回路として実装され、集積回路コンポーネント内に1又は複数のプロセッサを有しても良い。しかしながら、プロセッサは、任意の適切な形態の回路を用いて実装されても良い。
さらに、理解されるべきことに、コンピュータは、ラック搭載コンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、又はタブレットコンピュータのような多数の形態のうちの任意の形態で実施されても良い。さらに、コンピュータは、一般的にコンピュータとして考えられないが適切な処理能力を有する、PDA(Personal Digital Assistant)、スマートフォン又は任意の他の適切なポータブル若しくは固定電子機器を含む装置内に実装されても良い。
また、コンピュータは、1又は複数の入力及び出力装置を有しても良い。これらの相対は、特にユーザインタフェースを提示するために用いることができる。ユーザインタフェースを提供するために用いることができる出力装置の例は、出力の視覚的提示のためのプリンタ又はディスプレイスクリーン、及び出力の聴覚的提示のためのスピーカ又は他の音響生成装置を含む。ユーザインタフェースのために用いることができる入力装置の例は、キーボード、並びにマウス、タッチパッド及び離散化タブレットのようなポインティング装置を含む。別の例として、コンピュータは、音声認識を通じて又は他の可聴形式で入力情報を受信しても良い。
このようなコンピュータは、ローカルエリアネットワーク又は企業ネットワーク若しくはインターネットのようなワイドエリアネットワークを含む1又は複数のネットワークにより任意の適切な形式で相互接続されても良い。このようなネットワークは、任意の適切な技術基づき、任意の適切なプロトコルに従って動作し、無線ネットワーク、有線ネットワーク又は光ファイバネットワークを有しても良い。
また、本願明細書で概説した種々の方法又は処理は、種々のオペレーティングシステム若しくはプラットフォームのうちの任意の1つを用いる1又は複数のプロセッサで実行可能なソフトウェアとして符号化されても良い。さらに、このようなソフトウェアは、多数の適切なプログラミング言語及び/又はプログラミング若しくはスクリプティングツールのうちの任意のものを用いて書かれても良く、フレームワーク若しくは仮想マシンで実行される実行可能機械言語コード若しくは中間コードとしてコンパイルされても良い。
これに関して、本発明は、1又は複数のプログラムをエンコードされたコンピュータ可読記憶媒体(又は複数のコンピュータ可読媒体)(例えば、コンピュータメモリ、1又は複数のフロッピディスク、CD(compact disc)、光ディスク、DVD(digital video disk)、磁気テープ、フラッシュメモリ、FPGA(Field Programmable Gate Array)若しくは他の半導体素子内の回路構成、又は他の非一時的有形コンピュータ記憶媒体)として実施されても良く、該プログラムは、1又は複数のコンピュータ又は他のプロセッサで実行されると、上述の本発明の種々の実施形態を実施する方法を実行する。1又は複数のコンピュータ可読記憶媒体は持ち運び可能であり、上述の本発明の種々の態様を実施するために、該コンピュータ可読記憶媒体に格納された1又は複数のプログラムが1又は複数の異なるコンピュータ若しくは他のプロセッサにロードできる。本願明細書で用いられるように、用語「非一時的コンピュータか独記憶媒体」は、製造物(つまり、製品)又は機械として考えられるコンピュータ可読媒体のみを含む。代替又は追加で、本発明は、コンピュータ可読記憶媒体以外の、伝搬する信号のようなコンピュータ可読媒体として実施されても良い。
用語「プログラム」又は「ソフトウェア」は、本願明細書では、上述の本発明の種々の態様を実施するためにコンピュータ又は他のプロセッサをプログラミングするために用いることができる任意の種類のコンピュータコード又はコンピュータ実行可能命令セットを表すために総称的に用いられる。さらに、理解されるべきことに、この実施形態の一態様によると、実行されると本発明の方法を実行する1又は複数のコンピュータプログラムは、単一のコンピュータ又はプロセッサに存在する必要はなく、本発明の種々の態様を実施するために多数の異なるコンピュータ又はプロセッサの間でモジュラ形式で分散されても良い。
コンピュータ実行可能命令は、プログラムモジュールのような、1又は複数のコンピュータ又は他の装置により実行される多くの形式であっても良い。概して、プログラムモジュールは、特定のタスクを実行し又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。通常、プログラムモジュールの機能は、種々の実施形態で必要に応じて結合され又は分散されても良い。
また、データ構造は、任意の適切な形式でコンピュータ可読媒体に格納されても良い。説明を簡単にするために、データ構造は、該データ構造内の位置を通じて関連するフィールドを有するとして示された。このような関係は、フィールド間の関係を伝達するコンピュータ可読媒体内の位置を有するフィールドに記憶を割り当てることにより達成されても良い。しかしながら、データ構造内の情報間の関係を確立するために、ポインタ、タグ又はデータ要素間の関係を確立する他のメカニズムの使用を含む任意の適切なメカニズムが用いられても良い。
本発明の種々の態様は、単独で、組合せで、又は上述の実施形態で詳細に議論されていない種々の構成で用いられることができるので、それらの用途は以上に説明された又は図面に記載されたコンポーネントの詳細事項及び構成に限定されない。例えば、一実施形態で説明した態様は、任意の方法で他の実施形態で説明した態様と組合せることができる。
また、本発明は、一例を提供した方法として実施されても良い。この方法の一部として実行される動作は、任意の適切な方法で順序付けられても良い。したがって、実施形態は、図示した順序と異なる順序で動作が実行されることも想定しており、説明のための実施形態では順次的動作として示していても、幾つかの動作を同時に実行することも含む。
請求項の要素を修飾するための請求項における「第1」、「第2」、「第3」等のような序数の使用は、それ自体がある請求項の要素の他者に対する優先度、先行若しくは順序、又は方法が実行される時間的順序を示すものではなく、請求項の要素を区別するために特定の名称を有する1つの請求項の要素を(序数の使用以外は)同じ名称を有する別の要素から区別するために単にラベルとして用いられる。
また、本願明細書で用いられる表現及び用語は、説明を目的としており、限定として見なされるべきではない。「含む、有する(including、comprising、having、containing、involving)」及びそれらの変形は、以降に列挙される項目及びそれらの等価物、並びに追加の項目を包含することを意味する。

Claims (17)

  1. 複数のプロセッサを有するコンピューティング装置の動作方法であって、前記方法は、
    不揮発性記憶から第1のハイバネーション情報を読み出して前記コンピューティング装置のオペレーティングシステムの第1の部分を復帰することにより、ハイバネーションモードから前記コンピューティング装置を部分的にレジュームするステップであって、前記オペレーティングシステムの前記第1の部分はマルチプロセッササポートを有する、ステップと、
    前記オペレーティングシステムの復帰された前記第1の部分を用いて、前記不揮発性記憶から第2のハイバネーション情報を読み出し、前記コンピューティング装置の前記オペレーティングシステムの追加の第2の部分を復帰し及び前記ハイバネーションモードに入ったときの前記コンピューティング装置の状態を復帰するステップと、
    を有し、
    前記不揮発性記憶からの前記第2のハイバネーション情報の読み出しは、前記オペレーティングシステムの前記第1の部分を読み出すときのコンピューティング環境でサポートされていない前記プロセッサのうちの1つを用いる、方法。
  2. 前記不揮発性記憶に圧縮形式で前記第2のハイバネーション情報を格納するステップ、
    を更に有する請求項1に記載の方法。
  3. 前記コンピューティング装置の状態を復帰するステップは、前記不揮発性記憶から前記の圧縮された第2のハイバネーション情報の第1の部分をリードするステップと、前記圧縮された第2のハイバネーション情報の前記第1の部分をバッファに記録するステップと、を有し、
    前記圧縮された第2のハイバネーション情報の前記第1の部分が前記バッファに記録されると、前記第2の圧縮されたハイバネーション情報の前記第1の部分を前記バッファから読み出し、前記不揮発性記憶から前記圧縮された第2のハイバネーション情報の第2の部分をリードするのと同時に前記圧縮された第2のハイバネーション情報の前記第1の部分を解凍する、
    請求項2に記載の方法。
  4. 前記バッファからの読み出し及び前記圧縮された第2のハイバネーション情報の前記第1の部分の解凍は、前記複数のプロセッサのうちの第1のプロセッサにより実行され、
    前記不揮発性記憶からの前記圧縮された第2のハイバネーション情報の前記第2の部分のリードは、前記複数のプロセッサのうちの第2の異なるプロセッサにより実行される、
    請求項3に記載の方法。
  5. 前記第1及び第2のプロセッサのうちの1つは、同期入力/出力動作を介して、前記不揮発性記憶から前記圧縮された第2のハイバネーション情報の前記第1及び第2の部分のうちの1つをリードする、
    請求項4に記載の方法。
  6. 前記コンピューティング装置を部分的にレジュームするステップは、前記コンピューティング装置のプレオペレーティングシステム環境でレジュームローダを実行するステップを有し、
    前記オペレーティングシステムの前記第1の部分は、前記コンピューティング装置の前記オペレーティングシステム内のカーネルローダを有する、
    請求項1に記載の方法。
  7. 前記第1のハイバネーション情報及び前記第2のハイバネーション情報は、ファイルに記録される、
    請求項1に記載の方法。
  8. 揮発性記憶媒体と、
    第1の部分、第2の部分並びに前記第1の部分及び前記第2の部分を識別するヘッダ情報を含むハイバネーション情報を有する不揮発性記憶媒体と、
    コンピュータ実行可能命令を有するファームウェアと、
    を有し、
    前記コンピュータ実行可能命令は、実行されると、前記第1の部分に基づき前記揮発性記憶媒体に情報を格納するために第1のレジュームローダを実施し、
    前記第1の部分は、実行されると、前記第2の部分に基づき前記揮発性記憶媒体に情報を格納するために第2のレジュームローダを実施するコンピュータ実行可能命令の表現を有し、
    前記ハイバネーション情報の前記第1の部分は、1より多いプロセッサを有するコンピューティング装置のオペレーティングシステムの一部を復帰するために用いられるデータを有し、前記オペレーティングシステムの前記一部は、マルチプロセッササポートを有し、前記第2のレジュームローダの実施は、不揮発性記憶媒体からの前記ハイバネーション情報の前記第1の部分を読み出すときのコンピューティング環境でサポートされない、前記プロセッサのうちの1つを用いて、前記不揮発性記憶媒体から前記ハイバネーション情報の前記第2の部分を読み出す
    システム。
  9. 前記第2の部分は、前記不揮発性記憶媒体に圧縮形式で格納される、請求項に記載のシステム。
  10. 前記第2のレジュームローダは、ハイバネーションのときの前記システムの状態を復帰し、前記の復帰は前記複数のプロセッサを用い前記複数のプロセッサを用いる前記の復帰は、
    前記複数のプロセッサのうちの第1のプロセッサで、前記不揮発性記憶媒体から前記第2の部分のセグメントをリードし、前記第2の部分の圧縮されたセグメントをバッファに記録し、
    前記バッファから前記第2の部分のセグメントを読み出し、前記圧縮されたセグメントを解凍する、
    ことを有する、請求項に記載のシステム。
  11. 複数のプロセッサを有するコンピューティング装置の作動方法であって、前記方法は、
    ファームウェアに格納されたコンピュータ実行可能命令により、
    不揮発性メモリに格納されたハイバネーション情報の第1の部分にアクセスするステップと、
    前記ハイバネーション情報の前記第1の部分に基づき運用メモリに第1の情報を格納するステップと、
    前記第1の情報に含まれるコンピュータ実行可能命令により、
    不揮発性メモリに格納された前記ハイバネーション情報の第2の部分にアクセスするステップと、
    前記ハイバネーション情報の前記第2の部分に基づき運用メモリに第2の情報を格納するステップと、
    を有し、
    前記第1の情報は、前記コンピューティング装置のオペレーティングシステムの一部を復帰するために用いられる情報を有し、前記オペレーティングシステムの前記一部は、マルチプロセッササポートを有し、前記ハイバネーション情報の前記第2の部分にアクセスするステップは、前記ハイバネーション情報の前記第1の部分にアクセスするときのコンピューティング環境でサポートされない、前記プロセッサのうちの1つを用いる、方法。
  12. ハイバネーションのときに、
    前記不揮発性メモリ内の前記ハイバネーション情報の前記第1の部分に、前記第1の情報を記録するステップと、
    前記不揮発性メモリ内の前記ハイバネーション情報の前記第2の部分に、前記第2の情報を記録するステップであって、前記第2の情報は、前記ハイバネーションのときの前記コンピューティング装置の状態に関する状態情報を有する、ステップと、
    を更に有する請求項11に記載の方法。
  13. 前記第1の部分に前記第1の情報を記録する前に、前記第1の情報を第1の圧縮アルゴリズムで圧縮するステップと、
    前記第2の部分に前記第2の情報を記録する前に、前記第2の情報を第2の圧縮アルゴリズムで圧縮するステップと、
    を更に有する請求項12に記載の方法。
  14. 前記運用メモリに前記第1の情報を格納するために前記第1の部分にアクセスするために用いられるべき前記コンピューティング装置の少なくとも1つのコンポーネントの能力に基づき、前記第1の情報を圧縮する第1の圧縮アルゴリズムを動的に選択するステップと、
    前記運用メモリに前記第2の情報を格納するために前記第2の部分にアクセスするために用いられるべき前記コンピューティング装置の前記複数のプロセッサのうちの一部の能力及びディスク入力速度のうちの少なくとも1つに基づき、前記第2の情報を圧縮する第2の圧縮アルゴリズムを動的に選択するステップと、
    を有する請求項13に記載の方法。
  15. 前記ハイバネーション情報の前記第2の部分にアクセスするステップは、前記不揮発性メモリから前記第2の部分のセグメントをリードし、前記セグメントをバッファリングするステップを有し、
    運用メモリに第2の情報を格納するステップは、前記バッファリングされたセグメントを読み出すステップを有する、
    請求項11に記載の方法。
  16. 前記第1の情報は、実行されると、前記第1の部分に基づき前記運用メモリに情報を格納するためにブートレベルレジュームローダを実施するコンピュータ実行可能命令を有し、
    前記コンピュータ実行可能命令は、実行されると、前記第2の部分に基づき前記運用メモリに情報を格納するためにカーネルレベルレジュームローダを実施する、
    請求項11に記載の方法。
  17. 前記ハイバネーション情報の前記第2の部分の前記のアクセスは、非同期入力/出力動作を介し、前記ハイバネーション情報の前記第1の部分の前記のアクセスは、非同期ではない入力/出力動作を介する、請求項11に記載の方法。
JP2013555508A 2011-02-24 2012-02-22 ハイバネイトからの多段レジューム Expired - Fee Related JP5911892B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/034,480 US8694764B2 (en) 2011-02-24 2011-02-24 Multi-phase resume from hibernate
US13/034,480 2011-02-24
PCT/US2012/025987 WO2012161777A2 (en) 2011-02-24 2012-02-22 Multi-phase resume from hibernate

Publications (3)

Publication Number Publication Date
JP2014506708A JP2014506708A (ja) 2014-03-17
JP2014506708A5 JP2014506708A5 (ja) 2015-03-19
JP5911892B2 true JP5911892B2 (ja) 2016-04-27

Family

ID=46719817

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013555508A Expired - Fee Related JP5911892B2 (ja) 2011-02-24 2012-02-22 ハイバネイトからの多段レジューム

Country Status (6)

Country Link
US (3) US8694764B2 (ja)
EP (1) EP2678775A4 (ja)
JP (1) JP5911892B2 (ja)
KR (1) KR20140014146A (ja)
CN (1) CN102708064B (ja)
WO (1) WO2012161777A2 (ja)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US8464183B2 (en) * 2010-06-03 2013-06-11 Hewlett-Packard Development Company, L.P. System and method for distinguishing multimodal commands directed at a machine from ambient human communications
US11449394B2 (en) 2010-06-04 2022-09-20 Commvault Systems, Inc. Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources
US8694764B2 (en) * 2011-02-24 2014-04-08 Microsoft Corporation Multi-phase resume from hibernate
KR101813641B1 (ko) * 2011-11-15 2018-01-02 에스프린팅솔루션 주식회사 화상형성장치 및 하이버네이션 기능을 갖는 화상형성장치를 부팅하는 방법
US9389673B2 (en) 2011-12-22 2016-07-12 Sandisk Technologies Inc. Systems and methods of performing a data save operation
US9069551B2 (en) * 2011-12-22 2015-06-30 Sandisk Technologies Inc. Systems and methods of exiting hibernation in response to a triggering event
US9092150B2 (en) 2011-12-22 2015-07-28 Sandisk Technologies Inc. Systems and methods of performing a data save operation
US8914594B2 (en) 2011-12-22 2014-12-16 Sandisk Technologies Inc. Systems and methods of loading data from a non-volatile memory to a volatile memory
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9383812B2 (en) * 2012-09-28 2016-07-05 Intel Corporation Method and apparatus for efficient store/restore of state information during a power state
US9904559B2 (en) * 2012-10-25 2018-02-27 Canon Kabushiki Kaisha Information processing apparatus and activation method therefor for processing data of a hibernation image
JP2014106546A (ja) * 2012-11-22 2014-06-09 Mitsubishi Electric Corp レジューム方法及び情報処理装置
US9311121B2 (en) * 2012-12-21 2016-04-12 Commvault Systems, Inc. Archiving virtual machines in a data storage system
US20140181044A1 (en) 2012-12-21 2014-06-26 Commvault Systems, Inc. Systems and methods to identify uncharacterized and unprotected virtual machines
US20140196038A1 (en) 2013-01-08 2014-07-10 Commvault Systems, Inc. Virtual machine management in a data storage system
US20140201151A1 (en) 2013-01-11 2014-07-17 Commvault Systems, Inc. Systems and methods to select files for restoration from block-level backup for virtual machines
CN103136043B (zh) * 2013-01-28 2016-05-25 华为技术有限公司 一种异步io的迁移方法、系统和网络节点
US20140237475A1 (en) * 2013-02-15 2014-08-21 Apple Inc. Sleep/wake with suppression and donated importance
US9239610B2 (en) * 2013-02-28 2016-01-19 Sandisk Technologies Inc. Systems and methods for managing data in a system for hibernation states
US9641378B1 (en) * 2013-03-12 2017-05-02 Western Digital Technologies, Inc. Adjustment of compression ratios for data storage
US9939981B2 (en) 2013-09-12 2018-04-10 Commvault Systems, Inc. File manager integration with virtualization in an information management system with an enhanced storage manager, including user control and storage management of virtual machines
CN103729211B (zh) * 2013-12-10 2017-08-04 华为技术有限公司 一种操作系统恢复方法、装置及终端设备
US9600369B2 (en) 2013-12-10 2017-03-21 Huawei Technologies Co., Ltd. Operating system recovery method and apparatus, and terminal device
WO2015089488A1 (en) 2013-12-12 2015-06-18 Memory Technologies Llc Channel optimized storage modules
JP6399916B2 (ja) * 2014-01-20 2018-10-03 キヤノン株式会社 情報処理装置およびその制御方法
US9563518B2 (en) 2014-04-02 2017-02-07 Commvault Systems, Inc. Information management by a media agent in the absence of communications with a storage manager
EP3137990A4 (en) * 2014-04-29 2017-12-27 Hewlett-Packard Development Company, L.P. Resuming a system using state information
US20160019317A1 (en) 2014-07-16 2016-01-21 Commvault Systems, Inc. Volume or virtual machine level backup and generating placeholders for virtual machine files
US9436555B2 (en) 2014-09-22 2016-09-06 Commvault Systems, Inc. Efficient live-mount of a backed up virtual machine in a storage management system
US9417968B2 (en) 2014-09-22 2016-08-16 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
US9710465B2 (en) 2014-09-22 2017-07-18 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
WO2016068895A1 (en) * 2014-10-29 2016-05-06 Siemens Aktiengesellschaft Automatic compression algorithm selection and parameter tuning based on contextual knowledge
US10776209B2 (en) 2014-11-10 2020-09-15 Commvault Systems, Inc. Cross-platform virtual machine backup and replication
US9632562B2 (en) 2014-11-20 2017-04-25 Qualcomm Incorporated Systems and methods for reducing volatile memory standby power in a portable computing device
US9983936B2 (en) 2014-11-20 2018-05-29 Commvault Systems, Inc. Virtual machine change block tracking
CN107003864B (zh) * 2015-01-29 2021-08-20 惠普发展公司,有限责任合伙企业 恢复片上系统设备
CN106332241A (zh) * 2015-06-29 2017-01-11 苏州简约纳电子有限公司 物理层和上层的同步方法
US10055236B2 (en) * 2015-07-02 2018-08-21 Sandisk Technologies Llc Runtime data storage and/or retrieval
CN107015847A (zh) * 2016-01-28 2017-08-04 扬智科技股份有限公司 电子装置及其工作模式切换方法
US10565067B2 (en) 2016-03-09 2020-02-18 Commvault Systems, Inc. Virtual server cloud file system for virtual machine backup from cloud operations
US10747630B2 (en) 2016-09-30 2020-08-18 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including operations by a master monitor node
US10152251B2 (en) 2016-10-25 2018-12-11 Commvault Systems, Inc. Targeted backup of virtual machine
US10162528B2 (en) 2016-10-25 2018-12-25 Commvault Systems, Inc. Targeted snapshot based on virtual machine location
US20180131749A1 (en) * 2016-11-10 2018-05-10 Ingram Micro Inc. System and Method for Optimizing Data Transfer using Selective Compression
US10678758B2 (en) 2016-11-21 2020-06-09 Commvault Systems, Inc. Cross-platform virtual machine data and memory backup and replication
CN108459882B (zh) * 2017-02-21 2022-04-05 佳能株式会社 电子设备及其控制方法
US10877851B2 (en) 2017-03-24 2020-12-29 Commvault Systems, Inc. Virtual machine recovery point selection
US10387073B2 (en) 2017-03-29 2019-08-20 Commvault Systems, Inc. External dynamic virtual machine synchronization
CN107346261A (zh) * 2017-06-30 2017-11-14 联想(北京)有限公司 虚拟机时间同步方法、物理主机及虚拟机
US10877928B2 (en) 2018-03-07 2020-12-29 Commvault Systems, Inc. Using utilities injected into cloud-based virtual machines for speeding up virtual machine backup operations
US11200124B2 (en) 2018-12-06 2021-12-14 Commvault Systems, Inc. Assigning backup resources based on failover of partnered data storage servers in a data storage management system
US10768971B2 (en) 2019-01-30 2020-09-08 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data
US10996974B2 (en) 2019-01-30 2021-05-04 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data, including management of cache storage for virtual machine data
US11467753B2 (en) 2020-02-14 2022-10-11 Commvault Systems, Inc. On-demand restore of virtual machine data
TWI738235B (zh) * 2020-03-03 2021-09-01 慧榮科技股份有限公司 用來進行恢復管理的方法以及記憶裝置及其控制器以及電子裝置
US11442768B2 (en) 2020-03-12 2022-09-13 Commvault Systems, Inc. Cross-hypervisor live recovery of virtual machines
US11099956B1 (en) 2020-03-26 2021-08-24 Commvault Systems, Inc. Snapshot-based disaster recovery orchestration of virtual machine failover and failback operations
CN113467923A (zh) * 2020-03-31 2021-10-01 华为技术有限公司 一种设备休眠方法及计算设备
US11500669B2 (en) 2020-05-15 2022-11-15 Commvault Systems, Inc. Live recovery of virtual machines in a public cloud computing environment
US11656951B2 (en) 2020-10-28 2023-05-23 Commvault Systems, Inc. Data loss vulnerability detection
US11467850B2 (en) * 2020-11-11 2022-10-11 Micron Technology, Inc. Computing device reboot
US20230384971A1 (en) * 2022-05-24 2023-11-30 Western Digital Technologies, Inc. Data Storage Device and Method for Device-Initiated Hibernation

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0156802B1 (ko) 1995-11-07 1998-11-16 김광호 네트워크 하이버네이션 시스템 및 그 제어 방법
KR970071232A (ko) 1996-04-26 1997-11-07 김광호 다중 리줌 기능을 갖는 하이버네이션 방법
JPH11242631A (ja) * 1998-02-26 1999-09-07 Toshiba Corp コンピュータシステムおよび同システムにおけるデータ保存/復元方法
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
JP3204251B2 (ja) * 1999-06-30 2001-09-04 インターナショナル・ビジネス・マシーンズ・コーポレーション ハイバネーション装置及び方法、それを格納した記録媒体並びにそれを適用したコンピュータ
US6546472B2 (en) * 2000-12-29 2003-04-08 Hewlett-Packard Development Company, L.P. Fast suspend to disk
US7386046B2 (en) * 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US6883037B2 (en) * 2001-03-21 2005-04-19 Microsoft Corporation Fast data decoder that operates with reduced output buffer bounds checking
US6851065B2 (en) 2001-09-10 2005-02-01 Dell Products L.P. System and method for executing resume tasks during a suspend routine
US7017037B2 (en) 2002-06-27 2006-03-21 Microsoft Corporation Apparatus and method to decrease boot time and hibernate awaken time of a computer system utilizing disk spin-up-time
US7523323B2 (en) * 2005-09-15 2009-04-21 Intel Corporation Method and apparatus for quick resumption
US7793127B2 (en) 2005-12-30 2010-09-07 Intel Corporation Processor state restoration and method for resume
US7519808B2 (en) * 2006-04-25 2009-04-14 Apple Inc. Method and apparatus for quickly reanimating devices from hibernation
JP2007334383A (ja) * 2006-06-12 2007-12-27 Sony Corp 情報処理装置とその起動方法およびプログラム
US7971081B2 (en) 2007-12-28 2011-06-28 Intel Corporation System and method for fast platform hibernate and resume
JP5207792B2 (ja) * 2008-02-19 2013-06-12 キヤノン株式会社 情報処理装置及び情報処理方法
US8621144B2 (en) 2008-06-26 2013-12-31 Intel Corporation Accelerated resume from hibernation in a cached disk system
JP4399020B1 (ja) * 2008-08-26 2010-01-13 株式会社東芝 情報処理装置およびメモリ管理方法
US20110107020A1 (en) * 2009-10-30 2011-05-05 Duan Binghua Hibernation solution for embedded devices and systems
US8694764B2 (en) 2011-02-24 2014-04-08 Microsoft Corporation Multi-phase resume from hibernate

Also Published As

Publication number Publication date
CN102708064B (zh) 2016-12-14
CN102708064A (zh) 2012-10-03
EP2678775A2 (en) 2014-01-01
JP2014506708A (ja) 2014-03-17
US20140164751A1 (en) 2014-06-12
US20120221843A1 (en) 2012-08-30
US8533449B2 (en) 2013-09-10
WO2012161777A2 (en) 2012-11-29
WO2012161777A3 (en) 2013-02-28
US20120221875A1 (en) 2012-08-30
US8694764B2 (en) 2014-04-08
US9075629B2 (en) 2015-07-07
EP2678775A4 (en) 2015-08-05
KR20140014146A (ko) 2014-02-05

Similar Documents

Publication Publication Date Title
JP5911892B2 (ja) ハイバネイトからの多段レジューム
US10417009B2 (en) Fast computer startup
AU2010365029B2 (en) Fast computer startup
CN101650660B (zh) 从中央存储装置引导计算机系统
US9411607B2 (en) Fast computer startup
JP2001022464A (ja) ハイバネーション装置及び方法、それを格納した記録媒体並びにそれを適用したコンピュータ
JP5426576B2 (ja) 仮想化技術を利用したデータ入出力方法及び装置
US10394571B2 (en) Passing data from a host-based utility to a service processor
EP2869189A1 (en) Boot up of a multiprocessor computer
US9760484B2 (en) Data processing method and electronic device
TWI559227B (zh) 具有內建雙可隨機關閉開啟電源作業裝置的電腦系統
JP2012174031A (ja) 情報処理装置、情報処理装置の起動方法、プログラム

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150127

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150127

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160217

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: 20160301

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160330

R150 Certificate of patent or registration of utility model

Ref document number: 5911892

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees