(57)【特許請求の範囲】
【請求項１】
プロセッサ(302)を含み、前記プロセッサ(302)が、
initプロセス(108)を実行することであって、前記initプロセス(108)がコンテナマネージャを含む、実行することと、
前記コンテナマネージャを使用して複数のセキュアなコンテナを生成すること(404)と、
前記複数のセキュアなコンテナのうちの第1のセキュアなコンテナにおいて第1のモバイルデバイスプロセスを実行すること(406)と、
前記複数のセキュアなコンテナのうちの第2のセキュアなコンテナにおいてクラスタノードプロセス(106)を実行すること(408)であって、前記プロセッサが、前記クラスタノードプロセス(106)に基づいて、クラウドサービスインフラストラクチャのノードとして動作するように構成される、実行すること(408)とを行うように構成され、
前記クラスタノードプロセス(106)を実行している間に、前記プロセッサ(302)が、
前記クラウドサービスインフラストラクチャからタスク要求を受信するように構成され、
前記initプロセス(108)を実行している間に、前記プロセッサ(302)が、
前記タスク要求に対応するタスクコンテナを生成し、
前記タスクコンテナ内でタスクを実行するように構成される、モバイルコンピューティング装置(100)。
【請求項２】
前記プロセッサ(302)に結合されたワイヤレス通信インターフェースをさらに含み、前記クラスタノードプロセス(106)を実行している間に、前記プロセッサ(302)が、
前記ワイヤレス通信インターフェースからタスク要求を受信し(410)、
前記initプロセス(108)に前記タスク要求を送信し(412)、
前記initプロセス(108)からタスクの結果を受信し、
前記ワイヤレス通信インターフェースを介して前記タスクの結果を送信する(418)ように構成される請求項1に記載のモバイルコンピューティング装置(100)。
【請求項３】
前記initプロセス(108)を実行している間に、前記プロセッサ(302)が、
タスク要求に対応するタスクコンテナを生成し(504)、
前記タスク要求に対応するタスク環境をダウンロードし(506)、
前記タスクコンテナ内でタスクを実行し(508)、
前記第2のセキュアなコンテナにタスクの結果を送信する(512)ように構成される請求項1または2に記載のモバイルコンピューティング装置(100)。
【請求項４】
前記プロセッサ(302)に結合されたワイヤレス通信インターフェースをさらに含み、前記プロセッサ(302)が、前記クラスタノードプロセスを実行している間に、前記ワイヤレス通信インターフェースからタスクのライフサイクルコマンドを受信し、受信されたタスクのライフサイクルコマンドを前記initプロセス(108)に送信し、
前記initプロセス(108)を実行している間に、前記タスクのライフサイクルコマンドに基づいて前記タスクコンテナの状態を修正するように構成され、
前記タスクのライフサイクルコマンドが、開始コマンド、停止コマンド、一時停止コマンド、再開コマンド、および取り消しコマンドのうちの1つである請求項3に記載のモバイルコンピューティング装置(100)。
【請求項５】
前記initプロセス(108)が、仮想的なブリッジを含み、前記プロセッサ(302)が、
前記複数のセキュアなコンテナの中の前記セキュアなコンテナの各々を前記仮想的なブリッジと通信可能なように結合し、
予め決められたフィルタ基準に基づいて前記複数のセキュアなコンテナの中のセキュアなコンテナの対の間の通信を制御するように構成される請求項1から4のいずれかに記載のモバイルコンピューティング装置(100)。
【請求項６】
前記プロセッサ(302)が、前記複数のセキュアなコンテナの中のセキュアなコンテナと前記initプロセス(108)との間の通信を許し、前記複数のセキュアなコンテナの中のセキュアなコンテナの間の直接通信を防止するように構成される請求項5に記載のモバイルコンピューティング装置(100)。
【請求項７】
前記プロセッサが、前記initプロセス(108)を実行している間に、ヒューリスティックに基づいて前記複数のセキュアなコンテナの中のそれぞれのセキュアなコンテナにリソースを割り振る請求項1から6のいずれかに記載のモバイルコンピューティング装置(100)。
【請求項８】
前記プロセッサ(302)が、前記複数のセキュアなコンテナの中の第3のセキュアなコンテナにおいて第2のモバイルデバイスプロセスを実行するように構成される請求項1から7のいずれかに記載のモバイルコンピューティング装置(100)。
【請求項９】
前記プロセッサ(302)が、前記第2のモバイルデバイスプロセス上で施行されるよりも制限の緩いセキュリティポリシーを前記第1のモバイルデバイスプロセス上で施行するように構成される請求項8に記載のモバイルコンピューティング装置(100)。
【請求項１０】
前記プロセッサ(302)が、構成ファイルに基づいてセキュアなコンテナを生成するように構成され、前記構成ファイルが、
前記initプロセス(108)によってのみアクセス可能であり、
前記コンテナの起動ステータスを指定し、
前記コンテナのためのリソースの割当量を指定する請求項1から9のいずれかに記載のモバイルコンピューティング装置(100)。
【請求項１１】
前記プロセッサ(302)が、
前記第1のモバイルデバイスプロセスおよび第2のモバイルデバイスプロセスのうちの1つをアクティブ化し、
現在アクティブなモバイルデバイスプロセスに、前記モバイルコンピューティング装置のすべてのリソースへの優先アクセスを提供するように構成される請求項1から10のいずれかに記載のモバイルコンピューティング装置(100)。
【請求項１２】
ユーザインターフェース(308)をさらに含み、前記プロセッサ(302)が、前記クラスタノードプロセス(106)に基づいて、前記ユーザインターフェース(308)にアクセスすることを防止するように構成される請求項1から11のいずれかに記載のモバイルコンピューティング装置(100)。
【請求項１３】
前記複数のセキュアなコンテナの中の前記セキュアなコンテナの各々が、異なるオペレーティングシステムを含む請求項1から12のいずれかに記載のモバイルコンピューティング装置(100)。
【請求項１４】
モバイルコンピューティングデバイス(300)のための方法(400)であって、
initプロセス(108)を実行するステップ(402)であって、前記initプロセス(108)がコンテナマネージャを含む、ステップ(402)と、
前記コンテナマネージャを使用して複数のセキュアなコンテナを生成するステップ(404)と、
前記複数のセキュアなコンテナのうちの第1のセキュアなコンテナにおいて第1のモバイルデバイスプロセスを実行するステップ(406)と、
前記複数のセキュアなコンテナのうちの第2のセキュアなコンテナにおいてクラスタノードプロセスを実行するステップ(408)とを含み、
プロセッサが、前記クラスタノードプロセス(106)に基づいて、クラウドサービスインフラストラクチャのノードとして動作するように構成され、
前記方法は、
前記クラスタノードプロセス(106)を実行している間に、
前記クラウドサービスインフラストラクチャからタスク要求を受信するステップを含み、
前記initプロセス(108)を実行している間に、
前記タスク要求に対応するタスクコンテナを生成するステップと、
前記タスクコンテナ内でタスクを実行するステップとを含む、方法。
【請求項１５】
プロセッサ(302)によって実行されるときに前記プロセッサ(302)に請求項14に記載の方法を実行させるコンピュータプログラム命令を含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の態様は、概して、ワイヤレス通信システムに関し、特に、コンピューティングリソースのクラスタを形成するようにモバイルコンピューティングデバイスを構成することに関する。
【背景技術】
【０００２】
通常の大規模コンピューティングシステムは、数千のCPUコアの強力なクラスタに依拠する。たとえば、米国のOak Ridge National LaboratoryにあるCray XK7は、それぞれのOpteron 6274コアが282ギガ浮動小数点演算毎秒(GFlops)を提供するようにして、560,640個のOpteronコアを使用して約17590テラ浮動小数点演算毎秒(TFlops)を提供する。今述べたCray XK7は、約1億米ドルのコストがかかり、設置するのに大きな空間を必要とし、かなりの電力を消費し、定期的なコストのかかる保守を必要とする。これらの大規模なコンピューティングシステムを運用することに関連する高いコストおよびリソースの要件が原因で、ほとんどの企業はそれらのコンピューティングシステムを購入し、運用する余裕を持つことができない。
【０００３】
ユーザの好ましいコンピューティングプラットフォームがデスクトップおよび通常のラップトップコンピュータからスマートフォン、ファブレット、およびタブレットデバイスなどのモバイルデバイスに移るにつれて、利用可能なモバイルコンピューティングデバイスの数が劇的に増加した。いくつかの推定によれば、世界中に十億台を超える利用可能なスマートフォンが存在し、その多くが、通常のネットワークインフラストラクチャを介してアクセスされ得る。これらのモバイルコンピューティングデバイスのほとんどは、人気のあるCortexコアなどのARM Holdings Incorporatedによって開発された命令セットおよびアーキテクチャに基づく処理コアを備えている。これらのモバイルコンピューティングデバイスのほとんどは、Linux(登録商標)に基づくオペレーティングシステムを実行する。単一のCortex A15は、約100GFlopsを提供することができ、3つのCortex A15コアは、単一のOpteron 6274コアに匹敵する計算能力を提供する。たとえば、170万台のモバイルデバイスを使用して、各モバイルデバイスが少なくとも1つのCortex A15コアを含むと仮定すると、世界の最大級のスーパーコンピュータの一部に比肩する計算能力を有するクラスタが形成され得る。
【０００４】
モバイルデバイスの余った計算能力を使用することは、いくつかの課題を突きつける。セル電話およびタブレットなどのモバイルコンピューティングデバイスは、機密の個人のおよび事業に関連する情報にアクセスすることができる。したがって、これらのデバイスの余ったコンピューティングリソースの使用は、強力で信頼性のあるセキュリティを必要とする。セル電話またはその他のモバイルコンピューティングデバイスのユーザは、データのレイテンシーまたは遅い応答時間を許容しない。したがって、モバイルコンピューティングデバイス、特に、電話またはその他のユーザ中心のアプリケーションにおける応答時間およびレイテンシーは、短く保たれなくてはならない。
【０００５】
クラウドに基づくコンピューティングは、通常の広域ネットワークを介して通信する遠隔に展開されたコンピューティングリソースのグループを使用してコンピューティングサービスおよび/またはリソースを提供するための最近発展してきているメタファー(metaphor)である。本明細書において使用されるとき、クラウドサービスインフラストラクチャという用語は、リソースの任意の部分またはすべてがよくあるコンピューティングの問題を解決するかまたはコンピューティングタスクの連携させられた組を実行するように連携させられ得るように、通常のネットワークを介して通信する遠隔に展開されたコンピューティングリソースの集合を指す。クラウドサービスインフラストラクチャは、個々のコンピューティングリソースまたはクラスタノードが分散させられ、広域ネットワークを介して通信し、関連するが必ずしも同じではないコンピューティングタスクを実行する可能性がある一種のコンピューティングクラスタと見なされ得る。
【０００６】
ソフトウェア会社のコンソーシアムによって開発されたLXC Linux(登録商標) Containers、Windowsオペレーティングシステムのために設計されたオープンソースのコンテナテクノロジーであるDocker、および標準に基づくアプリケーションコンテナテクノロジーであるRocketなどのクラスタテクノロジーが、コンピューティングデータセンター内のサーバに広く展開されてきた。これらのテクノロジーは、セキュリティを目的として隔離された環境内でアプリケーションが実行されることを可能にし、異種のハードウェアインフラストラクチャへのアプリケーションの展開を容易にする。
【０００７】
モバイルコンピューティングデバイスなどの組み込みデバイスのためのコンテナテクノロジーは、現在研究され、導入されている。一部の初期の例は、Samsung Corporationによって開発されているKNOX、およびIntel Corporationの子会社によって開発されているMcAfee Secure Container for Androidを含む。これらのコンテナの実装は、デバイス上のすべてのコンテナ内で同じオペレーティングシステムが使用され、特定のアプリケーションがそれらのアプリケーションがコンテナ内でのみ実行され得るように構成されることを必要とする。これらの実装においては、データの隔離が、コンテナによって行われ、したがって、データは、コンテナ内で実行されるアプリケーションに属し、コンテナ外でまたは別のコンテナ内で実行されるいかなるその他のアプリケーションによってもアクセスされ得ない。また、コンテナ内で実行されるアプリケーションは、いかなるその他のアプリケーションのデータにもアクセスすることができない。
【０００８】
一種の仮想化に基づく代替的な解決策が、提案されている。この解決策は、それぞれが独自のオペレーティングシステムを有するいくつかのコンテナを実行することによって、複数の異なるオペレーティングシステムが同じ組み込みデバイス上で実行されることを可能にする。これらのコンテナは、コンテナ内で実行される様々なオペレーティングシステムによって同時にアクセスされ得るワイヤレスアクセスサービスなどのサービスも実行するルート名前空間によって生成される。組み込みデバイスのクラスタを構築するその他の試みも存在したが、これらの手法は、データの隔離のためにコンテナのようなテクノロジーを使用しなかった。
【０００９】
したがって、モバイルコンピューティングデバイス上でセキュアなコンテナのリソースを生成し、管理するための改善された方法および装置、ならびにモバイルコンピューティングデバイスの集団の余ったコンピューティングリソースに基づいてクラウドサービスインフラストラクチャを生成するための方法および装置に対するニーズが存在する。
【発明の概要】
【課題を解決するための手段】
【００１０】
クラウドサービスインフラストラクチャにモバイルコンピューティングデバイスを組み込むための装置および方法を提供することが、本発明の目的である。本発明のさらなる目的は、モバイルコンピューティング装置のアイドル状態の計算能力に安全にアクセスするための方法および装置を提供することである。
【００１１】
本発明の第1の態様によれば、上述のおよびさらなる目的および利点が、プロセッサを含むモバイルコンピューティング装置によって得られる。プロセッサは、initプロセスを実行するように構成され、initプロセスは、コンテナマネージャを含む。プロセッサは、コンテナマネージャを使用して複数のセキュアなコンテナを生成し、複数のセキュアなコンテナのうちの第1のセキュアなコンテナにおいて第1のモバイルデバイスプロセスを実行する。プロセッサは、複数のセキュアなコンテナのうちの第2のセキュアなコンテナにおいてクラスタノードプロセスを実行するように構成され、クラスタノードプロセスは、クラウドサービスインフラストラクチャのノードとして動作するように構成される。
【００１２】
第1の態様によるモバイルコンピューティング装置の第1のあり得る実装形態においては、モバイルコンピューティング装置のアイドル状態の計算能力が、クラスタコンピューティングインフラストラクチャにとって利用可能とされ得るようにされる可能性があり、モバイルコンピューティング装置が、プロセッサに結合されたワイヤレス通信インターフェースをさらに含み、プロセッサが、クラスタノードプロセスを実行している間に、ワイヤレス通信インターフェースからタスク要求を受信し、initプロセスにタスク要求を渡し、initプロセスからタスクの結果を受信し、ワイヤレス通信インターフェースを介してタスクの結果を送信するように構成される。
【００１３】
第1の態様それ自体によるまたは第1の態様の第1の実装形態によるモバイルコンピューティング装置の第2のあり得る実装形態においては、クラスタコンピューティングインフラストラクチャに関するコンピューティングタスクが、プロセッサによって実行される可能性があり、initプロセスを実行している間に、プロセッサが、タスク要求に対応するタスクコンテナを生成し、タスク要求に対応するタスク環境をダウンロードし、タスクコンテナ内でタスクを実行し、第2のセキュアなコンテナにタスクの結果を送信するように構成される。
【００１４】
第1の態様それ自体によるまたは上述の実装形態のいずれかによるモバイルコンピューティング装置の第3のあり得る実装形態においては、モバイルコンピューティング装置が、プロセッサに結合されたワイヤレス通信インターフェースを含み、クラスタコンピューティングインフラストラクチャが、クラスタノードプロセスを実行している間に、ワイヤレス通信インターフェースからタスクのライフサイクルコマンドを受信し、受信されたタスクのライフサイクルコマンドをinitプロセスに送信し、initプロセスを実行している間に、タスクのライフサイクルコマンドに基づいてタスクコンテナの状態を修正するようにプロセッサを構成することによって実行されるタスクの制御を任され、タスクのライフサイクルコマンドは、開始コマンド、停止コマンド、一時停止コマンド、再開コマンド、および取り消しコマンドのうちの1つである。
【００１５】
第1の態様それ自体によるまたは第1の態様の上述の実装形態のいずれかによるモバイルコンピューティング装置の第4のあり得る実装形態においては、セキュアなコンテナの間のセキュアな通信が、装置によって提供される可能性があり、initプロセスが、仮想的なブリッジを含み、プロセッサが、複数のセキュアなコンテナの中のセキュアなコンテナの各々を仮想的なブリッジと通信可能なように結合し、予め決められたフィルタ基準に基づいて複数のセキュアなコンテナの中のセキュアなコンテナの対の間の通信を制御するように構成される。
【００１６】
第1の態様の第4のあり得る実装形態によるモバイルコンピューティング装置の第5のあり得る実装形態においては、プロセッサが、複数のセキュアなコンテナの中のセキュアなコンテナとinitプロセスとの間の通信を許し、複数のセキュアなコンテナの中のセキュアなコンテナの間の直接(initプロセスを間に挟まない)通信を防止するように構成される。
【００１７】
第1の態様それ自体によるまたは上述の実装形態のいずれかによるモバイルコンピューティング装置の第6のあり得る実装形態においては、initプロセスを実行している間に、ヒューリスティック(heuristic)に基づいて複数のセキュアなコンテナの中のそれぞれのセキュアなコンテナにリソースを割り振るようにプロセッサが構成されるようにして、モバイルコンピューティング装置が、利用可能なコンピューティングリソースの利用を最適化する。
【００１８】
第1の態様それ自体によるまたは上述の実装形態のいずれかによるモバイルコンピューティング装置の第7のあり得る実装形態においては、複数のセキュアなコンテナの中の第3のセキュアなコンテナにおいて第2のモバイルデバイスプロセスを実行するようにプロセッサが構成されるようにすることによって、ユーザが、単一の物理的なコンピューティング装置上で複数のモバイルデバイスを提供される。
【００１９】
第1の態様それ自体の第7のあり得る実装形態によるモバイルコンピューティング装置の第8のあり得る実装形態においては、第2のモバイルデバイスプロセス上で施行されるよりも制限の緩いセキュリティポリシーを第1のモバイルデバイスプロセス上で施行するようにプロセッサが構成されるようにすることによって、モバイルコンピューティング装置が、それぞれのモバイルデバイスプロセスに関してセキュリティポリシーの別々の制御を可能にする。
【００２０】
第1の態様それ自体によるまたは上述の実装形態のいずれかによるモバイルコンピューティング装置の第9のあり得る実装形態においては、プロセッサが、構成ファイルに基づいてセキュアなコンテナを生成するように構成され、構成ファイルは、initプロセスによってのみアクセス可能であり、コンテナの起動ステータスを指定し、コンテナのためのリソースの割当量を指定する。
【００２１】
第1の態様それ自体によるまたは上述の実装形態のいずれかによるモバイルコンピューティング装置の第10のあり得る実装形態においては、モバイルコンピューティング装置が、第1のモバイルデバイスプロセスおよび第2のモバイルデバイスプロセスのうちの1つをアクティブ化し、現在アクティブなモバイルデバイスプロセスにモバイルコンピューティング装置のすべてのリソースへの優先アクセスを提供するようにプロセッサが構成されるようにすることによって、ユーザが望ましいユーザエクスペリエンスを与えられることを保証する。
【００２２】
第1の態様それ自体によるまたは上述の実装形態のいずれかによるモバイルコンピューティング装置の第11のあり得る実装形態においては、モバイルコンピューティング装置が、ユーザインターフェースをさらに含むモバイルコンピューティング装置によるモバイルコンピューティング装置のユーザのユーザエクスペリエンスをクラスタインフラストラクチャが妨げることを防止し、プロセッサが、クラスタプロセスがユーザインターフェースにアクセスすることを防止するように構成される。
【００２３】
第1の態様それ自体によるまたは上述の実装形態のいずれかによるモバイルコンピューティング装置の第12のあり得る実装形態においては、モバイルコンピューティング装置が、複数のセキュアなコンテナの中のセキュアなコンテナの各々が異なるオペレーティングシステムを含むようにすることによってクラスタコンピューティングインフラストラクチャに向上した柔軟性および機能を提供する。
【００２４】
本発明の第2の態様によれば、上述のおよびさらなる目的および利点が、モバイルコンピューティングデバイスのための方法によって得られる。方法は、initプロセスを実行するステップであって、initプロセスがコンテナマネージャを含む、ステップと、コンテナマネージャを使用して複数のセキュアなコンテナを生成するステップと、複数のセキュアなコンテナのうちの第1のセキュアなコンテナにおいて第1のモバイルデバイスプロセスを実行するステップと、複数のセキュアなコンテナのうちの第2のセキュアなコンテナにおいてクラスタノードプロセスを実行するステップとを含み、クラスタノードプロセスは、クラウドサービスインフラストラクチャのノードとして動作するように構成される。
【００２５】
本発明の第3の態様によれば、上述のおよびさらなる目的および利点が、プロセッサによって実行されるときにプロセッサに第2の態様による方法を実行させる非一時的コンピュータプログラム命令を含むコンピュータプログラムによって得られる。
【００２６】
例示的な実施形態のこれらのおよびその他の態様、実装形態、ならびに利点は、添付の図面と併せて考慮される本明細書において説明される実施形態から明らかになるであろう。しかし、説明および図面は、開示される発明の限定の定義としてではなく、例示の目的のためにのみ作られており、開示される発明の限定の定義に関しては、添付の請求項が参照されるべきであることを理解されたい。本発明のさらなる態様および利点が以下に続く説明において述べられ、その説明からある程度明らかになるか、または本発明の実施によって学習され得る。さらに、本発明の態様および利点は、添付の請求項において特に示された手段および組合せによって実現および獲得され得る。
【００２７】
本開示の以下で詳細に説明される部分において、本発明が、図面に示される例示的な実施形態を参照してより詳細に説明される。
【図面の簡単な説明】
【００２８】
【図１】開示される実施形態の態様を組み込む、クラスタノードプロセスを展開するための例示的な実施形態を示すモバイルコンピューティングデバイスのブロック図である。
【図２】開示される実施形態の態様を組み込む、クラウドサービスインフラストラクチャの例示的な実施形態を示す絵で表した図である。
【図３】本開示の実施形態を実装するのに適したモバイルコンピューティングデバイスのブロック図である。
【図４】この実施形態の態様を組み込む、モバイルコンピューティングデバイスをクラウドまたはクラスタコンピューティングインフラストラクチャ内のノードとして使用するための例示的な方法の流れ図である。
【図５】開示される実施形態の態様を組み込む、クラウドサービスインフラストラクチャにおいてタスクを実行するための方法の例示的な実施形態の流れ図である。
【発明を実施するための形態】
【００２９】
図1は、クラスタノードプロセスを展開するための例示的な実施形態を示すモバイルコンピューティングデバイス100のブロック図を示す。モバイルコンピューティングデバイスは、そのモバイルコンピューティングデバイスのソフトウェアアーキテクチャの中に、複数のセキュアなコンテナ102、104、106を含み、セキュアなコンテナ102、104、106は、本明細書においてはinitと呼ばれる中央制御プロセス108によって管理される。それぞれのセキュアなコンテナ102、104、106は、モバイルデバイスアプリケーションなどのアプリケーションが安全に実行され得る隔離された実行環境またはプロセス空間を提供する。したがって、コンテナは、本明細書においてはプロセスとも呼ばれる可能性がある。モバイルコンピューティングデバイス100は、オペレーティングシステム(OS)のカーネル110が起動した後に開始される第1のエンティティである1つのinitプロセス108を含む。initプロセス108は、独自のコンテナ内で実行される可能性があり、またはOS空間内のプロセスとして直接実行される可能性がある。
【００３０】
initプロセス108がコンテナ内で実行されるとき、コンテナは、すべてのコンテナの管理およびモバイルコンピューティングデバイス100のすべてのコンピューティングリソースの割り振りを可能にするための適切な特権を有するべきである。initプロセス108は、モバイルコンピューティングデバイス100上で実行されるすべてのその他のプロセスを管理する責任を負う。init 108は、プロセスがどのように実行されるのかを制御する責任も負い、つまり、init 108は、各プロセスによって使用されるリソースを管理し、各プロセスのセキュリティ特権を制御する。リソースの管理は、プロセスが使用し得る利用可能な処理時間の量を割り振ること、消費されるメモリの量を割り振ることなど、コンピューティングリソースを制御すること、およびプロセスがユーザインターフェースにアクセスし得るかどうか、ファイルシステムにアクセスし得るかどうかなどを制御することを指す。パーミッションまたは制約とも呼ばれる可能性があるセキュリティ特権は、サービス、リソース、またはデバイス上で実行されるその他のプロセスへのアクセスを制御する、つまり、許すかまたは制約することを指す。
【００３１】
特定の実施形態において、initプロセス108は、3つの別々のセキュアなコンテナ102、104、106を生成し、ホームコンテナ(home container)104内で家庭向けの使用のために構成されたモバイルデバイスプロセスを開始し、ワークコンテナ(work container)102内で仕事向けの使用のために構成されたモバイルデバイスプロセスを開始し、第3のセキュアなコンテナ内でクラスタノードプロセス106を開始する。この説明の全体を通じて、セキュアなコンテナおよびプロセスという用語は、特定のセキュアなコンテナまたはそのセキュアなコンテナ内で実行されるプロセスを指すために交換可能なように使用される可能性があり、意味は、用語が使用される文脈からはっきりする。
【００３２】
ワークコンテナまたはワークプロセス102は、企業またはビジネスネットワークにアクセスするために使用され得る。企業またはビジネスネットワークは機密性のある価値の高い情報にアクセスすることができるので、ワークコンテナ102は、最も厳しいまたは最も制約のあるセキュリティポリシーまたはセキュリティ制御を有するように構成される可能性がある。たとえば、ワークコンテナ102は、ユーザがそれらのユーザの会社の電子メール、文書、および仕事上の連絡先のリストにアクセスすることを可能にする。ワークコンテナ102は、安全でクリーンである、つまり、典型的には制約されていないインターネット上の活動から感染させられるウィルスまたはスパイウェア型のプログラムがないままである必要がある。
【００３３】
ホームコンテナ104は、ユーザがインターネットサーフィンをすること、アプリケーションをダウンロードし、実行すること、またはゲームをすることなどのよりリスクのある活動を実行することを許すより制約のないセキュリティポリシーを有する可能性がある。2つの別々のモバイルデバイスコンテナを提供することは、仕事用に1つおよび個人的なまたは家庭での使用のために1つの複数のセル電話を持ち運ぶ必要をなくす。
【００３４】
ルート名前空間と呼ばれる可能性があるinitプロセス108は、通常のルートプロセス(root process)によって提供されないいくつかの新しい機能を提供する。initプロセス108は、各コンテナを開始および停止する能力を有し、同時に実行されるように複数のコンテナを構成することができる。initプロセス108は、そのinitプロセス108が生成したセキュアなコンテナのうちの任意のセキュアなコンテナを一時停止および再開するようにも構成される。開始、一時停止、再開、停止、および取り消しなどのコマンドが、セキュアなコンテナのライフサイクルおよびそのコンテナ内で実行されるプロセスを制御するために使用され、ライフサイクルコマンドと呼ばれる可能性がある。
【００３５】
また、initプロセス108は、アクティブな部分(active portion)の間に、つまり、コンテナがそのコンテナのライフサイクルの実行状態にある間に利用可能な、それぞれのセキュアなコンテナ102、104、106が有するリソースを構成する。initプロセス108が、構成ファイルからリソースの要件を取得する可能性があり、コンテナの生成をトリガする外部タスク要求からリソースの要件を取得す可能性があり、またはリソースは、様々な人工知能(AI)アルゴリズムのいずれかに基づいて自動的に構成される可能性がある。これらのAIアルゴリズムは、本明細書においてはヒューリスティックと呼ばれる。それぞれのセキュアなコンテナ102、104、106に割り振られたリソースは、処理能力またはCPU時間の量、メモリの量、およびその他のリソースを含む。それぞれのセキュアなコンテナ102、104、106に割り振られるリソースは、モバイルコンピューティングデバイス108のユーザがモバイルコンピューティングデバイスのリソースに最も優先度の高いアクセスを保持することも保証しながら、モバイルコンピューティングデバイス100のアイドル状態の計算能力を効率的に利用するようにして決定される。その他のプロセスがモバイルコンピューティングデバイス100のリソースを共有することによってモバイルコンピューティングデバイス100のユーザの経験が悪影響を受けないことを保証することが、重要である。
【００３６】
クラスタノードプロセス106は、クラスタまたはクラウドサービスインフラストラクチャのノードとして働くように構成される。これを行うために、クラスタノードは、アイドル状態の計算能力、すなわち、外部クラウドサービス(図示せず)によって与えられるコンピューティングタスクの実行のために、モバイルコンピューティングデバイス100によって与えられるユーザエクスペリエンスをサポートするために必要とされない計算能力の使用をネゴシエーションする。ユーザの経験に悪影響を与えることを防止するために、クラスタノードプロセス106は、バックグラウンドで実行されるように構成される。バックグラウンドプロセスまたはバックグラウンドで実行されるプロセスは、フォアグラウンドプロセスよりも低い優先度で実行され、ユーザインターフェースにアクセスしないプロセスを指す。したがって、バックグラウンドプロセスは、モバイルコンピューティングデバイスのユーザに実質的に見えず、ユーザの経験に悪影響を与えない。
【００３７】
コンテナ、または本明細書において参照されるセキュアなコンテナは、隔離されたユーザ空間のインスタンスを生成するために使用されるオペレーティングシステムの仮想化の形態である。各コンテナは、OSのカーネルまたはinitプロセス108によって、アプリケーションまたはプロセスが実行され得るコンピューティングリソースの隔離された組を形成する名前空間の特徴の組を与えられる。ジェイル(jail)とも呼ばれる可能性がある通常のコンテナのデータの隔離によって、データは、コンテナ内で実行されるアプリケーションに属し、別のコンテナにおいて実行されるアプリケーションまたは異なるコンテナにおいて実行されるアプリケーションによってアクセスされ得ない。この隔離は、潜在的に害のあるアプリケーションがオペレーティングシステムまたはその他のコンテナを壊す可能性なしに安全でセキュアな方法で実行されることを可能にする。initプロセス108によって生成されるセキュアなコンテナは、それぞれが異なるLinux(登録商標)ディストリビューションなどの異なるオペレーティングシステムを含む可能性があり、したがって、オペレーティングシステムの仮想化の形態と見なされる可能性がある。
【００３８】
通常のオペレーティングシステムにおいては、OSのカーネルが、コンテナの管理、リソースの割り振りなどの機能を提供するためのルート名前空間を生成する。本明細書において開示される例示的な実施形態において、initプロセス108は、第1のまたはルート名前空間として開始される。initプロセス108は、直接生成される可能性があり、または代替的に、それ自体がコンテナ内でホストされる可能性がある。通常のルート名前空間と比較して、initプロセス108は、様々な追加的な有利な機能を提供する。
【００３９】
initプロセス108は、そのinitプロセス108が生成したセキュアなコンテナ102、104、106のライフサイクルを制御し、コンテナを開始および停止することができ、一度に複数のコンテナを実行することができる。また、initプロセス108は、モバイルコンピューティングデバイス100上で実行されるセキュアなコンテナ102、104、106のうちの任意のセキュアなコンテナを一時停止および再開することができる。
【００４０】
セキュアなコンテナを開始するとき、initプロセス108は、セキュアなコンテナまたはプロセスによって使用されるようにメモリ、処理時間などのコンピューティングリソースを構成する。クラスタコンテナ106に割り振られるべきコンピューティングリソースは、モバイルコンピューティングデバイス100のユーザがユーザエクスペリエンスに悪影響を与えることを防止するために必要とされるすべてのリソースへの優先アクセスを受け取ることも保証しながら、モバイルコンピューティングデバイス100のアイドル状態の計算能力の十分な利用を達成するように決定される。上述のように、セキュアなコンテナに割り振られるリソースは、AIアルゴリズムもしくはヒューリスティックに基づいて自動的に決定される可能性があり、または代替的に、リソースは、構成ファイルに基づいて構成される可能性がある。
【００４１】
コンテナの生成は、予め決められたデフォルトの構成に基づく。デフォルトの構成は、多くのセキュアなコンテナがモバイルコンピューティングデバイス100上でどのように生成され得るのかおよびセキュアなコンテナのためのデフォルトのリソースの構成などのコンテナの生成についての全般的な情報を提供する。それぞれのセキュアなコンテナに関する追加的な情報が、特定のセキュアなコンテナに固有の情報を提供する追加的な構成ファイル内で提供される可能性もある。initプロセス108は、構成ファイルの情報に基づいてセキュアなコンテナを生成し得る。
【００４２】
構成ファイルは、initプロセス108によってアクセスされ得るコンピュータメモリに記憶される可能性があり、しっかりと形成される。各構成ファイルは、対応するセキュアなコンテナのために使用されるべき名前を含む可能性があり、ルートファイルシステムイメージ(root file system image)およびそのイメージのマウントポイントを指定する。コンテナに割り振られるメモリおよびプロセッサ時間の量などのリソースの割当量も、構成ファイル内で与えられる。代替的に、リソースの割当量は、構成ファイルの情報とヒューリスティックとの組合せを使用して発見される可能性がある。構成ファイルは、デフォルトでコンテナを開始すべきかまたは要求に応じてコンテナを開始すべきかなど、対応するセキュアなコンテナに関する起動ステータスも与える可能性がある。デフォルトで開始されるコンテナは、モバイルコンピューティングデバイス100が開始されるときに自動的に開始され、一方、要求に応じて開始される起動ステータスは、initプロセス108が適切な要求を受信した後にのみ起動されるべきであるコンテナを指定する。構成ファイルは、ルートまたはデフォルト名前空間に記憶され、initプロセス108によってのみ修正され得る。
【００４３】
セキュアなコンテナは、それらのセキュアなコンテナが自動的に起動しないように構成される可能性がある。ユーザまたはその他の権限のあるエンティティが、initプロセス108に要求を送信することによってセキュアなコンテナの構成を変更する可能性がある。パーミッションが認証されると、initプロセス108は、それに応じてセキュアなコンテナの構成を修正し、修正は、セキュアなコンテナが次回開始されるときに有効になる。特定の実施形態においては、initプロセス108に要求を送信する権限を与えられるプロセスがそれぞれのセキュアなコンテナに1つだけ存在する。
【００４４】
モバイルコンピューティングデバイス100上で実行されるセキュアなコンテナ102、104、106は、隔離されたプロセス空間内で実行され、互いに通信することを許されない。セキュアなコンテナ102、104、106間の通信は、モバイルコンピューティングデバイス100の起動中に生成される仮想的なブリッジによって提供される。セキュアなコンテナが生成されるとき、ネットワークソケットの組も生成され、一方のネットワークソケットが新しく生成されるセキュアなコンテナに結びつけられ、他方のネットワークソケットが仮想的なブリッジに結びつけられ、それによって、セキュアなコンテナと仮想的なブリッジとの間の通信経路を生成する。特定の実施形態において、仮想的なブリッジは、インターネットプロトコル(IP)を使用して通信する可能性があり、IPアドレスの範囲が、仮想的なブリッジが開始されるときに仮想的なブリッジに割り当てられる。インターネットプロトコルに基づくネットワークソケットは、インターネットソケットと呼ばれる可能性がある。仮想的なブリッジは、セキュアなコンテナ内で実行されるプロセスが、ホストオペレーティングシステムと、または異なるセキュアなコンテナ内で実行されるその他のプロセスと通信することを可能にする。
【００４５】
セキュリティの目的のために、フィルタモジュールを仮想的なブリッジと統合することが特定の実施形態において望ましい。フィルタモジュールは、セキュアなコンテナの間の直接通信を防止し、セキュアなコンテナ102、104、106とinitプロセス108との間の通信のみを許すように構成され得る。特定の実施形態において、initプロセス108は、セキュアなコンテナ内で実行されている可能性もあり、これらの実施形態において、フィルタモジュールは、initプロセス108のコンテナとその他のセキュアなコンテナとの間の通信のみを許すように構成されることに留意されたい。
【００４６】
図2は、上述のモバイルコンピューティングデバイス100などのモバイルコンピューティングデバイス100-1、100-2、100-3が、全体を数字200によって示されるクラウドサービスインフラストラクチャ内のクラスタノードとしてクラウドサービス202にどのようにして関与する可能性があるかを示す絵で表した図を示す。3つのモバイルコンピューティングデバイス100-1、100-2、100-3だけが図2に示されているが、使用中の多数のモバイルコンピューティングデバイスが存在するので、クラウドサービスインフラストラクチャ200は、大きな分散型クラスタを形成するための数百万台のモバイルコンピューティングデバイスを含む可能性がある。したがって、クラウドサービスインフラストラクチャ200は、何百万台ものモバイルコンピューティングデバイス100-1、100-2、100-3のアイドル状態の計算能力を利用することによって大規模なコンピューティング能力を提供するために使用され得る。
【００４７】
それぞれのモバイルコンピューティングデバイス100-1、100-2、100-3は、クラスタコンテナ106-1、106-2、106-3を生成し、クラスタコンテナ106-1、106-2、106-3内でクラスタノードプロセスを実行するように構成される。それぞれのクラスタコンテナ106-1、106-2、106-3は、通信リンク204、206、208を介したクラウドサービス202との通信を確立し、クラスタに加わる。
【００４８】
モバイルコンピューティングデバイス100-3がユーザの要求を満たすことに忙しいとき、クラスタコンテナ106-3は、クラスタノード106-3および通信リンク208のために使用される破線によって示されるクラウドサービス202からの要求を受け付けることを一時的に停止する可能性がある。クラスタノードプロセスを一時停止することによって、モバイルデバイス100-3は、モバイルコンピューティングデバイス100-3を使用する人のユーザエクスペリエンスに悪影響を与えることを防止することができる。
【００４９】
それぞれのモバイルコンピューティングデバイス100-1、100-2、100-3は、それぞれのコンピューティングデバイス100-1、100-2、100-3上で実行されるinitプロセス108-1、108-2、108-3がクラスタコンテナ106-1、106-2、106-3を生成し、クラスタコンテナ106-1、106-2、106-3内でクラスタノードプロセスを実行するように構成される。モバイルコンピューティングデバイス100-3などのモバイルコンピューティングデバイスがその他のユーザのタスクで忙しいとき、そのモバイルコンピューティングデバイスのそれぞれのinitプロセス108-3が、クラスタコンテナ106-3を一時停止する可能性があり、代替的に、ユーザが、望ましいとき、クラスタコンテナ106-3を一時停止するかまたは完全に無効化することを決断する可能性がある。デフォルトで、クラスタコンテナ106-1、106-2、106-3は、グラフィカルユーザインターフェースにアクセスせず、モバイルコンピューティングデバイス100-1、100-2、100-3のユーザといかなるインタラクションもしない可能性がある。
【００５０】
クラスタコンテナ106-1、106-2、106-3内で実行されるクラスタノードプロセスは、クラウドサービス202からタスク要求を得て、対応するinitプロセス108-1、108-2、108-3にこれらのタスク要求を送信する責任を負う。クラスタプロセス106-1、106-2、106-3は、クラウドサービス202と通信する唯一のプロセスまたはセキュアなコンテナである。initプロセス108-1、108-2、108-3は、クラスタコンテナ106-1、106-2、106-3内で実行されるクラスタプロセスからタスク要求を受信するとき、initプロセス108-1、108-2、108-3は、タスク要求と共に含まれるタスクの説明に基づいてクラスタプロセスからタスク環境またはタスクイメージをダウンロードし、タスクを実行するための対応するセキュアなコンテナを生成する。タスクイメージは、タスクの説明によって定義される1つまたは複数のオーバーレイ(overlay)を有するベースイメージ(base image)に基づく可能性があり、イメージは、タスクのために生成されたセキュアなコンテナとセキュアなコンテナにロードされたソフトウェアプログラムとの組合せを指す。タスクの結果が実行されるタスクから利用可能になるとき、initプロセス108-1、108-2、108-3は、この結果を、クラスタコンテナ106-1、106-2、106-3内で実行されるクラスタノードプロセスに送信する。それから、クラスタコンテナ106-1、106-2、106-3内で実行されるクラスタノードプロセスは、クラウドサービス202に結果を送信する。
【００５１】
クラスタノードプロセスは、予め定義されたクラウドプロトコルを使用して、各通信リンク204、206、208を介してクラウドサービス202と通信する。このクラウドプロトコルは、信頼できるメッセージの送達を保証するために、各クラスタノードプロセスとクラウドサービスインフラストラクチャ202との間のハンドシェイクメカニズムをどのように実装すべきかを説明する。クラウドプロトコルは、クラウドサービスインフラストラクチャ202がモバイルコンピューティングデバイス100-1、100-2、100-3上で実行されるタスクを管理することを可能にするためのメッセージを含む。タスク管理は、タスク環境を初期化すること、タスクを開始することまたはディスパッチすること、タスクを中断することまたは一時停止すること、タスクを停止することまたは動かなくすること、およびタスクが完了する前にそのタスクを取り消すことなどの動作を含む可能性がある。クラウドプロトコルは、タスクの結果をクラウドサービスインフラストラクチャ202に返すためのメッセージも含む可能性がある。クラウドプロトコルは、クラウドコンピューティングインフラストラクチャ200がクラウドに加わったモバイルコンピューティングデバイス上で実行されるタスクを管理し、各ノード上で実行されるタスクにデータを送信し、各ノード上で実行されるタスクからデータを受信することを可能にする。
【００５２】
図3は、本開示の実施形態を実装するのに適したモバイルコンピューティングデバイス300のブロック図を示す。示されたモバイルコンピューティングデバイス300は、コンピュータメモリ304、無線周波数(RF)ユニット306、ユーザインターフェース(UI)308、およびディスプレイ310に結合されたプロセッサ302を含む。装置300は、セル電話、スマートフォン、およびタブレットデバイスを含む様々な種類のワイヤレス通信ユーザ機器のいずれかである可能性があるモバイルコンピューティングデバイスとして使用するのに適切である。
【００５３】
プロセッサ302は、単一の処理デバイスである可能性があり、またはたとえば、デジタル信号処理(DSP)デバイスなどの専用デバイス、マイクロプロセッサ、専用の処理デバイス、もしくは多目的コンピュータプロセッサを含む複数の処理デバイスを含む可能性がある。プロセッサ302は、本明細書に記載のプロセスを実行するように構成される。プロセッサは、グラフィックス処理ユニット(GPU)と連携して働くCPUを含み、信号処理タスクを扱うためのDSPを含むことが多い。特定の実施形態において、プロセッサ302は、ARM Cortexコアなどの1つまたは複数の、多くの場合4つのコアを含む。
【００５４】
プロセッサ302は、たとえば、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気もしくは光ディスク、またはその他の種類のコンピュータメモリなどの様々な種類の揮発性および不揮発性コンピュータメモリの組合せである可能性があるメモリ304に結合される(312)。メモリ304は、本明細書において説明されるクラスタコンピューティングの方法などの様々な所望のコンピュータによって実施されるプロセスまたは方法をプロセッサに実行させるためにプロセッサ302によってアクセスされ、実行され得るコンピュータプログラム命令を記憶する。
【００５５】
メモリ304に記憶されるプログラム命令は、業界内でプログラム、ソフトウェアコンポーネント、ソフトウェアモジュール、ユニットなどの様々な用語で呼ばれるプログラム命令のセットまたはグループとして編成される。各モジュールは、特定の目的をサポートするように設計された1組の機能を含む可能性がある。たとえば、ソフトウェアモジュールは、オペレーティングシステム、アプリケーション、デバイスドライバ、またはその他の普通に認められている種類のソフトウェアコンポーネントなどの認められた種類のものである可能性がある。メモリ304にさらに含まれるのは、コンピュータプログラム命令によって記憶され、処理されるプログラムデータおよびデータファイルである。
【００５６】
RFユニット306は、プロセッサ302に結合され、プロセッサ302とやりとりされるデジタルデータ312に基づいてRF信号を送信および受信するように構成される。RFユニット306は、たとえば、第3世代パートナーシッププロジェクト(3GPP)によって開発されたロングタームエボリューション(LTE)およびLTEアドバンスト(LTE-A)、米国電気電子学会(IEEE) 802.11規格に基づくWi-Fi、および多くのその他の規格などの、今日使用されているワイヤレス通信規格のうちの1つまたは複数に準拠する可能性がある無線信号を送信および受信するように構成される。特定の実施形態において、RFユニット306は、全地球測位システム(GPS)において衛星から送信されたメッセージを受信し、解釈することができる受信機を含み、デバイス300の位置に関する位置情報を得るためにその他の送信機から受信された情報と一緒に働く。
【００５７】
UI 308は、タッチスクリーン、キーパッド、ボタン、音声コマンドプロセッサ、およびユーザと情報をやりとりするために適合されたその他の要素などの1つまたは複数のユーザインターフェース要素を含み得る。UI 308は、モバイルコンピューティングデバイスまたはモバイルユーザ機器に適した様々な情報を表示するように構成されたディスプレイユニット310も含む可能性があり、たとえば、有機発光ダイオード(OLED)、液晶ディスプレイ(LCD)などの任意の適切なディスプレイの種類、およびLEDまたはインジケータランプなどのより複雑でない要素を使用して実装される可能性がある。特定の実施形態において、ディスプレイユニット310は、モバイルコンピューティングデバイス100のユーザから情報を受け取るためのタッチスクリーンを組み込む。
【００５８】
図4は、本発明の実施形態による装置(たとえば、装置のプロセッサ)によって実行され得る、モバイルコンピューティングデバイスをクラウドまたはクラスタコンピューティングインフラストラクチャ内のノードとして使用するための例示的な方法400の流れ図を示す。図1および図3を参照して上で説明されたモバイルコンピューティングデバイスなどのモバイルコンピューティングデバイスは、クラウドサービスによって使用するためにそのモバイルコンピューティングデバイスのアイドル状態のコンピューティングリソースを提供するための方法400を実装することができる。モバイルコンピューティングデバイス100は、最初にオンにされるとき、そのモバイルコンピューティングデバイス100の初期化手順の間にinitプロセス108などのinitプロセスを開始する(402)。とりわけ、initプロセス108は、モバイルコンピューティングデバイス100上で実行されるセキュアなコンテナを管理する。initプロセス108は、リソースを生成し、セキュアなコンテナ102、104、106に割り当て、それぞれのセキュアなコンテナのライフサイクルを管理し、セキュアなコンテナとの仮想的なブリッジを介した通信を管理することができる。
【００５９】
それから、initプロセス108は、モバイルコンピューティングデバイス100のメモリに記憶された構成ファイルに基づいて1つまたは複数のセキュアなコンテナ102、104、106を生成する(404)。代替的に、セキュアなコンテナ102、104、106は、ヒューリスティックもしくはその他のAIアルゴリズムに基づいて生成される可能性があり、または構成ファイルとAIアルゴリズムとの組合せに基づいて生成される可能性がある。そして、initプロセス108は、セキュアなコンテナ102、104、106のうちの1つにおいてモバイルデバイスプログラムを実行する(406)。
【００６０】
本明細書において使用されるとき、モバイルデバイスアプリケーションまたはモバイルデバイスプロセスという用語は、Androidに基づくスマートフォンなどのスマートフォン、タブレットコンピュータ、またはその他の種類のモバイルアプリケーションを指す。モバイルデバイスプログラムは、独自のオペレーティングシステムおよびシステムサービスならびに通常のモバイルユーザ機器に関連するユーザアプリケーションを含む。
【００６１】
特定の実施形態においては、モバイルデバイスを実行するステップ(406)を繰り返し(420)、上述のワークコンテナ102およびホームコンテナ104などの別々のプロセスまたはコンテナ内で複数のモバイルデバイスプログラムを実行することが有利である。複数のモバイルデバイスプログラムを実行する複数のセキュアなコンテナを生成することは、たとえば、仕事用のモバイル電話と個人用のモバイル電話との両方を持ち運ぶ必要をなくすために単一のモバイルコンピューティングデバイスを複数の別々のスマートフォンとして動作させることが望ましいときに行われる。initプロセス108は、クラスタノードプロセスのための別個のセキュアなコンテナを生成し、セキュアなコンテナ内でクラスタノードプロセスを実行する(408)。上述のクラスタノードコンテナ106などのクラスタノードプロセスまたはコンテナは、そのアイドル状態の計算能力をクラウドサービスインフラストラクチャ200による使用に利用され得るようにするために、上述のクラウドプロトコルなどのプロトコルを使用してクラウドサービス202との通信を確立する。特定の実施形態においては、モバイルコンピューティングデバイス100のユーザによって、またはモバイルコンピューティングデバイス100が接続されるワイヤレス通信ネットワークによってクラスタノードプロセスが無効化されるかまたはそれ以外の制御をされることを可能にすることが、望ましい。
【００６２】
タスクがクラウドサービスによって実行される必要があるとき、そのタスクは、モバイルコンピューティングデバイス100にタスク要求を送信する。タスク要求は、モバイルコンピューティングデバイス100上のセキュアなコンテナ内で実行されるクラスタノードプロセスによって受信され(410)、それから、クラスタノードプロセスが、タスク要求をinitプロセス108に送信し(412)、タスクを実行する(414)。下でより詳細に説明されるように、タスクを実行すること(414)は、タスク要求に含まれる情報に基づいてセキュアなコンテナを生成し、セキュアなコンテナにタスク環境をロードし、タスクの実行を制御することによって達成される。
【００６３】
タスクが完了すると、またはタスクの結果が利用可能であるときにはいつも、initプロセス108が、タスクの結果をクラスタノードプロセスに送信し(406)、クラスタノードプロセスが、タスクの結果をクラウドサービスに送信する(410)。タスクの実行中のいつでも、クラスタノードプロセスが、タスクが取り消されることを求めるタスク要求を受信し得る。これが起こるとき、クラスタノードプロセスは、取り消しまたはその他のタスク要求をinitプロセス108に転送し、initプロセス108は、取り消し要求の場合はタスクを止め、コンピューティングリソースを回収するなど、適切な対応を取る。
【００６４】
図5は、本発明の実施形態による、装置によって(たとえば、装置のプロセッサによって)実行され得る、タスクを実行するためにinitプロセス108によって使用される可能性がある方法500の例示的な実施形態の流れ図を示す。方法は、上述のinitプロセス108などのinitプロセスがモバイルコンピューティングデバイス100内のセキュアなコンテナ106内で実行されるクラスタノードプロセスからタスク要求を受信する(502)ときに開始する。initプロセスは、タスク要求に含まれるタスクの説明に基づいてタスクの実行のためのセキュアなコンテナを生成し(504)、タスクの実行のためのセキュアなコンテナに適切なリソースを割り振る。生成され、タスクを実行するために準備されたセキュアなコンテナは、本明細書においてはタスクコンテナと呼ばれる。また、タスクコンテナのためのリソースの割り振りは、タスクの実行がモバイルコンピューティングデバイス上で実行されるいかなるモバイルデバイスプロセスの実行も妨げないようにするように構成されたヒューリスティックまたは予め決められたアルゴリズムに基づく可能性がある。
【００６５】
initプロセス108は、タスク環境をダウンロードし(506)、そうでなければ、タスクの実行のためのタスクコンテナを準備し、タスクコンテナ内でタスクを実行する(508)。タスクの実行(508)中に、initプロセス108は、タスクの適切な完了を保証し、タスクの実行がモバイルコンピューティングデバイス100のユーザエクスペリエンスを妨げないことを保証するようにタスクコンテナのライフサイクルを管理し、タスクの実行を管理する。タスクの実行が完了するとき、またはタスクの実行中に周期的に、initプロセス108は、実行されるタスクからタスクの結果を受信する(510)。これらのタスクの結果は、クラスタノードプロセスに送信され(512)、クラスタノードプロセスにおいて、これらのタスクの結果は、クラウドサービスに転送され得る。タスクが完了すると、initプロセスは、タスクコンテナを破棄し(514)、モバイルコンピューティングデバイス上で実行されるその他のコンテナまたはプロセスによる使用のためにすべてのコンピューティングリソースを回収する。
【００６６】
クラウドサービスインフラストラクチャは、本明細書において説明された方法および装置と一緒に、様々な有用なサービスを提供するために有利に使用され得る。たとえば、クラウドサービスインフラストラクチャを提供するための装置および方法は、モバイルコンピューティングデバイスとクラウドサービスインフラストラクチャとの間のデータ同期、モバイルコンピューティングデバイスのデータバックアップ、ソフトウェアのインストール、モバイルコンピューティングデバイスのための更新、ならびに電話の特徴を一時停止することおよび再開することなどのモバイルデバイスの状態を制御することなどのモバイルコンピューティングデバイスのためのサービスを提供するために使用され得る。また、クラウドサービスインフラストラクチャは、共同コンピューティング(collaborative computing)または大規模なコンピュータシステムの形成のために有利に使用され得る。
【００６７】
したがって、本発明の例示的な実施形態に適用された本発明の基本的な新規性のある特徴が示され、説明され、指摘されたが、示されたデバイスおよび方法ならびにそれらの動作の形態および詳細の様々な省略、置き換え、および変更が本発明の精神および範囲を逸脱することなく当業者によってなされ得ることが、理解されるであろう。さらに、同じ結果を達成するために実質的に同じ方法で実質的に同じ機能を実行するそれらの要素のすべての組合せは本発明の範囲内にあることが、はっきりと意図される。さらに、通常の設計上の選択の問題として、本発明の任意の開示された形態または実施形態に関連して示されたおよび/または説明された構造および/または要素が任意のその他の開示されたまたは説明されたまたは示唆された形態または実施形態に組み込まれる可能性があることを認識されたい。したがって、本明細書に添付された請求項の範囲によって示されるようにだけ限定されることが意図される。
【符号の説明】
【００６８】
100  モバイルコンピューティングデバイス
100-1  モバイルコンピューティングデバイス
100-2  モバイルコンピューティングデバイス
100-3  モバイルコンピューティングデバイス
102  セキュアなコンテナ
104  セキュアなコンテナ
106  セキュアなコンテナ
106-1  クラスタコンテナ
106-2  クラスタコンテナ
106-3  クラスタコンテナ
108  initプロセス
108-1  initプロセス
108-2  initプロセス
108-3  initプロセス
110  オペレーティングシステム(OS)のカーネル
200  クラウドサービスインフラストラクチャ
202  クラウドサービス
204  通信リンク
206  通信リンク
208  通信リンク
300  モバイルコンピューティングデバイス
302  プロセッサ
304  コンピュータメモリ
306  無線周波数(RF)ユニット
308  ユーザインターフェース(UI)
310  ディスプレイ
312  デジタルデータ
400  方法
500  方法
【図１】
0006598391.tif 000002
【図２】
0006598391.tif 000003
【図３】
0006598391.tif 000004
【図４】
0006598391.tif 000005
【図５】
0006598391.tif 000006