JP2022542212A - カーネルサポートを用いたデュラブルサービスに基づく耐障害オペレーティングシステムを構築すること - Google Patents

カーネルサポートを用いたデュラブルサービスに基づく耐障害オペレーティングシステムを構築すること Download PDF

Info

Publication number
JP2022542212A
JP2022542212A JP2021572867A JP2021572867A JP2022542212A JP 2022542212 A JP2022542212 A JP 2022542212A JP 2021572867 A JP2021572867 A JP 2021572867A JP 2021572867 A JP2021572867 A JP 2021572867A JP 2022542212 A JP2022542212 A JP 2022542212A
Authority
JP
Japan
Prior art keywords
service
handle
checkpoint
restarted
sending
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.)
Pending
Application number
JP2021572867A
Other languages
English (en)
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.)
Meta Platforms Technologies LLC
Original Assignee
Meta Platforms Technologies LLC
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 Meta Platforms Technologies LLC filed Critical Meta Platforms Technologies LLC
Publication of JP2022542212A publication Critical patent/JP2022542212A/ja
Pending legal-status Critical Current

Links

Images

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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Retry When Errors Occur (AREA)

Abstract

一実施形態では、方法は、サービスのために、チェックポイントを参照するハンドルを生成することと、サービスにハンドルを送ることであって、ハンドルが、チェックポイントにサービスの1つまたは複数の状態を記憶するために、サービスによって使用されるように構成された、ハンドルを送ることと、サービスが再起動される必要があると決定することと、サービスを再起動することと、チェックポイントのためのハンドルにアクセスすることと、再起動されたサービスにチェックポイントのためのハンドルを送ることであって、チェックポイントのためのハンドルが、1つまたは複数の状態を回復するために、再起動されたサービスによって使用されるように構成された、ハンドルを送ることとを含む。【選択図】図1

Description

