IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オキュラス ブイアール,エルエルシーの特許一覧

特表2022-546906分割ストレージスタックのためのシステムおよび方法
<>
  • 特表-分割ストレージスタックのためのシステムおよび方法 図1
  • 特表-分割ストレージスタックのためのシステムおよび方法 図2
  • 特表-分割ストレージスタックのためのシステムおよび方法 図3
  • 特表-分割ストレージスタックのためのシステムおよび方法 図4
  • 特表-分割ストレージスタックのためのシステムおよび方法 図5
  • 特表-分割ストレージスタックのためのシステムおよび方法 図6
  • 特表-分割ストレージスタックのためのシステムおよび方法 図7
  • 特表-分割ストレージスタックのためのシステムおよび方法 図8
  • 特表-分割ストレージスタックのためのシステムおよび方法 図9
  • 特表-分割ストレージスタックのためのシステムおよび方法 図10
  • 特表-分割ストレージスタックのためのシステムおよび方法 図11
  • 特表-分割ストレージスタックのためのシステムおよび方法 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-11-10
(54)【発明の名称】分割ストレージスタックのためのシステムおよび方法
(51)【国際特許分類】
   G06F 13/10 20060101AFI20221102BHJP
   G06F 13/12 20060101ALI20221102BHJP
   G06F 3/06 20060101ALI20221102BHJP
   G06F 9/455 20060101ALI20221102BHJP
