(57)【要約】ユーザに関連付けられた１つ以上のユーザデバイスのためのデバイス相互運用システムが開示される。前記１つ以上のユーザデバイスが第１のユーザデバイスを含んでおり、前記デバイス相互運用システムは、通信モジュールであって、第１の接続が前記第１のユーザデバイスと前記通信モジュールの間で確立される、通信モジュールと、前記デバイス相互運用システムに関連付けられ、前記通信モジュールに結合されたストレージであって、前記ストレージがオペレーティングシステム、１つ以上のプログラム、及びユーザに関連付けられたデータを格納し、さらに前記オペレーティングシステムが前記第１の接続を介して前記第１のユーザデバイスによって起動される、ストレージと、前記デバイス相互運用システムをサポートするための１つ以上のプロセッサとを備えている。
2019537812.tif 000002
【特許請求の範囲】
【請求項１】
ユーザに関連付けられた１つ以上のユーザデバイスのためのデバイス相互運用システムであって、
前記１つ以上のユーザデバイスが、第１のユーザデバイスを含んでおり、
前記デバイス相互運用システムが、
通信モジュールであって、第１の接続が、前記第１のユーザデバイスと前記通信モジュールの間で確立される、通信モジュールと、
前記通信モジュールに結合されたストレージであって、オペレーティングシステム、１つ以上のプログラム、及び、前記ユーザに関連付けられたデータを格納しており、さらに、前記オペレーティングシステムが前記第１の接続を介して前記第１のユーザデバイスによって起動される、ストレージと、
前記デバイス相互運用システムをサポートするための１つ以上のプロセッサと、
を備えていることを特徴とするデバイス相互運用システム。
【請求項２】
請求項１に記載のデバイス相互運用システムであって、
前記第１の接続が、直接無線接続、直接有線接続、及びドッキングのうちの１つに基づく、
ことを特徴とするデバイス相互運用システム。
【請求項３】
請求項１に記載のデバイス相互運用システムであって、
前記デバイス相互運用システムが装置にインストールされており、
前記デバイス相互運用システムが、
前記デバイス相互運用システムに電力を供給するためのバッテリーと、
前記バッテリーを充電するための充電モジュールとを備えている、
ことを特徴とするデバイス相互運用システム。
【請求項４】
請求項１に記載のデバイス相互運用システムであって、
前記１つ以上のユーザデバイスが、第２のユーザデバイスを含んでおり、
前記デバイス相互運用システムが前記第２のユーザデバイスへの統合によってインストールされている、
ことを特徴とするデバイス相互運用システム。
【請求項５】
請求項１に記載のデバイス相互運用システムであって、
前記１つ以上のユーザデバイスが、第２のユーザデバイスを含んでおり、
前記デバイス相互運用システムが前記第２のユーザデバイス上のアプリケーションとしてインストールされている、
ことを特徴とするデバイス相互運用システム。
【請求項６】
請求項１に記載のデバイス相互運用システムであって、
前記第１のユーザデバイスが、相互運用システムモード又はスタンドアロンモードのいずれかで動作する、
ことを特徴とするデバイス相互運用システム。
【請求項７】
請求項１に記載のデバイス相互運用システムであって、
前記１つ以上のユーザデバイスが、第２のユーザデバイスを含んでおり、
前記オペレーティングシステムが、前記第１のユーザデバイスに対応する第１の構成のセット及び前記第２のユーザデバイスに対応する第２の構成のセットを格納し、
前記オペレーティングシステムが、前記第１のユーザデバイス又は前記第２のユーザデバイスのどちらが前記オペレーティングシステムの起動に使用されるかに応じて、前記第１の構成のセット及び前記第２の構成のセットを切り替える、
ことを特徴とするデバイス相互運用システム。
【請求項８】
請求項１に記載のデバイス相互運用システムであって、
前記第１のユーザデバイスが第１のユーザデバイスのストレージを備えており、
前記第１のユーザデバイスのストレージが、スワッピング、データのバックアップ、又はキャッシングのうちの少なくとも１つに使用される、
ことを特徴とするデバイス相互運用システム。
【請求項９】
請求項１に記載のデバイス相互運用システムであって、
前記オペレーティングシステムが、１つ以上のアーキテクチャに対応する１つ以上のカーネルを含んでいる、
ことを特徴とするデバイス相互運用システム。
【請求項１０】
請求項１に記載のデバイス相互運用システムであって、
前記１つ以上のユーザデバイスが、第２のユーザデバイスを含んでおり、
第２の接続が、前記第２のユーザデバイスと前記通信モジュールの間で確立され、
前記オペレーティングシステムが、
前記第１のユーザデバイス上でシャットダウンされてから、前記第２の接続を介して前記第２のユーザデバイスによって起動されるか、又は、
前記第１のユーザデバイス上で一時停止されてから、前記第２の接続を介して前記第２のユーザデバイスによって起動される、
ことを特徴とするデバイス相互運用システム。
【請求項１１】
請求項１に記載のデバイス相互運用システムであって、
前記第１のユーザデバイスのファームウェアを変更することをさらに含む、
ことを特徴とするデバイス相互運用システム。
【請求項１２】
請求項１に記載のデバイス相互運用システムであって、
前記１つ以上のユーザデバイスが、前記第１のユーザデバイスとは異なる１つ以上のユーザデバイスを含んでいるユーザデバイスのセットをさらに含んでおり、
前記第１の接続とは異なる１つ以上の接続を含んでいる接続のセットが、前記ユーザデバイスのセットと前記通信モジュールの間で確立され、
前記オペレーティングシステムが、前記接続のセットを介して前記ユーザデバイスのセットによって起動される、
ことを特徴とするデバイス相互運用システム。
【請求項１３】
請求項１２に記載のデバイス相互運用システムであって、
前記通信モジュールが前記ユーザデバイスのセットとの前記接続のセットを同時に維持し、
前記オペレーティングシステムの複数のインスタンスのそれぞれが、前記ユーザデバイスのセット及び前記第１のユーザデバイスのそれぞれで実行される、
ことを特徴とするデバイス相互運用システム。
【請求項１４】
請求項１に記載のデバイス相互運用システムであって、
前記オペレーティングシステムが前記第１のユーザデバイス上で実行され、
前記オペレーティングシステムが前記第１のユーザデバイスの処理能力を動作に使用する、
ことを特徴とするデバイス相互運用システム。
【請求項１５】
請求項１に記載のデバイス相互運用システムであって、
前記１つ以上のデバイスが、統合されたコントローラ及び追加された外部無線アダプタを備える第２のユーザデバイスを含んでおり、
前記デバイス相互運用システムが前記第２のユーザデバイスにインストールされており、
前記通信モジュールが、前記統合されたコントローラ及び前記追加された外部無線アダプタを備えている、
ことを特徴とするデバイス相互運用システム。
【請求項１６】
ユーザに関連付けられた１つ以上のユーザデバイスのデバイス相互運用のための方法であって、
前記１つ以上のユーザデバイスが、第１のユーザデバイスを含んでおり、
前記方法が、
デバイス相互運用システム内の前記第１のユーザデバイスと通信モジュールの間の第１の接続を確立するステップと、
前記デバイス相互運用システム内のストレージを使用して、オペレーティングシステム、１つ以上のプログラム、及び、前記ユーザに関連付けられたデータを格納するステップと、
前記オペレーティングシステムを前記第１の接続を介して前記第１のユーザデバイスによって起動するステップとを含んでいる、
ことを特徴とする方法。
【請求項１７】
請求項１６に記載の方法であって、
前記第１の接続が、直接無線接続、直接有線接続、及びドッキングのうちの１つに基づく、
ことを特徴とする方法。
【請求項１８】
請求項１６に記載の方法であって、
前記デバイス相互運用システムが装置にインストールされており、
前記デバイス相互運用システムが、
前記デバイス相互運用システムに電力を供給するためのバッテリーと、
前記バッテリーを充電するための充電モジュールとを備えている、
ことを特徴とする方法。
【請求項１９】
請求項１６に記載の方法であって、
前記１つ以上のユーザデバイスが、第２のユーザデバイスを含んでおり、
前記デバイス相互運用システムが前記第２のユーザデバイスへの統合によってインストールされている、
ことを特徴とする方法。
【請求項２０】
請求項１６に記載の方法であって、
前記１つ以上のユーザデバイスが、第２のユーザデバイスを含んでおり、
前記デバイス相互運用システムが前記第２のユーザデバイス上のアプリケーションとしてインストールされている、
ことを特徴とする方法。
【請求項２１】
請求項１６に記載の方法であって、
前記第１のユーザデバイスが、相互運用システムモード又はスタンドアロンモードのいずれかで動作する、
ことを特徴とする方法。
【請求項２２】
請求項１６に記載の方法であって、
前記１つ以上のユーザデバイスが、第２のユーザデバイスを含んでおり、
前記方法が、
前記オペレーティングシステムによって、前記第１のユーザデバイスに対応する第１の構成のセット及び前記第２のユーザデバイスに対応する第２の構成のセットを格納するステップと、
前記オペレーティングシステムが、前記第１のユーザデバイス又は前記第２のユーザデバイスのどちらが前記オペレーティングシステムの起動に使用されるかに応じて、前記第１の構成のセット及び前記第２の構成のセットを切り替えるステップとを含んでいる、
ことを特徴とする方法。
【請求項２３】
請求項１６に記載の方法であって、
前記第１のユーザデバイスが第１のユーザデバイスのストレージを備えており、
前記第１のユーザデバイスのストレージが、スワッピング、データのバックアップ、又はキャッシングのうちの少なくとも１つに使用される、
ことを特徴とする方法。
【請求項２４】
請求項１６に記載の方法であって、
前記オペレーティングシステムが、１つ以上のアーキテクチャに対応する１つ以上のカーネルを含んでいる、
ことを特徴とする方法。
【請求項２５】
請求項１６に記載の方法であって、
前記１つ以上のユーザデバイスが、第２のユーザデバイスを含んでおり、
前記方法が、
前記第２のユーザデバイスと前記通信モジュールの間で第２の接続を確立するステップと、
前記第１のユーザデバイス上で前記オペレーティングシステムをシャットダウンしてから、前記オペレーティングシステムが前記第２の接続を介して前記第２のユーザデバイスによって起動されるか、又は、
前記第１のユーザデバイス上で前記オペレーティングシステムを一時停止してから、前記オペレーティングシステムが前記第２の接続を介して前記第２のユーザデバイスによって起動されるステップとをさらに含んでいる、
ことを特徴とする方法。
【請求項２６】
請求項１６に記載の方法であって、
前記第１のユーザデバイスのファームウェアを変更するステップをさらに含んでいる、
ことを特徴とする方法。
【請求項２７】
請求項１６に記載の方法であって、
前記１つ以上のユーザデバイスが、前記第１のユーザデバイスとは異なる１つ以上のユーザデバイスを含んでいるユーザデバイスのセットをさらに含んでおり、
前記方法が、
前記第１の接続とは異なる１つ以上の接続を含んでいる接続のセットを、前記ユーザデバイスのセットと前記通信モジュールの間で確立するステップと、
前記オペレーティングシステムを前記接続のセットを介して前記ユーザデバイスのセットによって起動するステップとを含んでいる、
ことを特徴とする方法。
【請求項２８】
請求項２７に記載の方法であって、
前記通信モジュールによって、前記ユーザデバイスのセットとの前記接続のセットを同時に維持するステップをさらに含んでおり、
前記オペレーティングシステムの複数のインスタンスのそれぞれが、前記ユーザデバイスのセット及び前記第１のユーザデバイスのそれぞれで実行される、
ことを特徴とする方法。
【請求項２９】
請求項１６に記載の方法であって、
前記オペレーティングシステムが前記第１のユーザデバイス上で実行され、
前記オペレーティングシステムが前記第１のユーザデバイスの処理能力を動作に使用する、
ことを特徴とする方法。
【請求項３０】
請求項１６に記載の方法であって、
前記１つ以上のデバイスが、統合されたコントローラ及び追加された外部無線アダプタを備える第２のユーザデバイスを含んでおり、
前記デバイス相互運用システムが前記第２のユーザデバイスにインストールされており、
前記通信モジュールが、前記統合されたコントローラ及び前記追加された外部無線アダプタを備えている、
ことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ユーザデバイスのためのデバイス相互運用に関する。
【背景技術】
【０００２】
関連出願の相互参照
本出願は、２０１６年１０月２６日に出願された米国特許仮出願第６２／４１３，１６９号の恩恵及びこの米国特許仮出願に対する優先権を請求し、この米国特許仮出願は、参照によって本明細書にその全体が組み込まれている。
【発明の概要】
【課題を解決するための手段】
【０００３】
ユーザに関連付けられた１つ以上のユーザデバイスのためのデバイス相互運用システムであって、前記１つ以上のユーザデバイスが第１のユーザデバイスを含んでおり、前記デバイス相互運用システムが、通信モジュールであって、第１の接続が前記第１のユーザデバイスと前記通信モジュールの間で確立される、通信モジュールと、前記デバイス相互運用システムに関連付けられ、前記通信モジュールに結合されたストレージであって、前記ストレージがオペレーティングシステム、１つ以上のプログラム、及びユーザに関連付けられたデータを格納し、さらに前記オペレーティングシステムが前記第１の接続を介して前記第１のユーザデバイスによって起動される、ストレージと、前記デバイス相互運用システムをサポートするための１つ以上のプロセッサとを備えている。
【０００４】
ユーザに関連付けられた１つ以上のユーザデバイスのデバイス相互運用のための方法であって、前記１つ以上のユーザデバイスが第１のユーザデバイスを含んでおり、前記方法が、デバイス相互運用システム内の通信モジュールを介して前記第１のユーザデバイスとデバイス相互運用システムの間で第１の接続を確立することと、デバイス相互運用システム内のストレージを使用して、オペレーティングシステム、１つ以上のプログラム、及びユーザに関連付けられたデータを格納することと、前記第１の接続を介して前記第１のユーザデバイスによって前記オペレーティングシステムを起動することとを含んでいる。
【０００５】
本開示の前述の態様及び追加の態様並びに実施形態は、図面を参照して行われるさまざまな実施形態及び／又は態様の詳細な説明を考慮して当業者に明らかになり、次に、それらの図面の簡単な説明が行われる。
【０００６】
本開示の前述の優位性及びその他の優位性は、以下の詳細な説明を読み、図面を参照したときに、明らかになるであろう。
【図面の簡単な説明】
【０００７】
【図１】１つ以上のユーザデバイスを使用しているユーザの状況を示す図である。
【図２Ａ】ユーザデバイスと連動しているデバイス相互運用システムの例を示す図である。
【図２Ｂ】デバイス相互運用システムの例示的なアーキテクチャを示す図である。
【図２Ｃ】デバイス相互運用システムを実行するための装置の例を示す図である。
【図２Ｄ】デバイス相互運用システムがユーザデバイスに統合された場合の例を示す図である。
【図２Ｅ】デバイス相互運用システムがユーザデバイス上でアプリケーションとして実行される場合の例を示す図である。
【図３Ａ】「スタンドアロン」モードと「相互運用システム」モードの間でのユーザデバイスの切り替え性のための例示的なアルゴリズムを示す図である。
【図３Ｂ】起動時に異なるハードウェア構成間でオペレーティングシステムを切り替えるための例示的なアルゴリズムを示す図である。
【図４Ａ】キャッシング動作の実施形態例を示す図である。
【図４Ｂ】データをキャッシュに書き込む前に追加チェックが実行されるキャッシングの実施形態例を示す図である。
【図４Ｃ】キャッシュにプリフェッチする実施形態例を示す図である。
【発明を実施するための形態】
【０００８】
本開示は、さまざまな変形及び代替の形態の影響を受けやすいが、特定の実施形態又は実装が、図面において例として示されており、本明細書において詳細に説明される。しかし、本開示が、開示された特定の形態に限定されるよう意図されていないということが理解されるべきである。むしろ本開示は、添付の特許請求の範囲によって規定された発明の思想及び範囲に含まれるすべての変形、同等のもの、及び代替手段を対象にする。
【０００９】
人間によって所有又は操作されるデバイスの数は、著しく増大している。通常、人間は次のような複数のコンピューティングデバイスを所有する。
−  スマートフォン、
−  タブレット、
−  デスクトップ、
−  ラップトップ、
−  ゲームコンソール、
−  スマートウォッチ／バンド、及び
−  スマートグラス。
【００１０】
加えて、多くのその他のデバイス及びアイテムが「スマート」になっており、すなわち、それらのデバイス及びアイテムの計算能力及び処理能力が増大しており、それらはネットワーク使用可能になっている。それらのデバイス及びアイテムの例としては、以下が挙げられる。
−  乗用車及びトラックなどの車両、
−  テレビ（ＴＶ：Ｔｅｌｅｖｉｓｉｏｎ）セット、
−  冷蔵庫及び電子レンジなどの台所用器具、
−  カメラ、
−  ＦｉｔＢｉｔ（登録商標）などのフィットネスデバイス、
−  血圧計及び心拍数モニターなどの医療機器、
−  空調装置、及び
−  スマートホームシステム。
【００１１】
さらに、「モノのインターネット」（ＩｏＴ：Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）も著しく増大している。ＩｏＴとは、互いに、及び他のコンピューティングデバイスと相互接続された、消費者デバイス及び産業用デバイスのネットワークのことである。
【００１２】
これらはすべて、計算能力及びネットワーク能力を有し、特定のユーザに関連付けられたデバイスの数が、急速に増大していることを意味している。
【００１３】
図１は、この状況を示している。図１では、ユーザデバイス１０１−１〜１０１−Ｎが、ユーザ１００に関連付けられたデバイスを含んでいる。これらのデバイスの例としては、電子コンピューティングデバイス並びに前述したデバイス及びアイテムが挙げられる。
【００１４】
図１に示された状況を考えると、ユーザ１００などのユーザは、さまざまな課題に直面する。第１に、さまざまなデバイスからのドキュメント及びデータを、互いに同期させる必要がある。通常、この同期は、例えば以下を使用して実行される。
−  ユニバーサルシリアルバス（ＵＳＢ：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュドライブ及び取り外し可能ハードドライブなどのポータブルデータストレージデバイス、及び
−  ネットワーク又は「クラウド」ベースの技術。
これらのドキュメント及びデータの同期化技術には、欠陥がある。クラウドの接続は、常に存在するとは限らない。接続は、存在する場合でも、断続的であったり、又は低速であったりすることがある。クラウドベースの技術では、プライバシーが問題になることもある。
【００１５】
第２に、同期化は、異なるオペレーティングシステム（ＯＳ：ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍｓ）及び異なるプラットフォームを実行している各コンピューティングデバイス及び消費者のアイテムに起因して、不十分であったり不完全であったりすることがある。図１を参照すると、ユーザデバイス１０１−１〜１０１−Ｎは、それら自身の処理能力及び記憶能力を有しており、異なるＯＳ、プラットフォーム、及びソフトウェアを実行することができる。その結果、ユーザは、異なるデバイス上の異なる環境に慣れなければならず、複数のデバイスで同じ作業（例えば、アプリケーションのインストール、設定のカスタマイズ、又はソフトウェアの更新若しくはウイルス対策のスキャンなどのサービス作業の実行）を繰り返さなければならない。互換性が問題になることもある。一例として、ユーザ１００が、まずユーザデバイス１０１−１を使用し、次にユーザデバイス１０１−２を使用してあるファイルを編集した場合、結果としてそのファイルは、ユーザデバイス１０１−１及び１０１−２にインストールされた編集ソフトウェアのバージョンの違いに起因して、破損することがある。
【００１６】
したがって、「スマート」技術の継続的な発達及び採用、並びにこれらのユーザデバイスの相互運用を保証するために、デバイスの同期化におけるこれらの欠陥に対処する必要がある。
【００１７】
本明細書の残りの部分では、前述した問題に対処するデバイス相互運用のためのシステム及び方法について詳述する。そのようなデバイス相互運用システム２００の例示的なアーキテクチャが、図２Ａ及び２Ｂに示されている。図２Ａでは、デバイス相互運用システム２００と１つ以上のユーザデバイス１０１−１、１０１−２、１０１−３〜１０１−Ｎとの間の１つ以上の接続２０１−１、２０１−２、２０１−３〜２０１−Ｎが、必要に応じて確立される。一実施形態では、１つ以上のユーザデバイス１０１−１、１０１−２、１０１−３〜１０１−Ｎが、接続の確立を開始する。別の実施形態では、デバイス相互運用システム２００が、接続の確立を開始する。
【００１８】
デバイス相互運用システム２００は、その機能に必要な複数のコンポーネントを備える。デバイス相互運用システム２００の一実施形態の図が、図２Ｂに示されている。図２Ｂに示されているように、デバイス相互運用システム２００は、バッテリー２１１、バッテリー充電モジュール２２１、ストレージ２１２、１つ以上のプロセッサ２１５、及び通信モジュール２１３を備えている。
【００１９】
１つ以上のプロセッサ２１５は、デバイス相互運用システム２００の他の要素を支援する機能を実行する。それらの機能の例としては、以下が挙げられる。
−  デバイス相互運用システム２００の要素間の相互接続を維持すること、
−  デバイス相互運用システム２００の全体的なセキュリティ維持すること、及び
−  デバイス相互運用システム２００の動作に必要なサービス機能。
【００２０】
通信モジュール２１３は、１つ以上の接続２０１−１〜２０１−Ｎの確立に参加する。通信モジュール２１３は、１つ以上のユーザデバイス１０１−１〜１０１−Ｎへの１つ以上の接続２０１−１〜２０１−Ｎを維持するようにも動作する。通信モジュール２１３は、接続２０１−１〜２０１−Ｎを保護するために必要な処理を実行するようにも動作する。それらの処理の例としては、暗号化処理及びアクセス処理が挙げられる。一実施形態では、通信モジュール２１３は、１つ以上の接続２０１−１〜２０１−Ｎに関連する消費電力を管理し、最適化することも行う。例えば、通信モジュール２１３は、ユーザデバイス１０１−１などのユーザデバイスからの距離に基づいて、１つ以上の接続２０１−１〜２０１−Ｎに使用される送信電力を調整する。
【００２１】
バッテリー２１１は、デバイス相互運用システム２００の動作のための電力を供給する。充電モジュール２２１は、外部電源を使用してバッテリー２１１を充電できるようにする。一実施形態では、充電モジュール２２１は、ワイヤレス充電を可能にする。
【００２２】
図２Ｂに示されているように、ストレージ２１２は、通信モジュール２１３に結合され、デバイス相互運用システム２００の機能に必要なＯＳ２１４、プログラム及びデータ２１６を格納するために使用される。例えば、ユーザの選択、アプリケーション、並びにユーザのドキュメント及びデータが、ストレージ２１２に格納されてもよい。以下では、ＯＳ２１４の機能について詳細に説明する。一実施形態では、ストレージ２１２は、ＳＳＤ（半導体ドライブ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）又は組み込みマルチメディアコントローラ（ｅＭＭＣ：ｅｍｂｅｄｄｅｄ  ＭｕｌｔｉＭｅｄｉａ  Ｃｏｎｔｒｏｌｌｅｒ）フラッシュメモリ技術などの、エネルギー効率の良いストレージ技術を使用して構築される。一実施形態では、ストレージ２１２に格納される情報は暗号化される。これによって、悪意のある人が格納された情報にアクセスするリスクを低減する。一実施形態では、高度暗号化標準（ＡＥＳ：Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）が暗号化に使用される。
【００２３】
図２Ａ及び２Ｂを参照すると、ユーザデバイス１０１−１のネイティブＯＳが読み込まれる前に、デバイス相互運用システム２００とユーザデバイス１０１−１の間の接続２０２−１が確立される。ユーザデバイス１０１−１との接続２０１−１が確立された後に、ユーザデバイス１０１−１上でストレージ２１２からＯＳ２１４が起動し、実行される。その後、ユーザデバイス１０１−１は、必要に応じて、ストレージ２１２に格納されたデータ及びプログラムコードにアクセスできる。ＯＳ２１４のプログラムコード及びインストールされたアプリケーションが、デバイス相互運用システム２００が接続されているユーザデバイス上で実行され、このユーザデバイスの処理能力を、その動作に使用する。例えば、図２Ａを参照すると、デバイス相互運用システム２００がユーザデバイス１０１−１に接続された場合、必要に応じてユーザデバイス１０１−１の処理能力及びメモリを使用して、ユーザデバイス１０１−１上でプログラムコードが実行される。接続２０１−１の確立及びＯＳ２１４のその後の起動は、さまざまな方法で実行され、下で詳細に説明される。
【００２４】
一実施形態では、接続２０１−１〜２０１−Ｎのうちの少なくとも１つは、直接接続である。例えば、直接接続は、直接無線接続であることができる。
【００２５】
一部の実施形態では、ユーザデバイス１０１−１は、直接無線接続を介してデバイス相互運用システム２００から起動することを支援する能力を提供するファームウェアを備える。例えば、一実施形態では、ユーザデバイス１０１−１は、Ｍｅｄｉａ  Ａｇｎｏｓｔｉｃ  ＵＳＢ仕様をサポートする基本入出力システム（ＢＩＯＳ：Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）又はユニファイドエクステンシブルファームウェアインターフェイス（ＵＥＦＩ：Ｕｎｉｆｉｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ）を備える。これによって、ユーザデバイス１０１−１が、直接無線接続を経由してＵＳＢプロトコルを使用できるようになり、ユーザデバイス１０１−１上でのＯＳ２１４の起動及びデバイス相互運用システム２００とユーザデバイス１０１−１の間でのデータ転送を容易にする。
【００２６】
一部の実施形態では、ユーザデバイス１０１−１は、直接無線接続を介してデバイス相互運用システム２００から起動することを支援する能力を提供するファームウェアを備えない。その場合、仲介を使用する必要がある。例えば、一実施形態では、デバイス相互運用システム２００が、ユーザデバイス１０１−１上のＵＳＢポートに接続された小型ＵＳＢドングルに無線で結合される。次に、小型ＵＳＢドングルが、ユーザデバイス１０１−１に接続されたＵＳＢフラッシュドライブをシミュレートする。その後、ユーザデバイス１０１−１のスイッチが入れられたときに、小型ＵＳＢドングルとデバイス相互運用システム２００の間で直接無線接続が確立される。次に、ＯＳ２１４が、ＵＳＢポートに接続された通常のＵＳＢフラッシュドライブであるかのように、ユーザデバイス１０１−１上でストレージ２１２から起動される。一実施形態では、ユーザは、ユーザデバイス１０１−１がデバイス相互運用システム２００から起動するように、ユーザデバイス１０１−１のＢＩＯＳ又はＵＥＦＩの設定を変更しなければならない。
【００２７】
別の実施形態では、直接接続は直接有線接続である。さらに別の実施形態では、少なくとも１つの直接有線接続が、例えばＵＳＢ接続を含む。さらに別の実施形態では、直接有線接続は、ドッキングによって容易にされる接続である。さらに別の実施形態では、接続２０１−１〜２０１−Ｎのうちの少なくとも１つが直接無線であり、接続２０１−１〜２０１−Ｎのうちの少なくとも１つが直接有線である。
【００２８】
ユーザデバイス１０１−１とデバイス相互運用システム２００の間の接続２０１−１がドッキングによって容易にされる場合、さらに別の実施形態も可能になる。一実施形態では、デバイス相互運用システム２００がインストールされているデバイス及びユーザデバイス１０１−１が、両方とも直接ドッキング能力（例えば、ドッキングポートなど）を有している。その場合、デバイス相互運用システム２００は、それらの直接ドッキング能力によってユーザデバイス１０１−１と情報をやりとりする。さらに別の実施形態では、デバイス相互運用システム２００がインストールされているデバイスが、ユーザデバイス１０１−１に接続されたドッキングステーションに結合される。さらに別の実施形態では、ドッキングステーションが、例えばＵＳＢケーブルによってユーザデバイス１０１−１に接続されたときに、ユーザデバイス１０１−１が、デバイス相互運用システム２００がインストールされているデバイスに接続されたドッキングステーションを、接続された外部ＵＳＢドライブとして認識する。一実施形態では、ユーザは、ユーザデバイス１０１−１がＵＳＢ接続デバイスから起動するように、ユーザデバイス１０１−１のＢＩＯＳ又はＵＥＦＩの設定を変更しなければならない。さらに別の実施形態では、ドッキングステーションが、デバイス相互運用システム２００がインストールされているデバイスを充電する。
【００２９】
上記では、接続２０１−１〜２０１−Ｎが２つのデバイス間の直接接続である状況を説明したが、当業者は間接接続も使用できるということを知っているであろう。別の実施形態では、接続２０１−１〜２０１−Ｎのうちの少なくとも１つは、間接接続である。それらの間接接続は、例えば、次のうちの１つ以上を含む。
−  ローカルエリアネットワーク（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）によって容易にされる接続、又は
−  クラウドベースのサービスによって容易にされる接続。
さらに別の実施形態では、前述した接続タイプのうちの少なくとも２つが利用可能である場合、複数の接続タイプからの選択が、接続２０１−１〜２０１−Ｎのうちの少なくとも１つに対して自動的に実行される。一実施形態では、この選択は次の要因に基づく。
−  接続速度
−  接続待ち時間
−  データ送信コスト
−  ユーザの選択
【００３０】
さらに別の実施形態では、接続が失われた場合、別のタイプの直接接続又は間接接続が自動的に選択される。
【００３１】
さらに別の実施形態では、少なくとも１つの接続が保護される。この保護は、例えば以下によって実行される。
−  ワイファイプロテクテッドアクセス（ＷＰＡ２：Ｗｉ−Ｆｉ  Ｐｒｏｔｅｃｔｅｄ  Ａｃｃｅｓｓ）などの技術を使用する暗号化、及び、
−  接続が最初に確立されるときに、接続の両方の端点でアクセス認証を要求すること。これは、例えば、パスワード、及び近距離無線通信（ＮＦＣ：ｎｅａｒ  ｆｉｅｌｄ  ｃｏｍｍｕｎｉｃａｔｉｏｎ）又はワイファイプロテクテッドセットアップ（ＷＰＳ：Ｗｉ−Ｆｉ  Ｐｒｏｔｅｃｔｅｄ  Ｓｅｔｕｐ）のようなアルゴリズムなどの技術を使用して実行される。
【００３２】
少なくとも１つの接続が確保される実施形態では、接続を確立する前に、端点で（すなわち、デバイス相互運用システム２００とユーザデバイス１０１−１の間で）認証が実行される。
【００３３】
デバイス相互運用システム２００は、さまざまな方法で実装され得る。一実施形態では、デバイス相互運用システム２００は、図２Ｃに示されているような装置２１０などの独立した装置を使用して実装される。その場合、装置２１０との１つ以上の接続２０１−１〜２０１−Ｎが確立される。
【００３４】
別の実施形態では、デバイス相互運用システム２００は、ユーザデバイス１０１−１〜１０１−Ｎのうちの１つへの統合によってインストールされる。例えば、図２Ｄに示されているように、デバイス相互運用システム２００はユーザデバイス１０１−１に統合される。この統合は、例えば、デバイス相互運用システム２００をユーザデバイス１０１−１のファームウェアモジュールとして実装することによって実現される。その場合、デバイス相互運用システム２００は、ユーザデバイス１０１−１のバッテリー、ストレージ、通信モジュール、プロセッサ、及びその他の能力のうちの１つ以上を、バッテリー２１１、ストレージ２１２、１つ以上のプロセッサ２１５、及び通信モジュール２１３の前述した使用に類似する方法で、その動作のために使用する。ＯＳ２１４は、ユーザデバイス１０１−１のストレージ内に格納される。その後、ユーザデバイス１０１−１が、ネイティブＯＳの代わりにＯＳ２１４を実行する。図２Ｄに示されているように、ユーザデバイス１０１−１と他のデバイス１０１−２〜１０１−Ｎのうちの少なくとも１つとの間で接続２０１−２〜２０１−Ｎのうちの少なくとも１つが確立された場合、デバイス相互運用システム２００が、接続されたユーザデバイスが次のことを実行できるようにする。
−  ユーザデバイス１０１−１のストレージに格納されているＯＳ２１４を起動すること、及び、
−  ユーザデバイス１０１−１のストレージに格納されているプログラム及びデータ２１６を使用すること。
【００３５】
さらに別の実施形態では、ユーザデバイス１０１−１に接続された異なるデバイス上でＯＳ２１４が実行されているときに、デバイス相互運用システム２００が統合されたユーザデバイス１０１−１の一部のハードウェアコンポーネントが、ＯＳ２１４によって、接続された外部デバイスとして認識されて使用される。例えば、ユーザデバイス１０１−１がスマートフォンである場合、ユーザデバイス１０１−１に接続されたユーザデバイス１０１−２上でＯＳ２１４が実行されているときに、マイクロホン、センサー、移動体通信モジュール、及びディスプレイなどの、ユーザデバイス１０１−１のハードウェアコンポーネントが、ＯＳ２１４によって外部デバイスとしてとして使用される。
【００３６】
さらに別の実施形態では、デバイス相互運用システム２００が、ユーザデバイス１０１−１〜１０１−Ｎのうちの１つ（例えば、ユーザデバイス１０１）で実行される、インストールされたアプリケーション又は「アプリ」として実装される。例えば、図２Ｅに示されているように、デバイス相互運用システム２００はユーザデバイス１０１−１上でアプリとして実行される。その場合、デバイス相互運用システム２００は、図２Ｄにおいて前述した統合された場合と同様に、ユーザデバイス１０１−１のバッテリー、ストレージ、通信モジュール、プロセッサ、及びその他の能力のうちの１つ以上を動作のために使用する。前述した場合と同様に、ユーザデバイスとの接続が確立された場合、デバイス相互運用システム２００は、ユーザデバイス１０１−１のストレージに格納されたＯＳ２１４を起動する能力を、接続されたユーザデバイスに与える。別の実施形態では、アプリが、ユーザデバイス１０１−２上でＯＳ２１４を起動するために使用されるユーザデバイス１０１−１のストレージ２１２に格納されたデータに対する必要なレベルのアクセス権を提供できない場合、相互運用システム２００は、次のいずれかの独立したイメージも含む。
−  ＯＳ２１４のコピー、又は、
−  コンポーネントの一部。
このイメージは、ユーザデバイス１０１−２上でＯＳを起動するために、そのままで使用されるか、又はユーザデバイス１０１−１のストレージに格納されたユーザデバイス１０１−１のＯＳのコンポーネントと共に使用される。前述した場合と同様に、さらに別の実施形態では、ユーザデバイス１０１−１に接続された異なるデバイス上でＯＳ２１４が実行されているときに、ユーザデバイス１０１−１の一部のハードウェアコンポーネントが、ＯＳ２１４によって、接続された外部デバイスとして認識されて使用される。
【００３７】
デバイス相互運用システム２００が、ユーザデバイス１０１−１への統合によって、又はユーザデバイス１０１−１上のアプリとしてインストールされる実施形態の一部では、通信モジュール２１３の一部として、性能及び／又はエネルギー効率を改善するために、外部無線アダプタがユーザデバイス１０１−１に追加され、ユーザデバイス１０１−１では利用できない追加の通信能力を提供する。この外部無線アダプタは、例えば、ユーザデバイス１０１−１上にすでに存在する統合されたコントローラと連動する。その場合、通信モジュール２１３は、ユーザデバイス１０１−１の統合されたコントローラ及び外部無線アダプタを備える。例えば、ＷｉＧｉｇ通信技術又はＬｉ−Ｆｉ通信技術に基づくＵＳＢ無線アダプタが、ユーザデバイス１０１−１のＵＳＢポートに接続される。この接続された無線アダプタは、ユーザデバイス１０１−１にすでに存在する統合されたＵＳＢコントローラと情報をやりとりする。その場合、通信モジュール２１３は、この統合されたＵＳＢコントローラ及び接続されたＵＳＢ無線アダプタを備える。これらの追加されたコンポーネントは、最初はユーザデバイス１０１−１上で利用できない追加の通信技術を提供し、性能及び／又はエネルギー効率を改善する。
【００３８】
以下では、デバイス相互運用システム２００の動作の例について、ユーザデバイス（具体的には、ユーザデバイス１０１−１）を参照して詳細に説明する。下記の説明は、例えば以下を含むさまざまな状況に適用できる。
−  装置２１０などの装置にインストールされたデバイス相互運用システム２００。
−  デバイス相互運用システム２００が、ユーザデバイス１０１−１とは異なるユーザデバイス（例えば、ユーザデバイス１０１−２〜１０１−Ｎ）のうちの１つへの統合によってインストールされる。
−  デバイス相互運用システム２００が、ユーザデバイス１０１−１とは異なるユーザデバイス（例えば、ユーザデバイス１０１−２〜１０１−Ｎ）のうちの１つに、アプリとしてインストールされる。
【００３９】
さらに、ユーザデバイス１０１−１が「スタンドアロン」モード又は「デバイス相互運用システム」モードのどちらで動作するかを判定する必要がある。スタンドアロンモードでは、ユーザデバイス１０１−１はネイティブＯＳを実行する。相互運用システムモードでは、ユーザデバイス１０１−１は、デバイス相互運用システム２００に接続されて、ＯＳ２１４を実行する。さらに別の実施形態では、ユーザデバイス１０１−１は、スタンドアロンモードと相互運用システムモードの間で切り替え可能である。
【００４０】
スタンドアロンモードと相互運用システムモードの間で切り替えるための例示的なアルゴリズムは、以下を含む。
−  接続２０１−１が保護された接続である実施形態における、接続２０１−１の確立。
−  スタンドアロンモード又は相互運用モードのいずれが使用されるかに応じた、その後の適切なＯＳの起動。
これらが、図３Ａに示されている。
【００４１】
図３Ａのステップ３０１で、ユーザデバイス１０１−１のスイッチが入れられる。ステップ３０２で、接続２０１−１を確立する前に、ユーザデバイス１０１−１が、相互運用システムモードに設定する選択肢をユーザに提示する。
【００４２】
ユーザが、ステップ３０３で、既定の期間内に相互運用システムモードに設定する選択肢を受け入れた場合、ステップ３０４で、ユーザが認証を実行する。一実施形態では、ステップ３０４で、ユーザが、デバイス相互運用システム２００に固有の一意の文字列（パスワード又はパスフレーズ）を入力する。別の実施形態では、ステップ３０４で、ユーザがＯＳ２１４に固有のログイン名及びパスワードを入力する。さらに別の実施形態では、ユーザは、例えばＦａｃｅｂｏｏｋ（登録商標）、ＬｉｎｋｅｄＩｎ（登録商標）、Ｔｗｉｔｔｅｒ（登録商標）、Ｇｏｏｇｌｅ（登録商標）、Ｇｍａｉｌ（登録商標）などの、別のソーシャルメディアサイト又はＷｅｂメールサイトからのログインの詳細を使用する。認証のための追加の手順も可能である。別の実施形態では、ユーザは、画像内の文字、数字、及び記号の組み合わせを認識し、その組み合わせをボックスに入力するようさらに要求される。そのようなテストの例は、コンピュータ及び人間を区別するための完全に自動化された公開チューリングテスト（ＣＡＰＴＣＨＡ：Ｃｏｍｐｌｅｔｅｌｙ  Ａｕｔｏｍａｔｅｄ  Ｐｕｂｌｉｃ  Ｔｕｒｉｎｇ  ｔｅｓｔ  ｔｏ  ｔｅｌｌ  Ｃｏｍｐｕｔｅｒｓ  ａｎｄ  Ｈｕｍａｎｓ  Ａｐａｒｔ）である。別の実施形態では、ユーザは、そのユーザのみが答えを知っている秘密の質問を尋ねられる。さらに別の実施形態では、ユーザは、生年月日及び自宅の住所などの追加の個人情報を要求されることがある。別の実施形態では、ユーザが、彼自身／彼女自身の写真を撮るように要求され、デバイス相互運用システム２００が、その画像を格納済みの画像と照合する。さらに別の実施形態では、指紋のスキャンなどのその他の生体測定が使用される。認証データは、事前に共有される鍵として使用され、暗号化された接続のための認証／暗号鍵が構築される。
【００４３】
ステップ３０６で、ユーザデバイスが、今後使用するために認証／暗号鍵及び接続パラメータを保存する。
【００４４】
ステップ３０７で、接続２０１−１が確立される。
【００４５】
ステップ３０８で、ＯＳ２１４がユーザデバイス１０１−１上で起動する。
【００４６】
ステップ３０９で、ユーザデバイス１０１−１が、デバイス相互運用システムモードで動作する。
【００４７】
ステップ３０３で、ユーザが相互運用システムモードに設定する選択肢を受け入れない場合、ステップ３０５で、ユーザデバイス１０１−１が、相互運用システムモードにすでに設定されているかどうかを判定する。ステップ３０５で、ユーザデバイス１０１−１がすでに設定されている場合、ステップ３１０で、ユーザデバイスが、格納された認証鍵及びパラメータを使用して、デバイス相互運用システム２００との接続を確立しようと試みる。
【００４８】
ステップ３１０に続いて、ステップ３１１で接続確立が成功した場合、ＯＳ２１４がユーザデバイス１０１−１上で起動し（ステップ３０８）、ユーザデバイス１０１−１がデバイス相互運用システムモードで動作する（ステップ３０９）。
【００４９】
ステップ３１１で接続が成功しなかった場合、ステップ３１２で、ユーザデバイス１０１−１がそれ自身のＯＳを読み込む。ステップ３１３で、ユーザデバイス１０１−１が、スタンドアロンモードで動作する。
【００５０】
ステップ３０５で、ユーザデバイスがまだ設定されていない場合、ユーザデバイス１０１−１がそれ自身のＯＳを読み込み（ステップ３１２）、スタンドアロンモードで動作する（ステップ３１３）。
【００５１】
一実施形態では、動作速度を改善するため、及び接続２０１−１などの接続を介して送信されるデータ量を減らすために、ＯＳ２１４のスワップファイル又はスワップパーティションが、ユーザデバイス１０１−１のストレージに配置される。
【００５２】
一実施形態では、動作速度を改善するために、例えば、接続されたユーザデバイスのストレージの一部をキャッシュ用に確保することによって、キャッシングが実行される。一実施形態では、ＯＳ２１４が起動されるときに、ＯＳ２１４は、接続されたユーザデバイス上にキャッシュが存在するかどうかを判定する。キャッシング動作は、下でさらに詳細に説明される。
【００５３】
一実施形態では、デバイス相互運用システム２００に接続されたユーザデバイスのローカルストレージの少なくともある部分が、この特定のデバイスのみでの使用を目的とするデータを格納するために、ＯＳ２１４によって使用される。その１つの例は、ユーザデバイス１０１−１が、特にビデオゲームなどの多くのリソースを要求するアプリケーションを実行するために、ユーザ１００によって使用される、デスクトップである場合である。その場合、多くのリソースを要求するアプリケーションを実行するために必要なデータの一部が、ストレージ２１２の代わりに、ユーザデバイス１０１−１のローカルストレージに格納される。さらに別の実施形態では、使用されるユーザデバイス１０１−１のストレージの一部が、ＯＳ２１４によって、接続された追加ドライブとして認識され、それに応じて提示される。
【００５４】
一実施形態では、デバイス相互運用システム２００に接続されたユーザデバイスのローカルストレージ容量の一部が、ＯＳ２１４によって、ストレージ２１２に格納されたデータの少なくとも一部のバックアップを実行するために使用される。バックアップされるデータ量は、ユーザデバイスのローカルストレージの使用可能な容量によって決まる。さらに別の実施形態では、バックアップは、複数のユーザデバイスを使用して実行される。すなわち、データが、ストレージ２１２から、複数のユーザデバイスのそれぞれに対応する各ローカルストレージ容量の一部にバックアップされる。
【００５５】
さらに別の実施形態では、キャッシング、スワッピング、ストレージの拡張、バックアップ、又はこれらの目的の任意の組み合わせのために、ユーザデバイス１０１−１のストレージに格納されるデータの少なくとも一部が、ユーザデバイス１０１−１のストレージ上の１つ以上のパーティション設定において配置される。別の実施形態では、キャッシング、ストレージの拡張、バックアップ、又はこれらの目的の任意の組み合わせのために、ユーザデバイス１０１−１のストレージに格納されるデータが、ユーザデバイス１０１−１の既存のパーティションに作成された１つ以上のファイルコンテナに配置される。これによって、ユーザデバイス１０１−１のストレージのデータを再分割する必要がなくなり、消去する必要もなくなる。
【００５６】
さらに別の実施形態では、キャッシング、スワッピング、ストレージの拡張、バックアップ、又はこれらの目的の任意の組み合わせのために、ユーザデバイス１０１−１のストレージに格納されるデータが、暗号化される。ＯＳ２１４によって暗号解読鍵が格納されて管理され、データへの不正なアクセスを防ぐ。
【００５７】
一実施形態では、ＯＳ２１４は、図３Ａのステップ３０８におけるなどの起動中に、異なるハードウェア構成を切り替えることができる。異なるハードウェア構成を切り替えるための例示的なアルゴリズムが、図３Ｂに示されている。
【００５８】
ＯＳ２１４がユーザデバイス１０１−１などのユーザデバイス上で起動された場合、ステップ３Ｂ−０１で、ＯＳ２１４がそのユーザデバイスを識別する。ステップ３Ｂ−０２で、ＯＳ２１４が、識別されたユーザデバイスに対応する構成のセットをストレージ２１２に格納しているかどうかを判定する。格納している場合、ステップ３Ｂ−０３で、ＯＳ２１４が、識別されたユーザデバイス用のドライバ及び設定の正しいセットを使用する。次に、ステップ３Ｂ−０７で、ユーザデバイスがデバイス相互運用システムモードで動作する。
【００５９】
ステップ３Ｂ−０２で、ＯＳ２１４が、識別されたユーザデバイスに対応する構成のセットをストレージ２１２内で検出できない場合、ステップ３Ｂ−０４で、ＯＳ２１４が、このユーザデバイス上のすべてのハードウェアを検出し、必要なドライバを自動的にインストールする。
【００６０】
ステップ３Ｂ−０５で、ＯＳ２１４が、ユーザデバイスのストレージがＯＳ２１４の機能にどのように使用されるかを決定するために、ユーザに対して、１つ以上の質問に対する１つ以上の回答を入力するよう要求する。質問の例としては、以下が挙げられる。
−  ユーザデバイスのストレージはキャッシングに使用されるか。
−  ユーザデバイスのストレージはバックアップに使用されるか。
−  ユーザデバイスのストレージは、ＯＳ２１４の使用のためのＯＳ２１４用の追加のストレージ容量を提供するために使用されるか。
−  上で指定された目的のために、どれくらいの容量が確保されるか。
【００６１】
ステップ３Ｂ−０６で、ＯＳ２１４が、構成のセットを保存し、必要に応じて再起動した後に、ステップ３Ｂ−０７で、デバイス相互運用システムモードで動作する。
【００６２】
前述したように、キャッシング動作の実施形態例が、図４Ａ、４Ｂ、及び４Ｃを参照して以下で詳細に説明される。
【００６３】
図４Ａは、受信された読み取り又は書き込み動作要求がＯＳ２１４によって処理される場合の例示的なフローを示している。この例では、ＯＳ２１４は、デバイス相互運用システム２００がインストールされているデバイスに格納される。このデバイスは、ユーザデバイス１０１−１に接続される。また、キャッシュがユーザデバイス１０１−１上で設定されている。
【００６４】
ステップ４０１で、ＯＳ２１４によって要求タイプが決定される。
【００６５】
要求が読み取り動作用であるということが決定された場合、ステップ４０３で、ＯＳ２１４が、キャッシュが要求されたデータを含んでいるかどうかを判定する。一実施形態では、ＯＳ２１４が、キャッシュサービスデータベースにアクセスし、ユーザデバイス１０１−１上のキャッシュ設定が要求されたデータを含んでいるかどうかを判定する。キャッシュサービスデータベースは、ユーザデバイス１０１−１〜１０１−Ｎのキャッシュのうちの少なくとも１つに格納されたバージョンのファイルの変更時刻、及びストレージ２１２に格納された元のバージョンのファイルの変更時刻を表す。キャッシュが要求されたデータを含んでいるかどうかの判定は、それらの変更時刻の比較によって実行される。キャッシュサービスデータベースは、ストレージ２１２に格納される。
【００６６】
表１に、キャッシュサービスデータベースの例を示す。
【表１】
2019537812.tif 000003
【００６７】
表１において、列１Ｃ−０１はファイルを表している。各ファイルは、表１の個別の行に対応する。表１を参照すると、ファイル１が行１Ｒ−０１に割り当てられており、ファイル２が行１Ｒ−０２に割り当てられている、などとなっている。
【００６８】
表１の列１Ｃ−０２は、ストレージ２１２及びユーザデバイス１０１−１〜１０１−Ｎ上のキャッシュのうちの少なくとも１つに格納された元のバージョンのファイルの変更時刻を表している。さらに表１を参照すると、
−  セル［１Ｒ−０１，  １Ｃ−０２］は、ストレージ２１２内の元のバージョンのファイル１の変更時刻を表している。
−  セル［１Ｒ−０２，  １Ｃ−０２］は、ストレージ２１２内の元のバージョンのファイル２の変更時刻を表している。
【００６９】
列１Ｃ−０３及び１Ｃ−０４は、各キャッシュ内のバージョンのファイルの変更時刻を表している。例えば、列１Ｃ−０３は、ユーザデバイス１０１−１に格納されたキャッシュ１に対応しており、１Ｃ−０４は、ユーザデバイス１０１−２に格納されたキャッシュ２に対応している、などとなる。したがって、
−  セル［１Ｒ−０１，  １Ｃ−０３］は、キャッシュ１内のバージョンのファイル１の変更時刻を表している。
−  セル［１Ｒ−０１，  １Ｃ−０４］は、キャッシュ２内のバージョンのファイル１の変更時刻を表している。
−  セル［１Ｒ−０２，  １Ｃ−０３］は、キャッシュ１内のバージョンのファイル２の変更時刻を表している。
−  セル［１Ｒ−０２，  １Ｃ−０４］は、キャッシュ２内のバージョンのファイル２の変更時刻を表している。
【００７０】
キャッシュサービスデータベース内の時刻を表すために使用できるさまざまな形式が存在する。その形式の一例は、日／月／年の後に時間：分：秒が続く２桁の表現、すなわち「ｄｄ／ｍｍ／ｙｙ  ＨＨ：ＭＭ：ＳＳ」である。
【００７１】
キャッシュサービスデータベースに含めることもできるさまざまなその他の情報が存在する。例えば、キャッシュサービスデータベースは、ファイルサイズ及びデータの完全性をチェックするためのチェックサムを含むこともできる。
【００７２】
別の実施形態では、キャッシュサービスデータベースは、ファイル変更時刻の代わりに、ファイルチェックサムに基づく。その場合、キャッシュサービスデータベースは、ユーザデバイス１０１−１〜１０１−Ｎのキャッシュのうちの少なくとも１つに格納されたバージョンのファイルのチェックサム、及びストレージ２１２に格納された元のバージョンのファイルのチェックサムを表す。キャッシュが要求されたデータを含んでいるかどうかの判定は、それらのチェックサムの比較によって実行される。
【００７３】
ステップ４０４で、データをキャッシュ上で検出できないか、又はキャッシュ上のデータが、ストレージ２１２上の対応するデータの変更時刻と異なる変更時刻を有しているか（ステップ４０５）、又はチェックサムが異なる場合、ＯＳ２１４がデータをストレージ２１２から取得する（ステップ４０６）。次に、ステップ４０８で、その後のデータ読み取り動作がキャッシュを使用して実行されるように、取得されたデータがキャッシュに書き込まれる。デバイス相互運用システム２００がインストールされているデバイスからユーザデバイス１０１−１に接続２０１−１を介してデータを送信する必要がないため、この動作には、デバイスの消費電力を削減するという利点もある。ステップ４０９で、キャッシュサービスデータベースも更新される。
【００７４】
ステップ４０４で、データがキャッシュ上で検出され、キャッシュ上のデータがストレージ２１２上の対応するデータに一致する場合（ステップ４０５）、ステップ４０７で、データがキャッシュから読み込まれる。
【００７５】
さらに別の実施形態では、ステップ４０１で、要求タイプが書き込み動作であるということが決定された場合、ステップ４０２で、ＯＳ２１４がデータ書き込み動作を実行する。一実施形態では、このデータ書き込み動作は、ライトスルーモードで実行される。次に、ステップ４０２で、ＯＳ２１４が接続２０１−１を介してデータをストレージ２１２に書き込んだ後に、ステップ４０８で、ＯＳ２１４が、データをユーザデバイス１０１−１のキャッシュにも書き込む。ステップ４０９で、キャッシュサービスデータベースも更新される。
【００７６】
別の実施形態では、データをキャッシュに書き込むべきかどうかを判定するために、１つ以上の追加チェックが実行される。図４Ｂは、実施形態の一例を示している。ステップ４Ｂ−０１〜４Ｂ−０７は、図４Ａのステップ４０１〜４０７に似ている。ステップ４Ｂ−０８で、データがキャッシングに適しているかどうかを判定するために、追加チェックが使用される。データがキャッシングに適しているかどうかを判定するために調べられる要因の例としては、以下が挙げられる。
−  キャッシュの最大容量、
−  キャッシュ容量の使用率、
−  データ項目のサイズ、
−  データ項目の使用頻度、
−  データ項目の有効期限、
−  現在実行中のアプリケーション、
−  以前に収集されたデータ利用パターン、及び、
−  ユーザデバイス１０１−１のデバイスタイプ。
【００７７】
ステップ４Ｂ−０８で、データがキャッシングに適しているということが決定された場合、ステップ４Ｂ−１０で、データがキャッシュに書き込まれ、ステップ４Ｂ−１１で、キャッシュサービスデータベースが更新される。
【００７８】
一実施形態では、ＯＳ２１４が、例えば次のような追加のキャッシュサービス機能を実行する。
−  キャッシュのデフラグメンテーション、又は
−  容量を解放するための、キャッシュにあまり適していないデータの削除。
【００７９】
次に、ステップ４Ｂ−０８で使用された前述の要因が、これらの追加のキャッシュサービス機能の性能を最適化するためにも使用される。
【００８０】
さらに別の実施形態では、ステップ４Ｂ−０８で、データがキャッシングに適していないということが決定された場合、ステップ４Ｂ−０９で、キャッシュサービスデータベースの更新の必要性を決定するための追加チェックが実行される。例えば、データがどのユーザデバイスのどのキャッシュにも存在しないということが決定された場合、キャッシュサービスデータベースを更新する必要はない。
【００８１】
一実施形態では、ユーザデバイス１０１−１がＯＳ２１４を実行するときに、データがストレージ２１２からプリフェッチされ、ユーザデバイス１０１−１のキャッシュを更新するために使用される。すなわち、データがストレージ２１２からフェッチされ、今後の使用に備えて、ユーザデバイス１０１−１のキャッシュに送信される。
【００８２】
図４Ｃは、プリフェッチの実施形態例を示している。ステップ４Ｃ−０１で、ストレージ２１２に格納されたデータが、ＯＳ２１４によって、ユーザデバイス１０１−１のキャッシュに格納されたデータと比較される。ＯＳ２１４は、ユーザデバイス１０１−１に対応するキャッシュサービスデータベースからの情報を、ストレージ２１２のファイルシステムに格納された情報と比較することによって、データ比較を実行する。
【００８３】
ステップ４Ｃ−０２で、接続されたキャッシュに格納されたデータが、ストレージ２１２に格納されたデータに一致しないということが決定された場合、ステップ４Ｃ−０３で、ＯＳ２１４が、ストレージ２１２に格納されたデータの１つ以上の部分のうちのどれが、ユーザデバイス１０１−１のキャッシュ上のデータと比較して異なっているかを決定する。
【００８４】
さらに別の実施形態では、ステップ４Ｃ−０４で、ＯＳ２１４が、ユーザデバイス１０１−１のキャッシュに格納されたデータと異なっている、ストレージ２１２に格納されたデータの１つ以上の部分を選択的にプリフェッチする。
【００８５】
データの選択及び優先順位付けは、次の複数の要因によって決まる。
−  デバイス相互運用システム２００がインストールされているデバイスの、電源への接続、
−  バッテリー２１１の充電レベル、
−  バッテリー２１１の総容量、
−  接続２０１−１の現在の使用率、
−  現在のユーザの活動、
−  ユーザデバイス１０１−１の現在のハードウェアの使用率、
−  接続されたキャッシュの最大容量、
−  キャッシュ容量の使用率、
−  データの部分のサイズ、
−  データ項目の使用頻度、
−  データ項目の有効期限、
−  現在実行中のアプリケーション、
−  以前に収集されたデータ利用パターン、及び、
−  ユーザデバイス１０１−１のデバイスタイプ。
【００８６】
次に、ステップ４Ｃ−０５で、ユーザデバイス１０１−１のキャッシュに格納されたデータに基づいて、キャッシュサービスデータベースが適切に更新される。
【００８７】
一実施形態では、悪意のある人がデバイス相互運用システム２００にアクセスするリスクを低減するために、セキュリティ対策が使用される。例えば、一実施形態では、指紋のスキャン又は顔認識などの生体測定を使用して、デバイス相互運用システム２００へのアクセスが保護される。
【００８８】
一実施形態では、ＯＳ２１４は、接続２０１−１が失われた場合にその動作を一時停止し、接続が再確立されたときに直ちに動作を再開することができる。
【００８９】
一実施形態では、ＯＳ２１４は、１つ以上のアーキテクチャに対応する１つ以上のカーネルを含む。例えば、ＯＳ２１４は、ｘ８６アーキテクチャ及びＡＲＭアーキテクチャのカーネルを含む。その場合、接続されたユーザデバイスのアーキテクチャに応じて、適切なカーネルが自動的に使用される。この挙動は、ユーザにとって完全に透過的である。
【００９０】
一実施形態では、ユーザがＯＳ２１４を含んでいるユーザデバイス１０１−１と情報をやりとりし、インターフェイスをとることができるように、ユーザデバイス１０１−１上で、グラフィカルユーザインターフェイス（ＧＵＩ：ｇｒａｐｈｉｃａｌ  ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）が生成される。一実施形態では、ＯＳ２１４は、次の要因に従って、ＧＵＩを自動的に最適化し、適応させる。
−  ユーザデバイス１０１−１の物理的形状因子（例えば、ユーザデバイス１０１−１はどのタイプのデバイスか。ラップトップ、タブレット、ＴＶセット、ゲームコンソール、又は統合された車載システムか）、
−  ユーザデバイス１０１−１に関連付けられた画面の数及びサイズ、
−  画面解像度、及び、
−  入力方法（例えば、入力デバイスは、キーボード及びマウス、タッチスクリーン、赤外線リモートコントロール、又はゲームパッドか）。
ＧＵＩの最適化及び適応の例としては、以下が挙げられる。
−  ボタン及びチェックボックスなどのＧＵＩの制御要素のサイズ及び配置を調整する。
−  ウィンドウのサイズ及び配置を調整する。
−  画面上のキーボード又は音声テキスト入力などの、特定のテキスト入力方法を有効化又は無効化する。
−  車載空調システムの制御などの、デバイス固有の機能のためのＧＵＩ部分を有効化又は無効化する。
【００９１】
一実施形態では、ＯＳ２１４は、一度に１つの接続されたユーザデバイス上でのみ動作することができる。その一例は、ＯＳ２１４がユーザデバイス１０１−１上で実行されている場合である。その場合、接続２０１−２を確立した後、ユーザデバイス１０１−２などの別のユーザデバイス上で動作するには、一実施形態では、ＯＳ２１４は、ユーザデバイス１０１−１上でシャットダウンされてから、ユーザデバイス１０１−２上で起動されなければならない。別の実施形態では、ユーザデバイス１０１−１上のＯＳ２１４の動作が、まず一時停止される。その後、ユーザデバイス１０１−２上でＯＳ２１４が起動されるか、又は前もって一時停止されている場合は、再開される。
【００９２】
別の実施形態では、ＯＳ２１４は、例えばユーザデバイス１０１−１、１０１−２、及び１０１−３などの複数のユーザデバイスで、動作することができる。これを可能にするために、一実施形態では、通信モジュール２１３が、ユーザデバイス１０１−１、１０１−２、及び１０１−３との接続２０１−１、２０１−２、及び２０１−３をそれぞれ確立し、同時に維持することができる。その後、ユーザデバイス１０１−１、１０１−２、及び１０１−３は、デバイス相互運用システム２００に同時に接続され、それらのユーザデバイスそれぞれが、ＯＳ２１４のインスタンスを互いに並列に実行する。一実施形態では、通信モジュール２１３の送信能力は、各接続の現在の使用率に従って、接続２０１−１、２０１−２、及び２０１−３間でバランス調整される。
【００９３】
さらに別の実施形態では、ユーザデバイス１０１−１、１０１−２、及び１０１−３上で同時に実行されているＯＳ２１４の異なるインスタンスは、分散ロック管理方法を使用して、ストレージ２１２への同時アクセスを調整する。例えば、ユーザデバイス１０１−１、１０１−２、及び１０１−３上で実行されているＯＳ２１４の３つのインスタンスすべてのロックマネージャは、デバイス相互運用システム２００並びに接続２０１−１、２０１−２、及び２０１−３を用いてこれらのインスタンス間で分散された、同じロックデータベースを使用する。
【００９４】
一実施形態では、相互運用システム２００は、ユーザデバイスの現在の状態に関する何らかの詳細情報を交換するために、異なるユーザデバイス上で同時に実行されているＯＳ２１４の異なるインスタンスによって使用される。この詳細情報の例としては、以下が挙げられる。
−  同時に動作しているユーザデバイスの数及びデバイスタイプ、
−  ＯＳの重要なサービス機能の状態（例えば、ＯＳ更新プロセス）、
−  現在のユーザの活動、及び、
−  現在実行中のアプリケーション。
このデータは、ＯＳ２１４のすべての実行中のインスタンスによって、そのサービス機能を調整して最適化するために使用される。例えば、ＯＳ２１４の３つのインスタンスが、ユーザデバイス１０１−１、１０１−２、及び１０１−３上で実行されている場合、ＯＳ更新プロセスが３つのデバイスすべてで同時に実行されないことを保証するために、調整が実行される。さらに別の実施形態では、このデータは、確立された接続２０１−１〜２０１−３間で、通信モジュール２１３の送信能力のバランス調整を優先順位付けするために使用される。例えば、ユーザ１００が現在使用しているユーザデバイスには、より高い優先度が与えられる。
【００９５】
さらに別の実施形態では、ＯＳ２１４が、異なるユーザデバイス上で実行されているＯＳのインスタンス間での実行中のアプリケーションの移行をサポートする。上の例を参照すると、ＯＳ２１４は、現在実行中のアプリケーションをユーザデバイス１０１−２からユーザデバイス１０１−３に移動する能力をサポートする。移行後に、アプリケーションは、以前に開いていた任意のファイルに引き続きアクセスすることができる。さらに別の実施形態では、ユーザがアプリケーションを移行することを選択し、接続２０１−２及び２０１０３が移行プロセスを容易にするために使用される場合、前述したデータが、さらに詳細な情報をユーザに提示するために使用される。
【００９６】
デバイス相互運用システム２００の使用は、複数のその他の利点を提供する。一部の実施形態では、デバイス相互運用システム２００は、クラウドベースのデータ同期化能力と共に使用される。例えば、クラウドベースのサービスが、異なるユーザデバイス間のデータの同期化に使用される場合、デバイス相互運用システム２００は、ユーザデバイスがクラウドに接続してデータ同期化を実行する必要性を少なくする。代わりに、ユーザデバイスは、ストレージ２１２からのデータを使用する。これによって、ユーザデバイスとのクラウドの接続の使用率を減らす。さらに、一部の実施形態では、デバイス相互運用システム２００は、クラウドの接続が失われたか、又は使用できない場合に、ユーザデバイスがデータをストレージ２１２から取得できるため、データの可用性を保証する。一部の実施形態では、ユーザに関連する可能性が最も高いデータの可用性を保証するためのインテリジェントな方法が、採用される。そのような方法の例としては、以下に基づく方法が挙げられる。
−  時間的局所性：ユーザデバイス上で最近使用されたデータは、ユーザデバイスが近い将来に再び使用する可能性が高いため、ストレージ２１２に格納される。
−  空間的局所性：最近使用されたデータに近いメモリ位置を占めるデータセットは、ユーザデバイスが近い将来に使用する可能性が高いため、ストレージ２１２に格納される。
−  分岐の局所性：条件付き分岐命令からの可能性のある複数の結果が存在する場合、それらの結果それぞれに関連するデータは、ユーザデバイスが使用する可能性が高いため、ストレージ２１２に格納される。
−  ユーザデバイスとのユーザの情報のやりとりの確率論的解析：例えば、ユーザが、特定のプログラムと連動して、又は特定のプログラムを使用した後に、１つ以上のデータセットを使用する高い可能性が存在する場合、それらのデータセットがストレージ２１２に格納される。
一部の実施形態では、一部のユーザデータが、クラウド内ではなくストレージ２１２に格納される。この能力は、例えば、ユーザが極秘データを管理下に置きたい場合に役立つ。
【００９７】
デバイス相互運用システム２００の使用は、ＩｏＴ対応のユーザデバイスにも利点をもたらす。クラウドベースのサービスと同様に、デバイス相互運用システム２００は、クラウドに接続してデータの同期化を実行する必要性を少なくする。さらに、バイス相互運用システム２００は、ユーザデバイスごとに個別のクラウドの認証情報及びデバイス設定を維持する必要があるという困難を軽減する。
【００９８】
前述のフローチャートを参照するアルゴリズムを含む前述のアルゴリズムは、個別に説明されたが、本明細書で開示されたアルゴリズムのうちの任意の２つ以上を任意の組み合わせで組み合わせることができるということが、理解されるべきである。本明細書に記載された方法、アルゴリズム、実装、又は手順は、いずれも（ａ）プロセッサ、（ｂ）コントローラ、及び／又は（ｃ）任意のその他の適切な処理デバイスによる実行のための機械可読命令を含むことができる。本明細書で開示されたすべてのアルゴリズム、ソフトウェア、又は方法は、例えば、フラッシュメモリ、ＣＤ−ＲＯＭ、フロッピーディスク、ハードドライブ、デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）、又はその他のメモリデバイスなどの、非一時的な有形の媒体に格納されるソフトウェアにおいて具現化することができるが、当業者は、アルゴリズム全体及び／又はアルゴリズムの一部が、コントローラ以外のデバイスによって代替的に実行され得るということ、及び／又は周知の方法でファームウェア若しくは専用ハードウェアにおいて具現化され得る（例えば、特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、プログラマブル論理デバイス（ＰＬＤ：ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）、フィールドプログラマブル論理デバイス（ＦＰＬＤ：ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）、個別の論理などによって実装されてよい）ということを、容易に理解するであろう。また、本明細書で示されたいずれかのフローチャートにおいて表された機械可読命令のうちの一部又は全部は、コントローラ、プロセッサ、又は同様のコンピューティングデバイス若しくは機械によって自動的に実施されるのとは対照的に、手動で実施され得る。さらに、特定のアルゴリズムが、本明細書で示されたフローチャートを参照して説明されたが、当業者は、例示的な機械可読命令を実施する多くのその他の方法が代替的に使用されてよいということを、容易に理解するであろう。例えば、ブロックの実行順序が変更されてよく、及び／又は説明されたブロックの一部が変更されるか、除去されるか、若しくは組み合わせられてよい。
【００９９】
アルゴリズムが、特定の機能を実行し、互いに情報をやりとりするさまざまなモジュールを含んでいるとして、本明細書において図で示され、説明されたということに、注意するべきである。それらのモジュールが、単に説明の目的でそれらの機能に基づいて分離されており、コンピュータハードウェアを表し、及び／又は適切なコンピューティングハードウェア上での実行のためにコンピュータ可読媒体に格納される実行可能なソフトウェアコードを表すということが、理解されるべきである。異なるモジュール及びユニットのさまざまな機能は、ハードウェア及び／又は上記の非一時的コンピュータ可読媒体にモジュールとして格納されたソフトウェアとして、任意の方法で組み合わせるか、又は分離することができ、別々に、又は組み合わせて使用することができる。
【０１００】
本開示の特定の実装及び適用が図で示され、説明されたが、本開示が、本明細書で開示された正確な構造及び構成に限定されないということ、及び前述の説明から、添付の特許請求の範囲において規定された発明の思想及び範囲を逸脱することなく、さまざまな修正、変更、及び変形が明らかに可能であるということが、理解されるべきである。
【図１】
2019537812.tif 000004
【図２Ａ】
2019537812.tif 000005
【図２Ｂ】
2019537812.tif 000006
【図２Ｃ】
2019537812.tif 000007
【図２Ｄ】
2019537812.tif 000008
【図２Ｅ】
2019537812.tif 000009
【図３Ａ】
2019537812.tif 000010
【図３Ｂ】
2019537812.tif 000011
【図４Ａ】
2019537812.tif 000012
【図４Ｂ】
2019537812.tif 000013
【図４Ｃ】
2019537812.tif 000014
【国際調査報告】
2019537812.tif 000015
2019537812.tif 000016