本開示は、概して、オペレーティングシステムに関する。
オペレーティングシステム(OS)は、コンピュータハードウェアおよびソフトウェアリソースを管理し、コンピュータプログラムに共通サービスを提供する、システムソフトウェアである。タイムシェアリングオペレーティングシステムは、システムの効率的な使用のためにタスクをスケジュールし、プロセッサ時間、大容量ストレージ、印刷、および他のリソースのコスト割振りのためのアカウンティングソフトウェアをも含み得る。入力および出力ならびにメモリ割振りなど、ハードウェア機能のために、オペレーティングシステムは、プログラムとコンピュータハードウェアとの間の媒介として働くが、アプリケーションコードは、通常、ハードウェアによって直接的に実行され、OS機能へのシステムコールを頻繁に行うか、またはOS機能によって中断される。オペレーティングシステムは、セルラーフォンおよびビデオゲームコンソールから、ウェブサーバおよびスーパーコンピュータまで、コンピュータを含んでいる多くのデバイス上で見られる。
コンピューティングにおいて、プロセスは、1つまたは多くのスレッドによって実行されているコンピュータプログラムのインスタンスである。プロセスは、プログラムコード、およびプログラムコードのアクティビティを含んでいる。オペレーティングシステム(OS)によっては、プロセスは、コンカレントに命令を実行する、実行の複数のスレッドからなり得る。コンピュータプログラムが、命令の受動的集合であるのに対して、プロセスは、それらの命令の実際の実行である。いくつかのプロセスは、同じプログラムに関連し得、たとえば、同じプログラムのいくつかのインスタンスを開くことは、しばしば、2つ以上のプロセスが実行されていることを生じる。プロセス管理は、任意の今日のオペレーティングシステム(OS)の一体部分である。OSは、プロセスにリソースを割り振り、プロセスが情報を共有および交換することができるようにし、他のプロセスから各プロセスのリソースを保護し、プロセス間の同期ができるようにしなければならない。これらの要件を満たすために、OSは、各プロセスのために、そのプロセスの状態およびリソース所有権を説明し、OSが各プロセスに対して制御を及ぼすことができるようにする、データ構造を維持しなければならない。
特定の実施形態では、コンピューティングシステムのオペレーティングシステムは、オペレーティングシステムを再起動することなしに、マイクロカーネルにおいて、クラッシュしたサービスを効果的に復元し得る。オペレーティングシステムは、複数のサービスを走らせ得るが、複数のサービスのうちのいくつかが、クラッシュしたか、または再起動されなければならない場合、適切なデータが失われ得、これは、システムが再起動されなければならない場合、オペレーティングシステムにとって有害であり得る。そのような問題に対処するために、本明細書で開示される実施形態は、オペレーティングシステムを再起動することなしに、クラッシュしたサービスを再起動し、クラッシュしたサービスのクラッシュ前状態を回復することができる、耐障害オペレーティングシステムを構築し得る。必須の技法は、マイクロカーネルによって提供されるAPIを通してマイクロカーネルを用いて専用のコントラクトを確立することによって、各サービスの状態を維持することを含み得る。コントラクトは、サービスが、サービスの状態、詳細には、自動的に復元され得ない状態をチェックポイントすることができる、メモリの専用のページを提供し得る。追加として、あるサービスに提供されるページは、他のサービスに提供されるページから分離され得、したがって、クラッシュがあった場合、状態を破損する見込みは低い。限定ではなく、例として、オペレーティングシステムにおけるローンチャサービスが、ローンチされ、現在アクティブに走っている、すべてのサービスを追跡することを担当し得る。オペレーティングシステムが、サービスリストを実装するとき、オペレーティングシステムは、ローンチャサービスに、ローンチされたすべてのサービスを反復することを要求し得る。クラッシュがあったとき、オペレーティングシステムは、カーネルAPIを介して、同じページまたはページのセットにおいてローンチャサービスのためのチェックポイントを見つけ、チェックポイントへのハンドルを取得し得る。ローンチャサービスの再起動中に、ローダサービスは、新たに開始されたローンチャサービスにハンドルを転送する。ハンドルを通して、ローンチャサービスは、クラッシュするより前のローンチャサービスの状態を読み出すことができる。本開示は、特定の様式で特定のシステムを介して特定の状態を回復することを説明するが、本開示は、任意の好適な様式で任意の好適なシステムを介して任意の好適な状態を回復することを企図する。
特定の実施形態では、動作システムは、第1のサービスのために、チェックポイントを参照するハンドルを生成し得る。オペレーティングシステムは、次いで、第1のサービスにハンドルを送り得る。ハンドルは、チェックポイントに第1のサービスの1つまたは複数の状態を記憶するために、サービスによって使用されるように構成され得る。特定の実施形態では、オペレーティングシステムは、第1のサービスが再起動される必要があると決定し得る。オペレーティングシステムは、次いで、第1のサービスを再起動し得る。オペレーティングシステムは、さらに、チェックポイントのためのハンドルにアクセスし得る。特定の実施形態では、オペレーティングシステムは、再起動された第1のサービスにチェックポイントのためのハンドルを送り得る。チェックポイントのためのハンドルは、1つまたは複数の状態を回復するために、再起動された第1のサービスによって使用されるように構成され得る。
本発明の実施形態は、人工現実システムを含むこと、または人工現実システムとともに実施されることが可能である。人工現実とは、ユーザへの提示の前に何らかの様式で調整された現実の一形態であり、この形態は、たとえば、仮想現実(VR)、拡張現実(AR)、複合現実(MR)、ハイブリッド現実、またはそれらの何らかの組合せおよび/もしくは派生物を含み得る。人工現実コンテンツは、完全に生成されたコンテンツ、または取り込まれたコンテンツ(たとえば、現実世界の写真)と組み合わされた生成されたコンテンツを含み得る。人工現実コンテンツは、ビデオ、オーディオ、触覚フィードバック、またはそれらの何らかの組合せを含むことが可能であり、それらのいずれも、単一のチャネルで、または複数のチャネル(視聴者に対する3次元効果をもたらすステレオビデオなど)で提示され得る。加えて、いくつかの実施形態では、たとえば、人工現実においてコンテンツを作成するために使用される、および/または人工現実において使用される(たとえば、人工現実において活動を実行する)アプリケーション、製品、付属物、サービス、またはそれらの何らかの組合せに人工現実が関連付けられ得る。人工現実コンテンツを提供する人工現実システムは、ホストコンピュータシステムに接続されているヘッドマウントディスプレイ(HMD)、スタンドアロンのHMD、モバイルデバイスもしくはコンピューティングシステム、または、1人もしくは複数の視聴者に人工現実コンテンツを提供することが可能な任意のその他のハードウェアプラットフォームを含むさまざまなプラットフォーム上で実施され得る。
本発明によれば、コンピューティングデバイス上で実行するオペレーティングシステムによって、第1のサービスのために、チェックポイントを参照するハンドルを生成することと、第1のサービスにハンドルを送ることであって、ハンドルが、チェックポイントに第1のサービスの1つまたは複数の状態を記憶するために、第1のサービスによって使用されるように構成された、ハンドルを送ることと、第1のサービスが再起動される必要があると決定することと、第1のサービスを再起動することと、チェックポイントのためのハンドルにアクセスすることと、再起動された第1のサービスにチェックポイントのためのハンドルを送ることであって、チェックポイントのためのハンドルが、1つまたは複数の状態を回復するために、再起動された第1のサービスによって使用されるように構成された、ハンドルを送ることとを備える方法が提供される。
随意に、第1のサービスは、モニタに関連する。随意に、第1のサービスが再起動される必要があると決定することは、モニタに基づく。
随意に、方法は、チェックポイントのための第1のキーを生成することをさらに備える。随意に、チェックポイントのためのハンドルにアクセスすることは、第1のキーに基づく。
随意に、第1のサービスは、オペレーティングシステムのコンポーネントである。
随意に、第1のサービスが再起動される必要があると決定することは、第1のサービスが無応答であるという指示に基づく。
随意に、ハンドルにアクセスすることは、複数のサービスに対応する複数のエントリを備えるサービスキーインデックスにアクセスすることを備える。随意に、サービスキーインデックス中の各エントリは、サービス識別子と、サービス識別子に関連付けられたキーとを備える。
第1のサービスは、随意に、第1のサービス識別子に関連付けられ得る。
随意に、ハンドルにアクセスすることは、第1のサービス識別子に基づいて、サービスキーインデックスから第1のキーを識別することをさらに備える。
随意に、ハンドルにアクセスすることは、識別された第1のキーに基づいて、複数のサービスに関連付けられた複数のチェックポイントを参照する複数のハンドルから、ハンドルを読み出すことをさらに備える。
随意に、1つまたは複数の状態の各々は、データ項目またはハンドルのうちの1つまたは複数を備える。
随意に、第1のサービスを再起動することは、1つまたは複数のマイクロカーネルあるいは第2のサービスを再起動することを必要としない。随意に、1つまたは複数のマイクロカーネルあるいは第2のサービスは、オペレーティングシステムのコンポーネントである。
本発明によれば、実行されたとき、第1のサービスのために、チェックポイントを参照するハンドルを生成することと、第1のサービスにハンドルを送ることであって、ハンドルが、チェックポイントに第1のサービスの1つまたは複数の状態を記憶するために、第1のサービスによって使用されるように構成された、ハンドルを送ることと、第1のサービスが再起動される必要があると決定することと、第1のサービスを再起動することと、チェックポイントのためのハンドルにアクセスすることと、再起動された第1のサービスにチェックポイントのためのハンドルを送ることであって、チェックポイントのためのハンドルが、1つまたは複数の状態を回復するために、再起動された第1のサービスによって使用されるように構成された、ハンドルを送ることとを行うように動作可能であるソフトウェアを具備する1つまたは複数のコンピュータ可読非一時的記憶媒体がさらに提供される。
随意に、第1のサービスは、モニタに関連する。第1のサービスが再起動される必要があると決定することは、随意に、モニタに基づき得る。
随意に、ソフトウェアは、実行されたとき、チェックポイントのための第1のキーを生成するようにさらに動作可能である。
随意に、ハンドルにアクセスすることは、複数のサービスに対応する複数のエントリを備えるサービスキーインデックスにアクセスすることを備え得る。随意に、サービスキーインデックス中の各エントリは、サービス識別子と、サービス識別子に関連付けられたキーとを備える。
第1のサービスは、第1のサービス識別子に関連付けられ得る。
ハンドルにアクセスすることは、随意に、第1のサービス識別子に基づいて、サービスキーインデックスから第1のキーを識別することをさらに備え得る。
ハンドルにアクセスすることは、随意に、識別された第1のキーに基づいて、複数のサービスに関連付けられた複数のチェックポイントを参照する複数のハンドルから、ハンドルを読み出すことをさらに備え得る。
随意に、1つまたは複数の状態の各々は、データ項目またはハンドルのうちの1つまたは複数を備える。
本発明によれば、1つまたは複数のプロセッサと、プロセッサによって実行可能な命令を備える、プロセッサに結合された非一時的メモリとを備え、プロセッサは、命令を実行するとき、第1のサービスのために、チェックポイントを参照するハンドルを生成することと、第1のサービスにハンドルを送ることであって、ハンドルが、チェックポイントに第1のサービスの1つまたは複数の状態を記憶するために、第1のサービスによって使用されるように構成された、ハンドルを送ることと、第1のサービスが再起動される必要があると決定することと、第1のサービスを再起動することと、チェックポイントのためのハンドルにアクセスすることと、再起動された第1のサービスにチェックポイントのためのハンドルを送ることであって、チェックポイントのためのハンドルが、1つまたは複数の状態を回復するために、再起動された第1のサービスによって使用されるように構成された、ハンドルを送ることとを行うように動作可能である、システムがまたさらに提供される。
本明細書に開示されている実施形態は、例にすぎず、本開示の範囲は、それらに限定されない。特定の実施形態は、本明細書に開示されている実施形態のコンポーネント、要素、特徴、機能、オペレーション、またはステップのうちのすべてを含むこと、いくつかを含むこと、またはいずれも含まないことが可能である。本発明による実施形態は、詳細には、方法、ストレージメディア、システム、およびコンピュータプログラム製品を対象とした添付の特許請求の範囲に開示されており、1つの請求項カテゴリー、たとえば方法で言及されている任意の特徴が、別の請求項カテゴリー、たとえばシステムでも特許請求されることが可能である。添付の特許請求の範囲での従属関係または後方参照は、形式上の理由でのみ選ばれている。しかしながら、任意の前の請求項への意図的な後方参照(とりわけ複数の従属関係)から生じる任意の主題が特許請求されることも可能であり、それによって、請求項どうしおよびその特徴どうしの任意の組合せが開示され、添付の特許請求の範囲で選ばれている従属関係に関係なく特許請求されることが可能である。特許請求されることが可能である主題は、添付の特許請求の範囲に示されている特徴どうしの組合せだけでなく、特許請求の範囲における特徴どうしの任意のその他の組合せも含み、特許請求の範囲で言及されているそれぞれの特徴は、特許請求の範囲における任意のその他の特徴またはその他の特徴どうしの組合せと組み合わされることが可能である。さらに、本明細書に記述されているまたは示されている実施形態および特徴のうちのいずれも、個別の請求項で、および/あるいは本明細書に記述されているもしくは示されている任意の実施形態もしくは特徴との、または添付の特許請求の範囲の特徴のうちのいずれかとの任意の組合せで特許請求されることが可能である。
サービスを再起動することに関連付けられたハンドルテーブル値の再構成の例示的なダイヤグラムフローを図示する図である。 サービスの状態を回復するための例示的な方法を図示する図である。 例示的なコンピュータシステムを示す図である。
特定の実施形態では、コンピューティングシステムのオペレーティングシステムは、オペレーティングシステムを再起動することなしに、マイクロカーネルにおいて、クラッシュしたサービスを効果的に復元し得る。オペレーティングシステムは、複数のサービスを走らせ得るが、複数のサービスのうちのいくつかが、クラッシュしたか、または再起動されなければならない場合、適切なデータが失われ得、これは、システムが再起動されなければならない場合、オペレーティングシステムにとって有害であり得る。そのような問題に対処するために、本明細書で開示される実施形態は、オペレーティングシステムを再起動することなしに、クラッシュしたサービスを再起動し、クラッシュしたサービスのクラッシュ前状態を回復することができる、耐障害オペレーティングシステムを構築し得る。必須の技法は、マイクロカーネルによって提供されるAPIを通してマイクロカーネルを用いて専用のコントラクトを確立することによって、各サービスの状態を維持することを含み得る。コントラクトは、サービスが、サービスの状態、詳細には、自動的に復元され得ない状態をチェックポイントすることができる、メモリの専用のページを提供し得る。追加として、あるサービスに提供されるページは、他のサービスに提供されるページから分離され得、したがって、クラッシュがあった場合、状態を破損する見込みは低い。限定ではなく、例として、オペレーティングシステムにおけるローンチャサービスが、ローンチされ、現在アクティブに走っている、すべてのサービスを追跡することを担当し得る。オペレーティングシステムが、サービスリストを実装するとき、オペレーティングシステムは、ローンチャサービスに、ローンチされたすべてのサービスを反復することを要求し得る。クラッシュがあったとき、オペレーティングシステムは、カーネルAPIを介して、同じページまたはページのセットにおいてローンチャサービスのためのチェックポイントを見つけ、チェックポイントへのハンドルを取得し得る。ローンチャサービスの再起動中に、ローダサービスは、新たに開始されたローンチャサービスにハンドルを転送する。ハンドルを通して、ローンチャサービスは、クラッシュするより前のローンチャサービスの状態を読み出すことができる。本開示は、特定の様式で特定のシステムを介して特定の状態を回復することを説明するが、本開示は、任意の好適な様式で任意の好適なシステムを介して任意の好適な状態を回復することを企図する。
特定の実施形態では、動作システムは、第1のサービスのために、チェックポイントを参照するハンドルを生成し得る。オペレーティングシステムは、次いで、第1のサービスにハンドルを送り得る。ハンドルは、チェックポイントに第1のサービスの1つまたは複数の状態を記憶するために、第1のサービスによって使用されるように構成され得る。特定の実施形態では、オペレーティングシステムは、第1のサービスが再起動される必要があると決定し得る。オペレーティングシステムは、次いで、第1のサービスを再起動し得る。オペレーティングシステムは、さらに、チェックポイントのためのハンドルにアクセスし得る。特定の実施形態では、オペレーティングシステムは、再起動された第1のサービスにチェックポイントのためのハンドルを送り得る。チェックポイントのためのハンドルは、1つまたは複数の状態を回復するために、再起動された第1のサービスによって使用されるように構成され得る。
特定の実施形態では、第1のサービスは、オペレーティングシステムのコンポーネントであり得る。第1のサービスは、オペレーティングシステムのマイクロカーネルから分離していてもよい。その結果、第1のサービスがクラッシュした場合でも、第1のサービスは、オペレーティングシステム全体をクラッシュさせない。しかしながら、クラッシュしたサービスを復元するための機構が必要であるので、分離のみでは、システム信頼性を改善するのに十分でないことがある。加えて、マイクロカーネルに基づくオペレーティングシステムは、マイクロカーネルにストレージを有しないことがある。マイクロカーネルは、IOへのアクセスを有せず、メモリへのアクセスのみを有し得、これにより、クラッシュしたサービスを復元するための機構が必要とされ得る。本明細書で開示される実施形態は、サービスに関連付けられた状態を記憶するチェックポイントに基づくそのような機構を提供し、サービスがクラッシュした後、オペレーティングシステムが状態を回復する必要がある場合、マイクロカーネルがサービスの状態を追跡することができるようにし得る。本開示は、特定の様式の特定のシステムにおける特定のサービスを説明するが、本開示は、任意の好適な様式の任意の好適なシステムにおける任意の好適なサービスを企図する。
特定の実施形態では、新しいサービスが開始するたびに、管理サービスは、新しいサービスに何らかのハンドルを割り当て得る。限定ではなく、例として、管理サービスは、ローダサービスを備え得る。ハンドルは、プロセス、スレッド、ソケット、チャネルまたは割込みなど、カーネルオブジェクトを参照するために、システムコールによって使用され得る。特定の実施形態では、ハンドルは、チェックポイントを参照し得る。特定の実施形態では、ハンドルは、タイプ(ジョブ、プロセス、ソケット、チャネル、割込みなど)、ハンドルに関連付けられたアクセス権、カーネルオブジェクトへのポインタ、内部参照カウント、状態フラグ(フリー、アクティブ、クローズドなど)、特定のプロセスによって使用中であるハンドルをトラッキングするためのリンクリストまたはビットマップを含む、以上の属性を有し得る。各サービスにハンドルを割り当てることの技術的利点は、ハンドルを割り当てることが、異なるサービスの間の厳密な分離を提供することを含み得る。この点において、ハンドルは、サービスにわたって固有ではないが、ハンドルに関連付けられた同じハンドル値は、異なるサービスにおける異なるカーネルオブジェクトを参照することができる。本開示は、特定の様式の特定のシステムにおける特定のハンドルを説明するが、本開示は、任意の好適な様式の任意の好適なシステムにおける任意の好適なハンドルを企図する。
特定の実施形態では、1つまたは複数の状態の各々は、データ項目またはハンドルのうちの1つまたは複数を備え得る。特定の実施形態では、メモリ領域(たとえば、ページ)が、サービスの状態をチェックポイントすることを要求するサービスに、サービスに関連付けられたドメインに基づいて提供され得る。メモリ領域は、状態を記憶するために使用され得る。ドメイン内で、各サービスは、サービスの専用のページに対応するサービス自体のアドレススパンを有し得る。マイクロカーネルは、アドレススパンの中に状態をチェックポイントし、サービスが再起動されたとき、状態を回復し得る。限定ではなく、例として、ローンチャサービスは、登録された状態バケットを含み得るドメインワンであり得る。ローンチャサービスがクラッシュしたとき、(たとえば、ローダサービスを介して)オペレーティングシステムは、マイクロカーネルに、サービスに関連付けられたページを要求し得る。マイクロカーネルは、チェックポイントを参照するハンドルを返し得る。ハンドルに基づいて、チェックポイントは、ドメインワンに属するページを読み出すためにアクセスされ得る。本開示は、特定の様式の特定のシステムにおける特定のメモリ領域を説明するが、本開示は、任意の好適な様式の任意の好適なシステムにおける任意の好適なメモリ領域を企図する。
特定の実施形態では、第1のサービスは、第1のサービスのタイプに基づいて、どの状態をチェックポイントすべきかを決定し得る。限定ではなく、例として、ローンチャサービスの場合、ローンチャサービスは、多くのデータを有し得る。ローンチャサービスは、どのくらいのメモリが消費されており、どれくらいの他のリソースがまだ利用可能であるかの状態を追跡し得る。これらの状態は、回復しやすく、したがって、ローンチャサービスは、これらの状態をチェックポイントしないことがある。ローンチャサービスは、代わりに、回復することがより困難である状態をチェックポイントし得る。特定の実施形態では、オペレーティングシステムは、さらに、チェックポイントのための第1のキーを生成し得る。後でチェックポイントのためのハンドルにアクセスすることは、第1のキーに基づき得る。本開示は、特定の様式で特定のシステムを介して特定の状態を記憶することを説明するが、本開示は、任意の好適な様式で任意の好適なシステムを介して任意の好適な状態を記憶することを企図する。
特定の実施形態では、第1のサービスは、モニタに関連し得る。第1のサービスが再起動される必要があると決定することは、モニタに基づき得る。特定の実施形態では、第1のサービスが再起動される必要があると決定することは、第1のサービスが無応答であるという指示に基づき得る。限定ではなく、例として、サービスのクラッシュは、サービスが無応答であることを引き起こし得る。特定の実施形態では、第1のサービスを再起動することは、1つまたは複数のマイクロカーネルあるいは第2のサービスを再起動することを必要としないことがある。1つまたは複数のマイクロカーネルあるいは第2のサービスは、オペレーティングシステムのコンポーネントであり得る。本開示は、特定の様式で特定のシステムを介して特定の再起動を決定することを説明するが、本開示は、任意の好適な様式で任意の好適なシステムを介して任意の好適な再起動を決定することを企図する。
特定の実施形態では、ハンドルにアクセスすることは、複数のサービスに対応する複数のエントリを備えるサービスキーインデックスにアクセスすることを備え得る。サービスキーインデックス中の各エントリは、サービス識別子と、サービス識別子に関連付けられたキーとを備え得る。特定の実施形態では、第1のサービスは、第1のサービス識別子に関連付けられ得る。それゆえ、ハンドルにアクセスすることは、以下のステップをさらに備え得る。最初に、オペレーティングシステムは、第1のサービス識別子に基づいて、サービスキーインデックスから第1のキーを識別し得る。オペレーティングシステムは、次いで、識別された第1のキーに基づいて、複数のサービスに関連付けられた複数のチェックポイントを参照する複数のハンドルから、ハンドルを読み出し得る。本開示は、特定の様式で特定のシステムを介して特定のインデックスにアクセスすることを説明するが、本開示は、任意の好適な様式で任意の好適なシステムを介して任意の好適なインデックスにアクセスすることを企図する。
図1は、サービスを再起動することに関連付けられたハンドルテーブル値の再構成の例示的なダイヤグラムフロー100を図示する。特定の実施形態では、ハンドルは、オブジェクトを指し得、マイクロカーネル104における実際のオブジェクト102自体からなり得る。マイクロカーネル104は、新しいサービスのための1つまたは複数のハンドルに関連付けられたハンドルテーブル106を作成し得る。図1中に表示されているように、新しいサービスは、2つのハンドル、換言すれば、HおよびHを有し得るSで表され得る。ハンドルテーブルTが、2つのハンドルのために作成され得る。マイクロカーネル104は、サービスのためのハンドルテーブル106中のハンドル値にハンドルを変換する必要があり得る。よって、ハンドルは、マイクロカーネル104がハンドルテーブル106を介してインデックス付けし得る不透明整数を有し得る。特定の実施形態では、各ハンドルは、ハンドルテーブル106に記憶された情報を有し得る。ハンドルに関連付けられた情報は、インデックス、生成フィールド、およびオフセットフィールをさらに備え得る、ハンドルID108を備え得る。図1中に指し示されているように、各ハンドルは、オブジェクト102を指し、換言すれば、Hは、オブジェクト1(obj)を指し、Hは、オブジェクト2(obj)を指し得る。ハンドルテーブル106中の各ハンドルのためのハンドル値は、サービスが再起動した場合、変化し得る。しかしながら、ハンドルのインデックスは、同じままであり得る。言い換えれば、サービスが前に有した不透明整数は、再作成されたハンドルテーブル106中の何に対してもマッピングしないことがあり、マイクロカーネル104は、ハンドルが指すオブジェクト102をロケートすることが可能でないことがある。その結果、オペレーティングシステムによって提供されるデュラブルサービスは、状態をチェックポイントするとき、ハンドルのリストもマイクロカーネル104に記憶されるべきであること、およびサービスが再起動するとき、ハンドルテーブル106が、それらのハンドルのために再作成されるべきであることを保証すべきである。図2中に表示されているように、マイクロカーネル104は、チェックポイントフォールトエリア110に、オブジェクト102を指す2つのハンドルを記憶し得る。図1中に表示されているように、2つのハンドルを記憶することは、ハンドルの記録、換言すれば、H’およびH’を生じ得る。特定の実施形態では、サービスがクラッシュしたとき、サービスのハンドルテーブル106は消え去り得る。サービスが再起動したとき、サービスは、専用のスペース(換言すれば、チェックポイントフォールトエリア110)を取り戻し得る。図1中に指し示されているように、再起動されたサービスは、SN+1として表される。再起動されたサービスは、2つのハンドルHおよびHを割り当てられ得る。マイクロカーネル104は、図1中でTN+1によって指し示されている、再起動されたサービスのためのハンドルテーブル106を再作成することによって、これらのハンドルが、再起動されたサービスにおいて依然としてアクティブなハンドルであることを確実にする必要があり得る。本開示は、特定の様式で特定のハンドルテーブルを再作成することの特定のダイヤグラムフローを説明するが、本開示は、任意の好適な様式で任意の好適なハンドルテーブルを再作成することの任意の好適なダイヤグラムフローを企図する。
図2は、サービスの状態を回復するための例示的な方法200を図示する。方法は、ステップ210において始まり得、そこで、オペレーティングシステムは、第1のサービスのために、チェックポイントを参照するハンドルを生成し得る。ステップ220において、オペレーティングシステムは、第1のサービスにハンドルを送り得、ハンドルは、チェックポイントに第1のサービスの1つまたは複数の状態を記憶するために、第1のサービスによって使用されるように構成される。ステップ230において、オペレーティングシステムは、第1のサービスが再起動される必要があると決定し得る。ステップ240において、オペレーティングシステムは、第1のサービスを再起動し得る。ステップ250において、オペレーティングシステムは、チェックポイントのためのハンドルにアクセスし得る。ステップ260において、オペレーティングシステムは、再起動された第1のサービスにチェックポイントのためのハンドルを送り得、チェックポイントのためのハンドルは、1つまたは複数の状態を回復するために、再起動された第1のサービスによって使用されるように構成される。特定の実施形態は、適切な場合には、図2の方法の1つまたは複数のステップを繰り返すことが可能である。本開示は、図2の方法の特定のステップを、特定の順序で生じるものとして記述および例示しているが、本開示は、図2の方法の任意の適切なステップが任意の適切な順序で生じることを想定している。その上、本開示は、図2の方法の特定のステップを含む、サービスの状態を回復するための例示的な方法を説明および図示するが、本開示は、適切な場合、図2の方法のステップのすべてまたはいくつかを含むか、あるいはステップのいずれも含まないことがある、任意の好適なステップを含む、サービスの状態を回復するための任意の好適な方法を企図する。さらに、本開示は、図2の方法の特定のステップを実行する特定のコンポーネント、デバイス、またはシステムを記述および例示しているが、本開示は、図2の方法の任意の適切なステップを実行する任意の適切なコンポーネント、デバイス、またはシステムの任意の適切な組合せを想定している。
本発明の実施形態は、人工現実システムを含むこと、または人工現実システムとともに実施されることが可能である。人工現実とは、ユーザへの提示の前に何らかの様式で調整された現実の一形態であり、この形態は、たとえば、仮想現実(VR)、拡張現実(AR)、複合現実(MR)、ハイブリッド現実、またはそれらの何らかの組合せおよび/もしくは派生物を含み得る。人工現実コンテンツは、完全に生成されたコンテンツ、または取り込まれたコンテンツ(たとえば、現実世界の写真)と組み合わされた生成されたコンテンツを含み得る。人工現実コンテンツは、ビデオ、オーディオ、触覚フィードバック、またはそれらの何らかの組合せを含むことが可能であり、それらのいずれも、単一のチャネルで、または複数のチャネル(視聴者に対する3次元効果をもたらすステレオビデオなど)で提示され得る。加えて、いくつかの実施形態では、たとえば、人工現実においてコンテンツを作成するために使用される、および/または人工現実において使用される(たとえば、人工現実において活動を実行する)アプリケーション、製品、付属物、サービス、またはそれらの何らかの組合せに人工現実が関連付けられ得る。人工現実コンテンツを提供する人工現実システムは、ホストコンピュータシステムに接続されているヘッドマウントディスプレイ(HMD)、スタンドアロンのHMD、モバイルデバイスもしくはコンピューティングシステム、または、1人もしくは複数の視聴者に人工現実コンテンツを提供することが可能な任意のその他のハードウェアプラットフォームを含むさまざまなプラットフォーム上で実施され得る。
図3は、例示的なコンピュータシステム300を図示する。特定の実施形態では、1つまたは複数のコンピュータシステム300が、本明細書に記述または例示されている1つまたは複数の方法の1つまたは複数のステップを実行する。特定の実施形態では、1つまたは複数のコンピュータシステム300が、本明細書に記述または例示されている機能性を提供する。特定の実施形態では、1つまたは複数のコンピュータシステム300上で稼働するソフトウェアが、本明細書に記述もしくは例示されている1つもしくは複数の方法の1つもしくは複数のステップを実行し、または本明細書に記述もしくは例示されている機能性を提供する。特定の実施形態は、1つまたは複数のコンピュータシステム300の1つまたは複数の部分を含む。本明細書では、コンピュータシステムへの言及は、適切な場合には、コンピューティングデバイスを包含することが可能であり、その逆もまた同様である。その上、コンピュータシステムへの言及は、適切な場合には、1つまたは複数のコンピュータシステムを包含し得る。
本開示は、任意の適切な数のコンピュータシステム300を想定している。本開示は、任意の適切な物理的な形態を取るコンピュータシステム300を想定している。限定ではなく、例として、コンピュータシステム300は、組み込みコンピュータシステム、システムオンチップ(SOC)、シングルボードコンピュータシステム(SBC)(たとえば、コンピュータオンモジュール(COM)もしくはシステムオンモジュール(SOM)など)、デスクトップコンピュータシステム、ラップトップもしくはノートブックコンピュータシステム、インタラクティブキオスク、メインフレーム、コンピュータシステムのメッシュ、モバイル電話、携帯情報端末(PDA)、サーバ、タブレットコンピュータシステム、拡張/仮想現実デバイス、またはこれらのうちの2つ以上の組合せであり得る。適切な場合には、コンピュータシステム300は、1つもしくは複数のコンピュータシステム300を含むこと、単一型もしくは分散型であること、複数の場所にわたること、複数のマシンにわたること、複数のデータセンターにわたること、または、クラウド(1つもしくは複数のネットワークにおける1つもしくは複数のクラウドコンポーネントを含み得る)に存在することが可能である。適切な場合には、1つまたは複数のコンピュータシステム300は、本明細書に記述または例示されている1つまたは複数の方法の1つまたは複数のステップを、実質的な空間上のまたは時間上の制限を伴わずに実行し得る。限定ではなく、例として、1つまたは複数のコンピュータシステム300は、本明細書に記述または例示されている1つまたは複数の方法の1つまたは複数のステップをリアルタイムで、またはバッチモードで実行し得る。1つまたは複数のコンピュータシステム300は、適切な場合には、本明細書に記述または例示されている1つまたは複数の方法の1つまたは複数のステップを別々の時点で、または別々の場所で実行し得る。
特定の実施形態では、コンピュータシステム300は、プロセッサ302、メモリ304、ストレージ306、入力/出力(I/O)インターフェース308、通信インターフェース310、およびバス312を含む。本開示は、特定の数の特定のコンポーネントを特定の構成で有する特定のコンピュータシステムを記述および例示しているが、本開示は、任意の適切な数の任意の適切なコンポーネントを任意の適切な構成で有する任意の適切なコンピュータシステムを想定している。
特定の実施形態では、プロセッサ302は、コンピュータプログラムを構成している命令などの命令を実行するためのハードウェアを含む。限定ではなく、例として、命令を実行するために、プロセッサ302は、内部レジスタ、内部キャッシュ、メモリ304、またはストレージ306から命令を取り出し(またはフェッチし)、それらの命令をデコードして実行し、次いで1つまたは複数の結果を内部レジスタ、内部キャッシュ、メモリ304、またはストレージ306に書き込むことが可能である。特定の実施形態では、プロセッサ302は、データ、命令、またはアドレスのための1つまたは複数の内部キャッシュを含み得る。本開示は、適切な場合には、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ302を想定している。限定ではなく、例として、プロセッサ302は、1つまたは複数の命令キャッシュ、1つまたは複数のデータキャッシュ、および1つまたは複数の変換ルックアサイドバッファ(TLB)を含み得る。命令キャッシュにおける命令は、メモリ304またはストレージ306における命令のコピーであり得、命令キャッシュは、プロセッサ302によるそれらの命令の取り出しをスピードアップし得る。データキャッシュにおけるデータは、プロセッサ302において実行する命令が動作する際に基づくメモリ304もしくはストレージ306におけるデータのコピー、プロセッサ302において実行する後続の命令によるアクセスのための、またはメモリ304もしくはストレージ306への書き込みのためのプロセッサ302において実行された以前の命令の結果、あるいはその他の適切なデータであり得る。データキャッシュは、プロセッサ302による読み取りまたは書き込みオペレーションをスピードアップし得る。TLBは、プロセッサ302のための仮想アドレス変換をスピードアップし得る。特定の実施形態では、プロセッサ302は、データ、命令、またはアドレスのための1つまたは複数の内部レジスタを含み得る。本開示は、適切な場合には、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ302を想定している。適切な場合には、プロセッサ302は、1つもしくは複数の演算ロジックユニット(ALU)を含むこと、マルチコアプロセッサであること、または1つもしくは複数のプロセッサ302を含むことが可能である。本開示は、特定のプロセッサを記述および例示しているが、本開示は、任意の適切なプロセッサを想定している。
特定の実施形態では、メモリ304は、プロセッサ302が実行するための命令、またはプロセッサ302が動作する際に基づくデータを格納するためのメインメモリを含む。限定ではなく、例として、コンピュータシステム300は、命令をストレージ306または別のソース(たとえば、別のコンピュータシステム300など)からメモリ304へロードし得る。プロセッサ302は次いで、命令をメモリ304から内部レジスタまたは内部キャッシュへロードし得る。命令を実行するために、プロセッサ302は、命令を内部レジスタまたは内部キャッシュから取り出し、それらの命令をデコードし得る。命令の実行中または実行後に、プロセッサ302は、1つまたは複数の結果(それらは、中間のまたは最終的な結果であり得る)を内部レジスタまたは内部キャッシュに書き込み得る。プロセッサ302は次いで、それらの結果のうちの1つまたは複数をメモリ304に書き込み得る。特定の実施形態では、プロセッサ302は、(ストレージ306またはその他の場所ではなく)1つもしくは複数の内部レジスタもしくは内部キャッシュにおける、またはメモリ304における命令のみを実行し、(ストレージ306またはその他の場所ではなく)1つもしくは複数の内部レジスタもしくは内部キャッシュにおける、またはメモリ304におけるデータ上でのみ動作する。1つまたは複数のメモリバス(それらはそれぞれ、アドレスバスおよびデータバスを含み得る)は、プロセッサ302をメモリ304に結合し得る。バス312は、以降で記述されているような1つまたは複数のメモリバスを含み得る。特定の実施形態では、1つまたは複数のメモリ管理ユニット(MMU)が、プロセッサ302とメモリ304との間に存在し、プロセッサ302によって要求されるメモリ304へのアクセスを容易にする。特定の実施形態では、メモリ304は、ランダムアクセスメモリ(RAM)を含む。このRAMは、適切な場合には、揮発性メモリであり得る。適切な場合には、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であり得る。その上、適切な場合には、このRAMは、シングルポートRAMまたはマルチポートRAMであり得る。本開示は、任意の適切なRAMを想定している。メモリ304は、適切な場合には、1つまたは複数のメモリ304を含み得る。本開示は、特定のメモリを記述および例示しているが、本開示は、任意の適切なメモリを想定している。
特定の実施形態では、ストレージ306は、データまたは命令のためのマスストレージを含む。限定ではなく、例として、ストレージ306は、ハードディスクドライブ(HDD)、フロッピーディスクドライブ、フラッシュメモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサルシリアルバス(USB)ドライブ、またはこれらのうちの2つ以上の組合せを含み得る。ストレージ306は、適切な場合には、取り外し可能なまたは取り外し不能な(すなわち固定された)メディアを含み得る。ストレージ306は、適切な場合には、コンピュータシステム300の内部または外部にあり得る。特定の実施形態では、ストレージ306は、不揮発性のソリッドステートメモリである。特定の実施形態では、ストレージ306は、読み取り専用メモリ(ROM)を含む。適切な場合には、このROMは、マスクプログラムROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書替え可能ROM(EAROM)、またはフラッシュメモリ、またはこれらのうちの2つ以上の組合せであり得る。本開示は、任意の適切な物理的な形態を取るマスストレージ306を想定している。ストレージ306は、適切な場合には、プロセッサ302とストレージ306との間における通信を容易にする1つまたは複数のストレージ制御ユニットを含み得る。適切な場合には、ストレージ306は、1つまたは複数のストレージ306を含み得る。本開示は、特定のストレージを記述および例示しているが、本開示は、任意の適切なストレージを想定している。
特定の実施形態では、I/Oインターフェース308は、コンピュータシステム300と1つまたは複数のI/Oデバイスとの間における通信のための1つまたは複数のインターフェースを提供するハードウェア、ソフトウェア、または両方を含む。コンピュータシステム300は、適切な場合には、これらのI/Oデバイスのうちの1つまたは複数を含み得る。これらのI/Oデバイスのうちの1つまたは複数は、人とコンピュータシステム300との間における通信を可能にし得る。限定ではなく、例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカー、スチルカメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、別の適切なI/Oデバイス、またはこれらのうちの2つ以上の組合せを含み得る。I/Oデバイスは、1つまたは複数のセンサを含み得る。本開示は、任意の適切なI/Oデバイスと、それらのための任意の適切なI/Oインターフェース308とを想定している。適切な場合には、I/Oインターフェース308は、これらのI/Oデバイスのうちの1つまたは複数をプロセッサ302が駆動することを可能にする1つまたは複数のデバイスドライバまたはソフトウェアドライバを含み得る。I/Oインターフェース308は、適切な場合には、1つまたは複数のI/Oインターフェース308を含み得る。本開示は、特定のI/Oインターフェースを記述および例示しているが、本開示は、任意の適切なI/Oインターフェースを想定している。
特定の実施形態では、通信インターフェース310は、コンピュータシステム300と、1つもしくは複数のその他のコンピュータシステム300または1つもしくは複数のネットワークとの間における通信(たとえば、パケットベースの通信など)のための1つまたは複数のインターフェースを提供するハードウェア、ソフトウェア、または両方を含む。限定ではなく、例として、通信インターフェース310は、イーサネットもしくはその他の有線ベースのネットワークと通信するためのネットワークインターフェースコントローラ(NIC)もしくはネットワークアダプタ、またはWI-FIネットワークなどのワイヤレスネットワークと通信するためのワイヤレスNIC(WNIC)もしくはワイヤレスアダプタを含み得る。本開示は、任意の適切なネットワークと、そのネットワークのための任意の適切な通信インターフェース310とを想定している。限定ではなく、例として、コンピュータシステム300は、アドホックネットワーク、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、または、インターネットの1つもしくは複数の部分、またはこれらのうちの2つ以上の組合せと通信し得る。これらのネットワークのうちの1つまたは複数の1つまたは複数の部分は、有線またはワイヤレスであり得る。例として、コンピュータシステム300は、ワイヤレスPAN(WPAN)(たとえば、BLUETOOTH WPANなど)、WI-FIネットワーク、WI-MAXネットワーク、セルラー電話ネットワーク(たとえば、グローバルシステムフォーモバイルコミュニケーションズ(GSM)ネットワークなど)、またはその他の適切なワイヤレスネットワーク、またはこれらのうちの2つ以上の組合せと通信し得る。コンピュータシステム300は、適切な場合には、これらのネットワークのうちのいずれかのための任意の適切な通信インターフェース310を含み得る。通信インターフェース310は、適切な場合には、1つまたは複数の通信インターフェース310を含み得る。本開示は、特定の通信インターフェースを記述および例示しているが、本開示は、任意の適切な通信インターフェースを想定している。
特定の実施形態では、バス312は、コンピュータシステム300のコンポーネントどうしを互いに結合するハードウェア、ソフトウェア、または両方を含む。限定ではなく、例として、バス312は、アクセラレイティッドグラフィックスポート(AGP)もしくはその他のグラフィックスバス、エンハンストインダストリースタンダードアーキテクチャー(EISA)バス、フロントサイドバス(FSB)、ハイパートランスポート(HT)インターコネクト、インダストリースタンダードアーキテクチャー(ISA)バス、インフィニバンドインターコネクト、ローピンカウント(LPC)バス、メモリバス、マイクロチャネルアーキテクチャー(MCA)バス、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCIエクスプレス(PCIe)バス、シリアルアドバンストテクノロジーアタッチメント(SATA)バス、ビデオエレクトロニクススタンダーズアソシエーションローカル(VLB)バス、または別の適切なバス、またはこれらのうちの2つ以上の組合せを含み得る。バス312は、適切な場合には、1つまたは複数のバス312を含み得る。本開示は、特定のバスを記述および例示しているが、本開示は、任意の適切なバスまたはインターコネクトを想定している。
本明細書では、1つまたは複数のコンピュータ可読非一時的ストレージメディアは、適切な場合には、1つもしくは複数の半導体ベースのもしくはその他の集積回路(IC)(たとえば、フィールドプログラマブルゲートアレイ(FPGA)もしくは特定用途向けIC(ASIC)など)、ハードディスクドライブ(HDD)、ハイブリッドハードドライブ(HHD)、光ディスク、光ディスクドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピーディスケット、フロッピーディスクドライブ(FDD)、磁気テープ、ソリッドステートドライブ(SSD)、RAMドライブ、セキュアデジタルカードもしくはドライブ、任意のその他の適切なコンピュータ可読非一時的ストレージメディア、またはこれらのうちの2つ以上の任意の適切な組合せを含み得る。コンピュータ可読非一時的ストレージメディアは、適切な場合には、揮発性、不揮発性、または揮発性と不揮発性との組合せであり得る。
本明細書では、「または(もしくは)」は、包含的であり、排他的ではない(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。そのため、本明細書では、「AまたはB」は、「A、B、または両方」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。その上、「および(ならびに)」は、包括的および個別的の両方である(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。そのため、本明細書では、「AおよびB」は、「まとめて、または個別に、AおよびB」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。
本開示の範囲は、当技術分野における標準的な技術者が理解するであろう、本明細書に記述または例示されている例示的な実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。本開示の範囲は、本明細書に記述または例示されている例示的な実施形態に限定されない。その上、本開示は、本明細書におけるそれぞれの実施形態を、特定のコンポーネント、要素、特徴、機能、オペレーション、またはステップを含むものとして記述および例示しているが、これらの実施形態のいずれも、当技術分野における標準的な技術者が理解するであろう、本明細書の任意の箇所に記述または例示されているコンポーネント、要素、特徴、機能、オペレーション、またはステップのうちのいずれかの任意の組合せまたは順列を含み得る。さらに、特定の機能を実行するように適合されている、実行するようにアレンジされている、実行することが可能である、実行するように構成されている、実行することを可能にされている、実行するように機能できる、または実行するように機能する装置もしくはシステム、または装置もしくはシステムのコンポーネントへの添付の特許請求の範囲における言及は、その装置、システム、コンポーネント、またはその特定の機能が、アクティブ化されているか否か、オンにされているか否か、またはロック解除されているか否かを問わず、その装置、システム、またはコンポーネントが、そうするように適合されている、そうするようにアレンジされている、そうすることが可能である、そうするように構成されている、そうすることを可能にされている、そうするように機能できる、またはそうするように機能する限り、その装置、システム、コンポーネントを包含する。加えて、本開示は、特定の実施形態を、特定の利点を提供するものとして記述または例示しているが、特定の実施形態は、これらの利点のうちのいずれも提供しないこと、いくつかを提供すること、またはすべてを提供することが可能である。

Claims (15)

  1. コンピューティングデバイス上で実行されるオペレーティングシステムによって、
    第1のサービスのために、チェックポイントを参照するハンドルを生成することと、
    前記第1のサービスに前記ハンドルを送ることであって、前記ハンドルが、前記チェックポイントに前記第1のサービスの1つまたは複数の状態を記憶するために、前記第1のサービスによって使用されるように構成された、前記ハンドルを送ることと、
    前記第1のサービスが再起動される必要があると決定することと、
    前記第1のサービスを再起動することと、
    前記チェックポイントのための前記ハンドルにアクセスすることと、
    前記再起動された第1のサービスに前記チェックポイントのための前記ハンドルを送ることであって、前記チェックポイントのための前記ハンドルが、前記1つまたは複数の状態を回復するために、前記再起動された第1のサービスによって使用されるように構成された、前記ハンドルを送ることと
    を含む、方法。
  2. 前記第1のサービスが、モニタに関連し、前記第1のサービスが再起動される必要があると決定することが、前記モニタに基づく、請求項1に記載の方法。
  3. 前記チェックポイントのための第1のキーを生成することをさらに含み、前記チェックポイントのための前記ハンドルにアクセスすることが、前記第1のキーに基づく、請求項1に記載の方法。
  4. 前記第1のサービスが、前記オペレーティングシステムのコンポーネントであり、および/または前記第1のサービスが再起動される必要があると決定することは、前記第1のサービスが無応答であるという指示に基づく、請求項1に記載の方法。
  5. 前記ハンドルにアクセスすることが、複数のサービスに対応する複数のエントリを備えるサービスキーインデックスにアクセスすることを含み、前記サービスキーインデックス中の各エントリが、サービス識別子と、前記サービス識別子に関連付けられたキーとを備え、前記第1のサービスが、第1のサービス識別子に関連付けられ、前記ハンドルにアクセスすることが、
    前記第1のサービス識別子に基づいて、前記サービスキーインデックスから第1のキーを識別することと、前記識別された第1のキーに基づいて、複数のサービスに関連付けられた複数のチェックポイントを参照する複数のハンドルから、前記ハンドルを読み出すこととをさらに含む、請求項1に記載の方法。
  6. 前記1つまたは複数の状態の各々が、データ項目またはハンドルのうちの1つまたは複数を備える、請求項1に記載の方法。
  7. 前記第1のサービスを再起動することが、1つまたは複数のマイクロカーネルあるいは第2のサービスを再起動することを必要とせず、前記1つまたは複数のマイクロカーネルあるいは第2のサービスが、前記オペレーティングシステムのコンポーネントである、請求項1に記載の方法。
  8. ソフトウェアを具現化する1つまたは複数のコンピュータ可読非一時的記憶媒体であって、前記ソフトウェアは、実行されたとき、
    第1のサービスのために、チェックポイントを参照するハンドルを生成することと、
    前記第1のサービスに前記ハンドルを送ることであって、前記ハンドルが、前記チェックポイントに前記第1のサービスの1つまたは複数の状態を記憶するために、前記第1のサービスによって使用されるように構成された、前記ハンドルを送ることと、
    前記第1のサービスが再起動される必要があると決定することと、
    前記第1のサービスを再起動することと、
    前記チェックポイントのための前記ハンドルにアクセスすることと、
    前記再起動された第1のサービスに前記チェックポイントのための前記ハンドルを送ることであって、前記チェックポイントのための前記ハンドルが、前記1つまたは複数の状態を回復するために、前記再起動された第1のサービスによって使用されるように構成された、前記ハンドルを送ることと
    を行うように動作可能である、媒体。
  9. 前記第1のサービスが、モニタに関連し、前記第1のサービスが再起動される必要があると決定することが、前記モニタに基づく、請求項11に記載の媒体。
  10. 前記ソフトウェアが、実行されたとき、前記チェックポイントのための第1のキーを生成するようにさらに動作可能であり、前記チェックポイントのための前記ハンドルにアクセスすることが、前記第1のキーに基づく、請求項11に記載の媒体。
  11. 前記第1のサービスが、前記オペレーティングシステムのコンポーネントであり、および/または前記第1のサービスが再起動される必要があると決定することは、前記第1のサービスが無応答であるという指示に基づく、請求項11に記載の媒体。
  12. 前記ハンドルにアクセスすることが、複数のサービスに対応する複数のエントリを備えるサービスキーインデックスにアクセスすることを含み、前記サービスキーインデックス中の各エントリが、サービス識別子と、前記サービス識別子に関連付けられたキーとを備え、前記第1のサービスが、第1のサービス識別子に関連付けられ、前記ハンドルにアクセスすることが、
    前記第1のサービス識別子に基づいて、前記サービスキーインデックスから第1のキーを識別することと、前記識別された第1のキーに基づいて、複数のサービスに関連付けられた複数のチェックポイントを参照する複数のハンドルから、前記ハンドルを読み出すこととをさらに含む、請求項11に記載の媒体。
  13. 前記1つまたは複数の状態の各々が、データ項目またはハンドルのうちの1つまたは複数を備える、請求項11に記載の媒体。
  14. システムであって、1つまたは複数のプロセッサと、前記プロセッサによって実行可能な命令を備える、前記プロセッサに結合された非一時的メモリとを備え、前記プロセッサは、前記命令を実行するとき、
    第1のサービスのために、チェックポイントを参照するハンドルを生成することと、
    前記第1のサービスに前記ハンドルを送ることであって、前記ハンドルが、前記チェックポイントに前記第1のサービスの1つまたは複数の状態を記憶するために、前記第1のサービスによって使用されるように構成された、前記ハンドルを送ることと、
    前記第1のサービスが再起動される必要があると決定することと、
    前記第1のサービスを再起動することと、
    前記チェックポイントのための前記ハンドルにアクセスすることと、
    前記再起動された第1のサービスに前記チェックポイントのための前記ハンドルを送ることであって、前記チェックポイントのための前記ハンドルが、前記1つまたは複数の状態を回復するために、前記再起動された第1のサービスによって使用されるように構成された、前記ハンドルを送ることと
    を行うように動作可能である、システム。
  15. 前記命令が、前記1つまたは複数のプロセッサによって実行されたとき、前記システムに請求項2から8のいずれか一項に記載の方法を実行させる、請求項14に記載のシステム。
JP2021572867A 2019-08-01 2020-07-24 カーネルサポートを用いたデュラブルサービスに基づく耐障害オペレーティングシステムを構築すること Pending JP2022542212A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/529,678 US11366720B2 (en) 2019-08-01 2019-08-01 Building a resilient operating system based on durable services with kernel support
US16/529,678 2019-08-01
PCT/US2020/043571 WO2021021660A1 (en) 2019-08-01 2020-07-24 Building a resilient operating system based on durable services with kernel support

Publications (1)

Publication Number Publication Date
JP2022542212A true JP2022542212A (ja) 2022-09-30

Family

ID=72139659

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021572867A Pending JP2022542212A (ja) 2019-08-01 2020-07-24 カーネルサポートを用いたデュラブルサービスに基づく耐障害オペレーティングシステムを構築すること

Country Status (6)

Country Link
US (1) US11366720B2 (ja)
EP (1) EP4007952A1 (ja)
JP (1) JP2022542212A (ja)
KR (1) KR20220038053A (ja)
CN (1) CN114041120A (ja)
WO (1) WO2021021660A1 (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6401216B1 (en) * 1998-10-29 2002-06-04 International Business Machines Corporation System of performing checkpoint/restart of a parallel program
US7685172B2 (en) * 2007-04-27 2010-03-23 International Business Machines Corporation In-flight file descriptors checkpoint
US8549543B2 (en) * 2008-09-30 2013-10-01 International Business Machines Corporation Virtualize, checkpoint, and restart POSIX IPC objects during checkpointing and restarting of a software partition
US9507668B2 (en) * 2014-10-30 2016-11-29 Netapp, Inc. System and method for implementing a block-based backup restart
US9606877B2 (en) * 2015-05-18 2017-03-28 Facebook, Inc. Restoring non-transactional messages in queues for advertisement data flow processing
US11093332B2 (en) * 2019-05-03 2021-08-17 Dell Products L.P. Application checkpoint and recovery system

Also Published As

Publication number Publication date
EP4007952A1 (en) 2022-06-08
KR20220038053A (ko) 2022-03-25
US20210034408A1 (en) 2021-02-04
WO2021021660A1 (en) 2021-02-04
US11366720B2 (en) 2022-06-21
CN114041120A (zh) 2022-02-11

Similar Documents

Publication Publication Date Title
US8381032B2 (en) System-directed checkpointing implementation using a hypervisor layer
US9665386B2 (en) Method for leveraging hypervisor functionality for maintaining application consistent snapshots in a virtualization environment
US9870248B2 (en) Page table based dirty page tracking
US9164853B2 (en) Multi-core re-initialization failure control system
US9600369B2 (en) Operating system recovery method and apparatus, and terminal device
TWI496076B (zh) 上下文狀態管理技術
CN103064796B (zh) 虚拟机内存的共享方法与计算机系统
JP4783392B2 (ja) 情報処理装置および障害回復方法
US9201691B2 (en) Method, apparatus and system for coordinating execution of tasks in a computing system having a distributed shared memory
US11256533B1 (en) Transparent disk caching for virtual machines and applications
US9557980B2 (en) Seamless application integration apparatus and method
US9904567B2 (en) Limited hardware assisted dirty page logging
US8156510B2 (en) Process retext for dynamically loaded modules
US20140025903A1 (en) Multi-core processor system
US8145819B2 (en) Method and system for stealing interrupt vectors
US20160004539A1 (en) Operating environment switching between a primary and a secondary operating system
US11093332B2 (en) Application checkpoint and recovery system
US20220318053A1 (en) Method of supporting persistence and computing device
US20150212733A1 (en) Systems and methods for swapping pinned memory buffers
JP2022542212A (ja) カーネルサポートを用いたデュラブルサービスに基づく耐障害オペレーティングシステムを構築すること
US11526358B2 (en) Deterministic execution replay for multicore systems
US10990439B1 (en) Tracing task execution across services in microkernel-based operating systems
US10572365B2 (en) Verification for device management
TW201317781A (zh) 虛擬機器記憶體的分享方法與電腦系統
JP2022540750A (ja) コンピューティングデバイスのメモリ管理

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230519