【FI】
G06F13/10 330C
G06F13/12 330D
G06F13/10 330A
G06F3/06 301Z
G06F9/455 150
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022500038
(86)(22)【出願日】2020-08-08
(85)【翻訳文提出日】2022-03-01
(86)【国際出願番号】 US2020045533
(87)【国際公開番号】W WO2021045868
(87)【国際公開日】2021-03-11
(31)【優先権主張番号】16/561,798
(32)【優先日】2019-09-05
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ブルートゥース
(71)【出願人】
【識別番号】515046968
【氏名又は名称】メタ プラットフォームズ テクノロジーズ, リミテッド ライアビリティ カンパニー
【氏名又は名称原語表記】META PLATFORMS TECHNOLOGIES, LLC
(74)【代理人】
【識別番号】110002974
【氏名又は名称】弁理士法人World IP
(72)【発明者】
【氏名】ロジャーズ, アンドリュー エム.
(72)【発明者】
【氏名】ポース, ベルンハルト
(72)【発明者】
【氏名】クルツォフ, グレブ
(57)【要約】
特定の実施形態において、方法は、オペレーティングシステムのユーザ空間内の第1のプロセスとしてアプリケーションを開始することを含む。本アプリケーションは、オペレーティングシステムと関連付けられたデータストレージシステムのインスタンスを生成する。本方法はまた、オペレーティングシステムのユーザ空間内の第2のプロセスとしてブロックデバイスサービスを開始することであって、ブロックデバイスサービスが、コンピューティングデバイスの永続ストレージデバイスを管理するように構成される、ブロックデバイスサービスを開始することを含む。加えて、本方法は、ブロックデバイスサービスと通信するためのアプリケーションからのシステムコール要求を、オペレーティングシステムのカーネルによって受信することを含み、システムコール要求は、データストレージシステムを使用してアプリケーションによって生成され、永続ストレージデバイスへアクセスするためのアクセス要求を含む。本方法は、システムコール要求に応答して、IPCチャネルを通じたブロックデバイスサービスへのアクセスをアプリケーションに提供することをさらに含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
コンピューティングデバイス上で実行するオペレーティングシステムによって、
前記オペレーティングシステムのユーザ空間内の第1のプロセスとしてアプリケーションを開始することであって、前記アプリケーションが、前記オペレーティングシステムと関連付けられたデータストレージシステムのインスタンスを生成する、アプリケーションを開始することと、
前記オペレーティングシステムの前記ユーザ空間内の第2のプロセスとしてブロックデバイスサービスを開始することであって、前記ブロックデバイスサービスが、前記コンピューティングデバイスの永続ストレージデバイスを管理するように構成される、ブロックデバイスサービスを開始することと、
前記オペレーティングシステムのカーネルによって、プロセス間通信(IPC)チャネルを通じて前記ブロックデバイスサービスと通信するためのシステムコール要求を受信することであって、前記システムコール要求が、前記データストレージシステムを使用して前記アプリケーションによって生成され、前記永続ストレージデバイスへアクセスするためのアクセス要求を含む、システムコール要求を受信することと、
前記システムコール要求に応答して、前記IPCチャネルを通じた前記ブロックデバイスサービスへのアクセスを前記アプリケーションに提供することとを含む、方法。
【請求項2】
前記データストレージシステムは、ファイルシステムライブラリまたはキー値ストアである、請求項1に記載の方法。
【請求項3】
前記システムコール要求に応答して、前記カーネルによって、前記アクセス要求を前記ブロックデバイスサービスへ送信することをさらに含む、請求項1に記載の方法。
【請求項4】
前記ブロックデバイスサービスに提供された前記アクセスに基づいて、前記永続ストレージデバイスのデータブロックに対してデータを読み出す、または書き込むことをさらに含む、請求項1に記載の方法。
【請求項5】
前記アプリケーションの設定中に論理ボリュームサービスに要求を送信することと、
前記アプリケーションにおいて、前記コンピューティングデバイスの前記永続ストレージデバイスにおける1つまたは複数のデータブロックの割り当てを受信することとをさらに含む、請求項1に記載の方法。
【請求項6】
a)前記論理ボリュームサービスが、前記永続ストレージデバイスにおける前記1つまたは複数のデータブロックの前記割り当てを前記ブロックデバイスサービスに通知すること、または
b)前記論理ボリュームサービスが、前記アプリケーションの前記1つまたは複数のデータブロックを、前記オペレーティングシステムの前記ユーザ空間内の第3のプロセスとして動作する別のアプリケーションに割り当てられた1つまたは複数の他のデータブロックと連係させること、または
c)前記論理ボリュームサービスが、前記1つまたは複数のデータブロックを前記アプリケーションおよび別のアプリケーションに割り当て、前記アプリケーションおよび前記別のアプリケーションが、前記1つまたは複数のデータブロックを共有し、この場合、任意選択的に、
前記別のアプリケーションが前記データブロックへの書き込みまたは読み出しを行った後に、前記永続ストレージデバイスにおける前記1つまたは複数のデータブロックを前記アプリケーションに再割り当てすることをさらに含むこと
のうちのいずれか1つである、請求項5に記載の方法。
【請求項7】
前記永続ストレージデバイスへアクセスするために別のアプリケーションによって別のアクセス要求を受信することと、
前記永続ストレージデバイスにおける1つまたは複数のデータブロックの割り当てに基づいて、前記別のアクセス要求を許諾または拒否することを決定することとをさらに含む、請求項1に記載の方法。
【請求項8】
前記ブロックデバイスサービスは、前記コンピューティングデバイスのハードウェアとインターフェースをとるのに十分にセキュアである、請求項1に記載の方法。
【請求項9】
追加のアクセス要求を前記論理ボリュームサービスに送信することと、
前記アプリケーションにおいて、前記コンピューティングデバイスの前記永続ストレージデバイスにおける1つまたは複数の追加のデータブロックの追加の割り当てを受信することとをさらに含む、請求項5に記載の方法。
【請求項10】
オペレーティングシステムのユーザ空間内の第1のプロセスとしてアプリケーションを開始することであって、前記アプリケーションが、前記オペレーティングシステムと関連付けられたデータストレージシステムのインスタンスを生成する、アプリケーションを開始することと、
前記オペレーティングシステムの前記ユーザ空間内の第2のプロセスとしてブロックデバイスサービスを開始することであって、前記ブロックデバイスサービスが、前記コンピューティングデバイスの永続ストレージデバイスを管理するように構成される、ブロックデバイスサービスを開始することと、
前記オペレーティングシステムのカーネルによって、プロセス間通信(IPC)チャネルを通じて前記ブロックデバイスサービスと通信するためのシステムコール要求を受信することであって、前記システムコール要求が、前記データストレージシステムを使用して前記アプリケーションによって生成され、前記永続ストレージデバイスへアクセスするためのアクセス要求を含む、システムコール要求を受信することと、
前記システムコール要求に応答して、前記IPCチャネルを通じた前記ブロックデバイスサービスへのアクセスを前記アプリケーションに提供することと
を行うように、実行されるときに動作可能であるソフトウェアを具現化する1つまたは複数のコンピュータ可読非一時的記憶媒体。
【請求項11】
a)前記データストレージシステムが、ファイルシステムライブラリまたはキー値ストアであること、または
b)前記システムコール要求に応答して、前記カーネルによって、前記アクセス要求を前記ブロックデバイスサービスへ送信することをさらに含むこと、または
c)前記ブロックデバイスサービスへの提供された前記アクセスに基づいて、前記永続ストレージデバイスのデータブロックに対してデータを読み出す、または書き込むことをさらに含むこと
のうちのいずれか1つである、請求項10に記載の媒体。
【請求項12】
前記アプリケーションの設定中に論理ボリュームサービスに要求を送信することと、
前記アプリケーションにおいて、前記コンピューティングデバイスの前記永続ストレージデバイスにおける1つまたは複数のデータブロックの割り当てを受信することとをさらに含む、請求項10に記載の媒体。
【請求項13】
前記論理ボリュームサービスは、前記永続ストレージデバイスにおける前記1つまたは複数のデータブロックの前記割り当てを前記ブロックデバイスサービスに通知する、請求項12に記載の媒体。
【請求項14】
システムであって、
1つまたは複数のプロセッサと、
前記プロセッサのうちの1つまたは複数に結合された1つまたは複数のコンピュータ可読非一時的記憶媒体であって、前記プロセッサのうちの1つまたは複数によって実行されるとき、前記システムに、
オペレーティングシステムのユーザ空間内の第1のプロセスとしてアプリケーションを開始することであって、前記アプリケーションが、前記オペレーティングシステムと関連付けられたデータストレージシステムのインスタンスを生成する、アプリケーションを開始すること、
前記オペレーティングシステムの前記ユーザ空間内の第2のプロセスとしてブロックデバイスサービスを開始することであって、前記ブロックデバイスサービスが、前記コンピューティングデバイスの永続ストレージデバイスを管理するように構成される、ブロックデバイスサービスを開始すること、
前記オペレーティングシステムのカーネルによって、プロセス間通信(IPC)チャネルを通じて前記ブロックデバイスサービスと通信するための前記アプリケーションからのシステムコール要求を受信することであって、前記システムコール要求が、前記データストレージシステムを使用して前記アプリケーションによって生成され、前記永続ストレージデバイスへアクセスするためのアクセス要求を含む、システムコール要求を受信すること、および
前記システムコール要求に応答して、前記IPCチャネルを通じた前記ブロックデバイスサービスへのアクセスを前記アプリケーションに提供することを行わせるように動作可能な命令を備える、1つまたは複数のコンピュータ可読非一時的記憶媒体と
を備える、システム。
【請求項15】
前記データストレージシステムは、ファイルシステムライブラリまたはキー値ストアである、請求項14に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、デバイス上の1つまたは複数のアプリケーションの管理、およびそれらのアプリケーションに許諾された、基盤デバイスの物理ハードウェアへのアクセスに関する。
【背景技術】
【0002】
スマートフォン、タブレットコンピュータ、またはラップトップコンピュータなどの、モバイルコンピューティングデバイスは、GPSレシーバ、コンパス、ジャイロスコープ、または加速度計など、その場所、方向、または配向を決定するための機能性を含み得る。そのようなデバイスは、ブルートゥース通信、近距離無線通信(NFC)、または赤外線(IR)通信、またはワイヤレスローカルエリアネットワーク(WLAN)もしくは携帯電話ネットワークを用いた通信など、ワイヤレス通信の機能性も含み得る。そのようなデバイスは、1つまたは複数のカメラ、スキャナ、タッチスクリーン、マイク、またはスピーカも含み得る。モバイルコンピューティングデバイスはまた、ゲーム、ウェブブラウザ、またはソーシャルネットワーキングアプリケーションなどの、ソフトウェアアプリケーションを実行することができる。ソーシャルネットワーキングアプリケーションにより、ユーザは、それらのソーシャルネットワーク内の他のユーザと、繋がること、通信すること、および情報を共有することができる。
【0003】
モバイルコンピューティングデバイス、または任意の他のコンピューティングデバイスは、クライアントアプリケーションとも呼ばれる1つまたは複数のアプリケーションのためのホストとしての機能を果たし得る。アプリケーションは、コンピューティングデバイス上で動作する1つまたは複数の仮想マシン上で実行することができる。安全性の目的のため、アプリケーションは、一般的に、コンピューティングデバイスの基盤ハードウェアに直接アクセスすることを制限される。カーネルが、基盤ハードウェアの通信およびリソース割り当てを管理するのを助けるために、基盤ハードウェアとアプリケーションとの間に置かれ得る。その機能上、カーネルは、クライアントアプリケーションへのデバイスリソースの割り当てを促進することができる高レベルの権利を有する。
【発明の概要】
【0004】
開示された主題の目的および利点は、以下に続く説明に明記されるものとする。開示された主題の追加の利点は、記載された説明および特許請求項において具体的に指摘される方法およびシステムによって、ならびに添付の図面から、実現および達成されるものとする。
【0005】
本発明の実施形態は、人工現実システムを含み得るか、またはこれと併せて実施され得る。人工現実は、ユーザへの提示の前に何らかの様式で調節されている現実の形態であり、これは、例えば、仮想現実(VR)、拡張現実(AR)、複合現実(MR)、ハイブリッド現実、またはそれらの何らかの組み合わせおよび/もしくは派生物を含み得る。人工現実コンテンツは、完全生成コンテンツ、または捕捉コンテンツ(例えば、現実世界の写真)と組み合わせた生成コンテンツを含み得る。人工現実コンテンツは、動画、オーディオ、触覚フィードバック、またはそれらの何らかの組み合わせを含み得、これらのうちのいずれかが、単一チャネルまたは複数チャネル(視聴者に三次元効果をもたらすステレオ動画)に提示され得る。追加的に、いくつかの実施形態において、人工現実は、例えば、人工現実においてコンテンツを生成するために使用される、および/または人工現実において(例えば、アクティビティを実施することに)使用されるアプリケーション、製品、アクセサリ、サービス、またはそれらの何らかの組み合わせと関連付けられ得る。人工現実コンテンツを提供する人工現実システムは、ホストコンピュータシステムに接続されたヘッドマウントディスプレイ(HMD)、スタンドアローンHMD、コンピューティングデバイスもしくはコンピューティングシステム、または人工現実コンテンツを1または複数の視聴者に提供することができる任意の他のハードウェアプラットフォームを含む、様々なプラットフォーム上に実装され得る。
【0006】
特定の実施形態において、方法またはシステムは、コンピューティングデバイス上で実行する1つまたは複数のアプリケーションが、低減されたリソースを使用してコンピューティングデバイスの基盤ハードウェアへアクセスすることを可能にするために使用され得る。例えば、マイクロカーネルは、カーネル内に位置するディスクドライブへのアクセスをクライアントアプリケーションに提供するために使用され得る。マイクロカーネルによって処理される通信の量を低減するのを助けるため、各クライアントアプリケーションには、アプリケーション独自のプロセス内でインスタンスを生成され得るデータストレージシステムが供給され得る。ファイルシステムライブラリまたはキー値ストアであり得る、データストレージシステムが中に配置されていることは、1つまたは複数のクライアントアプリケーションが、単一のプロセス間通信(IPC)チャネルを介して、永続ストレージデバイスとも呼ばれる、コンピューティングデバイスの基盤ハードウェアと対話するのを助け得る。
【0007】
マイクロカーネルを使用するとき、特定の実施形態は、ユーザ空間サービス内に位置するブロックデバイスサービスを利用する。ブロックデバイスサービスは、コンピューティングデバイスの基盤ハードウェアへのアクセスを提供するディスクドライブをホストすることができる。コンピューティングシステムの基盤ハードウェアへのアクセスを得るため、特定の実施形態において、1つまたは複数のクライアントアプリケーション内に位置するデータストレージシステムは、IPCチャネルを使用してマイクロカーネルと通信することができる。マイクロカーネルは、アクセス要求を受信し、クライアントアプリケーションの代わりにブロックデバイスサービスと通信して、要求されたアクセスを提供する。ファイルシステムライブラリまたはキー値ストアなどのデータストレージシステムをクライアントアプリケーション内に配置させることは、基盤ハードウェアへのアクセスをクライアントアプリケーションに提供するためにマイクロカーネルによって実施される処理の量を低減するのを助け得る。
【0008】
特定の実施形態において、コンピューティングデバイスによる方法は、オペレーティングシステムのユーザ空間内の第1のプロセスとしてアプリケーションを開始することを含み得る。アプリケーションは、オペレーティングシステムと関連付けられたデータストレージシステムのインスタンスを生成することができる。本方法はまた、オペレーティングシステムのユーザ空間内の第2のプロセスとしてブロックデバイスサービスを開始することであって、ブロックデバイスサービスが、コンピューティングデバイスの永続ストレージデバイスを管理するように構成される、ブロックデバイスサービスを開始することを含み得る。加えて、本方法は、IPCチャネルを通じてブロックデバイスサービスと通信するためのアプリケーションからのシステムコール要求を、オペレーティングシステムのカーネルによって受信することを含み得る。システムコール要求は、永続ストレージデバイスへアクセスするためのアクセス要求を含み得る。さらに、本方法は、システムコール要求に応答して、IPCチャネルを通じたブロックデバイスサービスへのアクセスをアプリケーションに提供することを含み得る。
【0009】
いくつかの実施形態において、カーネルは、システムコール要求に応じて、ブロックデバイスサービスにアクセス要求を送信することができる。アプリケーションは、ブロックデバイスサービスへの提供されたアクセスに基づいて、永続ストレージデバイスのデータブロックに対してデータを読み出す、または書き込むことができる。特定の実施形態において、設定の一部として、要求は、アプリケーションから論理ボリュームサービスへ送信され得る。次いで、アプリケーションは、コンピューティングデバイスの永続ストレージデバイスにおける1つまたは複数のデータブロックの割り当てを受信することができる。論理ボリュームサービスは、永続ストレージデバイスにおける1つまたは複数のデータブロックの割り当てをブロックデバイスサービスに通知することができる。論理ボリュームサービスは、アプリケーションの1つまたは複数のデータブロックを、オペレーティングシステムのユーザ空間内の第3のプロセスとして動作する別のアプリケーションに割り当てられた1つまたは複数の他のデータブロックと連係させることができる。そのようなものとして、特定の実施形態において、論理ボリュームサービスは、データブロックを、アプリケーションおよび別のアプリケーションの両方に割り当てる。言い換えると、アプリケーションおよび別のアプリケーションの両方は、論理ボリュームサービスによって割り当てられたデータブロックを共有することができる。好ましくは、ブロックデバイスサービスは、コンピューティングデバイスのハードウェアとインターフェースをとるのに十分にセキュアである。クライアントアプリケーションはまた、論理ボリュームサービスに追加のアクセス要求を送信することができる。それに応じて、クライアントアプリケーションは、コンピューティングデバイスの永続ストレージデバイスにおける1つまたは複数の追加のデータブロックの追加の割り当てを受信することができる。
【0010】
特定の実施形態において、オペレーティングシステムのユーザ空間内の第1のプロセスとしてアプリケーションを開始するように、実行されるときに動作可能であるソフトウェアを具現化する、1つまたは複数のコンピュータ可読非一時的記憶媒体。アプリケーションは、オペレーティングシステムと関連付けられたデータストレージシステムのインスタンスを生成することができる。ソフトウェアは、オペレーティングシステムのユーザ空間内の第2のプロセスとしてブロックデバイスサービスを開始するように動作可能であり得、ブロックデバイスサービスが、コンピューティングデバイスの永続ストレージデバイスを管理するように構成される。加えて、ソフトウェアは、IPCチャネルを通じてブロックデバイスサービスと通信するためのアプリケーションからのシステムコール要求を、オペレーティングシステムのカーネルによって受信するように動作可能であり得、システムコール要求は、永続ストレージデバイスへアクセスするためのアクセス要求を含む。さらに、ソフトウェアは、システムコール要求に応答して、IPCチャネルを通じたブロックデバイスサービスへのアクセスをアプリケーションに提供するように動作可能であり得る。
【0011】
特定の実施形態において、システムは、1つまたは複数のプロセッサ、およびプロセッサのうちの1つまたは複数に結合された1つまたは複数のコンピュータ可読非一時的記憶媒体を備える。本システムは、プロセッサのうちの1つまたは複数によって実行されるとき、システムに、オペレーティングシステムのユーザ空間内の第1のプロセスとしてアプリケーションを開始することを行わせるように動作可能な命令を備える。アプリケーションは、オペレーティングシステムと関連付けられたデータストレージシステムのインスタンスを生成することができる。本システムはまた、プロセッサのうちの1つまたは複数によって実行されるとき、システムに、オペレーティングシステムのユーザ空間内の第2のプロセスとしてブロックデバイスサービスを開始することを行わせるように動作可能な命令を備え得、ブロックデバイスサービスが、コンピューティングデバイスの永続ストレージデバイスを管理するように構成される。加えて、本システムは、プロセッサのうちの1つまたは複数によって実行されるとき、システムに、IPCチャネルを通じてブロックデバイスサービスと通信するためのアプリケーションからのシステムコール要求を、オペレーティングシステムのカーネルによって受信することを行わせるように動作可能な命令を備え得る。システムコール要求は、永続ストレージデバイスへアクセスするためのアクセス要求を含み得る。さらに、本システムは、プロセッサのうちの1つまたは複数によって実行されるとき、システムに、システムコール要求に応答して、IPCチャネルを通じたブロックデバイスサービスへのアクセスをアプリケーションに提供することを行わせるように動作可能な命令を備え得る。
【0012】
特定の実施形態において、方法またはシステムは、キー値ストアがファイルストアサービスまたはシステムを回避することを可能にするために使用され得る。そのような実施形態において、キー値ストアは、ファイルストアサービスまたはシステムにまずメッセージする必要なしに、永続ストレージデバイスと通信することができる。例えば、キー値ストアは、永続ストレージデバイスに対して書き込みまたは読み出しを行うアプリケーションの能力を管理するために使用され得る。キー値ストアは、1つまたは複数のアプリケーション内でインスタンスを生成され得る。いくつかの実施形態において、アプリケーションは、キー値ストアおよびファイルストアサービスの両方のインスタンスを生成することができる。次いで、アプリケーションは、永続ストレージデバイスへアクセスするために、キー値ストアを使用するか、ファイルストアサービスを使用するかを選択することができる。
【0013】
特定の実施形態において、コンピューティングデバイスによる方法は、オペレーティングシステムのユーザ空間内の第1のプロセスとしてアプリケーションを開始することを含み得る。本方法はまた、IPCチャネルを通じたキー値ストアからのシステムコール要求を、オペレーティングシステムのカーネルにおいて受信することを含み得る。システムコール要求は、コンピューティングデバイスの永続ストレージへアクセスするためのアクセス要求を含み得る。加えて、本方法は、永続ストレージへのアクセスをキー値ストアに許諾することを含み得る。キー値ストアは、コンピューティングデバイスの永続ストレージへのアクセスをアプリケーションに提供することができる。
【0014】
特定の実施形態において、オペレーティングシステムのユーザ空間内の第1のプロセスとしてアプリケーションを開始するように、実行されるときに動作可能であるソフトウェアを具現化する、1つまたは複数のコンピュータ可読非一時的記憶媒体。ソフトウェアはまた、IPCチャネルを通じたキー値ストアからのシステムコール要求を、オペレーティングシステムのカーネルにおいて受信するように動作可能であり得る。システムコール要求は、コンピューティングデバイスの永続ストレージへアクセスするためのアクセス要求を含み得る。加えて、ソフトウェアは、永続ストレージへのアクセスをキー値ストアに許諾するように動作可能であり得る。キー値ストアは、コンピューティングデバイスの永続ストレージへのアクセスをアプリケーションに提供することができる。
【0015】
特定の実施形態において、システムは、1つまたは複数のプロセッサ、およびプロセッサのうちの1つまたは複数に結合された1つまたは複数のコンピュータ可読非一時的記憶媒体を備える。本システムは、プロセッサのうちの1つまたは複数によって実行されるとき、システムに、オペレーティングシステムのユーザ空間内の第1のプロセスとしてアプリケーションを開始することを行わせるように動作可能な命令を備える。本システムはまた、プロセッサのうちの1つまたは複数によって実行されるとき、システムに、IPCチャネルを通じたキー値ストアからのシステムコール要求を、オペレーティングシステムのカーネルにおいて受信することを行わせるように動作可能な命令を備え得る。システムコール要求は、コンピューティングデバイスの永続ストレージへアクセスするためのアクセス要求を含み得る。加えて、本システムは、プロセッサのうちの1つまたは複数によって実行されるとき、システムに、永続ストレージへのアクセスをキー値ストアに許諾することを行わせるように動作可能な命令を備え得、キー値ストアは、コンピューティングデバイスの永続ストレージへのアクセスをアプリケーションに提供する。
【0016】
本明細書に説明される実施形態は、単に例であり、本開示の範囲は、それらに限定されない。特定の実施形態は、本明細書に開示される実施形態の構成要素、要素、特徴、機能、動作、またはステップのうちのすべて、いくつかを含み得るか、またはいずれも含まない場合がある。本発明に従う実施形態は、方法、記憶媒体、システム、およびコンピュータプログラム製品を対象とした添付の特許請求の範囲に開示され、1つの請求項カテゴリ、例えば、方法、に記載された任意の特徴は、別の請求項カテゴリ、例えば、システム、においても同様に特許請求され得る。添付の特許請求の範囲における従属性および参照は、形式的な理由のためだけに選択される。しかしながら、任意の以前の請求項への意図的な参照から生じる任意の主題(特に複数の従属性)が、同様に特許請求され得、その結果として、請求項の任意の組み合わせおよびその特徴が、開示され、添付の特許請求の範囲において選択される従属性に関わらず特許請求され得る。特許請求され得る主題は、添付の特許請求の範囲に提示されるような特徴の組み合わせだけでなく、請求項内の特徴の任意の他の組み合わせも含み得、請求項内に記載される各特徴は、請求項内の任意の他の特徴または他の特徴の組み合わせと組み合わされ得る。さらには、本明細書に説明または描写される実施形態および特徴のいずれかは、別個の請求項内で、および/あるいは、本明細書に説明もしくは描写される任意の実施形態もしくは特徴のいずれかと、または添付の特許請求の範囲の特徴のいずれかと組み合わせて、特許請求され得る。
【図面の簡単な説明】
【0017】
図1】コンピューティングデバイス上で実行するクライアントアプリケーションの例を例証する図である。
図2】特定の実施形態に従う、コンピューティングデバイス上で実行するクライアントアプリケーションの例を例証する図である。
図3】特定の実施形態に従う、フロー図の例を例証する図である。
図4】特定の実施形態に従う、システムフロー図の例を例証する図である。
図5】特定の実施形態に従う、システムフロー図の例を例証する図である。
図6】特定の実施形態に従う、システムフロー図の例を例証する図である。
図7】特定の実施形態に従う、フロー図の例を例証する図である。
図8】コンピューティングデバイス上で実行するキー値ストアの例を例証する図である。
図9】コンピューティングデバイス上で実行するクライアントアプリケーションの例を例証する図である。
図10】特定の実施形態に従う、フロー図の例を例証する図である。
図11】ソーシャルネットワーキングシステムと関連付けられた例となるネットワーク環境を例証する図である。
図12】例となるコンピュータデバイスおよび/またはコンピュータシステムを例証する図である。
【発明を実施するための形態】
【0018】
拡張現実デバイスなどのコンピューティングデバイスは、デバイス上で実行する1つまたは複数のアプリケーションに基盤ハードウェアへのアクセスを提供するために費やされるリソースの量を低減することができる。例えば、デバイス上で動作するカーネルがマイクロカーネルであるとき、いくつかの実施形態は、ユーザ空間サービスとして動作することができる中央集中型ファイルサーバに取って代わることができる。代わりに、特定の実施形態は、オペレーティングシステムと関連付けられた、ファイルシステムライブラリまたはキー値ストアなどの、データストレージシステムを含むか、そのインスタンスを生成する1つまたは複数のアプリケーションを用いることができる。1つまたは複数のアプリケーション内に含まれているデータストレージシステムは、以下に論じられるように、マイクロカーネルによって処理される通信の量、ならびにIPCチャネルの数を低減するのを助け得る。
【0019】
いくつかの他の実施形態において、コンピューティングデバイスによって費やされるリソースの量は、ファイルシステムをすべて一緒に除去し、代わりに、仮想ストレージ空間をデバイスの基盤ハードウェアの1つまたは複数のストレージブロックにマッピングするためのキー値ストアに依拠することによっても、低減され得る。それを行うことは、コンピューティングデバイス上で動作するクライアントアプリケーションが、キー値ストレージを使用して、ディスクドライブなどの永続ストレージデバイスに対して読み出しおよび書き込みを行うことを可能にし得る。キー値ストアは、クライアントアプリケーション内でインスタンスを生成され得、以下に論じられるように、マイクロカーネルが受ける処理の量をさらに低減する。特定の実施形態において、キー値ストアおよびファイルシステムライブラリは、1つまたは複数のアプリケーション内でインスタンスを生成され得、アプリケーションが、所与の動作のために、キー値ストア又はファイルシステムライブラリを使用するかどうかを選択することを可能にする。そのような実施形態において、キー値ストアおよびファイルシステムライブラリは、図8に示されるようにキー値ストアがファイルシステムライブラリの上に位置しているのとは対照的に、同じ空間内に位置するピアであってもよい。
【0020】
カーネルは、一般的に、コンピューティングデバイス上で実行するソフトウェアアプリケーションを基盤ハードウェアに接続するために、コンピューティングデバイスのオペレーティングシステムによって使用されるソフトウェアベースのプログラムである。基盤ハードウェアへのそのアクセスを前提として、カーネルは、一般的に、特権モードで実行する。特定の実施形態において、カーネルは、モノリシックカーネルまたはマイクロカーネルのいずれかであり得る。モノリシックカーネルを使用するとき、オペレーティングシステムによって提供されるサービスの多くまたはすべては、カーネルの内側に含まれ得る。例えば、カーネルは、ファイルシステムライブラリまたはキー値ストアなどのデータストレージシステム、仮想メモリのためのスケジューラ、およびデバイスドライバを含み得る。オペレーティングシステムによって提供されるサービスの多くまたはすべてがモノリシックカーネル内に含まれることから、モノリシックカーネルは、サイズが大きくなり得る。その一方で、マイクロカーネルは、例えば、低複雑性メモリ管理および/またはIPCチャネルコードなど、オペレーティングシステムを実装するための最小機能性を含む。オペレーティングシステムのすべての他の機能性は、カーネル内から除去され、代わりに、カーネルの外側のユーザ空間内で別個のサービスとして動作するように再配置され得る。例えば、マイクロカーネルは、ユーザ空間に位置する、デバイスドライバサービスとも呼ばれるファイルサーバおよび/またはブロックデバイスサービスと通信することができる。1つまたは複数のクライアントアプリケーションは、マイクロカーネルを通じたIPCチャネルを使用してユーザ空間に位置するサービスのいずれかと通信することができる。IPCチャネルは、異なるユーザサービス間および/または1つまたは複数のアプリケーションと所与のユーザサービスと間のマイクロカーネルを介した通信を可能にし得る。
【0021】
図1は、コンピューティングデバイス上で実行するクライアントアプリケーションの例を例証する。特に、図1は、中央集中型ファイルサーバを利用するコンピューティングデバイスの実施形態を例証する。図1に示されるように、コンピューティングデバイスは、ハードウェア140、および、ハードウェア140をデバイス上で実行するオペレーティングシステムに接続するマイクロカーネル130を含み得る。1つの非限定的な例において、オペレーティングシステムは、コンピューティングデバイス上で動作する仮想マシン上で実行することができる。図1に示されるコンピューティングデバイスは、マイクロカーネルを使用することから、複数のサービスは、カーネル自体の中に位置するのではなく、ユーザ空間内で動作することができる。マイクロカーネルは、ユーザ空間サービスとクライアントアプリケーションとの間でインターフェースをとり得る。図1に示されるように、3つのアプリケーション111、112、113は、ユーザ空間内で動作することができる。特定の他の実施形態において、任意の他の数のアプリケーションが、ユーザ空間内で動作することができる。
【0022】
図1は、ユーザ空間内で動作する3つのサービスを例証する。例えば、中央集中型ファイルサーバまたはファイルホストシステム121は、ディスクドライブへのアクセスをクライアントアプリケーションのすべてに提供するために使用され得る。特定の実施形態において、ファイルサーバ121は、データがどのようにコンピューティングデバイス上で記憶および取得されるかをサーバが制御することを可能にする高レベルの特権を有する信頼できるユーザ空間サービスであり得る。ファイルサーバ121は、コンピューティングデバイスのメモリ内の入力されたデータを分類して記憶するのを助け得る。クライアントアプリケーションが、例えば、記憶されたデータへアクセスすることを要求するとき、ファイルサーバ121は、記憶されたデータの場所を示すアドレスを提供することができる。提供されたアドレスを使用して、アプリケーションは、コンピューティングデバイスのメモリから、記憶されたデータを取得することができる。1つの非限定的な例において、仮想オペレーティングシステムを実行する仮想マシンがコンピューティングデバイス上で動作しているとき、ファイルサーバ121は、仮想マシン、およびその中に生成される仮想アドレスを、コンピューティングデバイスの基盤メモリを反映する基盤アドレスへ向けるのを助け得る。言い換えると、ファイルサーバ121は、仮想ストレージ空間を、コンピューティングデバイスの基盤ハードウェアの1つまたは複数のストレージブロックにマッピングすることができる。いくつかの実施形態において、ファイルサーバ121は、仮想ファイルサーバであってもよい。
【0023】
ファイルサーバ121は、マイクロカーネルの外側に位置する中央集中型ファイルシステムホストサービスとしての機能を果たし得る。デバイスの永続ストレージへアクセスするため、図1に示されるプリケーション111、112、および113は、IPCチャネルを介して中央集中型ファイルシステムホストサービス121と通信する必要がある。次いで、中央集中型ファイルシステムホストサービス121は、別のIPCチャネルを介してブロックデバイスサービス122と通信することになる。ディスクドライブサービスとも呼ばれるブロックデバイスサービス122は、コンピューティングデバイスのユーザ空間内に含まれ得る。ブロックデバイスサービス122は、基盤デバイスのメモリまたはディスクドライブとしても知られる永続ストレージデバイスへのアクセスを管理するのを助け得る。永続ストレージデバイスと対話するため、クライアントアプリケーションは、要求をブロックデバイスサービス122に送信することができ、次いでブロックデバイスサービス122は、この要求を許諾または拒否することができる。
【0024】
キー値ストアとも呼ばれるキーサービス123は、ユーザ空間サービスとして含まれ得る。キーサービス123は、永続ストレージデバイスへのアクセスをクライアントアプリケーションに提供するために、ファイルサーバ121と一緒に使用され得る。言い換えると、キーサービス123は、仮想ストレージ空間を、コンピューティングデバイスの基盤ハードウェアの1つまたは複数のストレージブロックにマッピングすることができる。ファイルサーバ121はアドレスを使用するが、キーサービス123は、メモリ内のデータの記憶場所にキーをリンクさせるために、ディクショナリまたはハッシュテーブルを使用する。クライアントアプリケーション111、112、113の各々は、マイクロカーネルを介してIPCチャネルを使用して、またはマイクロカーネルを通過しない別個のチャネルを使用して、キーサービス123と通信することができる。
【0025】
図1に示されるように、2ホップ通信が、コンピューティングデバイスの基盤永続ストレージへのアクセスをクライアントアプリケーションに提供するために使用される。例えば、図1に示される実施形態において、クライアントアプリケーション111は、永続ストレージデバイスのデータブロックへのアクセスを要求するメッセージをマイクロカーネル130に送信する。このメッセージは、クライアントアプリケーション111からマイクロカーネル130によって受信されるシステムコールの形態をとり得る。次いで、マイクロカーネル130は、クライアントアプリケーション111の代わりに、ファイルサーバ121にメッセージを送信することができる。マイクロカーネルを通じたクライアントアプリケーション111とファイルサーバ121との間の接続は、第1のIPCチャネルと考えられ得る。ファイルサーバ121は、要求されたデータブロックのアドレスを永続ストレージデバイス内で取得し、そのアドレスをマイクロカーネル130に転送することができる。次いで、マイクロカーネル130は、取得したアドレスを含む通信を、ブロックデバイスサービス122に送信することができる。次いで、ブロックデバイスサービス122は、永続ストレージデバイスとも呼ばれる、コンピューティングデバイスの要求された永続ストレージへのアクセスをクライアントアプリケーション111に提供することができる。マイクロカーネル130を通じたファイルサーバ121とブロックデバイスサービス122との間の接続は、第2のIPCチャネルと考えられ得る。クライアントアプリケーション111、112、および113の各々は、図1の線によって示されるように、ブロックデバイスサービス122へアクセスするために、中央集中型ファイルサーバ121と通信する。
【0026】
上で論じられるように、図1に示されるコンピューティングデバイスにおいて、永続ストレージデバイスのデータブロックへアクセスすることは、マイクロカーネルを通じた2つの異なるIPCチャネル、すなわち、クライアントアプリケーションとファイルサーバとの間の第1のチャネル、およびファイルサーバとブロックデバイスサービスとの間の第2のチャネル、の使用を必要とし得る。2つの異なるIPCチャネルを含む、この2ホップ通信は、多くのオーバーヘッドおよびホストリソースを必要とし得、これが電力消費へと変換される。加えて、図1に示されるコンピューティングデバイスは、クライアントアプリケーション111、112、113から中央集中型ファイルサーバ121へのプレーンテキストデータの伝送を必要とする。このプレーンテキストデータは、次いで、ファイルサーバ121で暗号化され、ブロックデバイスサービス122へ伝送され得る。クライアントアプリケーションからファイルサーバへのデータのこのプレーンテキスト伝送は、セキュリティ上の脆弱性を作り出し、これにより悪意のある人がデータへアクセスすることを可能にする。
【0027】
上の難点のうちのいくつかを克服するため、特定の実施形態において、ファイルシステムライブラリまたはキー値ストアなどのデータストレージシステムは、アプリケーション内でインスタントを生成され得るか、またはアプリケーション内に位置し得る。言い換えると、ファイルシステムライブラリまたはキー値ストアなどのデータストレージシステムは、アプリケーションプロセス内に含まれ得る。図1に示されるような中央集中型ファイルサーバ121を使用する代わりに、1つまたは複数のアプリケーションは、図2に示されるようなオペレーティングシステムと関連付けられた、ファイルシステムライブラリまたはキー値ストアなどのデータストレージシステムのインスタンスを生成することができる。図2は、特定の実施形態に従う、コンピューティングデバイス上で実行するアプリケーションの例を例証する。特に、図2は、ハードウェア240、マイクロカーネル230、およびブロックデバイスサービス222を例証し、これらは、ハードウェア140、マイクロカーネル130、およびブロックデバイスサービス122に対応する。しかしながら、図1とは異なり、図2は、ユーザ空間サービスとして提示される中央集中型ファイルサーバを有さない。むしろ、図2では、クライアントアプリケーション211、212、および213は各々、オペレーティングシステムと関連付けられた独自のファイルシステムライブラリおよび/またはキー値ストアでインスタンスを生成される。ファイルライブラリは、仮想ファイルシステムクライアントライブラリであってもよい。ファイルシステムライブラリまたはキー値ストアをアプリケーション自体の中に置くことにより、1つまたは複数のアプリケーションが単一のIPCチャネルを使用してブロックデバイスサービス222へアクセスすることを可能にし得る。これは、クライアントアプリケーションが、単一のIPCチャネルを使用した永続ストレージデバイスへのアクセスを要求することを可能にし得る。
【0028】
特定の実施形態において、クライアントアプリケーション211、212、および213などのアプリケーションは、オペレーティングシステムのユーザ空間内の第1のプロセスとして開始することができる。アプリケーションは、図2に示されるように、オペレーティングシステムと関連付けられたファイルシステムライブラリおよび/またはキー値ストアのインスタンスを生成することができる。次いで、ブロックデバイスサービス222は、オペレーティングシステムのユーザ空間内の第2のプロセスとして開始することができる。クライアントアプリケーションは、基盤永続ストレージデバイス内に位置するデータへアクセスすることを望み得る。クライアントアプリケーション211などのクライアントアプリケーションは、そのファイルストレージライブラリと内部通信し、適切なメモリアドレスを取得し、システムコール要求をマイクロカーネルに伝送することができる。そのようなものとして、マイクロカーネル230は、IPCチャネルを通じてブロックデバイスサービス222と通信するためのアプリケーションからのシステムコール要求を受信する。システムコール要求は、永続ストレージデバイスへアクセスするためのアクセス要求を含む。受信したシステムコール要求に応答して、マイクロカーネル230は、この要求をブロックデバイスサービス222に転送または送信し、IPCチャネルを通じたブロックデバイスサービス222へのアクセスをクライアントアプリケーションに提供することができる。
【0029】
特定の実施形態において、ファイルシステムホストは、別個/中央の構成要素として除去され得、各ファイルシステムライブラリおよび/またはキー値ストアは、アプリケーション独自のプロセス内でインスタンスを生成され得る。図2に示されるように、これを行うことにより、クライアントアプリケーションが単一のIPCチャネルを介してディスクドライブまたは永続ストレージデバイスと対話することを可能にし得る。単一のIPCチャネルのみを利用する実施形態において、ホストによって使用されるリソースの数は、低減され得、さらにシステムオーバーヘッドを低減し、リソースを節約する。IPCチャネルは、クライアントアプリケーションのデータストレージシステムとブロックデバイスサービスとの間の共有メモリ領域を利用することができる。
【0030】
図2の実施形態に示されるように、ファイルシステムライブラリおよび/またはキー値ストアなどのデータストレージシステムがクライアントアプリケーション内でインスタンスを生成されていることは、アプリケーション211、212、または213とブロックデバイスサービス222との間のセキュアな通信を提供するのを助け得る。図1に示されるような中央集中型ファイルサーバを使用するとき、クライアントアプリケーション111、112、および113は、復号された要求を、マイクロカーネルを通じたIPCチャネルを使用してファイルサーバ121へ伝送する。要求が中央集中型ファイルサーバ121で受信されると、この要求は、暗号化され、ブロックデバイスサービス122へ伝送され得る。その一方で、ファイルシステムライブラリがクライアントアプリケーション211、212、および213内に位置する、図2に示される実施形態において、要求は、クライアントアプリケーションプロセスの一部として暗号化され得る。言い換えると、各クライアントアプリケーションは、独自のキーを用いて独自のデータを暗号化することができる。したがって、クライアントアプリケーションからIPCチャネルを介してブロックデバイスサービス222へ伝送される任意の要求またはメッセージは、暗号化され得る。そのようなものとして、ファイルシステムライブラリおよび/またはキー値ストアなどのデータストレージシステムをアプリケーションプロセス内に配置し、インスタンスを生成させることは、システムオーバーヘッド、およびコンピューティングデバイスによって費やされるリソースの数を低減するのを助けるだけでなく、クライアントアプリケーションとブロックデバイスサービスとの間のセキュアな暗号化通信を提供するのを助ける。伝送された暗号化データは、次いで、ブロックデバイス222において記憶され得る。いくつかの実施形態において、暗号化データを元々書き込んだクライアントアプリケーションだけが、そのデータを復号できる唯一のものであり得る。
【0031】
上で論じられるように、特定の実施形態において、各クライアントアプリケーションは、個別化したキーを使用して独自のデータを暗号化することができる。各クライアントアプリケーションの、ファイルシステムライブラリなどのデータストレージシステムに記憶されたデータは、このキーを使用して暗号化され得る。このキーは、キーサービス223による初期設定の間にクライアントアプリケーションに提供され得る。例えば、第1のクライアントアプリケーションがそのデータを第1のキーで暗号化する場合、第1のキーへのアクセスを有さない第2のクライアントアプリケーションは、そのデータへアクセスすることができない。データを共有する2つ以上のクライアントアプリケーションは、共有キーを使用してデータを暗号化することができ、クライアントアプリケーションの各々が共有キーへのアクセスを有する。いくつかの他の実施形態において、アプリケーションは、それらの暗号化キーを共有することなく、別個のIPCチャネルを使用してデータを共有することができる。
【0032】
異なるクライアントアプリケーション内に位置するデータストレージシステムを管理するのを助けるため、ストレージサービスとも呼ばれる論理ボリュームサービス221が使用され得る。論理ボリュームサービス221は、マイクロカーネル230の外側で実行する別個のプロセスであるユーザ空間サービスであってもよい。特定の実施形態において、設定中、クライアントアプリケーションは、論理ボリュームサービス221に要求を送信することができる。論理ボリュームサービス221は、クライアントアプリケーション211、212、または213とブロックデバイスサービス222との間のマイクロカーネル230を通じたIPCチャネルを設定するのを助け得る。言い換えると、アプリケーションが、所与のクライアントアプリケーションに提供される仮想ディスクを表す1つまたは複数のデータブロックを割り当てられるとき、論理ボリュームサービス221は、クライアントアプリケーションの代わりに、IPCチャネルをブロックデバイスサービス222に対して開くことができる。割り当てられたデータブロックは、入力/出力要求にサービスするとき、入ってくるデータブロックアドレスをディスク関連ブロックアドレスへ変換するためにブロックデバイスサービス222によって使用され得るIPCチャネルと関連付けられ得る。クライアントアプリケーションとブロックデバイスサービスとの間のIPCチャネルが接続されると、クライアントアプリケーションは、論理ボリュームサービスと通信する必要なしに、ブロックデバイスサービスを介して永続ストレージデバイスへアクセスすることができる。
【0033】
コンピューティングデバイスの永続ストレージデバイスは、データがクライアントアプリケーションによって読み出され得る、または書き込まれ得る、1つまたは複数のデータブロックを含み得る。1つまたは複数のデータブロックは、1つまたは複数のクライアントアプリケーションに提供される仮想ディスクを表し得る。論理ボリュームサービス221は、コンピューティングデバイスの永続ストレージデバイスにおける1つまたは複数のデータブロックまたはリソースブロックを、1つまたは複数のアプリケーションに割り当てる、留保する、または指定するのを助け得る。言い換えると、論理ボリュームサービス221は、ディスクデバイス、ディスクドライブ、または永続ストレージデバイスを、分離した論理領域に区切るのを助け得る。例えば、第1のクライアントアプリケーションは、コンピューティングデバイスのディスクドライブなどの永続ストレージデバイスのデータブロック1~9を指定され得、これに対して、第1のクライアントアプリケーションは、読み出すこと、書き込むこと、または破棄することができる。データブロックは、永続ストレージデバイス、ディスクドライブ、またはディスクデバイスにマッピングすることができる仮想ブロックであってもよい。データブロック1~9は、単一のクライアントアプリケーションに対して排他的に留保されるか、複数のクライアントアプリケーションの間で共有されるかのいずれかであり得る。いくつかの実施形態において、あるデータブロックは、データブロックに書き込むための単一のクライアントアプリケーションに対して排他的に留保され得る一方、あるデータブロックは、データブロックを読み出すための複数のクライアントアプリケーションの間で共有され得る。1つまたは複数のデータブロックが割り当てられた後、論理ボリュームサービス221は、この割り当てをブロックデバイスサービス222に通知することができる。
【0034】
上の例において、第1のクライアントアプリケーション211は、ディスクドライブまたはディスクデバイスのデータブロック1~9を指定され得る。1つの非限定的な例において、データブロック1~9は、永続ストレージデバイス空間またはディスク空間の4~8メガビットセグメントに変換することができる。次いで、第2のクライアント212は、その設定中に、要求を論理ボリュームサービス221に送信することができる。要求に応答して、論理ボリュームサービス221は、第2のクライアント212にデータブロック10~18を指定することができる。ブロックデバイスサービス222は、第1のクライアントアプリケーションにはデータブロック1~9が割り当てられ、第2のクライアントアプリケーションにはデータブロック10~18が割り当てられたことを通知され得る。所与のアプリケーションに属する割り当てられたデータブロックは、仮想ディスクとして扱われ得る。特定の実施形態において、所与のアプリケーションは、それらに割り当てられたデータブロックに対してのみ読み出しおよび/または書き込みを行うことが許可され得る。
【0035】
いくつかの実施形態において、第1のクライアント211は、永続ストレージデバイスからの追加リソースを必要としている場合がある。追加リソースを得るため、第1のクライアント211は、追加のデータブロックを要求するメッセージを論理ボリュームサービス221に伝送または送信することができる。次いで、論理ボリュームサービス221は、追加のデータブロックを割り当てるかどうか、およびどれくらいの追加のデータブロックを割り当てるべきかを決定することができる。例えば、論理ボリュームサービス221が第1のクライアント211から追加のデータブロックの要求を受信するとき、論理ボリュームサービス221は、データブロック19~27を第1のクライアント211に割り当てることができる。論理ボリュームサービス221は、自らが許諾したすべてのデータブロック割り当ての記録を保持することができる。
【0036】
特定の実施形態において、ブロックデバイスサービス222は、データブロックの割り当てを行使することを担い得る。例えば、第3のクライアントアプリケーション213がデータブロック1~9のいずれかへアクセスしようとする場合、ブロックデバイスサービス222は、データブロック1~9が第1のクライアントアプリケーション211によってすでに留保されていることから、第3のクライアントアプリケーション213のアクセスを拒否することができる。1つまたは複数のデータブロックが第1のクライアント211のために留保されるとき、それらのデータブロックは、第1のクライアント211のためにロックされ得る。別の例において、ブロックデバイスサービス222は、データブロック1~9のうちの1つまたは複数のへのアクセスを第3のクライアントアプリケーション213へ一時的に許諾することができる。
【0037】
特定の実施形態において、ブロックデバイスサービス222は、1つまたは複数の共有データブロックへのアクセスを可能にすることをクライアントアプリケーション間での交渉を行うことができる。例えば、論理ボリュームサービス221は、第1のクライアントアプリケーション211にデータブロック1~9を割り当てると同時に、第2のクライアントアプリケーション212に共有ブロックデータ4~6を割り当てることができる。第1のクライアントアプリケーション211は、データブロック1~9を主に所有または利用することができるが、第2のクライアントアプリケーション212は、データブロック5を読み出す許可を要求する要求をブロックデバイスサービス222に伝送することができる。ブロックデバイスサービス222は、別のクライアントアプリケーションがデータブロック5を使用することを求めているという通知を第1のクライアントアプリケーション211に伝送することができる。いくつかの実施形態において、ブロックデバイスサービス222は、第2のクライアントアプリケーション212の要求を単純に拒否することができる。別の実施形態において、ブロックデバイスサービス222は、第2のクライアントアプリケーション212の要求を受け入れ、永続的または一時的な時間量の間、第1のクライアントアプリケーション211を制限することができる。1つの非限定的な例において、ブロックデバイスサービス222によって伝送される通知を受信すると、第1のクライアントアプリケーション211は、アクセスを放棄する、および/またはデータブロック5へアクセスすることを制限され得る。
【0038】
しかしながら、他の実施形態において、ブロックデバイスサービス222は、データブロック5へアクセスすることを制限またはブロックされることになるということを第1のクライアントアプリケーション211に通知することができる。第1のクライアントアプリケーション211は、第2のクライアントアプリケーション212がデータブロック5を読み出す、またはこれに書き込むまで、制限またはブロックされ得る。例えば、ブロックデバイスサービス222は、タイマを採用し、タイマが切れるまでデータブロック5へアクセスすることを制限されることになるということを第1のクライアントアプリケーション211に通知することができる。タイマが切れた後、第1のクライアントアプリケーション211は、データブロック5へのアクセスを取り戻すことを要求する要求をブロックデバイスサービス222に伝送することができる。次いで、ブロックデバイスサービス222は、データブロック5を第1のクライアントアプリケーション211に再割り当てすることができる。しかしながら、別の実施形態において、タイマが切れた後、ブロックデバイスサービス222は、第1のクライアントアプリケーション211にデータブロック5へのアクセスを自動的に許諾することができる。
【0039】
ブロックデバイスサービス222は、同じデータブロックへのアクセスを要求するクライアントアプリケーション間での交渉を行うことができる。例えば、ブロックデバイスサービス222は、どちらかデータブロックへのアクセスを最も必要とするクライアントアプリケーションにアクセスを許諾することを決定することができる。そのような決定を行うことにおいて、ブロックデバイスサービス222は、ブロックデバイスサービスがどちらのクライアントアプリケーションのアクセス要求が最初に許諾されるべきかを決定するのを助け得る優先スキームを利用することができる。例えば、優先スキームは、ブロックデバイスサービス222で内部キューイングされたより多くの要求を有するいずれかのクライアントアプリケーションに優先権を与えるブロックデバイスサービス222であってもよい。特定の実施形態において、ブロックデバイスサービス222によって実施される交渉は、有限時間量を必要とし得る。交渉を可能にするために、休止が挿入され得る。例えば、要求が、データブロック5へアクセスするために第2のクライアントアプリケーション212によって受信されると、タイマが開始され得る。タイマが切れるまで、データブロック5は、ブロックデバイスサービス222が交渉を経ることを可能にするために、第1のクライアントアプリケーション211にとってアクセス可能のままである。
【0040】
特定の実施形態において、各データストレージシステムは、データストレージシステムによってブロックデバイスサービス222に伝送される要求の内部キャッシュまたはキューを有し得る。言い換えると、アクセス要求が、クライアントアプリケーションによってブロックデバイスサービス222に伝送されるとき、この要求は、キュー内に置かれ得る。任意の他のアクセス要求は、初期要求の後ろのキュー内に置かれ得る。所与の要求がブロックデバイスサービス222によって拒否または許諾されると、その要求は、キューから除去され得る。伝送、受信、および/または完了したアプリケーション要求のキューは、ブロックデバイスサービス222内に、および/またはアプリケーション自体に、内部保持され得る。
【0041】
図3は、特定の実施形態に従う、フロー図の例を例証する。特に、図3は、図2に示されるクライアントアプリケーション211に対応するアプリケーション310を含み得るクライアントプロセス301を例証する。クライアントプロセス301は、クライアントアプリケーション310、キー/値ストア/ライブラリ330、およびファイルシステムライブラリ320を含み得る。特定の実施形態において、キー/値ストア/ライブラリ330および/またはファイルシステムライブラリ320は、クライアントアプリケーション310内に含まれ得る。ファイルシステムライブラリ320は、上で論じられるようなバッファキャッシュライブラリ340、および/または論理ボリュームライブラリ350を含み得る。論理ボリュームライブラリ350は、ボリューム関連の論理ブロックアドレスからディスク関連の物理アドレスへ入力または出力要求を変換することを担当し得る。論理ボリュームライブラリ350は、ブロック暗号化ライブラリ360およびバッファキャッシュライブラリ340と対話することができる。論理ボリュームライブラリ350において提供される変換を使用して、クライアントプロセスは、実際のディスク入力/出力を実施するために、ブロックデバイスサービス303と直接通信することができる。
【0042】
論理ボリュームライブラリ350は、論理ボリュームサービスプロセス302およびブロックデバイスサービスプロセス303と通信することができ、これらは、それぞれ論理ボリュームサービス221およびブロックデバイスサービス222を含み得る。論理ボリュームサービスプロセス302は、ファイルシステムおよび構造化ストレージクライアントによる使用のため、動的にサイズ変更可能な論理ボリュームを管理すること、または動的パーティションを担当し得る。ブロックデバイスサービスプロセス303は、ハードウェアブロックデバイスと通信すること、およびブロック読み出し/書き込み/破棄インターフェースを上の層に露出することを担当し得る。
【0043】
図4は、特定の実施形態に従う、システムフロー図の例を例証する。特に、図4は、クライアントがファイルを開くことを要求する動作を例証する。クライアント410は、アプリケーション211、212、および213に対応し得る。クライアント410、仮想ファイルシステムライブラリ420、ファイルシステムライブラリ430、および論理ボリュームライブラリ440はすべて、クライアントアプリケーションプロセスに含まれ得る一方、ブロックデバイスサービス450は、ユーザ空間内に位置する別個のサービスであり得る。
【0044】
図4に示されるように、クライアント410は、オープンファイル要求を仮想ファイルシステムライブラリ420に送信することができる。仮想ファイルシステムライブラリ420は、ファイルがすでに開かれているかどうかを決定するために確認することができる。仮想ファイルシステムライブラリ420が、ファイルがまだ開かれていなかったことを決定する場合、仮想ファイルシステムライブラリ420は、パスをボリュームにマッピングすることを試み得る。ボリュームは、クライアントアプリケーション410に以前に割り当てられた1つまたは複数のデータブロックであってもよい。次いで、仮想ファイルシステムライブラリ420は、オープンファイル要求をファイルシステムライブラリ430に送信することができる。クライアントアプリケーション410内でインスタンスを生成され得るファイルシステムライブラリ430は、ボリューム読み出しブロック要求を論理ボリュームライブラリ440に伝送することができる。次いで、論理ボリュームライブラリ440は、ブロックキャッシュを読み出すことを試み得る。ファイルがブロックキャッシュ内で見つからない場合、論理ボリュームライブラリ440は、ディスク読み出しブロック要求をブロックデバイスサービス450に伝送することができる。
【0045】
ブロックデバイスサービス450は、ボリュームブロックをディスクブロックにマッピングし、永続ストレージデバイスなどの物理媒体からブロックを読み出すことができる。次いで、ブロックデバイスサービス450は、ブロックデータを論理ボリュームライブラリ440に伝送することができる。データが暗号化される場合、論理ボリュームライブラリ440は、データを復号することに進むことができる。論理ボリュームライブラリ440は、復号されたデータでブロックキャッシュを更新し、ブロックデータをファイルライブラリシステム430に伝送することができる。ファイルシステムライブラリ430は、ブロックデータを構文解析し、そのデータをファイルシステムノードデータ構造の形態で仮想ファイルシステムライブラリ420に伝送することができる。ファイルコンテクストは、仮想ファイルシステムライブラリ420からクライアント410へ伝送され得る。
【0046】
図5は、特定の実施形態に従う、システムフロー図の例を例証する。特に、図5は、クライアントがファイルを読み出すことを要求する動作を例証する。クライアント510は、アプリケーション211、212、および213に対応し得る。クライアント510、仮想ファイルシステムライブラリ520、ファイルシステムライブラリ530、および論理ボリュームライブラリ540はすべて、クライアントアプリケーションプロセスに含まれ得る一方、ブロックデバイスサービス550は、ユーザ空間内に位置する別個のサービスであり得る。図5に示されるように、クライアント510は、オープンファイルコンテクストの読み出し要求を仮想ファイルシステムライブラリ520に送信することができる。仮想ファイルシステムライブラリ520は、ファイルシステムノード上で読み出し要求を伝送することができる。次いで、ファイルシステムライブラリ530は、ファイルエクステントをブロックにマッピングすることを試み、ブロック読み出し要求を論理ボリュームライブラリ540に送信することができる。論理ボリュームライブラリ540は、ブロックキャッシュからデータをコピーしようとし得る。論理ボリュームライブラリ540がブロックキャッシュからデータをコピーすることに失敗した場合、論理ボリュームライブラリ540は、ブロック読み出し要求をブロックデバイスサービス550に伝送することができる。ブロックデバイスサービス550は、ボリュームブロックをディスクブロックに再マッピングし、再マッピングされたブロックを物理媒体から読み出すことができる。図5に示されるように、ブロックデバイスサービス550は、ブロックデータを論理ボリュームライブラリ540に伝送することができる。ブロックデータが暗号化される場合、論理ボリュームライブラリ540は、データを復号することができる。論理ボリュームライブラリ540は、復号されたデータを使用してブロックキャッシュを更新することができる。ブロックキャッシュを更新した後、論理ボリュームライブラリ540は、ファイルデータをクライアント510に伝送することができる。
【0047】
図6は、特定の実施形態に従う、システムフロー図の例を例証する。特に、図6は、クライアントがディスクドライブまたはディスクデバイスに書き込むことを要求する動作を例証する。クライアント610、仮想ファイルシステムライブラリ620、ファイルシステムライブラリ630、および論理ボリュームライブラリ640はすべて、クライアントアプリケーションプロセスに含まれ得る一方、ブロックデバイスサービス650は、ユーザ空間内に位置する別個のサービスであり得る。クライアント610は、アプリケーション211、212、および213に対応し得る。クライアントアプリケーション610は、オープンファイルコンテクストの書き出し要求を仮想ファイルシステムライブラリ620に伝送することができる。仮想ファイルシステムライブラリ620は、ファイルシステムノード上での書き込み要求をファイルシステムライブラリ630に送信することができる。ファイルシステムライブラリ630は、ファイルエクステントをブロックにマッピングすることを試み得る。ファイルシステムライブラリ630は、ブロック書き込み要求を論理ボリュームライブラリ640に伝送することができる。次いで、論理ボリュームライブラリ640は、データをブロックキャッシュにコピーすることを試み得る。
【0048】
特定の実施形態において、論理ボリュームライブラリ640は、書き込みキャッシュがコヒーレントであることをクライアントアプリケーション610に通知することができる。次いで、論理ボリュームライブラリ640は、ブロックデータを暗号化することを試み得る。ブロック書き込み要求は、論理ボリュームライブラリ640からブロックデバイスサービス650へ伝送され得る。ブロックデバイスサービス650は、ボリュームブロックをディスクブロックに再マッピングし、再マッピングされたブロックを物理媒体に書き込むことができる。ブロックデバイスサービス650は、ディスクへのブロック書き込みが完了したことを論理ボリュームライブラリ640に通知することができる。次いで、書き込みが恒久性であるという通知が、ファイルシステムライブラリ630および仮想ファイルシステムライブラリ620を通じて、論理ボリュームライブラリ640からクライアント610へ伝送され得る。
【0049】
図7は、特定の実施形態に従う、フロー図の例を例証する。特に、図7は、図2に示されるようなオペレーティングシステムを実行するコンピューティングデバイスによって実施される方法の例を例証する。ステップ710において、クライアントアプリケーションとも呼ばれるアプリケーションは、オペレーティングシステムのユーザ空間内の第1のプロセスとして開始することができる。アプリケーションは、オペレーティングシステムと関連付けられたファイルシステムライブラリのインスタンスを生成することができる。ステップ720において、要求は、アプリケーションの設定中に論理ボリュームサービスに送信され得る。ステップ730において、アプリケーションは、コンピューティングデバイスの永続ストレージデバイスにおける1つまたは複数のデータブロックの割り当てを受信することができる。論理ボリュームサービスは、永続ストレージデバイスにおける1つまたは複数のデータブロックの割り当てをブロックデバイスサービスに通知することができる。特定の実施形態において、論理ボリュームサービスは、アプリケーションの1つまたは複数のデータブロックを、オペレーティングシステムのユーザ空間内の第3のプロセスとして動作する別のアプリケーションに割り当てられた1つまたは複数の他のデータブロックと連係させる。ブロックデバイスサービスは、ホストコンピューティングデバイスのハードウェアとインターフェースをとるのに十分にセキュアであり得る。
【0050】
ステップ740において、ブロックデバイスサービスは、ユーザ空間内で開始することができる。ブロックデバイスサービスは、永続ストレージデバイスを管理するように構成され得る。オペレーティングシステムのカーネルは、ステップ750に示されるように、IPCチャネルを通じてブロックデバイスサービスと通信するためのアプリケーションからのシステムコール要求を受信することができる。システムコール要求は、永続ストレージデバイスへアクセスするためのアクセス要求を含み得る。ステップ760において、アプリケーションは、システムコール要求に応答して、IPCチャネルを通じたブロックデバイスサービスへのアクセスを提供することができる。いくつかの実施形態において、必要な場合、アプリケーションは、追加のアクセス要求を論理ボリュームサービスに送信することができる。それに応じて、アプリケーションは、コンピューティングデバイスの永続ストレージデバイスにおける1つまたは複数の追加のデータブロックの追加の割り当てを受信することができる。
【0051】
システムコール要求に応答して、カーネルは、アクセス要求をブロックデバイスサービスに送信することができる。アクセスが許諾されると、アプリケーションは、ブロックデバイスサービスへの提供されたアクセスに基づいて、永続ストレージデバイスのデータブロックに対してデータを読み出す、または書き込むことができる。いくつかの実施形態において、論理ボリュームサービスは、1つまたは複数のデータブロックを、アプリケーションおよび別のアプリケーションと呼ばれる、2つの異なるアプリケーションに割り当てることができる。アプリケーションおよび別のアプリケーションは、1つまたは複数のブロックを共有することができる。いくつかの実施形態において、論理ボリュームサービスは、永続ストレージデバイスへアクセスするための別のクライアントからの別のアクセス要求を受信することができる。論理ボリュームサービスは、永続ストレージデバイスにおける1つまたは複数のデータブロックの割り当てに基づいて、別のアクセス要求を許諾または拒否することを決定することができる。図2に関して上に説明されるように、別のアプリケーションが1つまたは複数のデータブロックに対して書き込みまたは読み出しを行った後、永続ストレージデバイスの1つまたは複数のデータブロックは、アプリケーションに再割り当てされ得る。
【0052】
特定の実施形態において、拡張現実デバイスなどのコンピューティングデバイスのためのオペレーティングシステムは、一緒に積層される、ディスクドライブまたはディスクデバイスと呼ばれる永続ストレージデバイス、ファイルストアサービス、およびキー値ストアを含み得る。図8は、コンピューティングデバイス上で実行するキー値ストアの例を例証する。特に、図8は、一緒に積層される、キー値ストアデータベースライブラリ810、ファイルシステムサービスとも称されるファイルストアサービス820、ディスクドライブまたはディスクデバイス830、およびハードウェア840を例証する。キー値ストアデータベースライブラリ810は、図3のキー/値ライブラリ330と同様であり得る。図8に示されるように、キー値ストアデータベースライブラリ810は、ファイルストアサービスまたはシステム820の上に積層され得、ファイルストアサービス820がキー値ストアデータベースライブラリ810とディスクドライブ830との間の仲介役としての機能を果たすことを意味する。ファイルストアサービス820およびディスクドライブ830は両方とも、カーネル空間内に位置し得る。他の実施形態において、ファイルストアサービス820および/またはディスクドライブ830は、ユーザ空間サービスであり得る。
【0053】
以下に説明される特定の実施形態は、図8に示される積層ストレージによって使用されるリソースの量を低減するのを助け得る。具体的には、ファイルシステムおよびフラッシュ転換層の読み出しまたは書き込み増幅効果に起因した、高オーバーヘッドおよび無駄な入力/出力サイクルが存在し得る。オーバーヘッドの量を下げるのを助けるため、ならびに無駄な入力/出力サイクルの数およびメタデータ更新を低減するため、いくつかの実施形態は、キー値ストアライブラリが、ファイルストアサービスを回避して、ディスクドライブと直接通信することを可能にし得る。例えば、キー値ストアデータベースライブラリ810は、単一のIPCチャネルを介してディスクドライブ830と通信することができる。キー値ストアデータベースライブラリ810とディスクドライブ830との直接通信を前提として、特定の実施形態において、ファイルストアサービス820は、完全に除去され得る。その一方で、特定の実施形態において、各々がディスクドライブ830との直接通信を有するファイルストアサービス820および/またはキー値ストアデータベースライブラリ810が、クライアントアプリケーションによって使用され得る。キー値ストアデータベースライブラリ810がディスクドライブ830と通信することを可能にすることにより、コンピューティングデバイスによって使用されるリソースの量を低減するのを助け得る。
【0054】
キー値ストアデータベースライブラリ810は、データを記憶および取得するためにアレイまたはハッシュテーブルを使用するデータベースであってもよい。アレイまたはハッシュテーブルは、例えば、値と関連付けられたキーを含み得る。キーは、クライアントによって指定された恣意的なデータblobであり得る一方、関連付けられた値は、任意の形態のデータまたはペイロードであり得る。ファイルストアライブラリとは異なり、特定のキー値ストアデータベースライブラリにおいて、データのインデックス作成および/または多重化を実施することはできず、ディレクトリ構造は存在することができない。代わりに、キー値ストアは、アプリケーションと関連付けられたキーの検索可能なインデックスを有することができる。1つの非限定的な例において、インデックス内のキーは、インデックスを検索するために使用され得るアプリケーション識別子と結び付けられ得る。キーが見つかり、関連ペイロードが取得されると、ペイロードは、割り当てられた永続ストレージデバイスの1つまたは複数のデータブロックの場所をアプリケーションに通知するために使用され得る。特定の実施形態において、キー値ストアは、永続ストレージデバイス内のその場所を示す内部構造を含み得る。
【0055】
図9は、コンピューティングデバイス上で実行するクライアントアプリケーションの例を例証する。特に、図9は、キー値ストアデータベースがクライアントアプリケーション内でインスタンスを生成され得る非限定的な実施形態を示す。図9に示されない他の実施形態において、キー値ストアデータベースは、クライアントアプリケーションの外側に位置するユーザ空間サービスであってもよい。クライアントアプリケーションとも呼ばれるアプリケーション911が、キー値ストアデータベースライブラリおよびファイルシステムライブラリの両方を含んでもよい。したがって、アプリケーション911は、キー値ストア/ライブラリおよび/もしくは別個のファイルシステムライブラリを介したストレージか、または任意の他のデータストレージシステム、とインターフェースをとるかを選択することができる。特定の実施形態において、各データストレージシステムは、異なるデータブロックを割り当てられ得る。例えば、キー値ストア/ライブラリおよびファイルシステムライブラリは、ディスクドライブまたはディスクデバイスの異なるデータブロックを割り当てられ得る。言い換えると、ファイルシステムライブラリおよびキー値ストアは、ボリュームまたはパーティションとも呼ばれ得る、ある特定の範囲のブロックを割り当てられ得る、または指定され得る。ファイルシステムライブラリおよびキー値ストアに対して指定されるブロックの範囲は、不連続であってもよい。アプリケーション911とは異なり、アプリケーション912は、キー値ストアのみを含み得る。
【0056】
特定の実施形態において、アプリケーション911および/または912は、オペレーティングシステムのユーザ空間内の第1のプロセスとして開始することができる。設定中、アプリケーション911および/または912は、論理ボリュームサービス921に要求を送信することができる。次いで、アプリケーション911、912は、ディスクドライブなどのコンピューティングデバイスの永続ストレージにおける第1または第2の1つまたは複数のデータブロックの割り当てを論理ボリュームサービス921から受信することができる。いくつかの実施形態において、アプリケーションは、オペレーティングシステムと関連付けられたキー値ストアおよび/またはファイルシステムのインスタンスを生成することができる。他の実施形態において、オペレーティングシステムと関連付けられたキー値ストアは、クライアントアプリケーションの外側に位置するユーザ空間サービスであってもよい。
【0057】
キー値ストアは、アプリケーションに割り当てられた1つまたは複数のデータブロックを管理するのを助け得る。1つまたは複数のデータブロックは、所与のクライアントアプリケーションに提供される仮想ディスクを表し得る。仮想ディスクは、ディスクがファイルシステムおよび/またはキー値ストアによって管理されているかどうかを示す識別子を有し得る。特定の実施形態において、キー値ストアは、仮想ストレージ空間を、アプリケーションに対して指定されたディスクドライブの割り当てられた部分またはパーティション内の1つまたは複数のデータブロックにマッピングすることができる。これは、クライアントアプリケーションが、ファイルストレージシステムの使用なしにキー値ストアのみを使用して、ディスクドライブまたはディスクデバイスなどの永続ストレージに対して読み出しおよび/または書き込みを行うことを可能にし得る。
【0058】
オペレーティングシステムのカーネル930は、いくつかの実施形態において、キー値ストアまたはファイルシステムによって生成されたシステムコール要求を受信することができる。システムコール要求は、コンピューティングデバイスの永続ストレージへアクセスするためのアクセス要求を含み得る。システムコールは、IPCチャネルを通じて受信および/または伝送され得る。1つの非限定的な例において、カーネル930は、マイクロカーネルであり得る。別の非限定的な例において、カーネルは、モノリシックカーネルであり得る。図9に示されるように、IPCチャネルは、キー値ストアをブロックデバイスサービス922に接続することができる。いくつかの実施形態において、ブロックデバイスサービス922、論理ボリュームサービス921、カーネル930、およびハードウェア940は、ブロックデバイスサービス222、論理ボリュームサービス221、カーネル230、およびハードウェア240に対応し得る。
【0059】
特定の実施形態において、ブロックデバイスサービス922は、オペレーティングシステムのユーザ空間内の第2のプロセスとして開始することができる。ブロックデバイスサービスは、コンピューティングデバイスの永続ストレージデバイスを管理するように構成され得る。言い換えると、ブロックデバイスサービスは、キー値ストアに割り当てられた永続ストレージの1つまたは複数の第1のデータブロック、およびファイルシステムに割り当てられた永続ストレージの1つまたは複数の第2のデータブロックを管理するために使用され得る。キー値ストアまたはファイルシステムは、システムコール要求に応答して、IPCチャネルを通じたブロックデバイスサービスへのアクセスを提供することができる。例えば、キー値ストアが、1つもしくは複数の第1のデータブロックへのアクセスを許諾され得るか、またはファイルシステムが、1つもしくは複数の第2のデータブロックへのアクセスを許諾され得る。1つまたは複数の第1および第2のデータブロックは、互いと異なり得、コンピューティングデバイスの永続ストレージデバイスの異なる部分にマッピングされ得る。キー値ストアは、永続ストレージへのアクセスを許諾され得る。キー値ストアは、ディスクドライブまたはディスクデバイスなどの、永続ストレージデバイスと呼ばれ得る、コンピューティングデバイスの永続ストレージへのアクセスをアプリケーションに提供することができる。
【0060】
上で論じられるように、キー値ストアは、1つまたは複数の第1のデータブロックを割り当てられ得る。特定の実施形態において、ディスクドライブまたはディスクデバイスなどの永続ストレージデバイス全体が、キー値ストアに割り当てられ得る。キー値ストアは、ディスクドライブを1つのファイルとして扱うことができ、キー値ストアの値は、1つのファイルの個別パーティションとして1つまたは複数の割り当てられたデータブロックにマッピングされている。いくつかの実施形態において、キー値ストアによって管理される1つまたは複数のデータブロックの各々のサイズは、大きいままであり得、ディスクドライブのパーティションの数を低減する。例えば、ブロックは、64キロバイトから1メガバイトの範囲に及び得る。代替的に、ブロックは、ディスクドライブ内の任意の他の範囲であり得る。これは、キー値ストアが永続ストレージデバイスをより良好に管理することを可能にし得る。1つの非限定的な例において、キー値ストアは、ログ構造化マージツリーを使用することができる。ログ構造化マージツリーを使用することにより、大きな順次データブロックを書き込むことを可能にし得、これは、フラッシュ書き込み動作を低減して、改善された性能およびフラッシュ部の長寿をもたらすのに有益であり得る。
【0061】
図10は、特定の実施形態に従う、フロー図の例を例証する。特に、図10は、例えば図9に示されるようなオペレーティングシステムを実行するコンピューティングデバイスによって実施される方法の例を例証する。ステップ1010において、アプリケーションは、オペレーティングシステムのユーザ空間内の第1のプロセスとして開始することができる。アプリケーションは、オペレーティングシステムと関連付けられたキー値ストアおよび/またはファイルシステムのインスタンスを生成することができる。ステップ1020において、要求は、アプリケーションの設定中に論理ボリュームサービスに送信され得る。ステップ1030において、アプリケーションは、キー値ストアのためのコンピューティングデバイスの永続ストレージにおける第1の1つまたは複数のデータブロック、およびファイルシステムのための永続ストレージデバイスにおける第2の1つまたは複数のデータブロック、の割り当てを受信することができる。ステップ1040において、ブロックデバイスサービスは、オペレーティングシステムのユーザ空間内の第2のプロセスとして開始され得る。論理ボリュームサービスは、永続ストレージデバイスにおける1つまたは複数の第1のデータブロックおよび1つまたは複数の第2のデータブロックの割り当てをブロックデバイスサービスに通知することができる。特定の実施形態において、ブロックデバイスサービスは、コンピューティングデバイスの永続ストレージを管理するように構成され得る。システムコール要求に応答して、キー値ストアおよびファイルシステムは、IPCチャネルを通じた1つもしくは複数の第1のデータブロックまたは1つもしくは複数の第2のデータブロックへのアクセスを提供することができる。ステップ1050において、オペレーティングシステムのユーザ空間内の第2のプロセスとして実行するブロックデバイスサービスは、キー値ストアに割り当てられた永続ストレージの1つまたは複数の第1のデータブロック、および第1のシステムに割り当てられた永続ストレージの1つまたは複数の第2のデータブロックを管理することができる。
【0062】
オペレーティングシステムのカーネルは、ステップ1060に示されるように、キー値ストアまたはファイルシステムによって生成されたシステムコール要求を受信することができる。システムコール要求は、コンピューティングデバイスの永続ストレージへアクセスするためのアクセス要求を含み得る。いくつかの実施形態において、システムコール要求は、IPCチャネルを介して受信され得る。カーネルは、マイクロカーネルまたはモノリシックカーネルであり得る。ステップ1070において、ブロックデバイスサービスは、アクセス要求に応答して、キー値ストアに1つまたは複数の第1のデータブロックへのアクセスを、またはファイルシステムに1つまたは複数の第2のデータブロックへのアクセスを許諾し得る。第1のデータブロックは、第1の範囲のデータブロックであり得る一方、1つまたは複数の第2のデータブロックは、第2の範囲のデータブロックの範囲であり得る。次いで、キー値ストアは、永続ストレージデバイスの1つまたは複数の第1のデータブロックに対してデータを読み出す、または書き込むために使用され得る一方、ファイルシステムは、永続ストレージデバイスの1つまたは複数の第2のデータブロックに対して読み出しまたは書き込みを行うために使用され得る。1つの非限定的な例において、キー値ストアは、ログ構造化マージツリーを使用して1つまたは複数のデータブロックを管理することができる。アプリケーションは、いくつかの非限定的な実施形態において、アプリケーションが、アクセスすること、読み出すこと、および/または書き込むことを望むのが1つもしくは複数の第1または第2のデータブロックのどちらであるかに基づいて、キー値ストアまたはファイルシステムライブラリの間で選択する、または選ぶことができる。
【0063】
特定の実施形態は、適切な場合、図7および図10の方法の1つまたは複数のステップを繰り返すことができる。本開示は、図7および図10の方法の特定のステップを特定の順序で発生するものとして説明および例証するが、本開示は、任意の好適な順序で発生する図7および図10の方法の任意の好適なステップを企図する。さらには、本開示は、図7および図10に示される方法のステップを含む特定の実施形態に従う、物理ハードウェアへアクセスするための例となる方法を説明および例証するが、本開示は、適切な場合、図7および図10の方法のステップのすべて、いくつかを含み得る、またはいずれも含まない場合がある、任意の好適なステップを含む特定の実施形態に従う、物理ハードウェアへアクセスするための任意の好適な方法を企図する。さらに、本開示は、図7および図10の方法の特定のステップを実行する特定の構成要素、デバイス、またはシステムを説明および例証するが、本開示は、図7および図10の方法の任意の好適なステップを実行する任意の好適な構成要素、デバイス、またはシステムの任意の好適な組み合わせを企図する。
【0064】
図11は、ソーシャルネットワーキングシステムと関連付けられた例となるネットワーク環境1100を例証する。特に、ネットワーク環境1100は、仮想ドライバを含む仮想マシンおよび仮想ハードウェア構成要素が動作することができるコンピューティングデバイスを含み得る。ネットワーク環境1100は、接続1150および1170を介して、ネットワーク1140によって互いに接続される、ユーザ1110、クライアントシステム1120、ソーシャルネットワーキングシステム1160、およびサードパーティシステム1180を含む。接続1130は、ネットワーク1140およびモバイルクライアントシステム1120を接続するために使用される。図11は、ユーザ1110、クライアントシステム1120、ソーシャルネットワーキングシステム1160、サードパーティシステム1180、およびネットワーク1140の特定の配置を例証するが、本開示は、ユーザ1110、クライアントシステム1120、ソーシャルネットワーキングシステム1160、サードパーティシステム1180、およびネットワーク1140の任意の好適な配置を企図する。例として、および限定の目的ではなく、クライアントシステム1120、ソーシャルネットワーキングシステム1160、およびサードパーティシステム1180のうちの2つ以上が、ネットワーク1140を回避して、互いに直接接続され得る。別の例として、クライアントシステム1120、ソーシャルネットワーキングシステム1160、およびサードパーティシステム1180のうちの2つ以上が、全体的または部分的に互いと物理的または論理的に同一場所に位置し得る。さらには、図11は、特定の数のユーザ1110、クライアントシステム1120、ソーシャルネットワーキングシステム1160、サードパーティシステム1180、およびネットワーク1140を例証するが、本開示は、任意の好適な数のユーザ1110、クライアントシステム1120、ソーシャルネットワーキングシステム1160、サードパーティシステム1180、およびネットワーク1140を企図する。例として、および限定の目的のためではなく、ネットワーク環境1100は、複数のユーザ1110、クライアントシステム1120、ソーシャルネットワーキングシステム1160、サードパーティシステム1180、およびネットワーク1140を含み得る。
【0065】
特定の実施形態において、ユーザ1110は、ソーシャルネットワーキングシステム1160を用いて、またはこれを介して、対話または通信する、個人(人間のユーザ)、エンティティ(例えば、企業、ビジネス、またはサードパーティアプリケーション)、またはグループ(例えば、個人またはエンティティの)であり得る。特定の実施形態において、ソーシャルネットワーキングシステム1160は、オンラインソーシャルネットワークをホストするネットワークアドレス可能コンピューティングシステムであり得る。ソーシャルネットワーキングシステム1160は、例えば、ユーザプロファイルデータ、コンセプトプロファイルデータ、ソーシャルグラフ情報、またはオンラインソーシャルネットワークに関連した他の任意の好適なデータなどの、ソーシャルネットワーキングデータを生成、記憶、受信、および送信することができる。ソーシャルネットワーキングシステム1160は、ネットワーク環境1100の他の構成要素によって、直接的に、またはネットワーク1140を介して、アクセスされ得る。特定の実施形態において、ソーシャルネットワーキングシステム1160は、ユーザ1110が、例えば、適切なプライバシー設定を設定することによって、自らのアクションをソーシャルネットワーキングシステム1160によってログさせること、または他のシステム(例えば、サードパーティシステム1180)と共有させることをオプトインまたはオプトアウトすることを可能にする、認証サーバ(または他の好適な構成要素(複数可))を含み得る。ユーザのプライバシー設定は、何のユーザと関連付けられた情報がログされ得るか、ユーザと関連付けられた情報がどのようにログされ得るか、ユーザと関連付けられた情報がいつログされ得るか、誰がユーザと関連付けられた情報をログし得るか、ユーザと関連付けられた情報が誰と共有され得るか、および何の目的でユーザと関連付けられた情報がログまたは共有され得るか、を決定することができる。認証サーバは、適切な場合、ブロッキング、データハッシュ、匿名化、または他の任意の好適な技術を通じて、ソーシャルネットワーキングシステム1160のユーザの1つまたは複数のプライバシー設定を行使するために使用され得る。特定の実施形態において、サードパーティシステム1180は、ARまたはVRを使用するゲーミングアプリケーションをホストすることができるネットワークアドレス可能コンピューティングシステムであり得る。サードパーティシステム1180は、例えば、ゲーミングアプリケーションに関連したデータなど、システムデータを生成、記憶、受信、および送信することができる。サードパーティシステム1180は、ネットワーク環境1100の他の構成要素によって、直接的に、またはネットワーク1140を介して、アクセスされ得る。特定の実施形態において、1つまたは複数のユーザ1110は、1つまたは複数のクライアントシステム1120を使用して、ソーシャルネットワーキングシステム1160またはサードパーティシステム1180へアクセスする、そこにデータを送信する、およびそこからデータを受信することができる。クライアントシステム1120は、直接的に、ネットワーク1140を介して、またはサードパーティシステムを介して、ソーシャルネットワーキングシステム1160またはサードパーティシステム1180へアクセスすることができる。例として、および限定の目的ではなく、クライアントシステム1120は、ソーシャルネットワーキングシステム1160を介して、サードパーティシステム1180へアクセスすることができる。クライアントシステム1120は、例えば、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、スマートフォン、タブレットコンピュータ、または拡張/仮想現実デバイスなど、任意の好適なコンピューティングデバイスであり得る。
【0066】
本開示は、任意の好適なネットワーク1140を企図する。例として、および限定の目的ではなく、ネットワーク1140の1つまたは複数の部分は、アドホックネットワーク、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、ローカルエリアネットワーク(LAN)、ワイヤレスLAN(WLAN)、広域ネットワーク(WAN)、ワイヤレスWAN(WWAN)、大都市圏ネットワーク(MAN)、インターネットの一部分、公衆交換電話網(PSTN:Public Switched Telephone Network)の一部分、携帯電話ネットワーク、これらのうちの2つ以上の任意の組み合わせを含み得る。ネットワーク340は、1つまたは複数のネットワークを含み得る。
【0067】
リンクまたはチャネル1150、1170は、クライアントシステム1120、ソーシャルネットワーキングシステム1160、およびサードパーティシステム1180を、通信ネットワーク1140に、または互いに、接続することができる。リンク1130は、モバイルクライアントシステム1120およびネットワーク1140を接続する。本開示は、任意の好適なリンク1130、1150、1170を企図する。特定の実施形態において、1つまたは複数のリンク1130、1150、1170は、1つまたは複数の有線リンク(例えば、デジタル加入者線(DSL:Digital Subscriber Line)またはData Over Cable Service Interface Specification(DOCSIS)など)、ワイヤレスリンク(例えば、Wi-FiまたはWorldwide Interoperability for Microwave Access(WiMAX)など)、または光リンク(例えば、同期光ネットワーク(SONET:Synchronous Optical Network)または同期デジタルハイアラーキ(SDH:Synchronous Digital Hierarchy))を含み得る。特定の実施形態において、1つまたは複数のリンク1130、1150、1170は各々、アドホックネットワーク、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、WWAN、MAN、インターネットの一部分、PSTNの一部分、セルラ技術ベースのネットワーク、衛星通信技術ベースのネットワーク、別のリンク1130、1150、1170、または2つ以上のそのようなリンク1130、1150、1170の組み合わせを含み得る。リンク1130、1150、1170は、ネットワーク環境1130、1150、1170全体を通じて必ずしも同じである必要はない。1つまたは複数の第1のリンク1130、1150、1170は、1つまたは複数の第2のリンク1130、1150、1170とは、1つまたは複数の点において異なり得る。
【0068】
図12は、例となるコンピュータシステム1200を例証する。特定の実施形態において、1つまたは複数のコンピュータシステム1200は、本明細書に説明または例証される1つまたは複数の方法の1つまたは複数のステップを実施する。いくつかの実施形態において、1つまたは複数のコンピュータシステム1200は、本明細書に説明または例証される機能性を提供する。特定の実施形態において、1つまたは複数のコンピュータシステム1200上で実行するソフトウェアは、本明細書に説明もしくは例証される1つもしくは複数の方法の1つもしくは複数のステップを実施するか、または本明細書に説明もしくは例証される機能性を提供する。特定の実施形態は、1つまたは複数のコンピュータシステム1200の1つまたは複数の部分を含む。本明細書において、コンピュータシステムへの言及は、適切な場合、コンピューティングデバイスを包含し得、またその逆も然りである。さらには、コンピュータシステムへの言及は、適切な場合、1つまたは複数のコンピュータシステムを包含し得る。
【0069】
本開示は、任意の好適な数のコンピュータシステム1200を企図する。本開示は、任意の好適な物理的形態をとるコンピュータシステム1200を企図する。例として、および限定の目的ではなく、コンピュータシステム1200は、埋め込み型コンピュータシステム、システムオンチップ(SOC)、シングルボードコンピュータシステム(SBC)(例えば、コンピュータオンモジュール(COM)またはシステムオンモジュール(SOM)など)、デスクトップコンピュータシステム、ラップトップもしくはノートブックコンピュータシステム、インターネットキオスク、メインフレーム、コンピュータシステムのメッシュ、移動電話、パーソナルデジタルアシスタント(PDA)、サーバ、タブレットコンピュータシステム、拡張/仮想現実デバイス、またはこれらのうちの2つ以上の組み合わせであり得る。適切な場合、コンピュータシステム1200は、単一もしくは分散型であるか、複数マシンに及ぶか、複数データセンタに及ぶか、または、1つもしくは複数のネットワーク内に1つまたは複数のクラウド構成要素を含み得るクラウド内に存在する、1つまたは複数のコンピュータシステム1200を含み得る。適切な場合、1つまたは複数のコンピュータシステム1200は、実質的な空間的または時間的制限なしに、本明細書に説明または例証される1つまたは複数の方法の1つまたは複数のステップを実施することができる。例として、および限定の目的ではなく、1つまたは複数のコンピュータシステム1200は、本明細書に説明または例証される1つまたは複数の方法の1つまたは複数のステップを、リアルタイムで、またはバッチモードで実施することができる。1つまたは複数のコンピュータシステム1200は、適切な場合、本明細書に説明または例証される1つまたは複数の方法の1つまたは複数のステップを、異なる時間に、または異なる場所で、実施することができる。
【0070】
特定の実施形態において、コンピュータシステム1200は、プロセッサ1202、メモリ1204、ストレージ1206、入力/出力(I/O)インターフェース1208、通信インターフェース1210、およびバス1212を含む。本開示は、特定の数の特定の構成要素を特定の配置で有する特定のコンピュータシステムを説明および例証するが、本開示は、任意の好適な数の任意の好適な構成要素を任意の好適な配置で有する任意の好適なコンピュータシステムを企図する。
【0071】
特定の実施形態において、プロセッサ1202は、コンピュータプログラムを構成するものなど、命令を実行するためのハードウェアを含む。例として、および限定の目的ではなく、命令を実行するため、プロセッサ1202は、内部レジスタ、内部キャッシュ、メモリ1204、またはストレージ1206から命令を取得(またはフェッチ)し、それらを復号および実行し、次いで、1つまたは複数の結果を、内部レジスタ、内部キャッシュ、メモリ1204、またはストレージ1206に書き込むことができる。特定の実施形態において、プロセッサ1202は、データ、命令、またはアドレスのための1つまたは複数の内部キャッシュを含み得る。本開示は、適切な場合、任意の好適な数の任意の好適な内部キャッシュを含むプロセッサ1202を企図する。例として、および限定の目的ではなく、プロセッサ1202は、1つまたは複数の命令キャッシュ、1つまたは複数のデータキャッシュ、および1つまたは複数の変換索引バッファ(TLB:Translation Lookaside Buffer)を含み得る。命令キャッシュ内の命令は、メモリ1204またはストレージ1206内の命令のコピーであり得、命令キャッシュは、プロセッサ1202によるそれらの命令の取得を高速化することができる。データキャッシュ内のデータは、プロセッサ1202において実行する命令が、プロセッサ1202において実行する後続の命令によるアクセスのため、またはメモリ1204もしくはストレージ1206への書き込みのため、プロセッサ1202において実行される以前の命令の結果に対して、あるいは他の好適なデータに対して動作するためのメモリ1204またはストレージ1206内のデータのコピーであり得る。データキャッシュは、プロセッサ1202による読み出しまたは書き込み動作を高速化することができる。TLBは、プロセッサ1202のための仮想アドレス変換を高速化することができる。特定の実施形態において、プロセッサ1202は、データ、命令、またはアドレスのための1つまたは複数の内部レジスタを含み得る。本開示は、適切な場合、任意の好適な数の任意の好適な内部レジスタを含むプロセッサ1202を企図する。適切な場合、プロセッサ1202は、1つまたは複数の論理演算装置(ALU:Arithmetic Logic Unit)を含み得るか、マルチコアプロセッサであり得るか、または1つまたは複数のプロセッサ1202を含み得る。本開示は、特定のプロセッサを説明および例証するが、本開示は、任意の好適なプロセッサを企図する。
【0072】
特定の実施形態において、メモリ1204は、プロセッサ1202が実行する命令、またはプロセッサ1202が動作するところのデータを記憶するためのメインメモリを含む。例として、および限定の目的ではなく、コンピュータシステム1200は、ストレージ1206または別のソース(例えば、別のコンピュータシステム1200など)からメモリ1204へ命令をロードすることができる。次いで、プロセッサ1202は、メモリ1204から内部レジスタまたは内部キャッシュへ命令をロードすることができる。命令を実行するため、プロセッサ1202は、内部レジスタまたは内部キャッシュから命令を取得し、それらを復号することができる。命令の実行中または実行後、プロセッサ1202は、1つまたは複数の結果(中間または最終結果であり得る)を内部レジスタまたは内部キャッシュに書き込むことができる。次いで、プロセッサ1202は、それらの結果のうちの1つまたは複数をメモリ1204に書き込むことができる。特定の実施形態において、プロセッサ1202は、1つまたは複数の内部レジスタもしくは内部キャッシュ内、またはメモリ1204(ストレージ1206または他の場所に対立するものとしての)内で命令だけを実行し、1つまたは複数の内部レジスタもしくは内部キャッシュ内、またはメモリ1204(ストレージ1206または他の場所に対立するものとしての)内のデータだけに対して動作する。1つまたは複数のメモリバス(各々がアドレスバスおよびデータバスを含み得る)は、プロセッサ1202をメモリ1204に結合することができる。バス1214は、以下に説明されるように、1つまたは複数のメモリバスを含み得る。特定の実施形態において、1つまたは複数のメモリ管理装置(MMU:Memory Management Unit)が、プロセッサ1202とメモリ1204との間に存在し、プロセッサ1202によって要求されるメモリ404へのアクセスを促進する。特定の実施形態において、メモリ1204は、ランダムアクセスメモリ(RAM)を含む。このRAMは、適切な場合、揮発性メモリであり得る。適切な場合、このRAMは、動的RAM(DRAM)または静的RAM(SRAM)であり得る。さらに、適切な場合、このRAMは、単一ポート付きまたは複数ポート付きのRAMであり得る。本開示は、任意の好適なRAMを企図する。メモリ1204は、適切な場合、1つまたは複数のメモリ404を含み得る。本開示は、特定のメモリを説明および例証するが、本開示は、任意の好適なメモリを企図する。
【0073】
特定の実施形態において、ストレージ1206は、データまたは命令のためのマスストレージを含む。例として、および限定の目的ではなく、ストレージ1206は、ハードディスクドライブ(HDD)、フロッピディスクドライブ、フラッシュメモリ、光学ディスク、光磁気ディスク、磁気テープ、またはユニバーサルシリアルバス(USB)ドライブ、またはこれらのうちの2つ以上の組み合わせを含み得る。ストレージ406は、適切な場合、可換型または非可換型(または固定)媒体を含み得る。ストレージ406は、適切な場合、コンピュータシステム1200の内部または外部にあり得る。特定の実施形態において、ストレージ1206は、不揮発性の固体メモリである。特定の実施形態において、ストレージ1206は、リードオンリメモリ(ROM)を含む。適切な場合、このROMは、マスクプログラムされたROM、プログラム可能なROM(PROM)、消去可能なPROM(EPROM)、電気的に消去可能なPROM(EEPROM)、電気的に変更可能なROM(EAROM)、フラッシュメモリ、またはこれらのうちの2つ以上の組み合わせであり得る。本開示は、任意の好適な物理的形態をとるマスストレージ1206を企図する。ストレージ1206は、適切な場合、プロセッサ1202とストレージ1206との間の通信を促進する1つまたは複数のストレージ制御装置を含み得る。適切な場合、ストレージ1206は、1つまたは複数のストレージ1206を含み得る。本開示は、特定のストレージを説明および例証するが、本開示は、任意の好適なストレージを企図する。
【0074】
特定の実施形態において、I/Oインターフェース1208は、コンピュータシステム1200と1つまたは複数のI/Oデバイスとの間の通信のための1つまたは複数のインターフェースを提供する、ハードウェア、ソフトウェア、または両方を含む。コンピュータシステム1200は、適切な場合、これらのI/Oデバイスのうちの1つまたは複数を含み得る。これらのI/Oデバイスのうちの1つまたは複数は、人とコンピュータシステム1200との通信を可能にし得る。例として、および限定の目的ではなく、I/Oデバイスは、キーボード、キーパッド、マイク、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチルカメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、別の好適なI/Oデバイス、またはこれらのうちの2つ以上の組み合わせを含み得る。I/Oデバイスは、1つまたは複数のセンサを含み得る。本開示は、任意の好適なI/Oデバイス、およびそれらのための任意の好適なI/Oインターフェース1208を企図する。適切な場合、I/Oインターフェース1208は、プロセッサ1202がこれらのI/Oデバイスのうちの1つまたは複数を駆動することを可能にする、1つまたは複数のデバイスまたはソフトウェアドライバを含み得る。I/Oインターフェース1208は、適切な場合、1つまたは複数のI/Oインターフェース408を含み得る。本開示は、特定のI/Oインターフェースを説明および例証するが、本開示は、任意の好適なI/Oインターフェースを企図する。
【0075】
特定の実施形態において、通信インターフェース1210は、コンピュータシステム1200と1つもしくは複数の他のコンピュータシステム1200または1つもしくは複数のネットワークとの間の通信(例えば、パケットベースの通信)のための1つまたは複数のインターフェースを提供する、ハードウェア、ソフトウェア、または両方を含む。例として、および限定の目的ではなく、通信インターフェース1210は、イーサネットもしくは他のワイヤベースのネットワークとの通信のためのネットワークインターフェースコントローラ(NIC)もしくはネットワークアダプタ、またはWI-FIネットワークなどのワイヤレスネットワークと通信するためのワイヤレスNIC(WNIC)もしくはワイヤレスアダプタを含み得る。本開示は、任意の好適なネットワーク、およびそのための任意の好適な通信インターフェース1210を企図する。例として、および限定の目的ではなく、コンピュータシステム1200は、アドホックネットワーク、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、大都市圏ネットワーク(MAN)、またはインターネットの1つもしくは複数の部分、またはこれらのうちの2つ以上の組み合わせと通信することができる。これらのネットワークのうちの1つまたは複数の1つまたは複数の部分は、有線またはワイヤレスであり得る。例として、コンピュータシステム1200は、ワイヤレスPAN(WPAN)(例えば、ブルートゥースWPANなど)、WI-FIネットワーク、WI-MAXネットワーク、携帯電話ネットワーク(例えば、汎欧州デジタル移動電話方式(GSM:Global System for Mobile Communications)ネットワークなど)、または他の好適なワイヤレスネットワーク、またはこれらのうちの2つ以上の組み合わせと通信することができる。コンピュータシステム1200は、適切な場合、これらのネットワークのうちのいずれかのための任意の好適な通信インターフェース1210を含み得る。通信インターフェース410は、適切な場合、1つまたは複数の通信インターフェース1210を含み得る。本開示は、特定の通信インターフェースを説明および例証するが、本開示は、任意の好適な通信インターフェースを企図する。
【0076】
特定の実施形態において、バス1212は、コンピュータシステム1200の構成要素を互いと結合する、ハードウェア、ソフトウェア、または両方を含む。例として、および限定の目的ではなく、バス414は、Accelerated Graphics Port(AGP)または他のグラフィックバス、Enhanced Industry Standard Architecture(EISA)バス、フロントサイドバス(FSB)、HYPERTRANSPORT(HT)相互接続、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、INFINIBAND相互接続、コンピュータバス規格(LPC:low-pin-count)バス、メモリバス、マイクロチャネルアーキテクチャ(MCA)バス、周辺機器相互接続(PCI:Peripheral Component Interconnect)バス、PCIエクスプレス(PCIe)バス、シリアルアドバンストテクノロジアタッチメント(SATA)バス、VESAローカルバス(VLB)、または別の好適なバス、またはこれらのうちの2つ以上の組み合わせを含み得る。バス1212は、適切な場合、1つまたは複数のバス1212を含み得る。本開示は、特定のバスを説明および例証するが、本開示は、任意の好適なバスまたは相互接続を企図する。
【0077】
本明細書において、コンピュータ可読非一時的ストレージ媒体(複数可)は、適切な場合、1つまたは複数の半導体ベースの回路もしくは他の集積回路(IC)(例えば、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向けIC(ASIC)など)、ハードディスクドライブ(HDD)、ハイブリッドハードドライブ(HHD)、光学ディスク、光学ディスクドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピディスケット、フロッピディスクドライブ(FDD)、磁気テープ、固体ドライブ(SSD)、RAMドライブ、SECURE DIGITALカードもしくはドライブ、任意の他の好適なコンピュータ可読非一時的記憶媒体、またはこれらのうちの2つ以上の組み合わせを含み得る。コンピュータ可読非一時的ストレージ媒体は、適切な場合、揮発性、不揮発性、または揮発性および不揮発性の組み合わせであり得る。
【0078】
本明細書において、「または」は、別途明示的に示されるか、別途文脈により示されることがない限り、包括的であり、排他的ではない。したがって、本明細書において、「AまたはB」は、別途明示的に示されるか、別途文脈により示されることがない限り、「A、B、または両方」を意味する。さらには、「および」は、別途明示的に示されるか、別途文脈により示されることがない限り、共同および個別の両方である。したがって、本明細書において、「AおよびB」は、別途明示的に示されるか、別途文脈により示されることがない限り、「共同的または個別的に、AおよびB」を意味する。
【0079】
本開示の範囲は、当業者が理解することとなる、本明細書に説明または例証される例となる実施形態に対するすべての変更、置き換え、変異形、改変、および修正を包含する。本開示の範囲は、本明細書に説明または例証される例となる実施形態に限定されない。さらには、本開示は、本明細書内でそれぞれの実施形態を特定の構成要素、要素、特徴、機能、動作、またはステップを含むものとして説明および例証するが、これらの実施形態のいずれかは、当業者が理解することとなる、本明細書内のどこかに説明または例証される構成要素、要素、特徴、機能、動作、またはステップのいずれかの任意の組み合わせまたは並べ替えを含み得る。さらには、装置もしくはシステムまたは装置もしくはシステムの構成要素が、特定の機能を、実施するように適合される、実施するように配置される、実施する能力がある、実施するように構成される、実施することが可能にされる、実施するように動作可能である、または実施するように動作することに対する、添付の特許請求の範囲における言及は、その装置、システム、構成要素を、それまたはその特定の機能が活性化される、オンにされる、またはロック解除されるにしろ、そうでないにしろ、その装置、システム、または構成要素が、そのように適合される、配置される、能力がある、構成される、可能にされる、動作可能である、動作する限り、包含する。加えて、本開示は、特定の実施形態を、特定の利点を提供するものとして説明または例証するが、特定の実施形態は、これらの利点のうちのいずれも提供しないか、いくつか、またはすべてを提供し得る。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
【国際調査報告】