(57)【要約】  実施形態は、異なるコンピューティング装置間でデータを転送する方法及びシステムを提供する。詳細には、通信セッションが第１のコンピューティング装置と第２のコンピューティング装置との間に確立される。通信セッションは、第１の通信プロトコルを用いて確立することができる。第１のコンピューティング装置は、該第１のコンピューティング装置の１又は複数のメモリブロックに結び付けられた仮想メモリオブジェクトを作成する。仮想メモリオブジェクトに対するパスが生成され、このパスは上記通信セッションを用いて第２のコンピューティング装置に送信される。それから、第２のコンピューティング装置は、第１の通信プロトコルとは異なる第２の通信プロトコルを用いて、仮想メモリオブジェクトへと／から直接、データを読み出し又は書き込むことができる。データは、ファイルシステムコマンドを用いて仮想メモリオブジェクトへと書き込まれ、仮想メモリオブジェクトから読み出される。
2016520240.tif 000002
【特許請求の範囲】
【請求項１】
第１のコンピューティング装置と第２のコンピューティング装置との間でデータを転送する方法であって、
第１の通信プロトコルを用いて前記第１のコンピューティング装置と前記第２のコンピューティング装置との間に通信セッションを確立するステップと、
前記第１のコンピューティング装置に仮想メモリオブジェクトを作成するステップと、
前記仮想メモリオブジェクトを、前記第１のコンピューティング装置の１又は複数のメモリブロックに結び付けるステップと、
前記仮想メモリオブジェクトに対するパスを生成するステップと、
前記通信セッションを用いて前記第２のコンピューティング装置に前記パスを送信するステップと、
前記仮想メモリオブジェクトを用いて前記第１のコンピューティング装置の前記１又は複数のメモリブロックへと直接データを受け入れるステップと、
を含む方法。
【請求項２】
前記第１の通信プロトコルはトランスミッションコントロールプロトコル（ＴＣＰ）である、請求項１に記載の方法。
【請求項３】
前記第１のコンピューティング装置の前記１又は複数のメモリブロックへと直接データを受け入れるステップは、前記第１の通信プロトコルとは異なる第２の通信プロトコルを通じて前記第１のコンピューティング装置に伝達されるデータを受け入れることを含む、請求項１に記載の方法。
【請求項４】
前記第２の通信プロトコルはサーバメッセージブロック（ＳＭＢ）プロトコルである、請求項３に記載の方法。
【請求項５】
前記仮想メモリオブジェクトへと直接データを受け入れるステップは、複数のチャネルを通じて並行して前記データを受け入れることを含む、請求項１に記載の方法。
【請求項６】
前記仮想メモリオブジェクトへと直接データを受け入れるステップは、前記第２のコンピューティング装置から１又は複数のファイルシステムコマンドを受け入れることを含み、前記１又は複数のファイルシステムコマンドは、ファイルシステムアプリケーションプログラミングインターフェース（ＡＰＩ）から選択される、請求項１に記載の方法。
【請求項７】
第１のコンピューティング装置と第２のコンピューティング装置との間でデータを転送する方法であって、
第１の通信プロトコルを用いて前記第１のコンピューティング装置と前記第２のコンピューティング装置との間に通信セッションを確立するステップと、
前記第１のコンピューティング装置に、前記第２のコンピューティング装置から前記第１のコンピューティング装置にデータを転送するための要求を送るステップと、
前記要求に応答して、前記第２のコンピューティング装置において、仮想メモリオブジェクトに対するパスを受信するステップであって、前記仮想メモリオブジェクトは前記第１のコンピューティング装置の１又は複数のメモリブロックに結び付けられる、ステップと、
前記仮想メモリオブジェクトを用いて前記１又は複数のメモリブロックに直接データを転送するステップであって、該転送するステップは、前記第１の通信プロトコルとは異なる第２の通信プロトコルを用いて生じ、前記データは、前記第２のコンピューティング装置によって伝達されるファイルシステムコマンドによって前記仮想メモリオブジェクトを用いて前記１又は複数のメモリブロックに転送される、ステップと、
を含む方法。
【請求項８】
前記第１の通信プロトコルはトランスミッションコントロールプロトコル（ＴＣＰ）である、請求項７に記載の方法。
【請求項９】
１又は複数のプロセッサにより実行されるとき、第１のコンピューティング装置と第２のコンピューティング装置との間でデータを転送する方法を実行するコンピュータ実行可能命令をエンコードしたコンピュータ可読記憶媒体であって、前記方法は、
第１の通信プロトコルを用いて前記第１のコンピューティング装置と前記第２のコンピューティング装置との間に通信セッションを確立するステップと、
前記第１のコンピューティング装置に仮想メモリオブジェクトを作成するステップと、
前記仮想メモリオブジェクトを、前記第１のコンピューティング装置の１又は複数のメモリブロックに結び付けるステップと、
前記仮想メモリオブジェクトに対するパスを生成するステップと、
前記通信セッションを用いて前記第２のコンピューティング装置に前記パスを送信するステップと、
前記仮想メモリオブジェクトを用いて前記第１のコンピューティング装置の前記１又は複数のメモリブロックへと直接データを受け入れるステップと、
を含む、コンピュータ可読記憶媒体。
【請求項１０】
前記第１の通信プロトコルはトランスミッションコントロールプロトコル（ＴＣＰ）である、請求項９に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
２つの異なるコンピューティング装置間でデータを転送するとき、転送されるデータは典型的にはネットワークバッファに書き込まれる。それから、ネットワークバッファはネットワークプロトコルを用いてネットワークにわたってコピーされ、ネットワークパケットとして宛先（destination）コンピューティング装置に届けられる。それから、ネットワークパケットは、宛先コンピューティング装置におけるメモリへとコピーされる。こうしたファイル転送は典型的に、時間がかかり、データが順に書き込まれることを要し、このことは、送信元（source）コンピューティング装置と宛先コンピューティング装置との双方において、ネットワーク帯域幅及びシステムリソースに関してコストのかかる可能性がある。
【０００２】
上記及び他の一般的検討に関して、実施形態は作られている。さらに、比較的具体的な問題が論じられているが、実施形態は背景技術において識別される具体的な課題を解決することに限定されるべきでないことが理解されるべきである。
【発明の概要】
【０００３】
本発明の概要は、以下に詳細な説明においてさらに記載される概念のうち選択されたものを簡素化された形式で紹介するために提供される。本発明の概要は、請求される対象事項のうち重要な特徴又は必須の特徴を識別するものではなく、請求される対象事項の範囲の決定を支援するものとして使用すべきものでもない。
【０００４】
実施形態は、第１のコンピューティング装置と第２のコンピューティング装置との間でデータを転送する方法及びシステムを提供する。詳細には、通信セッションが第１のコンピューティング装置と第２のコンピューティング装置との間に確立される。この通信セッションは、例えばトランスミッションコントロールプロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）などの第１の通信プロトコルを用いて確立することができる。大きいブロックのデータの転送を実現するために、第１のコンピューティング装置は、該第１のコンピューティング装置の１又は複数のメモリブロックに結び付けられた仮想メモリオブジェクトを作成する。仮想メモリオブジェクトに対するパスが生成され、命名され、上記の確立された通信セッションを用いて第２のコンピューティング装置に送信される。いったん受信されると、第２のコンピューティング装置は、上記パスを利用して、仮想メモリオブジェクトに関連付けられた第１のコンピューティング装置のメモリロケーションから直接データを読み出し、あるいは該メモリロケーションに直接データを書き込むことができる。以下に明記されるとおり、データ送信（例えば、読み出し又は書き込み）は、第１の通信プロトコルとは異なる第２の通信プロトコルを通じて実行される。特定の実施形態において、第２の通信プロトコルは、ＷＡ、ＲｅｄｍｏｎｄのＭＩＣＲＯＳＯＦＴコーポレーションによるサーバメッセージブロック（ＳＭＢ）プロトコルの一バージョンである。データは、第２の通信プロトコルを通じて送信されるファイルシステムコマンドを用いて仮想メモリオブジェクトに関連付けられたメモリロケーションに書き込まれ、該メモリロケーションから読み出される。
【０００５】
実施形態は、さらに、例えばＴＣＰ／ＩＰ通信プロトコルなどの第１の通信プロトコルを用いて第１のコンピューティング装置と第２のコンピューティング装置との間に通信セッションを確立する方法及びシステムを提供する。いったんセッションが第１のコンピューティング装置と第２のコンピューティング装置の間に確立されると、第２のコンピューティング装置は、仮想メモリオブジェクトをセットアップするように第１のコンピューティング装置に要求を送る。上記要求に応答して、第２のコンピューティング装置は、上記の作成されたメモリオブジェクトに対するパスを受信する。特定の実施形態において、仮想メモリオブジェクトは、第１のコンピューティング装置の１又は複数のメモリブロックに結び付けられる。受信したパスを用いて、第２のコンピューティング装置は、仮想メモリオブジェクトを介して第１のコンピューティング装置上のメモリロケーションから直接データを読み出し、あるいは該メモリロケーションに直接データを転送することができる。実施形態において、データ読み出し及び書き込みは、例えばＳＭＢプロトコルの一バージョンなどの第２の通信プロトコルを通じて送信される。論じられることになるとおり、データは直接、１又は複数のファイルシステムコマンドを用いて、仮想メモリオブジェクトに関連付けられたメモリロケーションに送信され、該メモリロケーションから読み出される。
【図面の簡単な説明】
【０００６】
非限定的な、非排他的な実施形態が、下記の図面を参照して記載される。
【図１】本開示の１又は複数の実施形態に従う、第１のコンピューティング装置と第２のコンピューティング装置との間でデータを転送するシステムを示す。
【図２】本開示の１又は複数の実施形態に従う、第１のコンピューティング装置と第２のコンピューティング装置との間でデータを転送する方法を示す。
【図３】本開示の１又は複数の実施形態に従う、第１のコンピューティング装置と第２のコンピューティング装置との間でメッセージを交換する方法を示す。
【図４】本開示の１又は複数の実施形態に従う、送信元から宛先へ仮想マシンを移行する方法を示す。
【図５】本開示の１又は複数の実施形態で使用され得るコンピューティング装置の例示的な物理コンポーネントを示すブロック図である。
【図６Ａ】本開示の１又は複数の実施形態で使用され得るモバイルコンピューティング装置の簡素化されたブロック図である。
【図６Ｂ】本開示の１又は複数の実施形態で使用され得るモバイルコンピューティング装置の簡素化されたブロック図である。
【図７】本開示の１又は複数の実施形態で使用され得る分散コンピューティングシステムの簡素化されたブロック図である。
【発明を実施するための形態】
【０００７】
様々な実施形態が、添付図面を参照して以下により十分に記載される。添付図面は記載の一部を成し、具体的な例示的実施形態を示す。しかしながら、実施形態は、多くの種々の形態において実施することができ、本明細書に明記される実施形態に限定されるものと見なされるべきではない。むしろ、こうした実施形態は、本開示が充分に及び完全になり、実施形態の範囲を当業者に十分に伝えるように提供される。実施形態は、方法、システム又は装置として実施され得る。したがって、実施形態は、ハードウェア実施、全体的にソフトウェア実施、又はソフトウェア及びハードウェア態様を組み合わせる実施の形態をとり得る。ゆえに、下記の詳細な説明は、限定的な意味にとられるべきではない。
【０００８】
以下に詳細に説明されるとおり、本明細書に記載される方法及びシステムは、あるコンピューティング装置が、ファイルシステムコマンドを用いて、アプリケーションプログラミングインターフェース（ＡＰＩ）から、データ通信プロトコルを通じて、別のコンピューティング装置上の物理メモリロケーションにアクセスすることを可能にする。特定の実施形態において、データ通信プロトコルは複数のチャネルをサポートすることができ、該チャネルを通して、異なるコンピューティング装置間でデータが伝達される（communicated）ことができる。論じられることになるとおり、複数のチャネルの使用は、コンピューティング装置の各々が複数の接続を確立することを可能にし、該接続を通して、データが伝達されることができる。複数のチャネルの使用は、さらに、各チャネルにわたって帯域幅集約を可能にする。さらに、データ通信プロトコルは、既に組み込まれている様々な特徴を有してもよい。こうして、ある装置上で作動するアプリケーションが、該アプリケーションにとって既知であるファイルシステムコマンドを依然として実施する間、データ通信プロトコルのカスタム特徴（custom  features）を利用することができる。上記の特徴には、認証、オート・ネゴシエーション、最適パス決定、暗号化、圧縮などを含むことができる。通信プロトコルはさらに、作成すべきチャネルの数を決定し、さらに、２つのコンピューティング装置間でのトラフィックについて、どのパスが最も大きい帯域幅と最も低いレイテンシとを有するかを決定することができ得る。通信プロトコルは、さらに、例えばＴＣＰ又はリモートダイレクトメモリアクセス（ＲＤＭＡ）などの種々の下層のトランスポート（transports）と、どれが最も効率が良いかの自動決定とを利用することができる。
【０００９】
図１は、本開示の１又は複数の実施形態に従う、第１のコンピューティング装置１１０と第２のコンピューティング装置１５０との間でデータが転送され得るシステム１００を示している。特定の実施形態において、第１のコンピューティング装置１１０はサーバコンピュータであり得、第２のコンピューティング装置はクライアントコンピュータであり得、例えば、パーソナルコンピュータ、タブレット、ラップトップ、スマートフォン、パーソナルデジタルアシスタントなどである。第１のコンピューティング装置１１０はサーバコンピュータとして図示及び記載され、第２のコンピューティング装置１５０はクライアントコンピュータとして図示及び記載されているが、第１のコンピューティング装置１１０がクライアントコンピュータであってもよく、第２のコンピューティング装置１５０がサーバコンピュータであってもよいと考えられる。さらに、図１は１つの第１のコンピューティング装置１１０と１つの第２のコンピューティング装置１５０とだけを図示しているが、１つ以上の第１及び第２のコンピューティング装置がシステム１００に存在してもよいと考えられる。こうして、図２‐図４に関して本明細書に記載される方法は、一のサーバコンピュータ又は一のクライアントコンピュータによって、あるいは複数のサーバコンピュータ又は複数のクライアントコンピュータによって、実施することができる。別法として、あるいはさらに、第１のコンピューティング装置１１０と第２のコンピューティング装置１５０との各々が、クライアントコンピュータ又はサーバコンピュータであり得る。
【００１０】
図１に示されるとおり、第１のコンピューティング装置１１０は、メモリ１２０の１又は複数のブロックに対するアクセスを有するサーバアプリケーション１１５を含み得る。特定の実施形態において、メモリ１２０は、第１のコンピューティング装置１１０に対してローカルである。別の実施形態において、メモリ１２０は、第１のコンピューティング装置１１０に対してリモートであり得る。こうした場合、メモリ１２０は、データ転送プロトコルを用いて第１のコンピューティング装置によってアクセスされる必要があるであろう。以下に詳細に説明されるとおり、第１のコンピューティング装置１１０は、メモリ１２０の１又は複数のブロックに結び付けられた（bound）仮想メモリオブジェクト１２５を生成するように構成されることができる。第１のコンピューティング装置１１０は、さらに、パス（path）生成器１３０と、メモリ１２０及び／又は仮想メモリオブジェクト１２５に対するアクセスを制御するアクセス制御リスト１３５とを含み得る。
【００１１】
図１に示されるとおり、通信セッション１７０が、ネットワーク（図示されていない）を通じて第１のコンピューティング装置１１０と第２のコンピューティング装置１５０との間で確立されることができる。特定の実施形態において、通信セッション１７０は、ＴＣＰ／ＩＰ通信プロトコルを用いて確立される。ＴＣＰ／ＩＰプロトコルが具体的に言及されているが、他の通信プロトコルが第１のコンピューティング装置１１０と第２のコンピューティング装置１５０との間に確立されてもよいと考えられる。
【００１２】
特定の実施形態において、サーバアプリケーション１１５は、第１のコンピューティング装置１１０上で実行され、第２のコンピューティング装置１５０からの受信された要求に基づいて第１のコンピューティング装置１１０と第２のコンピューティング装置１５０との間のデータ転送及び移行をセットアップし及び扱うように構成されることができる。例えば、第２のコンピューティング装置が、アプリケーション、仮想マシン、メッセージ、又は、第２のコンピューティング装置から第１のコンピューティング装置に転送され又は移行される必要がある他のデータを有することがあり、あるいは、逆のこともある。特定の実施形態において、サーバアプリケーション１１５は、第１のコンピューティング装置１１５上で実行される多くの種々のアプリケーションの１つであり得る。例えば、サーバアプリケーション１１５は、第１のコンピューティング装置１１０の動作全体を監督するように構成されたオペレーティングシステムであり得る。別法として、サーバアプリケーション１１５は、受信されたデータを第１のコンピューティング装置１１０上に常駐する１又は複数のデータベースへと編成するように構成されてもよい。
【００１３】
サーバアプリケーション１１５の構成にかかわらず、サーバアプリケーション１１５は、メモリ１２０に対するアクセスを有する。こうして、第２のコンピューティング装置１５０が、データを転送し、あるいは１又は複数のプログラム又はアプリケーションを移行するように要求するとき、サーバアプリケーション１１５は、確立された通信セッション１７０を通じて、所望される転送を通知されることができる。通知が受信されたとき、サーバアプリケーション１１５は、仮想メモリオブジェクト１２５を生成する。特定の実施形態において、仮想メモリオブジェクト１２５は、それから、メモリ１２０の中のデータの１又は複数のブロックに結び付けられる。
【００１４】
以下に説明されるとおり、特定の実施形態において、仮想メモリオブジェクト１２５は、典型的なファイルシステムにおける属性と同様の属性を含むように設定される。より詳細には、仮想メモリオブジェクト１２５は、データ転送を要求する１又は複数のアプリケーションにとって既知であるファイルシステムコマンドを用いて、仮想メモリオブジェクトに関連付けられた１又は複数のメモリブロックにデータが書き込まれることができるように構成される。すなわち、第２のコンピューティング装置１５０は、仮想メモリオブジェクト１２５を、例えば様々なオープン、リード（read）及びライト（write）コマンドを用いてアクセスすることができるファイルとして見ることができる。
【００１５】
第１のコンピューティング装置１１０は、さらに、仮想メモリオブジェクト１２５に対するパスとパス名とを生成するパス生成器１３０を含み得る。いったんパスが生成されると、第１のコンピューティング装置１１０は、例えばアクセス制御リスト１３５を用いて、パスについてのセキュリティ特徴を確立することができる。例えば、アクセス制御リスト１３５は、どのアプリケーション（ローカルのアプリケーションか、又はリモートのアプリケーション）が仮想メモリオブジェクト１２５にアクセスすることができるか、どのクライアントが仮想メモリオブジェクト１２５と関連付けられたメモリブロックとに対する書き込み許可を有するか、どのクライアントが読み出しのみのアクセスを有するか、及び、メモリのどのバイト範囲又はどのブロックが固定されるかに関して、セキュリティ特徴をセットアップすることができる。
【００１６】
特定の実施形態において、第１のコンピューティング装置１１０は、パス及びパス名を１又は複数のアプリケーションに伝達することができる。実施形態において、このアプリケーションは、第１のコンピューティング装置１１０に対してローカルのアプリケーションであり得る。別の実施形態において、１又は複数のアプリケーション、例えばクライアントアプリケーション１５５などが、第２のコンピューティング装置１５０上で遠隔で実行されてもよい。特定の実施形態において、パス名は、通信セッション１７０を用いて第２のコンピューティング装置１５０と共有される。システムが複数の第２のコンピューティング装置１５０を有する実施形態において、第２のコンピューティング装置の各々は、同じ第１のコンピューティング装置１１０に対して伝達することができる。
【００１７】
いったんクライアントアプリケーション１５５が仮想メモリオブジェクト１２５に対するパスを知ると、クライアントアプリケーション１５５は、ファイルシステムＡＰＩ１６０からの１又は複数のファイルシステムコマンドを使用して仮想メモリオブジェクト１２５にアクセスすることができる。例えば、クライアントアプリケーション１５５は、ＡＰＩ１６０により確立される「オープン」コマンドを発行し、仮想メモリオブジェクト１２５に直接、第２の通信プロトコル１８０にわたってこのオープンコマンドを送信することができる。実施形態において、ファイル１６０システムＡＰＩの使用は、アプリケーションレベルの変更を必要とすることなく、システムレベルにおいてパフォーマンス又はセキュリティのアップグレードを可能にする。
【００１８】
実施形態において、オープンコマンドは、仮想メモリオブジェクト１２５に結び付けられたメモリブロックにアクセスするのにポインタを利用する。結果として、クライアントアプリケーション１５５は、仮想メモリオブジェクト１２５に結び付けられたメモリブロックに関連付けられたメモリバッファに直接データを書き込むことができる。詳細には、クライアントアプリケーション１５５は、第２の通信プロトコル１８０を用いて、第１のコンピューティング装置１１０のメモリ１２０に直接アクセスすることができる。以下に詳細に論じられるとおり、第２の通信プロトコル１８０は、複数のチャネルをサポートすることができる。こうして、データは直接、並行して（in  parallel）、メモリ１２０から読み出され、あるいはメモリ１２０に書き込まれることができる。したがって、１又は複数のアプリケーション（ローカルに第１のコンピューティング装置１１０上で作動するアプリケーションか、又はリモートで第２のコンピューティング装置１５０上で作動するアプリケーション）が、複数の非同期的要求をサブミット（submit）することができる。例えば、特定の実施形態において、オープンコマンドは、読み出しアクセスと読み出し‐書き込みアクセスとの双方を元々含む。さらに、排他モードと読み出し共有モードと読み出し／書き込み共有モードとを含む共有モードについて、サポートが与えられてもよい。上記モードの使用を通して、クライアントは、メモリ領域に対する自身の所望のアクセスモードを表現することができ、このことが、サーバが要求されたモードを認可し又は拒否することを可能にする。
【００１９】
上記で論じられたとおり、仮想メモリオブジェクト１２５は、メモリの１又は複数のブロックに結び付けられることができる。特定の実施形態において、メモリのブロックは、メモリの連続ブロック又はメモリの不連続ブロックであり得る。例えば、仮想オブジェクト１２５は、ブロック０乃至ブロック２を含むメモリ領域Ａに結び付けられ、メモリブロック４乃至メモリブロック５を含むメモリ領域Ｂに結び付けられることができる。仮想メモリオブジェクト１２５は、不連続メモリブロックに結び付けられることがあるが、仮想メモリオブジェクト１２５は、クライアントアプリケーション１５５にとって連続しているように見え得る。こうして、クライアントアプリケーション１５５が仮想メモリオブジェクト１２５にデータを書き込むとき、クライアントアプリケーション１５５はデータを順次書き込むことができる。対称的に、サーバアプリケーション１１５は、仮想メモリオブジェクト１２５に関連付けられた不連続データブロックからデータを読み出し、又は該不連続データブロックにデータを書き込むときに、散乱された書き込み又は収集された読み出しをする必要があり得る。同様にして、いくつかの実施形態において、システムが限られたメモリリソースを有する場合、種々の不連続領域が、仮想メモリと物理ディスクとの混合によって後援される（backed）ことができる。
【００２０】
特定の実施形態において、第２の通信プロトコル１８０は、第１のコンピューティング装置１１０と第２のコンピューティング装置１５０との間に通信セッションを確立する。上記で論じられたとおり、第２の通信プロトコルは、例えばサーバメッセージブロック（ＳＭＢ）プロトコルの一バージョンなどの、ファイル転送プロトコルである。特定の実施形態において、ＳＭＢセッションは、第１の通信セッション１７０が確立された後、任意の時点において確立することができる。別の実施形態において、第１の通信セッション１７０が、ＳＭＢセッションであり得る。さらに別の実施形態において、ＳＭＢセッションは、パスが第１のコンピューティング装置１１０から第２のコンピューティング装置１５０に伝達されたことに応答して、あるいは第２のコンピューティング装置１５０が第２のコンピューティング装置１５０からのデータ転送又は移行を受け入れるように第１のコンピューティング装置１１０に要求をサブミットしたことに応答して、第１のコンピューティング装置１１０と第２のコンピューティング装置１５０との間に確立することができる。
【００２１】
第１のコンピューティング装置１１０と第２のコンピューティング装置１５０との間のＳＭＢセッションの確立の間、第１のコンピューティング装置１１０と第２のコンピューティング装置１５０との双方がＳＭＢセッション内で複数の接続をサポートすることを示すように、ネゴシエーションが発生してもよい。これには、ＳＭＢプロトコルの一バージョンをネゴシエートすることを含み得る。さらに、第１のコンピューティング装置１１０及び／又は第２のコンピューティング装置１５０は、第１のコンピューティング装置１１０と第２のコンピューティング装置１５０との間の様々なインターフェース及び接続に関する情報を決定することもできる。これには、接続又はチャネルのタイプと各接続又はチャネルのスピードとが含まれる。さらに、第１のコンピューティング装置１１０又は第２のコンピューティング装置１５０のいずれかが、タイプ及びスピードによってインターフェース及び接続をソートして、上位のインターフェースを決定することができる。こうして、第１のコンピューティング装置１１０と第２のコンピューティング装置１５０との各々は、データを転送するためにさらなるチャネルが確立されるとき、どのインターフェース又はチャネルが使用されるべきかをさらに決定することができる。
【００２２】
より詳細に、１又は複数の接続トランスポートが、第１のコンピューティング装置１１０と第２のコンピューティング装置１５０との間で利用可能であり得る。例えば、第１のコンピューティング装置１１０と第２のコンピューティング装置１５０とは、様々なトランスポート、例えばイーサネット(登録商標)及びＷｉ−Ｆｉ、並びに、この同じトランスポートの冗長接続、例えば、複数のネットワークインターフェースカード（ＮＩＣ）などによって接続することができる。さらに、いくつかの接続トランスポートは、ある接続トランスポートのスピードに別の接続トランスポートを通じて影響を与えるＲＤＭＡなどの能力をサポートすることができる。
【００２３】
図１に戻ると、図示されているとおり、第２の通信プロトコル１８０は、クライアントアプリケーション１５５が仮想メモリオブジェクト１２５に直接アクセスすることを可能にする。こうして、クライアントアプリケーション１５５は、仮想メモリオブジェクト１２５に直接データを書き込むとき、第２の通信プロトコルの１又は複数の特徴を利用することができる。例えば、第２の通信プロトコルがＳＭＢプロトコルの一バージョンであるシナリオにおいて、クライアントアプリケーション１５５は、新しいファイルシステムコマンドを作成すること、又は、クライアントアプリケーション１５５及び／又は第２のコンピューティング装置１５０にとって既知であるＡＰＩ１６０によって利用されるファイルシステムコマンドを再プログラミングすることを要することなく、ＳＭＢプロトコルによって提供される能力を利用することができる。こうして、クライアントアプリケーション１５５は、発見、認証、承認、帯域幅集約、ＲＤＭＡ及びＴＣＰのサポート、ＲＤＭＡを通じたゼロコピーなどを含むＳＭＢプロトコルの能力を依然として活用すると同時に、オープン、リード及びライトなどのコマンドを利用することができる。
【００２４】
図２は、本開示の１又は複数の実施形態に従う、第１のコンピューティング装置と第２のコンピューティング装置との間でデータを転送する方法２００を示している。特定の実施形態において、第１のコンピューティング装置１１０（図１）と第２のコンピューティング装置１５０（図１）とのうち１又は複数が、マルチチャネルデータ通信プロトコルを通じてデータの大きいブロックを伝達する方法２００を採用することができる。
【００２５】
方法２００は、通信セッションがクライアントとサーバとの間に確立される（２１０）とき、始まる。クライアントとサーバとが具体的に言及されているが、方法２００の動作は、２以上のクライアント又は２以上のサーバ間で実施することができると考えられる。特定の実施形態において、通信セッションは、ＴＣＰ／ＩＰ通信プロトコルを用いて確立される。ＴＣＰ／ＩＰ通信プロトコルが具体的に言及されているが、１又は複数の実施形態が、特化されたプロトコル又は他の帯域外プロトコルを用いてクライアント及びサーバが通信セッションを確立することができることを提供する。
【００２６】
いったん通信が確立されると、サーバは、クライアントからファイルデータ又はアプリケーションデータを受け入れるための要求を受信することができる（２２０）。以下に説明されるとおり、要求は、クライアントからサーバに仮想マシンを移行するための要求であり得る。別の実施形態において、要求は、クライアントからサーバに複数の少量のデータから成る大きいボリュームを転送するための要求であり得る。さらに別の実施形態において、要求は、クライアントからサーバにデータの大きいチャンク（chunks）を転送するための要求であり得る。
【００２７】
受信された要求に応答して、サーバは、仮想メモリオブジェクトを作成する（２３０）。特定の実施形態において、仮想メモリオブジェクトは、仮想ファイルと同種である。こうして、ファイルシステムＡＰＩのファイルシステムコマンド（例えば、オープン、リード及びライトコマンド）を用いてアプリケーションがアクセスすることができるちょうど物理ファイルとして、仮想メモリオブジェクトは、データ通信プロトコルを通じて送信される同様のファイルシステムコマンドを用いてリモートのアプリケーションがアクセスすることができる。さらに別の実施形態において、仮想ファイルは、データが書き込まれ又は読み出されるべきバッファのインデックスを示す読み出し又は書き込みのファイルオフセットを有する、より小さいバッファの配列であってもよい。
【００２８】
作成プロセスの一部として、仮想メモリオブジェクトは、サーバに常駐する１又は複数の物理メモリ領域（又は、ブロック）にマップされ、結び付けられる。結び付けプロセスの一部として、サーバは、１又は複数の物理メモリ領域を登録して、メモリが別のアプリケーションによって上書きされないことを保証するのを助けることができる。１又は複数の物理メモリ領域が仮想メモリオブジェクトに結び付けられるが、サーバに常駐する１又は複数のアプリケーションは、必要とされるとおりに物理メモリ領域に依然としてアクセスすることができる。上記で論じられたとおり、各仮想メモリオブジェクトに関連付けられた物理メモリ領域は、連続的若しくは不連続的、又はこれらの組み合わせであり得る。
【００２９】
いったん仮想メモリオブジェクトが作成され、サーバ上に常駐する１又は複数の物理メモリにマップされ、結び付けられると、フローは動作２４０に進み、動作２４０において、仮想メモリオブジェクトに対するパスが生成される。特定の実施形態において、パスは、サーバによって、又はサーバ上に常駐するアプリケーションによって生成される。パスは、ファイル名又はパス名を含むことができ、ゆえに、１又は複数のローカルのアプリケーションと、サーバとの確立された通信セッションを有するクライアント上で実行されている１又は複数のリモートのアプリケーションとに、容易に伝達されることができる。
【００３０】
動作２５０は、パスが１又は複数のアプリケーションに伝達されることを提供する。これまでに論じられたとおり、パスは、１又は複数のリモートのアプリケーションに伝達される。別の実施形態において、パス名が、ローカルのアプリケーションに伝達されることができる。パス名はローカルのアプリケーションに伝達されるが、ローカルのアプリケーションは従来のファイルアクセス方法を用いて物理メモリ領域にアクセスすることができ、パス名を利用する必要はないと考えられる。別の実施形態において、いったんパスが確立されると、すべてのアプリケーションが、ローカルのアプリケーションでもリモートのアプリケーションでも、仮想メモリオブジェクトに関連付けられた物理メモリ領域にアクセスするのにパスを利用することを必要とされてもよい。特定の実施形態において、パスは、動作２１０の確立された通信セッションを用いて、クライアント又はリモートのアプリケーションに伝達される。
【００３１】
いったんパスがアプリケーションに伝達されると、動作２６０は、１又は複数のリモートのアプリケーションからのデータが、ファイル転送プロトコルを用いて仮想メモリオブジェクトへと直接受信されることを提供する。上記で論じられたとおり、リモートのアプリケーションは、ファイル転送プロトコルを通じてファイルシステムコマンドを伝達して、仮想メモリオブジェクトに関連付けられた物理メモリ領域の中のデータにアクセスする。こうして、クライアントアプリケーションが仮想メモリオブジェクトに対するパスを知っているとき、クライアントアプリケーションは、仮想メモリオブジェクトに対してオープン、リード及びライトコマンドを発行することができる。結果として、上記の方法は、リモートのアプリケーションが、このクライアントアプリケーションによってすでに知られており利用されているファイルアクセスコマンドを依然として利用すると同時に、上記で論じられた特徴（例えば、自動発見、ネゴシエーション、認証、帯域幅集約、ＲＤＭＡ及びＴＣＰサポート、ＲＤＭＡを通じたゼロコピーなど）などのファイル転送プロトコルの下層の特徴を利用することを可能にする。上記の方法はさらに、アプリケーション自体が何が利用可能であるかに気付いていないときでさえ、クライアント及びサーバが上記の能力を利用することを可能にし、こうして、アプリケーションに対する変更を要することなく、パフォーマンス又はセキュリティを向上させることができる。
【００３２】
特定の実施形態において、ファイル転送プロトコルは、サーバメッセージブロック（ＳＭＢ）プロトコルのバージョン２又はより高いバージョンである。上記で論じられたとおり、ＳＭＢプロトコルは、複数のチャネルを利用するように構成されることができる。結果として、データがクライアントからサーバに転送されるとき、読み出し及び書き込みが様々なチャネルを通じて並行して送信されることができる。さらに、複数のチャネル及び／又はＲＤＭＡを利用するＳＭＢを通じた大きい読み出し及び書き込みが、送信元及び宛先の双方においてゼロコピーの機能性を有する。こうして、クライアントからサーバへの（又は、その逆の）データは、アプリケーションメモリへと、又はアプリケーションメモリから直接転送されることができ、このことは、オペレーティングシステムにおいてアプリケーションメモリとデータバッファとの間でデータをコピーする必要を除去する。結果として、転送は、ローカルのプロセッサ及びキャッシュなどによって行われるべき作業をわずかに必要とし得るか、あるいはまったく必要としなくなり得る。
【００３３】
下記は、方法２００が利用され得る一例示的実施形態である。例えば、２つの異なるノード（例えば、送信元ノードと宛先ノード）上で作動する複数のプロセスが存在し得る。ノードの一方（送信元ノード）は、１ギガバイトのデータを他方のノード（宛先ノード）に転送したい。送信元ノードは、仮想メモリオブジェクトを作成し、１ギガバイトのデータをメモリに登録する。それから、送信元は、宛先ノードにパス名を提供する。宛先ノードは、ファイルシステムＡＰＩからのファイルシステムコマンドを用いて仮想メモリオブジェクトを開き、並行する読み出しを発行してメモリをローカルに引き出す（pull）。いったん動作が終了されると、仮想メモリオブジェクトは閉じられる。
【００３４】
別の例として、複数のプロセスが、２つの異なるノード（例えば、送信元ノード及び宛先ノード）上で作動し得る。ノードの一方（送信元ノード）が、１ギガバイトのデータを他方のノード（宛先ノード）に転送したい。送信元ノードは、宛先ノードが所与のサイズ（例えば、１ギガバイト）の仮想メモリオブジェクトを作成することを要求する。この要求に応答して、宛先ノードは、仮想メモリオブジェクトを生成し、１又は複数の物理メモリブロックを仮想メモリオブジェクトに結び付け、仮想メモリオブジェクトに対するパスを生成する。それから、宛先ノードは、このパスを送信元ノードに提供する。送信元ノードは、ファイルシステムＡＰＩからファイルシステムコマンドを用いて仮想メモリオブジェクトを開き、並行する書き込みを発行してデータ転送を可能にする。いったん動作が終了されると、仮想メモリオブジェクトは閉じられる。
【００３５】
本開示の１又は複数の実施形態は、さらに、少量のデータで大量のメッセージを交換したい１又は複数のメッセージングプロトコルによって利用されてもよい。メッセージは典型的に小さいサイズであるが、本開示の実施形態は、大量のメッセージをより効率的に転送するのに使用することができる。
【００３６】
図３を参照すると、図３は、本開示の１又は複数の実施形態に従う、第１のコンピューティング装置と第２のコンピューティング装置との間のメッセージの転送を可能にする方法３００を示している。実施形態において、メッセージの転送は、第１のコンピューティング装置１１０（図１）と第２のコンピューティング装置１５０（図１）との間であり得る。方法３００は、通信セッションがクライアントとサーバとの間に確立される（３１０）とき、始まる。特定の実施形態において、通信セッションは、ＴＣＰ／ＩＰ通信プロトコル又は他のこうした通信プロトコルに基づく。
【００３７】
サーバがクライアントからメッセージ転送要求を受信するとき、サーバは、仮想メモリオブジェクトを作成する（３２０）。特定の実施形態において、仮想メモリオブジェクトは、サーバの１又は複数の物理メモリロケーションにマップされる。さらに、各メモリロケーションは、メッセージスロット識別子として使用される１又は複数のオフセットに関連付けられる。
【００３８】
いったん仮想メモリオブジェクトが作成されると、フローは動作３３０に進み、動作３３０において、仮想メモリオブジェクトに対するパスが生成される。それから、このパスは、動作３１０の上記の確立された通信セッションを用いて、クライアント装置、及び／又はクライアント装置に常駐する１若しくは複数のアプリケーションに伝達される（３４０）。
【００３９】
いったんパスが１又は複数のアプリケーションに伝達されると、クライアントアプリケーションからのデータが、仮想メモリオブジェクトに関連付けられた物理メモリロケーションのオフセットへと直接受信される。実施形態において、データは、例えばＳＭＢ２又はＳＭＢ３プロトコルなどのファイル転送プロトコルを用いて、オフセットへと直接受信される。それから、フローは動作３６０に進み、動作３６０において、サーバ、又はサーバ上で作動しているアプリケーションは、クライアントアプリケーションからメッセージを受信した物理メモリオフセットに対する対応するコマンドをポストする（posts）。
【００４０】
例えば、上記で記載された方法３００を用いて、いったん仮想メモリオブジェクトが作成され、パスがクライアントに送信されると、クライアントは、仮想メモリの中の任意のオフセットに対する任意の読み出し又は書き込みをポストすることができる。いったんコマンドが受信され、オフセットに記憶されると、サーバは、同じオフセットに対する対応する読み出し又は書き込みをポストする。コマンドの各々はペアにされ、処理される。この例を前進させると、クライアントは、ファイルシステムＡＰＩを用いて仮想メモリオブジェクトの中のオフセット１に対する書き込みをポストし得る。応答において、サーバは、仮想メモリオブジェクトの中のオフセット１に対する対応する読み出しをポストする。クライアントからの書き込みとサーバからの読み出しとはペアにされて処理され、クライアントの書き込みからのデータは、サーバの対応する読み出しを介して、仮想メモリオブジェクトのオフセットに関連付けられた物理メモリに直接書き込まれる。さらに、メッセージは逆のやり方で送られてもよいと考えられる（すなわち、クライアントが読み出しをポストし、サーバが対応する書き込みを送る）。
【００４１】
１又は複数の実施形態が、上記記載の方法を用いた書き込み及び読み出しが並行して処理され得ることを提供する。例えば、クライアント装置が、仮想メモリオブジェクトのオフセット１‐１００に書き込まれる１００の書き込みを送出し得る（処理の順序はクライアントにとって問題にならないと仮定する）。さらに、サーバが、仮想メモリオブジェクトのオフセット１‐１０００における１０００の読み出しをポストしている場合がある。クライアントからの各書き込みが受信されるとき、サーバは、ポストされている１０００の読出しのうち１００を即時処理し、これに応じてデータを書き込むことができる。読み出し及び書き込みの各々が対応する識別子（すなわち、メモリロケーションに対するオフセット）を有するため、クライアント及びサーバは、どのコマンドが処理されたかが分かる。さらに、サーバは、書き込みが所与のオフセットについて１回だけ発生することを、該オフセットに対するその後の書き込みを失敗させることによって、保証することもできる。こうして、クライアントが接続性を失い、その後再確立し、オブジェクトを再び開き、書き込みをリプレイした場合、この書き込みは、サーバによって１回だけ処理されることになる。
【００４２】
１又は複数の実施形態が、方法２００及び方法３００が組み合わせられてもよいことを提供する。すなわち、メモリの第１の部分がメッセージを受信してメモリオフセットに記憶するのに使用される場合、及び、メモリの第２の部分がデータのブロックを記憶するのに使用される場合に、仮想ファイルが生成されてもよい。こうした実施形態において、データが受信されるとき、データがメッセージであり、メモリの中の特定オフセットに対するアクセスを有さなければならないことを示すように、特定のビットが設定されてもよい（図３に関して論じられたとおり）。上記の例において、ビットが設定されない場合、データは、特定のメモリロケーションに書き込まれるべきである（図２に関して論じられたとおり）。
【００４３】
本開示の実施形態は、さらに、仮想マシンをシャットダウンすることなく第１の物理コンピューティング装置から第２の物理コンピューティング装置への仮想マシンの活動中の移行（ライブマイグレーション）を実行することに使用されてもよい。特定の実施形態において、仮想マシンは、物理マシンの一部分に常駐している。仮想マシンは、オペレーティングシステムと１又は複数のさらなるアプリケーションとを作動させることができる。さらに、１つの物理マシンが複数の仮想マシンを有してもよいと考えられる。
【００４４】
図４は、本開示の１又は複数の実施形態に従う、送信元から宛先への仮想マシンのライブマイグレーションを実行する方法４００を示している。特定の実施形態において、通信セッションが送信元と宛先との間に確立される（４１０）。送信元と宛先との間の通信は、ＴＣＰ／ＩＰ通信プロトコル又は他の通信プロトコルを用いて確立される。特定の実施形態において、上記で図１に関して論じられた第１のコンピューティング装置１５０が宛先であり得、第２のコンピューティング装置１５０が送信元であり得る。特定の実施形態において、仮想マシンは、送信元において、該仮想マシンが転送されるべき時点で、実行されている。転送の間、データが仮想マシンに連続的に書き込まれる可能性があるとき、仮想マシンは、サービスにおける何らかの中断がデータを破損し、又は転送される仮想マシンを動作不能にする可能性があるため、シャットダウンされない。
【００４５】
いったん送信元と宛先との間の通信が確立されると、送信元は、転送されるべき仮想マシンの１又は複数の特徴を決定する。上記の詳細には、仮想マシンの意図された使用、仮想マシンに関連付けられた１又は複数のネットワーク接続、仮想マシンのサイズ（すなわち、いったん送信元から宛先への移行が完成するのに、どれほどの量のメモリを仮想マシンが必要とすることになるか）等を含むことができる。仮想マシンの特徴が確立されたとき、送信元は、上記の確立された通信セッションを通じて宛先にメモリ要件を伝達する。
【００４６】
応答において、宛先は、仮想ファイルオブジェクトを作成する（４３０）。特定の実施形態において、仮想ファイルオブジェクトのサイズは、確立されたメモリ要件のサイズに対応する。こうして、仮想マシンが２ギガバイトのデータを必要とした場合、仮想ファイルオブジェクトは２ギガバイトのサイズとして確立される。本明細書に記載される他の実施形態と同様に、いったん仮想ファイルオブジェクトが作成されると、宛先の１又は複数の物理メモリブロックが、仮想ファイルオブジェクトに結び付けられる。特定の実施形態において、宛先において作成される仮想ファイルオブジェクトは、送信元において仮想マシンによって使用されるメモリの構成にマッチする。さらに、宛先における仮想ファイルオブジェクトは、仮想マシンのためのメモリとして、宛先によって最終的に使用されることになる。こうした構成は、ＲＤＭＡでのゼロコピー転送のフル活用を可能にする。
【００４７】
特定の実施形態において、宛先は、仮想オブジェクトのための１又は複数のセキュリティパラメータをさらに作成してもよい。宛先は、仮想ファイルオブジェクトに関連付けられたパスをさらに生成してもよい。上記で論じられたとおり、パスは、仮想ファイルオブジェクト、より詳細には仮想ファイルオブジェクトが指し示す宛先の物理メモリにアクセスするのに、送信元によって利用される。
【００４８】
いったんパスが作成されると、パス名が送信元に伝達される（４４０）。特定の実施形態において、パスは、これまでに確立された通信セッションを用いて送信元に伝達される。
【００４９】
それから、フローは動作４５０に進み、動作４５０において、送信元は、例えばＳＭＢプロトコルの一バージョンなどのファイルアクセスプロトコルを通じて、ファイルシステムコマンドを用いて仮想ファイルに対して直接、仮想マシンのコピーを開始する。より詳細に、送信元は、データの１又は複数のローカルブロックからのデータをコピーし、送信元にとって既知であるファイルシステムＡＰＩからのファイルシステムコマンドを用いて、ファイルアクセスプロトコルを通じてパス名を用いて仮想ファイルに対する書き込み要求を送信する。上記で論じられたとおり、１又は複数の実施形態が、宛先において作成されるメモリオブジェクトのレイアウトが送信元における仮想マシンによって使用されるレイアウトにマッチすることを提供する。このことは、送信元が送信元ホストにおける仮想マシンのメモリロケーションから書き込み動作のためのファイルオフセットを導出することを可能にする。
【００５０】
特定の実施形態において、送信元から宛先へのコマンドは、非同期の書き込みコマンドである。さらに、論じられたとおり、ファイル転送プロトコルは、マルチチャネル能力をサポートする。これに応じて、複数の非同期書き込みが、同時に、又は実質的に同時に実行されることができる。本明細書に開示された他のデータ転送と同様に、動作４５０の送信元と宛先との間の（及び、宛先と送信元との間の）データ転送は、ＲＤＭＡを用いたゼロコピーデータ転送であり得る。
【００５１】
特定の実施形態において、仮想マシンの必須部分（例えば、仮想マシンの実行に必要な、必要とされるコンポーネント）が、仮想マシンの非必須部分が送信元から宛先に移行される前に、送信元から宛先に移行される。別の実施形態において、仮想マシンは、順に移行される。いったん仮想マシンの十分な部分が宛先に送信されて仮想マシンが作動することが可能になると、仮想マシンは、宛先において実行されることができる。その後、仮想マシンに対するいかなる読み出し又は書き込みも、新しく提示された（stated）仮想マシンによって扱われることができる。
【００５２】
論じられたとおり、仮想マシンは、ファイル転送進捗の間、実行していてもよく、データは、仮想マシンのメモリに連続的に書き込まれることができる。このようなものとして、方法４００は動作４６０へと進み、動作４６０において、ビットマップが送信元において維持される。特定の実施形態において、仮想マシンが、ビットマップを更新することができる。別の実施形態において、ビットマップは、送信元によって維持されてもよい。特定の実施形態において、ビットマップの中の各ビットは、転送される仮想マシンのメモリ部分を表す。こうして、ビットマップは、仮想マシンのどの部分が宛先に転送されたかと、さらに、転送された部分のうちどれが、その対応する部分が移行されてから後にデータを更新されたかとを追跡する。例えば、メモリ部分の各修正は、ビットマップの対応ビットが設定されることをもたらす。こうして、仮想マシンの一部分が移行されていて、それから、その部分によりホストされるデータが後に変更された場合、ビットマップは、データが後で変更されたことと、データのうち上記部分が再び移行されるべきであることとを示すであろう。
【００５３】
特定の実施形態において、仮想マシンは、マルチパス（multi-pass）アプローチを用いて移行される。こうして、各通過（pass）が完了した後（最大で、通過の最大数まで）、ビットマップは、移行が完了したかを決定するようにチェックされる（４７０）。移行が完了していない場合、フローは動作４５０に戻り、プロセスが繰り返される。しかしながら、動作４７０において移行が完了していると決定される場合、ビットマップは、データに対する何らかの最終的な変更についてチェックされる。データに対する変更があった場合、更新されたデータが宛先に送られ、送信元における仮想マシンはシャットダウンされる。
【００５４】
本明細書に記載される実施形態及び機能性は、デスクトップコンピュータシステム、有線及びワイヤレスのコンピューティングシステム、モバイルコンピューティングシステム（例えば、携帯電話、ネットブック、タブレット又はスレートタイプコンピュータ、ノートブックコンピュータ、及びラップトップコンピュータ）、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な民生用電子機器、ミニコンピュータ、並びにメインフレームコンピュータを制限なく含む多くのコンピューティングシステムを介して動作し得る。
【００５５】
さらに、本明細に記載される実施形態及び機能性は、分散システム（例えば、クラウドベースのコンピューティングシステム）にわたって動作することができ、これにおいて、アプリケーション、機能性、メモリ、データ記憶及び取り出し、並びに様々な処理機能が、インターネット又はイントラネットなどの分散コンピューティングネットワークを通じて、互いからリモートで動作し得る。様々なタイプのユーザインターフェース及び情報が、搭載されたコンピューティング装置ディスプレイを介して、あるいは１又は複数のコンピューティング装置に関連付けられたリモートのディスプレイユニットを介して表示されることができる。例えば、様々なタイプのユーザインターフェース及び情報は、様々なタイプのユーザインターフェース及び情報が投影される壁面において表示され、相互作用されてもよい。本開示の実施形態が実施され得る多くのコンピューティングシステムとの相互作用には、キーストロークエントリ、タッチスクリーンエントリ、音声又は他のオーディオエントリ、及びジェスチャエントリなどが含まれる。ジェスチャエントリにおいては、関連付けられたコンピューティング装置が、コンピューティング装置の機能性を制御するユーザジェスチャを捕捉し及び解釈する検出（例えば、カメラ）機能性を備える。
【００５６】
図５‐図７及び関連する記載は、本開示の実施形態が実施され得る様々な動作環境の議論を提供する。しかしながら、図５‐図７に関して例示され論じられる装置及びシステムは、例示及び図示の目的のためであり、本明細書に記載される実施形態を実施するのに利用することができる多数のコンピューティング装置構成の限定ではない。
【００５７】
図５は、本開示の１又は複数の実施形態で使用され得るコンピューティング装置１１０の物理コンポーネント（すなわち、ハードウェア）を示すブロック図である。以下に記載されるコンピューティング装置コンポーネントは、第１のコンピューティング装置１１０と第２のコンピューティング装置１５０とを含む上記で記載されたコンピューティング装置に適し得る。基本構成において、コンピューティング装置１１０は、少なくとも１つの処理ユニット５０２とシステムメモリ５０４とを含み得る。コンピューティング装置の構成及びタイプに依存して、システムメモリ５０４は、これらに限られないが、揮発性記憶装置（例えば、ランダムアクセスメモリ）、不揮発性記憶装置（例えば、読取専用メモリ）、フラッシュメモリ、又はこうしたメモリの任意の組み合わせを含み得る。システムメモリ５０４は、オペレーティングシステム５０５と、サーバアプリケーション１１５、パス生成器１３０、アクセス制御リスト１３５及びＡＰＩ１６０（コンピューティング装置が第２のコンピューティング装置１５０を表す実施形態において）などのソフトウェアアプリケーション５２０を作動させるのに適した１又は複数のプログラムモジュール５０６とを含み得る。オペレーティングシステム５０５は、例えば、コンピューティング装置１１０の動作を制御するのに適し得る。さらに、本開示の実施形態は、グラフィックスライブラリ、他のオペレーティングシステム、又は任意の他のアプリケーションプログラムと連動して実施されてもよく、いかなる特定のアプリケーション又はシステムにも限定されない。この基本構成は、図５において、破線５０８内の上記コンポーネントによって示されている。コンピューティング装置１１０は、さらなる特徴又は機能性を有してもよい。例えば、コンピューティング装置１１０は、（取外し可能及び／又は取外し不能の）さらなるデータ記憶装置、例えば、磁気ディスク、光学ディスク又はテープなどをさらに含んでもよい。こうしたさらなる記憶装置は、図５において、取外し可能記憶装置５０９及び取外し不能記憶装置５１０によって示されている。
【００５８】
上記で述べられたとおり、複数のプログラムモジュール及びデータファイルが、システムメモリ５０４に記憶されることができる。処理ユニット５０２上で実行されている間、プログラムモジュール５０６は、これらに限られないが、図２‐図４に例示された方法２００、３００及び４００の段階のうち１又は複数を含むプロセスを実行することができる。本開示の実施形態に従って使用することができる他のプログラムモジュールには、電子メール及びコンタクトアプリケーション、ワードプロセシングアプリケーション、スプレッドシートアプリケーション、データベースアプリケーション、スライドプレゼンテーションアプリケーション、図面又はコンピュータ支援のアプリケーションプログラム等を含み得る。
【００５９】
さらに、本開示の実施形態は、ディスクリートの電子的要素を含む電気回路、パッケージ化され又は集積されたロジックゲートを含む電子チップ、マイクロプロセッサを利用する回路において、あるいは電子的要素又はマイクロプロセッサを含む単一のチップ上で実施されてもよい。例えば、本開示の実施形態は、図５に例示されたコンポーネントの各々又は多くが単一の集積回路上に統合され得るシステム・オン・チップ（ＳＯＣ）を介して実施されてもよい。こうしたＳＯＣ装置には、１又は複数の処理ユニット、グラフィックスユニット、通信ユニット、システム仮想化ユニット及び様々なアプリケーション機能性を含むことができ、これらのすべてが、単一の集積回路としてチップサブストレート上に統合される（あるいは「焼かれる」）。ＳＯＣを介して動作するとき、本明細書に記載された、サーバアプリケーション１１５、パス生成器１３０、アクセス制御リスト１３５及びＡＰＩ１６０に関する機能性は、単一の集積回路（チップ）上で、コンピューティング装置１１０の他のコンポーネントと統合されたアプリケーション固有ロジックを介して動作することができる。本開示の実施形態は、これらに限られないが機械的、光学的、流体の及び量子学的テクノロジーを含む、例えばＡＮＤ、ＯＲ及びＮＯＴなどの論理演算を実行する能力がある他のテクノロジーを用いて実施されてもよい。さらに、本開示の実施形態は、汎用目的コンピュータ内で、あるいは任意の他の回路又はシステムにおいて実施されてもよい。
【００６０】
コンピューティング装置１１０は、１又は複数の入力装置５１２、例えば、キーボード、マウス、ペン、サウンド入力装置、タッチ入力装置等をさらに有し得る。出力装置５１４、例えば、ディスプレイ、スピーカー、プリンタ等が、さらに含まれてもよい。前述された装置は例であり、他が使用されてもよい。コンピューティング装置１０４は、他のコンピューティング装置５１８との通信を可能にする１又は複数の通信接続５１６を含み得る。適切な通信接続５１６の例には、これらに限られないが、ＲＦ送信器、受信器及び／又はトランシーバ回路、ユニバーサルシリアルバス（ＵＳＢ）、パラレル及び／又はシリアルポートが挙げられる。
【００６１】
本明細書において使用される、用語のコンピュータ可読媒体には、コンピュータ記憶媒体を含み得る。コンピュータ記憶媒体には、例えばコンピュータ可読命令、データ構造又はプログラムモジュールなどの情報の記憶のために任意の方法又はテクノロジーにおいて実施される、揮発性及び不揮発性の、取外し可能及び取外し不能の媒体を含み得る。システムメモリ５０４、取外し可能記憶装置５０９及び取外し不能記憶装置５１０はすべて、コンピュータ記憶媒体の例（すなわち、メモリ記憶装置）である。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、電気的消去可能読取専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ若しくは他のメモリテクノロジー、ＣＤ‐ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）若しくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶装置、又は、情報を記憶するのに使用することができ且つコンピューティング装置１１０がアクセスすることができる任意の他の製造品を含み得る。いずれのこうしたコンピュータ記憶媒体も、コンピューティング装置１１０の一部であり得る。コンピュータ記憶媒体には、搬送波、又は他の伝播され若しくは変調されたデータ信号を含まない。
【００６２】
通信媒体は、搬送波又は他のトランスポートメカニズムなどの変調されたデータ信号における、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータによって具現化されることができ、任意の情報配信（delivery）媒体を含む。用語「変調されたデータ信号」は、情報を信号の中にエンコードするやり方で設定され又は変更された１又は複数の特性を有する信号を表し得る。限定ではなく例として、通信媒体は、有線ネットワーク又は直接有線接続などの有線媒体と、音響、無線周波数（ＲＦ）、赤外線及び他のワイヤレス媒体などのワイヤレス媒体とを含み得る。
【００６３】
図６Ａ及び図６Ｂは、本開示の実施形態が実施され得るモバイルコンピューティング装置６００、例えば、携帯電話、スマートフォン、タブレットパーソナルコンピュータ、ラップトップコンピュータなどを示している。図６Ａを参照すると、実施形態を実施するためのモバイルコンピューティング装置６００の一実施形態が示されている。基本構成において、モバイルコンピューティング装置６００は、入力要素と出力要素との双方を有するハンドヘルドコンピュータである。モバイルコンピューティング装置６００は、典型的に、ディスプレイ６０５と、ユーザがモバイルコンピューティング装置６００に情報を入れることを可能にする１又は複数の入力ボタン６１０とを含む。モバイルコンピューティング装置６００のディスプレイ６０５はさらに、入力装置（例えば、タッチスクリーンディスプレイ）として機能し得る。含まれる場合には、任意的な側面の入力要素６１５がさらなるユーザ入力を可能にする。側面の入力要素６１５は、ロータリースイッチ、ボタン、又は任意の他のタイプの手動入力要素であり得る。代替的な実施形態において、モバイルコンピューティング装置６００は、より多くの又はより少ない入力要素を組み入れ得る。例えば、ディスプレイ６０５は、いくつかの実施形態においてタッチスクリーンでなくてもよい。さらに別の代替的な実施形態において、モバイルコンピューティング装置６００は、セルラー電話などのポータブルな電話システムである。モバイルコンピューティング装置６００は、任意的なキーパッド６３５をさらに含み得る。任意的なキーパッド６３５は、物理キーパッド、又はタッチスクリーンディスプレイ上に生成される「ソフト」キーパッドであり得る。様々な実施形態において、出力要素には、グラフィカルユーザインターフェース（ＧＵＩ）を示すディスプレイ６０５、視覚的インジケータ６２０（例えば、発光ダイオード）、及び／又はオーディオトランスデューサ６２５（例えば、スピーカー）が挙げられる。いくつかの実施形態において、モバイルコンピューティング装置６００は、ユーザに触覚フィードバックを提供する振動トランスデューサを組み入れる。さらに別の実施形態において、モバイルコンピューティング装置６００は、外部装置に信号を送信し又は外部装置から信号を受信する入力及び／又は出力ポート、例えば、オーディオ入力（例えば、マイクロフォンジャック）、オーディオ出力（例えば、ヘッドフォンジャック）、及びビデオ出力（例えば、ＨＤＭＩ（登録商標）ポート）などを組み入れる。
【００６４】
図６Ｂは、モバイルコンピューティング装置の一実施形態のアーキテクチャを示すブロック図である。すなわち、モバイルコンピューティング装置６００は、いくつかの実施形態を実施するようにシステム（すなわち、アーキテクチャ）６０２を組み入れることができる。一実施形態において、システム６０２は、１又は複数のアプリケーション（例えば、ブラウザ、電子メール、カレンダー、コンタクトマネージャ、メッセージングクライアント、ゲーム、及びメディアクライアント／プレーヤ）を作動させる能力がある「スマートフォン」として実施される。いくつかの実施形態において、システム６０２は、統合されたパーソナルデジタルアシスタント（ＰＤＡ）及びワイヤレス電話などの、コンピューティング装置として統合される。
【００６５】
１又は複数のアプリケーションプログラム６６６が、メモリ６６２へとロードされ、オペレーティングシステム６６４上で又はオペレーティングシステム６６４に関連して作動することができる。アプリケーションプログラムの例には、電話ダイヤラープログラム、電子メールプログラム、個人情報管理（ＰＩＭ）プログラム、ワードプロセシングプログラム、スプレッドシートプログラム、インターネットブラウザプログラム、メッセージングプログラムなどが挙げられる。システム６０２は、メモリ６６２内に不揮発性記憶エリア６６８をさらに含む。不揮発性記憶エリア６６８は、システム６０２が電源を落とされた場合に失われるべきでない永続的な情報を記憶するのに使用されることができる。アプリケーションプログラム６６６は、不揮発性記憶エリア６６８の中の情報を使用し、不揮発性記憶エリア６６８に情報を記憶することができ、例えば、電子メールアプリケーションにより使用される電子メール又は他のメッセージなどである。さらに、同期アプリケーション（図示されていない）がシステム６０２上に常駐し、ホストコンピュータ上に常駐する対応する同期アプリケーションと相互作用して、不揮発性記憶エリア６６８に記憶された情報をホストコンピュータに記憶された対応する情報と同期させた状態に保つようにプログラムされる。十分理解されるであろうとおり、他のアプリケーションが、本明細書に記載されたサーバアプリケーション１１５、パス生成器１３０、アクセス制御リスト１３５及びＡＰＩ１６０（コンピューティング装置６００が第２のコンピューティング装置１５０を表す実施形態において）を含め、メモリ６６２へとロードされ、モバイルコンピューティング装置６００上で作動してもよい。
【００６６】
システム６０２はパワーサプライ６７０を有し、パワーサプライ６７０は１又は複数のバッテリとして実施され得る。パワーサプライ６７０はさらに、バッテリを補足し又は再充電するＡＣアダプタ又は電力供給型ドッキングクレードルなどの、外部電源を含み得る。
【００６７】
システム６０２は、無線周波数通信を送信し及び受信する機能を実行する無線６７２をさらに含み得る。無線６７２は、通信事業者又はサービスプロバイダを介して、システム６０２と「外部世界」との間のワイヤレス接続性を容易にする。無線６７２への送信及び無線６７２からの送信は、オペレーティングシステム６６４の制御下で行われる。換言すると、無線６７２によって受信される通信はオペレーティングシステム６６４を介してアプリケーションプログラム６６６に広められることができ、逆もまた同様であり得る。
【００６８】
視覚的インジケータ６２０は、視覚的通知を提供するのに使用されることができ、かつ／あるいは、オーディオインターフェース６７４は、オーディオトランスデューサ６２５を介して可聴通知を生み出すのに使用されることができる。例示される実施形態において、視覚的インジケータ６２０は発光ダイオード（ＬＥＤ）であり、オーディオトランスデューサ６２５はスピーカーである。これらの装置は、アクティブ化されるとき、プロセッサ６６０及び他のコンポーネントがバッテリパワーを温存するためにシャットダウンする場合があるとしても、通知メカニズムによって命じられるある継続時間についてオンのままであるように、パワーサプライ６７０に直接接続されてもよい。ＬＥＤは、ユーザが装置のパワーオン（powered-on）ステータスを示すようにアクションをとるまで、無期限にオンのままであるようにプログラムされてもよい。オーディオインターフェース６７４は、ユーザに可聴信号を提供し、ユーザから可聴信号を受信するのに使用される。例えば、オーディオトランスデューサ６２５に結合されることに加えて、オーディオインターフェース６７４は、可聴入力を受信するように、例えば電話会話を容易にするように、マイクロフォンにさらに結合されてもよい。本開示の実施形態に従い、マイクロフォンは、以下に説明されるとおり、通知の制御を容易にするようにオーディオセンサの役割をさらに果たしてもよい。システム６０２は、さらに、搭載されたカメラ６３０の動作が静止画像、ビデオストリームなどを記録することを可能にするビデオインターフェース６７６を含み得る。
【００６９】
システム６０２を実施するモバイルコンピューティング装置６００は、さらなる特徴又は機能性を有してもよい。例えば、モバイルコンピューティング装置６００は、（取外し可能及び／又は取外し不能の）さらなるデータ記憶装置、例えば、磁気ディスク、光学ディスク又はテープなどをさらに含んでもよい。こうしたさらなる記憶装置は、図６Ｂにおいて、不揮発性記憶エリア６６８によって示されている。
【００７０】
モバイルコンピューティング装置６００によって生成され又は捕捉され、システム６０２を介して記憶されるデータ／情報は、上記で記載されたとおり、モバイルコンピューティング装置６００上にローカルに記憶されてもよい。あるいは、該データは、モバイルコンピューティング装置６００と、モバイルコンピューティング装置６００に関連付けられた別個のコンピューティング装置、例えば、インターネットなどの分散コンピューティングネットワークの中のサーバコンピュータとの間の、無線６７２を介して又は有線接続を介して装置がアクセスすることができる任意数の記憶媒体に記憶されてもよい。十分理解されるであろうとおり、上記のデータ／情報は、無線６７２を介して又は分散コンピューティングネットワークを介して、モバイルコンピューティング装置６００を介してアクセスすることができる。同様にして、上記のデータ／情報は、電子メール及び協同的なデータ／情報共有システムを含む周知のデータ／情報転送及び記憶手段に従って、記憶及び使用のためにコンピューティング装置間で容易に転送されることができる。
【００７１】
図７は、上記で記載されたとおりの種々のコンピューティング装置間でデータを転送するシステムのアーキテクチャの一実施形態を示している。第１のコンピューティング装置１１０と第２のコンピューティング装置１５０との間で転送されるデータは、種々の通信チャネル又は他のストレージタイプにおいて記憶されることができる。例えば、様々な文書が、ディレクトリサービス７２２、ウェブポータル７２４、メールボックスサービス７２６、インスタントメッセージングストア７２８又はソーシャルネットワーキングサイト７３０を用いて記憶されることができる。サーバアプリケーション１１５、パス生成器１３０及びアクセス制御リスト１３５は、本明細書に記載される方法及び特徴を可能にする上記タイプのシステムのうち任意のものなどを使用することができる。サーバ７２０は、第１のコンピューティング装置１１０及び第２のコンピューティング装置１５０への、及び、第１のコンピューティング装置１１０及び第２のコンピューティング装置１５０からのデータを提供することができる。一例として、サーバ７２０は、ウェブサーバであり得る。サーバ７２０は、ネットワーク７１５を通してウェブを通じて、第１のコンピューティング装置１１０か又は第２のコンピューティング装置１５０のいずれかにデータを提供することができる。例として、第１のコンピューティング装置１１０及び第２のコンピューティング装置１５０は、パーソナルコンピュータ、タブレットコンピューティング装置、及び／又はモバイルコンピューティング装置６００（例えば、スマートフォン）において具現化されてもよい。こうした実施形態のいずれも、ストア７１６からコンテンツを取得することができる。
【００７２】
本開示の実施形態は、例えば、本開示の実施形態に従う方法、システム及びコンピュータプログラム製品のブロック図及び／又は動作例示を参照して、上記で説明されている。ブロックの中に記述された機能／動きは、いずれかのフローチャートに示されたとおりの順序から外れて生じてもよい。例えば、連続して示された２つのブロックが、実際には実質的に同時に実行されてもよく、あるいは、該２つのブロックが、関与する機能性／動きに依存して、時に逆の順序で実行されてもよい。
【００７３】
本出願において提供される１又は複数の実施形態についての記載及び例示は、いかなる方法でも、請求されるとおりの本開示の範囲を限定し又は制限するようには意図されない。本出願において提供される実施形態、例及び詳細は、所有を告げ、請求される実施形態のベストモードを他者が作って使用することを可能にするのに十分であると考えられる。請求される実施形態は、本出願において提供されるいずれかの実施形態、例又は詳細に限定されるものとみなされるべきではない。組み合わせにおいて図示され記載されているか、あるいは別個に図示され記載されているかにかかわらず、種々の特徴（構造的及び方法論的の双方）が、特定の一組の特徴を有する実施形態を生み出すために選択的に含まれ又は省略されるように意図される。本出願の記載及び例示を提供された当業者は、請求される実施形態のより広い範囲から逸脱しない、本出願において具現化される全体的な発明概念のより広い態様の主旨の範囲内に入る変形、修正及び代わりの実施形態を想像し得る。
【図１】
2016520240.tif 000003
【図２】
2016520240.tif 000004
【図３】
2016520240.tif 000005
【図４】
2016520240.tif 000006
【図５】
2016520240.tif 000007
【図６Ａ】
2016520240.tif 000008
【図６Ｂ】
2016520240.tif 000009
【図７】
2016520240.tif 000010
【国際調査報告】
2016520240.tif 000011
2016520240.tif 000012