以下に添付図面を参照して、この発明にかかるスケジューリング方法およびタスク処理方法の実施の形態を詳細に説明する。
<実施の形態1>
まず、本発明にかかるスケジューリング方法およびタスク処理方法の実施の形態1について説明する。実施の形態1では、データを共有するm個(m>1)の端末装置のうち、各端末装置と基地局との間の通信強度に基づいて選択される端末装置に、m個の端末装置にて共有する共有データを用いた処理が割り当てられる。これにより、複数の端末装置のうち、いずれかの端末装置の通信が途切れた場合にも、共有データを用いた処理を続行し、完遂することができる。
(スケジューリング例)
図1は、実施の形態1にかかるスケジューリング例を示す説明図である。図1においては、m=「3」とし、3個の端末装置101−1〜101−3が共有する共有データを用いた処理の実行要求を、いずれかの端末装置が受け付けた場合のスケジューリング方法例について説明する。なお、以下の説明では、端末装置101−1〜101−mのうち任意の端末装置を「端末装置101−i」と表記する(i=1,2,…,m)。
端末装置101−1〜101−3は、基地局102を介して互いに通信可能である。端末装置101−1〜101−mは、例えば、携帯電話や、PDAや、ノートPCである。また、端末装置101−1〜101−3は、例えば、無線LAN(Local Area Network)、Bluetooth(登録商標)、LTE(Long Term Evolution)、3G、4Gなどの通信規格の電波を用いて通信可能である。基地局102は、電波を端末装置101−1〜101−3に送信する装置である。
ここで、端末装置101−iが特定の処理Aに対する実行要求を受け付けた場合におけるスケジューリング方法例について説明する。処理Aは、処理A1と処理A2と処理A3とを含む処理である。処理A1と処理A2と処理A3とは、複数の端末装置によって並列した実行が可能な処理である。処理Aは、例えば、位置情報に基づいて地図画像を作成して表示するアプリである。その場合、処理A1と処理A2と処理A3とは、作成する地図のうちの部分的な画像を作成する処理である。このとき、処理A1と処理A2と処理A3とによって作成される部分的な画像は、それぞれ異なる画像である。
まず、端末装置101−iは、端末装置101−iと基地局102との間の通信強度Stを取得する。通信強度Stは、基地局102から送信された電波の強度に対する、各端末装置が受信する電波の強度の割合を示している。通信強度Stが高いほど、安定した通信接続がなされている。また、通信強度Stが低いほど、不安定な通信接続がなされており、通信接続が途切れる可能性が高い。以下、任意の端末装置101−iにおける通信強度Stを「通信強度Sti」と記す。
図1の(a)において、端末装置101−1における通信強度St1として80[%]が、端末装置101−2における通信強度St2として15[%]が、端末装置101−3における通信強度St3として60[%]が、端末装置101−iによって取得される。また、図1の(b)において、通信強度St1として80[%]が、通信強度St2として40[%]が、通信強度St3として60[%]が、端末装置101−iによって取得される。
次に、通信強度Stiが第1閾値以上である端末装置101−iに対して、実行要求を受け付けた処理が割り当てられる。第1閾値とは、予め定められた所定の値である。実施の形態1においては、第1閾値を20[%]とした場合について説明する。処理を割り当てるとは、処理を実行させることである。
図1の(a)において、通信強度St1および通信強度St3は第1閾値以上であり、通信強度St2は第1閾値未満である。そのため、端末装置101−1に対して処理A1が、端末装置101−3に対して処理A2および処理A3が、それぞれ割り当てられる。そして、端末装置101−2に対しては処理が割り当てられない。このとき、端末装置101−1および端末装置101−3に処理が割り当てられることとすれば、割り当てられる処理の内訳はこれに限るものではない。例えば、端末装置101−1に対して処理A1および処理A3が、端末装置101−3に対して処理A2が、それぞれ割り当てられることとしてもよい。
一方、図1の(b)において、通信強度St1、通信強度St2、通信強度St3はすべて第1閾値以上である。そのため、端末装置101−1に対して処理A1が、端末装置101−2に対して処理A2が、端末装置101−3に対して処理A3が、それぞれ割り当てられる。このとき、各端末装置に割り当てられる処理の内訳は、処理A1と処理A2と処理A3とがそれぞれいずれかの端末装置101−iに割り当てられることとすれば、これに限るものではない。例えば、端末装置101−1に対して処理A2が、端末装置101−2に対して処理A3が、端末装置101−3に対して処理A1が、それぞれ割り当てられることとしてもよい。
このように、通信強度Stiに基づいて処理が割り当てられることにより、処理の実行中に通信状態が悪化しないことが予測される端末装置101−iに処理を実行させることができる。これにより、端末装置101−iの通信状態の悪化による、共有データに対する処理の停止の可能性を低減することができる。したがって、処理実行中の端末装置101−iの通信が途切れないため、通信状態の悪化による処理結果の欠落を回避し、処理を完遂できる。
(スケジューリングシステムの一例)
図2は、実施の形態1にかかるスケジューリングシステムの一例を示す説明図である。図2において、m=「4」とし、スケジューリングシステム200は、4個の端末装置101−1〜101−4と基地局102とを含む。端末装置101−1〜101−4は基地局102を介して通信可能である。端末装置101−4は、端末装置101−1と直接通信可能である。また、端末装置101−4は、端末装置101−2および端末装置101−3と、端末装置101−1を介して通信可能である。
基地局102は、インターネット、LAN、WAN(Wide Area Network)などのネットワーク210を介して、他の基地局(不図示)に接続されている。他の基地局には端末装置が接続されていることとしてもよく、端末装置101−1〜101−4は、他の基地局に接続された端末装置と通信可能であってもよい。
端末装置101−iは、ユーザから共有データを用いた処理の実行要求の入力を受け付けた場合に、各端末装置の通信強度Stiおよび通信速度に基づいて、共有データの割当および処理の割当を行う。ユーザとは、端末装置101−iを操作する人物である。通信速度とは、各端末装置における単位時間あたりに通信可能なデータのサイズである。通信速度の単位は、例えば、[Mbps]や[kbps]である。以下、端末装置101−iにおける通信速度を「通信速度Spi」と記す。
共有データを割り当てるとは、共有データを記憶させることである。実施の形態1においては、共有データを分割し、端末装置101−1〜101−4のうち、複数の端末装置の記憶領域に記憶させることにより、共有データを割り当てる。なお、分割された共有データが記憶される記憶領域は、いずれの端末装置101−iからもアクセス可能な記憶領域である。
具体的に、端末装置101−iは、各端末装置の通信強度Stiおよび通信速度Spiに基づいて端末装置情報テーブルおよびデータ割当テーブルを作成し、端末装置情報テーブルおよびデータ割当テーブルに基づいて、共有データの割当および処理の割当を行う。端末装置情報テーブルは、共有データを記憶する比率や、処理の割当が可能であるか否かを示す情報が端末装置毎に登録されるテーブルであり、その詳細は、図4に後述する。また、データ割当テーブルは、共有データを記憶する端末装置101−iを示す情報を含むテーブルであり、その詳細は図5に後述する。
以下、共有データの割当および処理の割当を行う端末装置101−iを「マスタ端末装置」と記す。マスタ端末装置は、通信強度Stiの最も高い端末装置101−i、またはユーザから共有データの処理の実行要求の入力を最初に受け付けた端末装置101−iである。また、以下、マスタ端末装置から割り当てられた処理を実行する端末装置101−iを「スレイブ端末装置」と記す。スレイブ端末装置は、複数の端末装置101−1〜101−mのうち、マスタ端末装置以外の端末装置101−iである。
マスタ端末装置は、通信強度Stiが最も高い端末装置101−iでなくなった場合にスレイブ端末装置へ遷移する。また、スレイブ端末装置は、マスタ端末装置から、最も通信強度Stiが高くなった旨を示す情報の通知を受信することにより、マスタ端末装置へ遷移する。
(端末装置101−iのハードウェア例)
図3は、実施の形態1にかかる端末装置101−iのハードウェア例を示すブロック図である。図3において、端末装置101−iは、CPU(Central Processing Unit)301と、ROM(Read‐Only Memory)302と、RAM(Random Access Memory)303と、メモリコントローラ304と、フラッシュメモリ305と、ディスプレイ306と、キーボード307と、RF(Radio Frequency)回路308とを含む。また、各部はバス300によってそれぞれ接続されている。
ここで、CPU301は、端末装置101−iの全体の制御を司る。ROM302は、ブートプログラムなどのプログラムを記憶している。なお、端末装置101−iは、単一のCPU301を有することとするが、これに限るものではなく、複数のCPU301を有することとしてもよい。RAM303は、CPU301のワークエリアとして使用される。メモリコントローラ304は、RAM303のデータの書き込みや読み出しを統括したり、RAM303がDRAM(Dynamic Random Access Memory)である場合にはRAM303のリフレッシュを統括したりする。フラッシュメモリ305は、データを書き換え可能な不揮発性の半導体メモリである。
ディスプレイ306は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ306は、例えば、TFT液晶ディスプレイなどを採用することができる。
キーボード307は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。RF回路308は、無線信号を送受信するアンテナ309と接続されている。RF回路308は、高周波処理部であり、アンテナ309を介してインターネットなどのネットワークからデータを受信したり、ネットワークへデータを送信したりする。
次に、端末装置情報テーブルの記憶内容について説明する。端末装置情報テーブルは、例えば、図3に示した端末装置101−iのRAM303、フラッシュメモリ305などの記憶装置により実現される。ここでは、端末装置101−iが有する端末装置情報テーブル400を例に挙げて説明する。
(端末装置情報テーブル400の記憶内容)
図4は、実施の形態1における端末装置情報テーブル400の記憶内容の一例を示す説明図である。図4において、端末装置101−iが有する端末装置情報テーブル400は、端末装置ID、通信強度Sti、通信速度Spi、データ比率および処理割当可能フラグのフィールドを有する。各フィールドに情報を設定することで、端末装置特性データ400−1〜401−4がレコードとして記憶されている。以下、任意の端末装置101−iに対する端末装置特性データを「端末装置特性データ400−i」と記す。
端末装置IDは、端末装置101−iを識別するための情報であり、例えば、「#1」〜「#4」である。通信強度Stiおよび通信速度Spiは、上述した通りである。データ比率は、各端末装置に記憶される共有データの内訳の比率である。例えば、一方の端末装置のデータ比率が「100」、他方の端末装置のデータ比率が「10」である二つの端末装置を例に挙げて説明する。この場合、一方の端末装置が記憶する共有データの内訳と、他方の端末装置が記憶する共有データの内訳との比率が「100:10」であることを示している。すなわち、一方の端末装置が共有データの100/110を記憶し、他方の端末装置が共有データの10/110を記憶することを示している。また、データ比率が「0」であるとは、共有データが記憶されないことを示す。例えば、実施の形態1においては、通信強度Stiが第1閾値未満である端末装置101−4の端末装置特性データ400−4におけるデータ比率は「0」である。
処理割当可能フラグは、処理の割当が可能であるか否かを示すフラグであり、処理割当可能フラグがONである端末装置101−iは、マスタ端末装置にとって処理の割当が可能な端末装置101−iである。また、処理割当可能フラグがOFFである端末装置101−iは、マスタ端末装置にとって処理の割当が不可能な端末装置101−iである。すなわち、マスタ端末装置は、処理割当可能フラグがONである端末装置101−iに対して、処理を割り当てる。例えば、実施の形態1においては、通信強度Stiが第1閾値未満である端末装置101−4の端末装置特性データ400−4における処理割当可能フラグはOFFであるため、端末装置101−4には処理が割り当てられない。
一例として、端末装置特性データ400−1を例に挙げると、端末装置ID「#1」、通信強度St1=60[%]、通信速度Sp1=10[Mbps]、データ比率「100」、処理割当可能フラグ「ON」が記憶されている。
次に、データ割当テーブルの記憶内容について説明する。データ割当テーブルは、例えば、図3に示した端末装置101−iのRAM303、フラッシュメモリ305などの記憶装置により実現される。ここでは、端末装置101−iが有するデータ割当テーブル500を例に挙げて説明する。
(データ割当テーブル500の記憶内容)
図5は、実施の形態1におけるデータ割当テーブル500の記憶内容の一例を示す説明図である。図5において、端末装置101−iが有するデータ割当テーブル500は、割当データ配列および割当端末装置IDのフィールドを有する。各フィールドに情報を設定することで、データ割当特性データ500−1〜500−(N+1)がレコードとして記憶されている。
割当データ配列は、共有データがN+1個に分割されて割り当てられる割当データの配列を示しており、例えば、「array#0」〜「array#N」である。割当端末装置IDは、割当データが割り当てられる端末装置101−iの端末装置IDを示しており、例えば、「#1」〜「#4」である。実施の形態1において、array#0〜array#Nは、#1〜#4に対して、端末装置情報テーブル400に含まれるデータ比率に応じて若い番号から順に割り当てられることとする。
一例として、データ割当特性データ500−1を例に挙げると、割当データ配列「array#0」、割当端末装置ID「#1」が記憶されている。また、上述したように、実施の形態1においては、端末装置101−4の通信強度St4は第1閾値未満であるため、端末装置101−4には割当データが割り当てられず、割当端末装置IDに#4は含まれない。ここで、各端末装置に対する共有データの割当方法の一例について説明する。
(共有データの割当方法の一例)
図6は、実施の形態1における共有データの割当方法の一例を示す説明図である。図6に示す共有データの割当方法において、まず、マスタ端末装置は、端末装置101−iと基地局102との通信強度Stiと、端末装置101−iにおける通信速度Spiを取得する。以下、複数の端末装置101−1〜101−mにて共有する共有データを「共有データD」と記す。
具体的には、(1)に示すように、マスタ端末装置は、端末装置101−1と基地局102との間の通信強度St1として60[%]を、端末装置101−1における通信速度Sp1として10[Mbps]を取得する。
また、(2)に示すように、マスタ端末装置は、端末装置101−2と基地局102との間の通信強度St2として50[%]を、端末装置101−2における通信速度Sp2として10[Mbps]を取得する。また、(3)に示すように、マスタ端末装置は、端末装置101−3と基地局102との間の通信強度St3として90[%]を、端末装置101−3における通信速度Sp3として1[Mbps]を取得する。
ここで、基地局102と直接接続されていない端末装置101−4の通信強度St4は、基地局102から端末装置101−4までに経由するパスにおける通信強度Stiの積である。すなわち、端末装置101−4の通信強度St4は、端末装置101−1と基地局102との間の通信強度St1と、端末装置101−4と端末装置101−1との間の通信強度St14との積である。
(4)に示すように、端末装置101−4と端末装置101−1との間の通信強度St14は30[%]である。そのため、(5)に示すように、マスタ端末装置は、端末装置101−4と基地局102との間の通信強度St4として、通信強度St1である60[%]と通信強度St14である30[%]との積である18[%]を取得する。また、マスタ端末装置は、端末装置101−4における通信速度Sp4として100[kbps]を取得する。そして、マスタ端末装置は取得した通信強度Stiおよび通信速度Spiを端末装置情報テーブル400に登録する。
次に、マスタ端末装置は、端末装置101−iの通信速度Spiの比率に応じた割合にて、共有データDを各端末装置に割り当てる。その際、マスタ端末装置は、第1閾値の20[%]以上の通信強度Stiである端末装置101−i以外の端末装置101−iを対象として処理を割り当てる。以下、端末装置101−iに分割されて割り当てられる共有データDを「割当データDi」と記す。
具体的には、(6)に示すように、割当データD1と割当データD2と割当データD3との比率は、通信速度Sp1と通信速度Sp2と通信速度Sp3との比率である。Sp1:Sp2:Sp3は、10[Mbps]:10[Mbps]:1[Mbps]であるため、割当データD1と割当データD2と割当データD3との比率は、100:100:10と求められる。通信強度St4は第1閾値の20[%]よりも低いため、端末装置101−4に対しては共有データDの割当は行われない。
マスタ端末装置は、ここで求められた比率を端末装置情報テーブル400に登録する。そして、マスタ端末装置は、端末装置情報テーブル400に応じてデータ割当テーブル500を作成し、作成したデータ割当テーブル500に応じて共有データDを各端末装置に割り当てる。
(マスタ端末装置およびスレイブ端末装置の機能の一例)
次に、マスタ端末装置およびスレイブ端末装置の機能の一例について説明する。図7は、実施の形態1におけるマスタ端末装置およびスレイブ端末装置の機能の一例を示すブロック図である。以下、マスタ端末装置を「マスタ端末装置T1」、スレイブ端末装置を「スレイブ端末装置T2」、と記す。
まず、マスタ端末装置T1は、機能部として、取得部710と、受信部711と、作成部712と、処理割当部713と、実行部714と、データ割当部715と、通知部716と、決定部717と、遷移部718と、を有する。また、マスタ端末装置T1は、各機能部における処理に用いられる端末装置情報テーブル400と、データ割当テーブル500とを有する。この制御部となる機能(取得部710〜遷移部718)は、具体的には、例えば、図3に示したROM302、RAM303、フラッシュメモリ305などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。
ここで、マスタ端末装置T1における説明において、第1装置とはマスタ端末装置T1であり、第2装置とは次の処理におけるマスタ端末装置T1となる端末装置101−iであり、第3装置とはスレイブ端末装置T2である。
取得部710は、複数の端末装置101−1〜101−mの通信強度Stiを取得する。取得部710は、例えば、マスタ端末装置T1と基地局102との通信強度Stiと、スレイブ端末装置T2と基地局102との通信強度Stiとを取得する。例えば、取得部710は、マスタ端末装置T1のアンテナ309に含まれるRSSI(Received Signal Strength Indication)によって通信強度Stiが測定されることにより、通信強度Stiを取得する。また、取得部710は、後述する受信部711を用いて、スレイブ端末装置T2と基地局102との通信強度Stiを取得する。
また、取得部710は、複数の端末装置101−1〜101−mの通信速度Spiを取得することとしてもよい。取得部710は、例えば、マスタ端末装置T1の通信速度Spiと、スレイブ端末装置T2の通信速度Spiとを取得する。具体的に、例えば、取得部710は、他端末装置101−iに対してpingを送信し、pingに対応する応答を受信するまでの時間を計測し、計測された時間に基づいて、マスタ端末装置T1の通信速度Spiを算出する。また、取得部710は、後述する受信部711を用いて、スレイブ端末装置T2の通信速度Spiを取得する。
受信部711は、第1装置以外の少なくとも一の端末装置101−iから処理の実行結果と通信強度Stiとを受信する。マスタ端末装置T1以外の少なくとも一の端末装置101−iとは、具体的には、スレイブ端末装置T2である。すなわち、ここで受信される通信強度Stiは、スレイブ端末装置T2の通信強度Stiである。処理の実行結果とは、マスタ端末装置T1がスレイブ端末装置T2に割り当てる処理の処理結果である。例えば、処理が、図1に上述した地図画像を作成するアプリである場合、処理結果は、作成する地図画像のうち部分的な画像である。具体的に、例えば、受信部711が、スレイブ端末装置T2から送信されるスレイブ端末装置T2の通信強度Stiおよび処理の実行結果に関する情報を含む信号を受信する。
また、受信部711は、スレイブ端末装置T2の識別情報毎に、処理の実行結果や通信強度Stiを受信することとしてもよい。端末装置101−iの識別情報とは、端末装置101−iがいずれの端末装置101−iであるかを識別するための情報であり、例えば、上述した端末装置IDである。また、受信部711は、スレイブ端末装置T2の通信速度Spiを受信する。具体的には、スレイブ端末装置T2からスレイブ端末装置T2の識別情報と通信速度Spiとを含む信号を受信する。
また、受信部711は、第3装置の通信強度Stiを所定周期で受信する。具体的に、例えば、受信部711は、実行可能状態であるタスクが存在しない場合に、スレイブ端末装置T2から通信強度Stiを所定の周期毎に受信する。
作成部712は、取得部710によって取得された通信強度Stiに基づいて、端末装置情報テーブル400を作成する。具体的に、例えば、作成部712が、受信部711によって受信された通信強度Stiを、識別情報毎に端末装置情報テーブル400に登録する。そして、作成部712が、処理割当可能フラグを、通信強度Stiに応じて登録する。その際、作成部712は、取得部710によって取得された各通信強度が第1閾値以上であるか否かを判定し、第1閾値以上であると判定された通信強度Stiを有する端末装置101−iに対して処理割当可能フラグにONを登録することとしてもよい。具体的に、作成部712は、図4に上述したように、端末装置101−1〜101−3に対応する端末装置特性データ400−1〜400−3の処理割当可能フラグにONを登録する。なお、上述したように第1閾値を20[%]としたが、これに限るものではない。
また、作成部712は、取得部710によって取得された通信速度Spiに基づいて、データ割当テーブル500を作成することとしてもよい。具体的に、作成部712は、通信速度Spiに基づいて端末装置情報テーブル400を作成し、作成した端末装置情報テーブル400に基づいてデータ割当テーブル500を作成する。例えば、作成部712は、まず、取得部710によって取得された通信速度Spiを、端末装置101−iの識別情報毎に端末装置情報テーブル400に登録し、登録した通信速度Spiの比率をデータ比率として登録する。そして、作成部712は、登録したデータ比率に基づいて、共有データDをいずれの端末装置101−iに割り当てるかを特定する。そして作成部712は、特定した端末装置101−iの識別情報をデータ割当テーブル500の割当端末装置IDとして、該当する割当データ配列に応じて登録する。
処理割当部713は、取得部710によって取得された通信強度Stiに基づいて、複数の端末装置101−1〜101−mのうちいずれかの端末装置101−iに、共有データDを用いた処理を割り当てる。具体的に、処理割当部713は、端末装置情報テーブル400に基づいて複数の端末装置101−1〜101−mの少なくとも一の端末装置に処理を割り当てる。例えば、処理割当部713は、タスクの実行要求をスレイブ端末装置T2に送信することにより、スレイブ端末装置T2に共有データDを用いた処理を割り当てる。また、例えば、処理割当部713は、実行部714に処理の実行要求を送信することにより、マスタ端末装置T1に処理を割り当てる。具体的に、例えば、処理割当部713が、端末装置情報テーブル400における処理割当可能フラグにONが登録された端末装置特性データ400−iの端末装置101−iに、共有データDを用いた処理を割り当てる。
また、複数の端末装置を割当対象とする場合、処理割当部713は、実行する処理を複数の処理に分割し、分割した複数の処理を各端末装置に割り当てる。具体的には、処理割当部713は、実行するプログラムを分割し、分割されたプログラムの実行コードをスレイブ端末装置T2に送信することにより、分割した処理を端末装置101−iに割り当てる。なお、スレイブ端末装置T2が分割前のプログラムの実行コードを有している場合、処理割当部713は、実行コードのオフセット値を送信してもよい。
また、処理割当部713は、取得部710によって取得された通信強度Stiが第1閾値以上である端末装置101−iに対して共有データDを用いた処理を割り当てる。具体的に、処理割当部713は、複数の端末装置に含まれる第3装置の通信強度Stiが第1閾値以上であるときは該第3装置に処理を割り当て、通信強度Stiが第1閾値より小さいときは該第3装置に処理を割り当てない。通信強度Stiが第1閾値以上であるか否かは、例えば、端末装置情報テーブル400の処理割当可能フラグにおいて判別可能である。
具体的に、処理割当部713が、端末装置情報テーブル400に登録された各端末装置特性データ400−iの処理割当可能フラグが「ON」である端末装置101−iを特定し、特定した端末装置101−iに処理を割り当てる。より具体的に、例えば、処理割当部713が、処理割当可能フラグにONが登録された端末装置特性データ400−1〜400−3の端末装置101−1〜101−3に処理を割り当てる。これにより、マスタ端末装置T1は、通信強度Stiが第1閾値未満である端末装置101−iよりも、通信状態が悪化する可能性が低い端末装置101−iに処理を割り当てることができる。したがって、処理の実行中に通信状態が悪化することによる処理の停止の可能性を低減させることができる。
また、処理割当部713は、取得部710によって取得された通信強度Stiに基づいて、共有データDを用いた処理を割り当てることとすれば、例えば、取得された通信強度Stiが大きい方から所定数の端末装置101−iに処理を割り当てることとしてもよい。
実行部714は、処理割当部713から処理の実行要求を受け付けた場合に、処理を実行する。具体的に、実行部714は、ROM302、RAM303、フラッシュメモリ305などの記憶装置に記憶されたプログラムから、実行要求を受け付けた処理に応じたプログラムを特定し、特定したプログラムを実行する。また、実行部714は、データ割当テーブル500を参照することにより、実行要求を受け付けた処理に用いる共有データDが割り当てられている端末装置101−iを特定し、特定した端末装置101−iから共有データDを参照して処理を実行する。
データ割当部715は、取得部710によって取得された通信強度Stiに基づいて、複数の端末装置101−1〜101−mのうち、いずれかの端末装置101−iに共有データDを割り当てる。具体的に、例えば、データ割当部715は、割当データを送信することにより、スレイブ端末装置T2に共有データDを割り当てる。また、例えば、データ割当部715は、マスタ端末装置T1のRAM303やフラッシュメモリ305などの記憶装置に割当データを書き込むことにより、マスタ端末装置T1に共有データDを割り当てる。これにより、マスタ端末装置T1は、通信強度Stiを考慮した端末装置101−iに共有データDを割り当てることができる。
また、データ割当部715は、データ割当テーブル500が変更されたとき、変更されたデータ割当テーブル500に基づいて複数の端末装置の少なくとも一の端末装置に共有データDを割り当てる。データ割当テーブル500が変更されたときとは、作成部712によってデータ割当テーブル500が更新されるときである。すなわち、データ割当部715は、データ割当テーブル500装置に登録されている端末装置101−iの通信強度Stiや通信速度Spiに変更があった場合に、データ割当テーブル500に基づいて共有データDを割り当てる。また、データ割当部715は、ユーザから処理の実行要求を受け付けて作成部712によってデータ割当テーブル500が作成された際に、共有データDを割り当てる。また、データ割当部715は、他端末装置に対して、データ割当テーブル500に基づいた割当データを端末装置間にて送受信する旨を示す情報を送信することにより、共有データDを割り当てることとしてもよい。
また、データ割当部715は、複数の端末装置に共有データDを割り当てる場合、まず、割り当てる共有データDを複数の割当データに分割し、分割した割当データを複数の端末装置に割り当てる。その際、割当データのサイズは、各端末装置の通信速度Spiに基づいて決定されることとしてもよい。具体的に、例えば、データ割当部715は、各端末装置の通信速度Spiの値が大きいほど、大きなサイズの割当データを割り当てることとしてもよい。これにより、割当データの送受信に要する時間の短縮化を図ることができ、共有データDに対する処理の効率化を図ることができる。また、例えば、データ割当部715は、各端末装置の通信速度Spiの比率と同じ比率にて割当データを割り当てることとしてもよい。
また、データ割当部715は、取得部710によって取得された通信強度Stiが第1閾値以上である端末装置101−iに対して共有データDを割り当てることとしてもよい。具体的に、データ割当部715は、端末装置情報テーブル400に登録された各端末装置特性データ400−iの通信強度Stiが第1閾値以上である端末装置101−iを特定し、特定した端末装置101−iに共有データDを割り当てる。例えば、処理割当部713が、通信強度Stiが第1閾値以上である端末装置101−1〜101−3に共有データDを割り当てる。これにより、マスタ端末装置T1は、通信強度Stiが第1閾値未満である端末装置101−iよりも、通信状態が悪化する可能性が低い端末装置101−iに共有データDを割り当てることができる。したがって、端末装置101−iの通信状態が悪化を起因として共有データDへアクセスができなくなる可能性を低減させることができる。
また、データ割当部715は、取得部710によって取得された通信強度Stiに基づいて共有データDを割り当てることとすれば、例えば、取得された通信強度Stiが大きい方から所定数の端末装置に共有データDを割り当てることとしてもよい。
通知部716は、データ割当テーブル500を複数の端末装置101−1〜101−mに通知する。例えば、通知部716は、作成部712によって作成されたデータ割当テーブル500をスレイブ端末装置T2に送信することにより、データ割当テーブル500を通知する。また、通知部716は、作成部712によるデータ割当テーブル500の更新部分をスレイブ端末装置T2に送信することにより、データ割当テーブル500を通知することとしてもよい。
決定部717は、端末装置情報テーブル400に基づいて、複数の端末装置の中から次の処理の割当を行う第2装置を決定する。具体的に、決定部717は、複数の端末装置101−1〜101−mのうち、通信強度Stiが最も高い端末装置101−iを第2装置として決定する。より具体的に、例えば、処理割当部713が、通信強度Stiが最も高い端末装置101−3を第2装置として決定する。これにより、通信が途切れる可能性が最も低い端末装置101−iに、処理の割当、または共有データDの割当を実行させることができる。したがって、通信状態が悪化することにより処理や共有データDの割当が行われずに、処理が停止してしまう可能性を極力低減することができる。
また、決定部717は、第2装置として決定した端末装置101−iに対して、次の処理の割当要求を含む情報を送信する。次の処理の割当要求を含む情報とは、すなわち、スレイブ端末装置T2からマスタ端末装置T1へ遷移することを示す情報である。
遷移部718は、決定部717によって決定された第2装置が、マスタ端末装置T1でない場合に、マスタ端末装置T1をスレイブ端末装置T2に遷移させる。マスタ端末装置T1をスレイブ端末装置T2に遷移させるとは、例えば、マスタ端末装置T1である旨を示すマスタフラグをOFFにすることにより、スレイブ端末装置T2における機能を実行可能な状態とすることである。
このように、実施の形態1にかかるマスタ端末装置T1は、共有データDを共有する複数の端末装置101−1〜101−mの各通信強度を取得する。そして、マスタ端末装置T1は、取得した各通信強度に基づいて、複数の端末装置のうちいずかの端末装置101−iを選択する。例えば、マスタ端末装置T1は、取得した各通信強度が第1閾値以上であるか否かを判定し、第1閾値以上であると判定された通信強度Stiを有する端末装置101−iを選択する。
そして、マスタ端末装置T1は、選択したいずれかの端末装置101−iに、共有データDを用いた処理を割り当てる。これにより、通信状態の悪化の可能性が極力低い端末装置101−iに、処理を割り当てることができ、処理の実行中の端末装置101−iの通信強度Stiが悪化することなく、処理を続行することができる。したがって、処理結果を同期できないことを起因とした処理結果の欠落を回避し、共有データDを用いた処理を完遂することができる。
また、マスタ端末装置T1は、選択したいずれかの端末装置101−iに、共有データDを割り当てる。これにより、通信状態の悪化の可能性が極力低い端末装置101−iに、共有データDを割り当てることができ、共有データDを記憶する端末装置101−iの通信強度Stiが悪化することなく、処理を続行することができる。したがって、共有データDにアクセスできないことを起因とした処理結果の欠落を回避し、共有データDを用いた処理を完遂することができる。
また、マスタ端末装置T1は、共有データDを共有する複数の端末装置101−1〜101−mの通信速度Spiを取得し、取得した通信速度Spiが速い端末装置101−iほど大きなサイズの割当データを割り当てる。例えば、マスタ端末装置T1は、各端末装置の通信速度Spiの比率と同じ比率のサイズの割当データを割り当てる。これにより、共有データDの送受信に要する時間の短縮化を図ることができる。
また、マスタ端末装置T1は、複数の端末装置101−1〜101−mのうち、通信強度Stiが最も高い端末装置101−iである。これにより、処理の割当や共有データDの割当を行う端末装置101−iの通信状態が悪化する可能性を低減することができ、処理を続行することができる。
次に、スレイブ端末装置T2は、受信部721と、実行部722と、取得部723と、送信部724と、遷移部725とを含む。この制御部となる機能(受信部721〜遷移部725)は、具体的には、例えば、図3に示したROM302、RAM303、フラッシュメモリ305などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。
ここで、スレイブ端末装置T2の説明において、第1装置とはマスタ端末装置T1であり、第2装置とはスレイブ端末装置T2である。
受信部721は、第1装置から第2装置へのタスクの実行要求を受信する。具体的に、例えば、受信部721は、マスタ端末装置T1のデータ割当部715から送信されるタスクの実行要求を受信する。その際、受信部721は、プログラムの実行コードを受信することとしてもよい。また、受信部721は、プログラムの実行コードのオフセット値を受信してもよい。
また、受信部721は、割当データを受信する。具体的に、例えば、受信部721は、マスタ端末装置T1のデータ割当部715から送信される割当データや、他のスレイブ端末装置T2から送信される割当データを受信する。受信部721によって受信された割当データは、RAM303やフラッシュメモリ305などの記憶装置に書き込まれる。また、受信部721は、マスタ端末装置T1から、割当データを端末装置間にて送受信する旨を示す情報を受信することとしてもよい。
また、受信部721は、マスタ端末装置T1からデータ割当テーブル500の通知部716からの通知を受信することとしてもよい。例えば、受信部721は、通知部716から送信されるデータ割当テーブル500の情報を含む信号を受信することにより、通知部716からの通知を受信することとしてもよい。また、例えば、受信部721は、通知部716から送信される、データ割当テーブル500が更新された旨を示す信号を受信することにより、通知部716からの通知を受信することとしてもよい。
また、受信部721は、次の処理の割当要求を含む情報を受信することとしてもよい。具体的に、例えば、受信部721は、マスタ端末装置T1の決定部717から送信される、マスタ端末装置T1への遷移を要求する情報を取得する。
実行部722は、受信部721によって受信されたタスクの実行要求に基づいて処理を実行する。受信部721によってプログラムの実行コードが受信された場合、実行部722は、実行コードを読み出して、タスクを実行する。また、受信部721によって実行コードのオフセット値が受信された場合、実行部722は、実行コード内のオフセット値から実行コードを読み出して、タスクを実行する。また、実行部722は、データ割当テーブル500を参照することにより、処理の実行に用いる共有データDが割り当てられている端末装置101−iを特定する。そして、実行部722は、特定した端末装置101−iから共有データDにアクセスして処理を実行する。
取得部723は、スレイブ端末装置T2の通信強度Stiを取得する。具体的に、例えば、アンテナ309に受信された電波からRSSIによって通信強度Stiが測定され、取得部723は、RSSIによって測定された通信強度Stiを取得する。
また、取得部723は、マスタ端末装置T1からタスクの実行要求を所定期間受信しないとき、通信強度Stiを取得する。実行要求を所定期間受信しないときとは、すなわち、スレイブ端末装置T2の通信強度Stiが第1閾値未満であるため、処理が割り当てられていない状態である。具体的に、例えば、取得部723は、実行要求を受信していない状態において通信強度Stiを取得する。また、例えば、取得部723は、実行要求を受信した時点からの経過時間を測定し、経過時間が所定時間に達した場合に、通信強度Stiを取得することとしてもよい。
また、取得部723は、スレイブ端末装置T2の通信速度Spiを取得することとしてもよい。具体的に、例えば、取得部723は、他端末装置に対してpingを送信し、pingに対応する応答を受信するまでの時間を計測し、計測された時間に基づいてスレイブ端末装置T2の通信速度Spiを算出する。
送信部724は、タスクの実行結果と通信強度Stiとをマスタ端末装置T1に送信する。具体的に、例えば、実行部722によって実行された処理の処理結果と、取得部723によって取得された通信強度Stiとの情報を含む信号をマスタ端末装置T1に送信する。送信部724から送信されたタスクの実行結果と通信強度Stiとは、マスタ端末装置T1の受信部711によって受信される。
また、送信部724は、通信強度Stiが第1閾値より大きいとき、通信強度Stiを第1装置に送信する。例えば、送信部724は、取得部723によって取得された通信強度Stiが第1閾値以上であるか否かを判定し、取得された通信強度Stiが第1閾値以上である場合に、処理結果と通信強度Stiとの情報を含む信号をマスタ端末装置T1に送信する。
これにより、スレイブ端末装置T2の通信強度Stiが第1閾値未満から第1閾値以上へ変位した場合に、該スレイブ端末装置T2の通信強度Stiをマスタ端末装置T1に通知する。仮に、スレイブ端末装置T2の通信強度Stiが継続して第1閾値未満である場合に該通信強度Stiをマスタ端末装置T1に通知しても、処理の割当に変更はないため、無駄な通信である。そのため、スレイブ端末装置T2の通信強度Stiが第1閾値未満から該第1閾値以上へ変位した場合に、該通信強度Stiをマスタ端末装置T1に通知することにより、無駄な通信を低減させることができる。
また、送信部724は、通信強度Stiとともに通信速度Spiをマスタ端末装置T1に送信する。具体的に、例えば、送信部724は、取得部723によって取得された自端末装置の通信強度Stiおよび通信速度Spiの情報を含む信号を、マスタ端末装置T1に送信する。
また、送信部724は、受信部721によって割当データを端末装置間にて送受信する旨を示す情報が受信された場合に、他の端末に対して、割当データを送信することとしてもよい。送信部724は、例えば、受信部721によって受信されたデータ割当テーブル500に基づいて、他の端末に対して割当データを送信する。
遷移部725は、受信部721によってマスタ端末装置T1からマスタ端末装置T1への遷移を示す情報が受信された場合に、スレイブ端末装置T2をマスタ端末装置T1に遷移させる。スレイブ端末装置T2をマスタ端末装置T1に遷移させるとは、例えば、マスタ端末装置T1である旨を示すマスタフラグをONにすることにより、マスタ端末装置T1における機能を実行可能な状態とすることである。
このように、スレイブ端末装置T2は、マスタ端末装置T1から割り当てられた処理を実行する。また、スレイブ端末装置T2は、マスタ端末装置T1から割り当てられた割当データを記憶する。
(マスタ端末装置T1のマスタ端末処理手順)
図8は、実施の形態1にかかるマスタ端末装置T1のマスタ端末処理手順の一例を示すフローチャートである。マスタ端末処理は、マスタ端末装置T1のCPU301によって実行される処理である。
マスタ端末処理において、まず、マスタ端末装置T1は、実行可能状態であるタスクが存在するか否かを判定する(ステップS801)。そして、実行可能状態であるタスクが存在しない場合(ステップS801:No)、マスタ端末装置T1は、スレイブ端末装置T2から通信強度Stiと通信速度Spiとを受信したか否かを判定する(ステップS802)。
スレイブ端末装置T2から通信強度Stiと通信速度Spiとを受信した場合(ステップS802:Yes)、マスタ端末装置T1は、端末装置情報テーブル400の端末装置特性データ400−iを更新し(ステップS803)、ステップS801へ移行する。また、ステップS802において、スレイブ端末装置T2から通信強度Stiと通信速度Spiとを受信していない場合(ステップS802:No)、マスタ端末装置T1は、ステップS801へ移行する。
ステップS801において、実行可能状態であるタスクが存在する場合(ステップS801:Yes)、マスタ端末装置T1は、端末装置情報テーブル400を参照して、スレイブ端末装置T2へ処理割当通知を送信する(ステップS804)。具体的には、マスタ端末装置T1は、端末装置情報テーブル400の処理割当可能フラグがONである端末装置101−iに対して、処理割当通知を送信する。処理割当通知は、割り当てる処理の内容の情報を含む。また、割り当てる処理の内容については、このとき決定することとする。また、このとき、マスタ端末装置T1は、自端末装置に割り当てる処理を実行キューに登録する。
その後、マスタ端末装置T1は、データ割当テーブル500に変更があるか否かを判定する(ステップS805)。このとき、マスタ端末装置T1は、例えば、データ割当テーブル500を変更した旨を示す変更フラグがONであるか否かを判定することにより、データ割当テーブル500に変更があるか否かを判定する。その場合、例えば、マスタ端末装置T1は、データ割当テーブル500を更新した際に変更フラグをONにし、データ割当テーブル500に変更があると判定した際に変更フラグをOFFにする。
ステップS805において、データ割当テーブル500に変更があると判定した場合(ステップS805:Yes)、マスタ端末装置T1は、データ割当テーブル500を参照して、割当データの送受信を端末装置間にて実施する(ステップS806)。このとき、マスタ端末装置T1は、他端末装置に対して割当データの送受信の要求を出力するとともに、自端末装置の割当データに変更があった場合は、変更内容に応じて割当データを他端末装置へ出力する。なお、マスタ端末装置T1は、データ割当テーブル500の更新時に更新内容を記憶しておくこととする。これにより、マスタ端末装置T1は、共有データDの割当を行う。
ステップS806の後、またはステップS805においてデータ割当テーブル500に変更がないと判定した場合(ステップS805:No)、マスタ端末装置T1は、自端末装置に割り当てた処理を実行する(ステップS807)。そして、マスタ端末装置T1は、処理の実行が完了したか否かを判定し(ステップS808)、完了しない場合(ステップS808:No)、完了するまで待機する。
ステップS808において、処理の実行が完了した場合(ステップS808:Yes)、マスタ端末装置T1は、スレイブ端末装置T2へ割り当てたすべての処理の処理結果を受信したか否かを判定する(ステップS809)。そして、マスタ端末装置T1は、他端末装置へ割り当てたすべての処理の処理結果を受信していない場合(ステップS809:No)、受信するまで待機する。
ステップS809において、他端末装置へ割り当てたすべての処理の処理結果を受信した場合(ステップS809:Yes)、マスタ端末装置T1は、端末装置情報テーブル400およびデータ割当テーブル500を更新するテーブル更新処理を実行する(ステップS810)。テーブル更新処理の詳細は、図9に後述する。
その後、マスタ端末装置T1は、端末装置情報テーブル400を参照して、通信強度Stiの値が最も大きい端末装置101−iを、次のマスタ端末装置T1として決定する(ステップS811)。そして、マスタ端末装置T1は、次のマスタ端末装置T1として決定した端末装置101−iに対して、マスタ端末装置遷移情報を送信する(ステップS812)。マスタ端末装置遷移情報は、次の処理の割当の実行要求を含む情報であり、すなわち、マスタ端末装置T1へ遷移する旨を示す情報である。
ステップS812の後、マスタ端末装置T1は、次のマスタ端末装置T1として決定した端末装置101−iが自端末装置であるか否かを判定する(ステップS813)。そして、次の処理におけるマスタ端末装置T1が自端末装置である場合(ステップS813:Yes)、マスタ端末装置T1は、ステップS801へ移行する。また、次の処理におけるマスタ端末装置T1が自端末装置でない場合(ステップS813:No)、マスタ端末装置T1は、本フローチャートの一連の処理を終了する。マスタ端末装置T1は、本フローチャートの一連の処理を終了した場合、スレイブ端末装置T2へ遷移し、図10に後述するスレイブ端末処理を実行する。
上述したマスタ端末処理を実行することにより、マスタ端末装置T1は、端末装置情報テーブル400に基づいて共有データDを用いた処理を割り当てることができる。すなわち、端末装置101−iは、通信強度Stiに基づいて、共有データDを用いた処理を割り当てることができる。これにより、通信が途切れる可能性の極力低い端末装置101−iに処理を割り当てることができる。したがって、処理結果の同期ができずに処理停止する可能性を低減させることができる。
また、上述したマスタ端末処理を実行することにより、端末装置101−iは、端末装置情報テーブル400に基づいて共有データDを割り当てることができる。すなわち、端末装置101−iは、端末装置101−iと基地局102との通信強度Stiに基づいて、共有データDを割り当てることができる。これにより、通信が途切れる可能性の低い端末装置101−iに共有データDを割り当てることができる。したがって、共有データDにアクセスができなくなることを起因とした処理停止の可能性を低減させることができる。
(マスタ端末装置T1のテーブル更新処理手順)
図9は、実施の形態1にかかるマスタ端末装置T1のテーブル更新処理手順の一例を示すフローチャートである。テーブル更新処理は、マスタ端末装置T1のCPU301によって実行される処理である。
テーブル更新処理において、マスタ端末装置T1は、まず、自端末装置の通信強度Stiと通信速度Spiとを取得する(ステップS901)。そして、マスタ端末装置T1は、スレイブ端末装置T2の通信強度Stiと通信速度Spiとを受信し(ステップS902)、取得および受信した通信強度Stiと通信速度Spiとを参照して、端末装置情報テーブル400を作成する(ステップS903)。
ステップS903の後、マスタ端末装置T1は、端末装置情報テーブル400を参照して、データ割当テーブル500を作成する(ステップS904)。その後、マスタ端末装置T1は、作成したデータ割当テーブル500をスレイブ端末装置T2へ送信し(ステップS905)、本フローチャートにおける一連の処理を終了する。
上述したテーブル更新処理を実行することにより、マスタ端末装置T1は、端末装置情報テーブル400およびデータ割当テーブル500を、最新の通信状態における通信強度Stiおよび通信速度Spiによって更新することができる。これにより、マスタ端末装置T1は、最新の通信状態を考慮して処理の割当や共有データDの割当を行うことができる。
(スレイブ端末装置T2のスレイブ端末処理手順)
図10および図11は、実施の形態1にかかるスレイブ端末装置T2のスレイブ端末処理手順の一例を示すフローチャートである。スレイブ端末処理は、スレイブ端末装置T2のCPU301によって実行される処理である。
スレイブ端末処理において、スレイブ端末装置T2は、まず、データ割当テーブル500をマスタ端末装置T1から受信したか否かを判定する(ステップS1001)。そして、データ割当テーブル500を受信した場合(ステップS1001:Yes)、スレイブ端末装置T2は、受信したデータ割当テーブル500を記憶する(ステップS1002)。
ステップS1001においてデータ割当テーブル500を受信していない場合(ステップS1001:No)、またはステップS1002の後、スレイブ端末装置T2は、マスタ端末装置T1からマスタ端末装置遷移情報を受信したか否かを判定する(ステップS1003)。マスタ端末装置遷移情報を受信した場合(ステップS1003:Yes)、スレイブ端末装置T2は、本フローチャートの一連の処理を終了し、図8に上述したマスタ端末処理を実行する。これにより、スレイブ端末装置T2は、マスタ端末装置T1へ遷移する。
ステップS1003において、マスタ端末装置T1からマスタ端末装置遷移情報を受信しない場合(ステップS1003:No)、スレイブ端末装置T2は、マスタ端末装置T1から処理割当通知を受信したか否かを判定する(ステップS1004)。処理割当通知を受信していない場合(ステップS1004:No)、スレイブ端末装置T2は、自端末装置の通信強度Stiと通信速度Spiとを取得し(ステップS1005)、通信強度Stiが第1閾値以上であるか否かを判定する(ステップS1006)。
ステップS1006において、通信強度Stiが第1閾値以上である場合(ステップS1006:Yes)、スレイブ端末装置T2は、取得した自端末装置の通信強度Stiと通信速度Spiとをマスタ端末装置T1に送信する(ステップS1007)。ステップS1007の後、スレイブ端末装置T2は、ステップS1001へ移行する。また、ステップS1006において、通信強度Stiが第1閾値未満である場合(ステップS1006:No)、スレイブ端末装置T2は、ステップS1001へ移行する。
ステップS1004において、処理割当通知を受信していないスレイブ端末装置T2とは、処理を割り当てられていないスレイブ端末装置T2であり、端末装置情報テーブル400に第1閾値未満の通信強度Stiが登録されている端末装置101−iである。すなわち、ステップS1005〜S1007を実行することにより、第1閾値未満であったスレイブ端末装置T2の通信強度Stiが、第1閾値以上に回復した場合に、その旨をマスタ端末装置T1に通知することとしている。
ステップS1004において、マスタ端末装置T1から処理割当通知を受信した場合(ステップS1004:Yes)、スレイブ端末装置T2は、記憶したデータ割当テーブル500に変更があったか否かを判定する(ステップS1101)。このとき、スレイブ端末装置T2は、例えば、マスタ端末装置T1にアクセスし、変更フラグがONであるか否かを判定することにより、データ割当テーブル500に変更があるか否かを判定する。
ステップS1101において、データ割当テーブル500に変更があった場合(ステップS1101:Yes)、スレイブ端末装置T2は、割当データの送受信を端末装置間にて実施する(ステップS1102)。その際、スレイブ端末装置T2は、マスタ端末装置T1に記憶されているデータ割当テーブル500を参照して、割当データの送受信を端末装置間にて実施する。
ステップS1102の後、またはステップS1101においてデータ割当テーブル500に変更がないと判定した場合(ステップS1101:No)、スレイブ端末装置T2は、受信した処理割当通知に応じた処理を実行する(ステップS1103)。そして、スレイブ端末装置T2は、処理の実行が完了したか否かを判定し(ステップS1104)、完了しない場合(ステップS1104:No)、完了するまで待機する。
ステップS1104において、処理の実行が完了した場合(ステップS1104:Yes)、スレイブ端末装置T2は、処理の実行結果をマスタ端末装置T1に送信する(ステップS1105)。そして、スレイブ端末装置T2は、自端末装置の通信強度Stiと通信速度Spiとを取得する(ステップS1106)。その後、スレイブ端末装置T2は、取得した自端末装置の通信強度Stiと通信速度Spiとをマスタ端末装置T1に送信し(ステップS1107)、ステップS1001へ移行する。
上述したスレイブ端末処理を実行することにより、スレイブ端末装置T2は、マスタ端末装置T1によって通信強度Stiに基づいて割り当てられた処理を実行することができる。
以上説明した実施の形態1にかかるスケジューリング方法およびタスク処理方法によれば、端末装置101−iと基地局102との通信強度Stiに基づいて、共有データDを用いた処理を割り当てることとした。これにより、通信が安定している端末装置101−iに処理を割り当てることができる。したがって、処理実行中の端末装置の通信が途切れる可能性を低減させ、処理結果を同期できないことを起因とした処理結果の欠落を回避し、共有データDを用いた処理を完遂することができる。
また、実施の形態1にかかるスケジューリング方法およびタスク処理方法によれば、端末装置101−iと基地局102との通信強度Stiに基づいて、共有データDを割り当てることとした。これにより、通信が安定している端末装置101−iに共有データDを割り当てることができる。したがって、共有データDを記憶する端末装置の通信が途切れないため、共有データDにアクセスできないことを起因とした処理結果の欠落を回避し、共有データDを用いた処理を完遂することができる。
また、実施の形態1にかかるスケジューリング方法およびタスク処理方法によれば、通信強度Stiが第1閾値以上である端末装置101−iに対して、処理を割り当てることとした。これにより、通信が途切れる可能性がより低い端末装置101−iに処理を割り当てることができる。したがって、処理結果を同期できないことを起因とした処理結果の欠落の可能性をより低減させ、処理結果を同期できないことを起因とした処理結果の欠落を回避し、共有データDを用いた処理を完遂することができる。
また、実施の形態1にかかるスケジューリング方法およびタスク処理方法によれば、通信強度Stiが第1閾値以上である端末装置101−iに対して、共有データDを割り当てることとした。これにより、通信が途切れる可能性がより低い端末装置101−iに共有データDを割り当てることができ、共有データDにアクセスできないことを起因とした処理結果の欠落の可能性を低減させることができ、共有データDを用いた処理を完遂することができる。
また、実施の形態1にかかるスケジューリング方法およびタスク処理方法によれば、複数の端末装置に処理を割り当てることにより、処理によるCPU301にかかる負荷を分散することができる。また、複数の端末装置に共有データDを割り当てることにより、共有データDにアクセスする際の通信負荷を分散することができる。
また、実施の形態1にかかるスケジューリング方法およびタスク処理方法によれば、通信速度Spiの値が大きい端末装置101−iほど、大きなサイズの共有データDを割り当てることとした。これにより、共有データDの送受信の時間の短縮化を図ることができる。したがって、処理の実行中における通信強度Stiの低下幅が極力小さいうちに、効率的に処理を実行することができる。
<実施の形態2>
次に、本発明にかかるスケジューリング方法およびタスク処理方法の実施の形態2について説明する。実施の形態2では、マスタ端末装置T1が、第1閾値未満のスレイブ端末装置T2に対しても処理を割り当てる点が実施の形態1と異なる。また、実施の形態2では、マスタ端末装置T1から処理が割り当てられたスレイブ端末装置T2の通信強度Stiが第2閾値よりも下回った場合に、割り当てられた処理をマスタ端末装置T1が引き継ぐ点が実施の形態1と異なる。これにより、処理による負荷を分散させるとともに、いずれかの端末装置101−iの通信状態が悪化した場合にも、共有データDを用いた処理を完遂することができる。なお、実施の形態1で説明した箇所と同一箇所については説明を省略する。
(端末装置情報テーブル400の記憶内容)
図12は、実施の形態2における端末装置情報テーブル400の記憶内容の一例を示す説明図である。図12において、端末装置101−iが有する端末装置情報テーブル400は、図4に上述したように、端末装置ID、通信強度Sti、通信速度Spi、データ比率および処理割当可能フラグのフィールドを有する。図示するように、実施の形態2の端末装置情報テーブル400においては、通信強度Stiが第1閾値未満である端末装置101−4の端末装置特性データ400−4であっても、処理割当可能フラグはONである。
(マスタ端末装置T1およびスレイブ端末装置T2の機能の一例)
次に、図7を用いて、実施の形態2にかかるマスタ端末装置T1およびスレイブ端末装置T2の機能の一例について説明する。まず、実施の形態1にかかるマスタ端末装置T1とは異なる機能を有する機能部(受信部711、作成部712、処理割当部713、実行部714)について説明する。
受信部711は、第3装置の通信強度Stiの変化に基づいて第3装置から処理の実行コンテキストを受信する。実行コンテキストは、CPUのレジスタの一つであるプログラムカウンタの値、変数の値等が格納される汎用レジスタの値、またスタックポインタの値、などといった、アプリを続行するために用いられるデータである。具体的に、例えば、受信部711が、スレイブ端末装置T2の送信部724から送信される実行コンテキストを受信する。
作成部712は、通信強度Stiが第1閾値未満である端末装置101−iの処理割当可能フラグにONを登録する。具体的には、例えば、作成部712は、図12の端末情報装置テーブル400の端末装置特性データ400−4において、通信強度St3が20[%]未満であるため、処理割当可能フラグにONを登録する。
処理割当部713は、複数の端末装置101−1〜101−mに含まれる第3装置の通信強度Stiが第1閾値より小さいときに第3装置に処理を割り当てる。具体的に、例えば、処理割当部713が、端末装置情報テーブル400を参照して、処理割当可能フラグが「ON」である端末装置101−i、すなわち、通信強度Stiが第1閾値未満である端末装置101−iに処理を割り当てる。図12の例では、処理割当部713は、端末装置101−4に処理を割り当てる。
実行部714は、受信部711によって受信された実行コンテキストに基づいて処理を実行する。具体的に、例えば、実行部714は、受信された実行コンテキストに基づいて、第3装置に割り当てられた処理のうち、実行されていない処理を特定し、特定した処理を実行する。これにより、マスタ端末装置T1は、通信状態が悪化したスレイブ端末装置T2に割り当てた処理を、続行することができる。
このように、実施の形態2にかかるマスタ端末装置T1は、共有データDを用いた処理を割り当てたいずれかの端末装置101−iから、実行途中の処理の情報(例えば、実行コンテキスト)を受信する。その際、例えば、マスタ端末装置T1は、第1閾値よりも低い通信強度Stiを有する端末装置101−iから、実行途中の処理の情報を受信する。
そして、マスタ端末装置T1は、受信された実行途中の処理の情報に基づいて、実行途中の処理の情報の送信元の端末装置とは異なる端末装置に、実行途中の処理を割り当てる。例えば、マスタ端末装置T1は、自端末装置に、実行途中の処理を割り当てる。これにより、一の端末装置が途中まで実行した処理を、他端末装置が引き継いで実行することができる。したがって、該一の端末装置の通信状態が悪化した場合にも、処理を継続することができる。
次に、実施の形態1にかかるスレイブ端末装置T2とは異なる機能を有する機能部(取得部723、送信部724)について説明する。
取得部723は、スレイブ端末装置T2がタスクを実行するとき、所定周期でスレイブ端末装置T2の通信強度Stiを取得する。そして、送信部724は、実行部722によって処理が実行されており、取得部723によって取得された通信強度Stiが第1閾値より小さいとき、通信強度Stiをマスタ端末装置T1に送信する。これにより、スレイブ端末装置T2は、割り当てられた処理の実行中に通信状態が悪化した場合に、マスタ端末装置T1に対して、該スレイブ端末装置T2に対する処理の割当を中止させることができる。
また、送信部724は、第2装置がタスクを実行するとき、第2装置の通信強度Stiが、第2閾値より小さいときにタスクの実行コンテキストを第1装置に送信する。第2閾値は、本実施の形態において5[%]とし、第1閾値と異なる値とするが、これに限るものではなく、同一の値であってもよい。具体的に、例えば、送信部724が、まず、スレイブ端末装置T2の通信強度Stiが第2閾値未満であるか否かを判定し、スレイブ端末装置T2の通信強度Stiが第2閾値未満であると判定した場合に、タスクの実行コンテキストを第1装置に送信する。これにより、通信強度Stiが第2閾値未満であり、処理が割り当てられたスレイブ端末装置T2の通信状態が悪化した場合にも、他端末装置に処理を継続させることができ、処理を続行することができる。
このように、実施の形態2にかかるスレイブ端末装置T2は、自端末装置の通信強度Stiを取得し、取得した通信強度Stiが第2閾値未満であるか否かを判定する。そして、スレイブ端末装置T2は、割り当てられた処理の実行中における自端末装置の通信強度Stiが第2閾値未満である場合に、実行途中の処理の情報を、他端末装置に送信する。これにより、一の端末装置が途中まで実行した処理を、他端末装置が引き継いで実行することができる。したがって、該一の端末装置の通信状態が悪化した場合にも、処理を継続することができる。
(マスタ端末装置T1のマスタ端末処理手順)
図13および図14は、実施の形態2にかかるマスタ端末装置T1のマスタ端末処理手順の一例を示すフローチャートである。マスタ端末処理は、マスタ端末装置T1のCPU301によって実行される処理である。
マスタ端末処理において、マスタ端末装置T1は、まず、実行可能状態であるタスクが存在するか否かを判定する(ステップS1301)。実行可能状態であるタスクが存在しない場合(ステップS1301:No)、マスタ端末装置T1は、スレイブ端末装置T2から通信強度Stiと通信速度Spiとを受信したか否かを判定する(ステップS1302)。
スレイブ端末装置T2から通信強度Stiと通信速度Spiとを受信した場合(ステップS1302:Yes)、マスタ端末装置T1は、端末装置情報テーブル400の端末装置特性データ400−iを更新し(ステップS1303)、ステップS1301へ移行する。また、ステップS1302において、スレイブ端末装置T2から通信強度Stiと通信速度Spiとを受信していない場合(ステップS1302:No)、マスタ端末装置T1は、ステップS1301へ移行する。
ステップS1301において、実行可能状態であるタスクが存在する場合(ステップS1301:Yes)、マスタ端末装置T1は、端末装置情報テーブル400を参照して、処理を割り当てるスレイブ端末装置T2へ、処理割当通知を送信する(ステップS1304)。また、このとき、マスタ端末装置T1は、自端末装置に割り当てる処理を実行キューに登録する。
その後、マスタ端末装置T1は、データ割当テーブル500に変更があるか否かを判定する(ステップS1305)。このとき、マスタ端末装置T1は、例えば、データ割当テーブル500を変更した旨を示す変更フラグがONであるか否かを判定することにより、データ割当テーブル500に変更があるか否かを判定する。その場合、例えば、マスタ端末装置T1は、データ割当テーブル500を更新した際に変更フラグをONにし、データ割当テーブル500に変更があると判定した際に変更フラグをOFFにする。
ステップS1305において、データ割当テーブル500に変更があると判定した場合(ステップS1305:Yes)、マスタ端末装置T1は、データ割当テーブル500を参照して、割当データの送受信を端末装置間にて実施する(ステップS1306)。これにより、マスタ端末装置T1は、共有データDの割当を行う。
ステップS1306の後、また、ステップS1305においてデータ割当テーブル500に変更がないと判定した場合(ステップS1305:No)、マスタ端末装置T1は、自端末装置に割り当てた処理を実行する(ステップS1307)。そして、マスタ端末装置T1は、処理の実行が完了したか否かを判定し(ステップS1308)、完了しない場合(ステップS1308:No)、スレイブ端末装置T2から実行コンテキストを受信したか否かを判定する(ステップS1309)。
ステップS1309において、スレイブ端末装置T2から実行コンテキストを受信した場合(ステップS1309:Yes)、マスタ端末装置T1は、受信した実行コンテキストに基づいて、処理を実行キューに登録する(ステップS1310)。このとき、マスタ端末装置T1は、実行コンテキストの送信元のスレイブ端末装置T2に割り当てていた処理のうち、スレイブ端末装置T2に実行されていない処理を実行キューに登録する。
ステップS1310の後、マスタ端末装置T1は、ステップS1308に移行する。また、ステップS1309において、スレイブ端末装置T2から実行コンテキストを受信しない場合(ステップS1309:No)、マスタ端末装置T1は、ステップS1308に移行する。
ステップS1308において、自端末装置に割り当てた処理の実行が完了した場合(ステップS1308:Yes)、マスタ端末装置T1は、スレイブ端末装置T2に割り当てていた処理が実行キューに登録されているか否かを判定する(ステップS1401)。スレイブ端末装置T2に割り当てていた処理が実行キューに登録されている場合(ステップS1401:Yes)、マスタ端末装置T1は、実行キューに登録されている処理を実行する(ステップS1402)。すなわち、マスタ端末装置T1は、スレイブ端末装置T2に割り当てていた処理のうち、スレイブ端末装置T2によって実行されていない処理を、スレイブ端末装置T2から引き継いで実行する。その後、マスタ端末装置T1は、ステップS1402において実行した処理の実行を完了したか否かを判定し(ステップS1403)、完了しない場合(ステップS1403:No)、完了するまで待機する。
ステップS1403において、処理の実行を完了した場合(ステップS1403:Yes)、マスタ端末装置T1は、他端末装置へ割り当てたすべての処理の処理結果を受信したか否かを判定する(ステップS1404)。また、ステップS1401においてスレイブ端末装置T2に割り当てた処理が実行キューに登録されていない場合(ステップS1401:No)、マスタ端末装置T1は、ステップS1404へ移行する。
ステップS1404において、他端末装置へ割り当てたすべての処理の処理結果を受信していない場合(ステップS1404:No)、マスタ端末装置T1は、スレイブ端末装置T2から実行コンテキストを受信したか否かを判定する(ステップS1405)。スレイブ端末装置T2から実行コンテキストを受信した場合(ステップS1405:Yes)、マスタ端末装置T1は、実行コンテキストに基づいて、スレイブ端末装置T2に割り当てていた処理を実行する(ステップS1406)。その後、マスタ端末装置T1は、ステップS1406において実行した処理の実行を完了したか否かを判定し(ステップS1407)、完了しない場合(ステップS1407:No)、完了するまで待機する。
ステップS1405において、スレイブ端末装置T2から実行コンテキストを受信しない場合(ステップS1405:No)、マスタ端末装置T1は、ステップS1404へ移行する。また、ステップS1407において処理の実行を完了した場合(ステップS1407:Yes)、マスタ端末装置T1は、ステップS1404へ移行する。
ステップS1404において、他端末装置へ割り当てたすべての処理の処理結果を受信した場合(ステップS1404:Yes)、マスタ端末装置T1はテーブル更新処理を実行する(ステップS1408)。
その後、マスタ端末装置T1は、端末装置情報テーブル400を参照して、通信強度Stiの値が最も大きい端末装置101−iを、次のマスタ端末装置T1として決定する(ステップS1409)。そして、マスタ端末装置T1は、次のマスタ端末装置T1として決定した端末装置101−iに対して、マスタ端末装置遷移情報を送信する(ステップS1410)。
ステップS1410の後、マスタ端末装置T1は、次のマスタ端末装置T1として決定した端末装置101−iが自端末装置であるか否かを判定する(ステップS1411)。そして、次の処理におけるマスタ端末装置T1が自端末装置である場合(ステップS1411:Yes)、マスタ端末装置T1は、ステップS1301へ移行する。また、次の処理におけるマスタ端末装置T1が自端末装置でない場合(ステップS1411:No)、マスタ端末装置T1は、本フローチャートの一連の処理を終了する。マスタ端末装置T1は、本フローチャートの一連の処理を終了した場合、スレイブ端末装置T2へ遷移し、上述したスレイブ端末処理を実行する。
上述したマスタ端末処理を実行することにより、マスタ端末装置T1は、スレイブ端末装置T2から受信した実行コンテキストに基づいて処理を実行することとした。これにより、スレイブ端末装置T2に割り当てていた処理を継続して実行することができる。
(スレイブ端末装置T2のスレイブ実行中処理手順)
図15は、実施の形態2にかかるスレイブ端末装置T2のスレイブ実行中処理手順の一例を示すフローチャートである。図15に示すスレイブ実行中処理は、図11のステップS1104において、処理の実行が完了しない場合に(ステップS1104:No)、スレイブ端末装置T2によって実行される処理である。
スレイブ実行中処理において、スレイブ端末装置T2は、端末装置情報テーブル400における自端末装置の通信強度Stiが第1閾値未満であるか否かを判定する(ステップS1501)。その際、スレイブ端末装置T2は、マスタ端末装置T1の記憶領域にアクセスし、該記憶領域に記憶されている端末装置情報テーブル400を参照して、自端末装置の通信強度Stiが第1閾値未満であるか否かを判定する。
ステップS1501において、端末装置情報テーブル400における自端末装置の通信強度Stiが第1閾値未満である場合(ステップS1501:Yes)、スレイブ端末装置T2は、ステップS1502を行う。ステップS1502において、スレイブ端末装置T2は、自端末装置の通信強度Stiと通信速度Spiとを取得する(ステップS1502)。ステップS1501において、端末装置情報テーブル400における自端末装置の通信強度Stiが第1閾値未満である場合とは、スレイブ端末装置T2が、第1閾値未満の通信強度Stiを有し、処理が割り当てられた端末装置101−4であることを示す。ステップS1502の後、スレイブ端末装置T2は、取得した通信強度Stiが第2閾値未満であるか否かを判定する(ステップS1503)。
ステップS1503において、取得した通信強度Stiが第2閾値未満である場合(ステップS1503:Yes)、スレイブ端末装置T2は、実行コンテキストをマスタ端末装置T1へ送信する(ステップS1504)。ステップS1503において、取得した通信強度Stiが第2閾値未満である場合とは、すなわち、端末装置101−4であるスレイブ端末装置T2の通信状態が悪化していることを示している。
ステップS1504の後、スレイブ端末装置T2は、自端末装置の通信強度Stiと通信速度Spiとをマスタ端末装置T1に送信し(ステップS1505)、実行中の処理を停止し(ステップS1506)、ステップS1104へ移行する。
また、ステップS1501において、端末装置情報テーブル400における自端末装置の通信強度Stiが第1閾値以上である場合(ステップS1501:No)、スレイブ端末装置T2は、ステップS1104へ移行する。また、ステップS1503において、取得した通信強度Stiが規定の第2閾値以上であると判定された場合(ステップS1503:No)、スレイブ端末装置T2は、ステップS1104へ移行する。
上述したスレイブ実行中処理を実行することにより、スレイブ端末装置T2は、通信強度Stiが第2閾値を下回る場合に、マスタ端末装置T1に対して、実行コンテキストを送信することができる。これにより、通信状態が悪化したスレイブ端末装置T2が実行中の処理を、マスタ端末装置T1に引き継がせることができる。したがって、通信強度Stiが第2閾値を下回るまでは処理による負荷を分散できるとともに、通信強度Stiが第2閾値を下回った場合にも、処理を続行することができる。
以上説明した実施の形態2にかかるスケジューリング方法およびタスク処理方法によれば、マスタ端末装置T1は、スレイブ端末装置T2から受信した実行コンテキストに基づいた処理を行うこととした。これにより、マスタ端末装置T1は、スレイブ端末装置T2に割り当てていた処理を引き継いで実行することができる。
また、実施の形態2にかかるスケジューリング方法およびタスク処理方法によれば、スレイブ端末装置T2は、通信強度Stiが第2閾値を下回る場合に、マスタ端末装置T1に対して、実行コンテキストを送信することができる。これにより、通信状態が悪化したスレイブ端末装置T2が実行中の処理を、マスタ端末装置T1に引き継がせることができる。したがって、通信強度Stiが第2閾値を下回るまでは処理による負荷を分散できるとともに、通信強度Stiが第2閾値を下回った場合にも、処理を続行し、完遂することができる。
<実施の形態3>
次に、本発明にかかるスケジューリング方法およびタスク処理方法の実施の形態3について説明する。実施の形態3では、通信強度Stiが第1閾値未満である端末装置101−iにも共有データDを割り当てる点が実施の形態1および実施の形態2と異なる。その際、通信強度Stiが第1閾値未満である端末装置101−iに割り当てた共有データDのバックアップデータを、他端末装置に記憶する。これにより、他端末装置にアクセスすることを起因としたネットワークの負荷を軽減させるとともに、通信強度Stiが第1閾値未満である端末装置101−iの通信状態が悪化した場合にも、バックアップデータを用いた処理を続行し、完遂することができる。なお、実施の形態1および実施の形態2で説明した箇所と同一箇所については説明を省略する。
(端末装置情報テーブル400の記憶内容)
図16は、実施の形態3における端末装置情報テーブル400の記憶内容の一例を示す説明図である。図16において、端末装置101−iが有する端末装置情報テーブル400は、図4に上述したように、端末装置ID、通信強度Sti、通信速度Spi、データ比率および処理割当可能フラグのフィールドを有する。
図示するように、実施の形態3の端末装置情報テーブル400においては、通信強度Stiが第1閾値未満である端末装置101−4の端末装置特性データ400−4であっても、データ比率が「1」である。また、通信強度Stiが第1閾値以上である端末装置101−3の端末装置特性データ400−3におけるデータ比率は「11(10+1)」である。データ比率が「11(10+1)」であるとは、通信速度Spiの比率に応じて割り当てられるデータ比率「10」と、他端末装置のバックアップ分のデータ比率「1」とに対応する共有データDを記憶することを示している。
(データ割当テーブル500の記憶内容)
図17は、実施の形態3におけるデータ割当テーブル500の記憶内容の一例を示す説明図である。図17において、端末装置101−iが有するデータ割当テーブル500は、割当データ配列、割当端末装置IDおよび割当区分のフィールドを有する。各フィールドに情報を設定することで、データ割当特性データ500−1〜500−Pがレコードとして記憶されている。
割当データ配列および割当端末装置IDは、図5に上述した通りである。割当区分は、割り当てられる割当データの区分を示している。例えば、通信速度Spiに応じて割り当てられる割当データの割当区分は「Main」であり、バックアップとして割り当てられる割当データの割当区分は「Sub」である。
一例として、データ割当特性データ500−1を例に挙げると、割当データ配列「array#0」、割当端末装置ID「#1」、割当区分「Main」が記憶されている。また、通信強度St4が第1閾値未満であるため、端末装置101−4に割り当てられる割当データ配列「array#N」は、データ割当特性データ500−Pに示すように、割当端末装置ID「#3」の端末装置101−3にも記憶される。その際の割当区分は「Sub」である。
(共有データDの割当方法の一例)
図18は、実施の形態3における共有データDの割当方法の一例を示す説明図である。図17に示す共有データDの割当方法において、まず、マスタ端末装置T1は、各端末装置と基地局102との通信強度Stiと、各端末装置における通信速度Spiが取得する。具体的に、マスタ端末装置T1は、図6に上述した(1)〜(5)のように、各端末装置と基地局102との通信強度Stiと、各端末装置における通信速度Spiとを取得する。
次に、マスタ端末装置T1は、端末装置101−iの通信速度Spiの比率に応じた割合にて、共有データDを各端末装置に割り当てる。具体的には、(6)に示すように、割当データD1と割当データD2と割当データD3と割当データD4の比率は、通信速度Sp1と通信速度Sp2と通信速度Sp3と通信速度Sp4との比率である。Sp1:Sp2:Sp3:Sp4は、10[Mbps]:10[Mbps]:1[Mbps]:100[kbps]である。このため、割当データD1と割当データD2と割当データD3と割当データD4との比率は、100:100:10:1と求められる。
ここで、通信強度Stiが第1閾値未満である端末装置101−4に割り当てられる割当データD4は、端末装置101−4以外の端末装置101−iにバックアップとして割り当てられる。このとき、割当データD4は、最も通信強度Stiが高い端末装置101−3にバックアップとして割り当てられる。これにより、通信が途切れる可能性が最も低い端末装置101−3にバックアップを持たせることができ、処理の停止の可能性をより低くすることができる。
マスタ端末装置T1は、ここで求められた比率を端末装置情報テーブル400に登録する。そして、マスタ端末装置T1は、端末装置情報テーブル400に応じてデータ割当テーブル500を作成し、作成したデータ割当テーブル500に応じて共有データDを各端末装置に割り当てる。
(マスタ端末装置T1およびスレイブ端末装置T2の機能の一例)
次に、図7を用いて、実施の形態3にかかるマスタ端末装置T1およびスレイブ端末装置T2の機能の一例について説明する。まず、実施の形態1および実施の形態2にかかるマスタ端末装置T1とは異なる機能を有する機能部(作成部712、処理割当部713、データ割当部715)について説明する。
作成部712は、第1閾値より通信強度Stiが低い端末装置101−iに割り当てる割当データのバックアップデータを割り当てる旨を示す情報を、端末装置情報テーブル400における第4装置に対応する端末装置情報特性データに登録する。例えば、作成部712は、図16における第4装置に対応する端末装置特性データ400−3のように、バックアップデータを考慮したデータ比率「11(10+1)」を登録する。
そして、作成部712は、バックアップデータを考慮したデータ割当テーブル500を作成する。具体的に、作成部712は、第1閾値より低い通信強度Stiの端末装置101−iに記憶される割当データ配列を、第4装置に対応する割当データ配列として登録する。例えば、割当データ配列「array#N」に対して、割当区分「Main」、割当端末装置ID「#4」のデータ割当特性データ500−(P−1)と、割当区分「Sub」、割当端末装置ID「#3」のデータ割当特性データ500−Pが登録される。
データ割当部715は、処理を割り当てるときに複数の端末装置に含まれる第4装置にデータを割り当てる。具体的に、データ割当部715は、第1閾値より通信強度Stiが低い端末装置101−iに共有データDを割り当てるとともに、該端末装置に割り当てた割当データと同一の割当データを、第4装置に割り当てることとする。
その際、例えば、データ割当部715は、作成部712によって作成されるデータ割当テーブル500を参照して、第1閾値より通信強度Stiが低い端末装置101−iに割り当てた割当データと同一の割当データを、第4装置に割り当てる。具体的に、例えば、データ割当部715は、第1閾値より通信強度Stiが低い端末装置101−4に共有データDを割り当てるとともに、同一の割当データを、端末装置101−4以外の端末装置101−1〜101−3のいずれかに割り当てる。
これにより、第1閾値より通信強度Stiが低い端末装置101−iの割当データのバックアップを、他端末装置に記憶させることができる。したがって、第1閾値より通信強度Stiが低い端末装置101−iの通信状態が悪化した場合にも、共有データDにアクセスできなくなる可能性を低減させることができる。また、その際、バックアップデータを割り当てる端末装置101−iの通信強度Stiが第1閾値以上である場合、バックアップデータにアクセスできなくなる可能性を低減させることができる。
また、データ割当部715は、第1閾値より通信強度Stiが低い端末装置101−iに共有データDを割り当てるとともに、該端末装置に割り当てた割当データと同一の割当データを、通信強度Stiが最も高い端末装置101−iに割り当てることとしてもよい。具体的に、例えば、データ割当部715は、第1閾値より通信強度Stiが低い端末装置101−4に共有データDを割り当てるとともに、同一の割当データを、端末装置101−3に割り当てる。
これにより、第1閾値より通信強度Stiが低い端末装置101−iに割り当てる割当データを、通信状態が悪化する可能性の最も低い端末装置101−iにバックアップすることができる。したがって、第1閾値より通信強度Stiが低い端末装置101−iの通信状態が悪化した場合にも、バックアップデータにアクセスできなくなる可能性を極力低減させることができる。
処理割当部713は、実行コンテキストを第4装置に送信する。具体的に、処理割当部713は、受信部711によってスレイブ端末装置T2から受信された実行コンテキストを、バックアップデータを記憶する端末装置101−iに送信する。これにより、スレイブ端末装置T2に割り当てた処理を、バックアップデータを記憶する端末装置101−iに再割当することができる。したがって、スレイブ端末装置T2の通信状態が悪化した場合にも、バックアップデータを記憶する端末装置101−iに処理を続行させることができる。
このように、実施の形態3におけるマスタ端末装置T1は、第1閾値より通信強度Stiが低い端末装置101−iに共有データDを割り当てる。そして、該端末装置101−iに割り当てた割当データと同一のデータを、マスタ端末装置T1は、該端末装置101−iとは異なる端末装置101−iに割り当てる。これにより、共有データDを記憶している端末装置101−iの通信状態が悪化した場合にも、処理を実行中の端末装置101−iは、バックアップデータにアクセスすることにより、処理の停止を回避することができる。
その際、具体的に、マスタ端末装置T1は、割当データと同一のデータを、第1閾値より通信強度Stiが高い端末装置101−iに割り当てる。例えば、マスタ端末装置T1は、端末装置101−4に割り当てた割当データと同一のデータを、第1閾値より通信強度Stiが高い端末装置101−1〜101−3のいずれかに割り当てる。これにより、バックアップデータにアクセスできなくなる可能性を低減させることができる。
また、マスタ端末装置T1は、割当データと同一のデータを、通信強度Stiの値が最も大きい端末装置101−iに割り当てることとしてもよい。例えば、マスタ端末装置T1は、端末装置101−4に割り当てた割当データと同一のデータを、通信強度Stiの値が最も大きい端末装置101−3に割り当てる。これにより、バックアップデータにアクセスできなくなる可能性をより低減させることができる。
また、マスタ端末装置T1は、共有データDを用いた処理を割り当てたいずれかの端末装置101−iから、実行途中の処理の情報(例えば、実行コンテキスト)を受信する。その際、例えば、マスタ端末装置T1は、第1閾値よりも通信強度Stiの低いいずれかの端末装置101−iから、実行途中の処理の情報を受信する。そして、マスタ端末装置T1は、受信した実行途中の処理の情報に基づいて、割当データと同一のデータを記憶する端末装置101−iに実行途中の処理を割り当てる。これにより、他端末装置にアクセスすることを起因としたネットワークの負荷を軽減させるとともに、通信強度Stiが第1閾値未満である端末装置101−iの通信状態が悪化した場合にも、バックアップデータを用いた処理を続行し、完遂することができる。
次に、実施の形態1および実施の形態2にかかるスレイブ端末装置T2とは異なる機能を有する機能部(受信部721、実行部722)について説明する。
受信部721は、処理割当部713から送信される実行コンテキストを受信する。そして、実行部722は、受信部721によって受信された実行コンテキストに基づいて、処理を実行する。これにより、スレイブ端末装置T2は、通信状態が悪化した他のスレイブ端末装置T2に割り当てられた処理を続行することができる。
このように、実施の形態3におけるスレイブ端末装置T2は、マスタ端末装置T1から割り当てられた実行途中の処理を実行する。
(マスタ端末装置T1のマスタ実行中処理手順)
図19は、実施の形態3にかかるマスタ端末装置T1のマスタ実行中処理手順の一例を示すフローチャートである。図19に示すマスタ実行中処理は、図8のステップS808において、処理の実行が完了しない場合に(ステップS808:No)、マスタ端末装置T1のCPU301によって実行される処理である。また、図19に示すマスタ端末処理は、図8のステップS809において、割り当てた処理の処理結果を受信しない場合に(ステップS809:No)、マスタ端末装置T1のCPU301によって実行される処理である。
マスタ実行中処理において、マスタ端末装置T1は、スレイブ端末装置T2から実行コンテキストを受信したか否かを判定する(ステップS1901)。スレイブ端末装置T2から実行コンテキストを受信した場合(ステップS1901:Yes)、マスタ端末装置T1は、スレイブ端末装置T2に割り当てていた処理を、バックアップデータを記憶している端末装置101−iに再割当する(ステップS1902)。具体的に、マスタ端末装置T1は、受信した実行コンテキストを、バックアップデータを記憶している端末装置101−3に送信することにより、割り当てていた処理を再割当する。
ステップS1902の後、マスタ端末装置T1は、ステップS808またはステップS809へ移行する。このとき、マスタ端末装置T1は、ステップS808:Noの後にマスタ実行中処理を実行した場合、ステップS808へ移行する。また、マスタ端末装置T1は、ステップS809:Noの後にマスタ実行中処理を実行した場合、ステップS809へ移行する。
また、ステップS1901において、スレイブ端末装置T2から実行コンテキストを受信しない場合(ステップS1901:No)、マスタ端末装置T1は、ステップS808またはステップS809へ移行する。このとき、同様に、マスタ端末装置T1は、ステップS808:Noの後にマスタ実行中処理を実行した場合、ステップS808へ移行する。また、マスタ端末装置T1は、ステップS809:Noの後にマスタ実行中処理を実行した場合、ステップS809へ移行する。
上述したマスタ実行中処理を実行することにより、マスタ端末装置T1は、スレイブ端末装置T2から実行コンテキストを受信した場合に、該スレイブ端末装置T2に割り当てていた処理を、バックアップを記憶している端末装置101−iに再割当することとした。これにより、バックアップを記憶している端末装置101−iに、スレイブ端末装置T2が実行していた処理を引き継がせることができる。
(スレイブ端末装置T2のスレイブ実行中処理手順)
図20は、実施の形態3にかかるスレイブ端末装置T2のスレイブ実行中処理手順の一例を示すフローチャートである。図20に示すスレイブ実行中処理は、図11のステップS1104において、処理の実行が完了しない場合に(ステップS1104:No)、スレイブ端末装置T2に実行される処理である。
スレイブ実行中処理において、スレイブ端末装置T2は、マスタ端末装置T1から処理の再割当を受け付けたか否かを判定する(ステップS2001)。具体的には、スレイブ端末装置T2は、マスタ端末装置T1から、実行コンテキストを受信したか否かを判定することにより、処理の再割当を受け付けたか否かを判定する。
ステップS2001において、マスタ端末装置T1から処理の再割当を受け付けた場合(ステップS2001:Yes)、スレイブ端末装置T2は、再割当された処理を実行キューに登録し(ステップS2002)、ステップS1104へ移行する。
また、ステップS2001において、マスタ端末装置T1から処理の再割当を受け付けない場合(ステップS2001:No)、スレイブ端末装置T2は、端末装置情報テーブル400における自端末装置の通信強度Stiが第1閾値未満であるか否かを判定する(ステップS2003)。
ステップS2003において、端末装置情報テーブル400における自端末装置の通信強度Stiが第1閾値未満である場合(ステップS2003:Yes)、自端末装置の通信強度Stiと通信速度Spiとを取得する(ステップS2004)。そして、スレイブ端末装置T2は、取得した通信強度Stiが規定の第2閾値未満であるか否かを判定する(ステップS2005)。
ステップS2005において、取得した通信強度Stiが規定の第2閾値未満であると判定された場合(ステップS2005:Yes)、スレイブ端末装置T2は、実行コンテキストをマスタ端末装置T1へ送信する(ステップS2006)。そして、スレイブ端末装置T2は、バックアップデータを、自端末装置の記憶されている割当データに更新し(ステップS2007)、実行中の処理を停止し(ステップS2008)、ステップS1104へ移行する。ステップS2007において、スレイブ端末装置T2は、図17に示したデータ割当テーブル500を参照して、バックアップデータを記憶する端末装置101−iを特定する。そして、スレイブ端末装置T2は、特定した端末装置101−iに対して、記憶している割当データを送信することにより、バックアップデータを更新する。これにより、バックアップデータを記憶する端末装置101−iに、最新の共有データDを用いた処理を続行させることができる。
また、ステップS2003において、端末装置情報テーブル400における自端末装置の通信強度Stiが第1閾値以上である場合(ステップS2003:No)、スレイブ端末装置T2は、ステップS1104へ移行する。また、ステップS2005において、取得した通信強度Stiが規定の第2閾値以上であると判定された場合(ステップS2005:No)、スレイブ端末装置T2は、ステップS1104へ移行する。
上述したスレイブ実行中処理を実行することにより、スレイブ端末装置T2は、マスタ端末装置T1から処理を再割当された場合に、再割当された処理を実行キューに登録することができる。
また、上述したスレイブ実行中処理を実行することにより、スレイブ端末装置T2は、通信強度Stiが第2閾値を下回った場合に、実行コンテキストをマスタ端末装置T1に送信し、バックアップされている共有データDを更新することとした。これにより、処理による共有データDの変更を考慮して、バックアップしている端末装置101−iに、処理を継続させることができる。
(スレイブ端末装置T2の再割当実行処理手順)
図21は、実施の形態3にかかるスレイブ端末装置T2の再割当実行処理手順の一例を示すフローチャートである。図20に示す再割当実行処理は、図11のステップS1104において、処理の実行が完了した場合に(ステップS1104:Yes)、スレイブ端末装置T2に実行される処理である。
再割当実行処理において、スレイブ端末装置T2は、マスタ端末装置T1から再割当された処理が実行キューに登録されているか否かを判定する(ステップS2101)。マスタ端末装置T1から再割当された処理が実行キューに登録されている場合(ステップS2101:Yes)、スレイブ端末装置T2は、再割当された処理を実行する(ステップS2102)。
そして、スレイブ端末装置T2は、再割当された処理の実行を完了したか否かを判定し(ステップS2103)、完了しない場合(ステップS2103:No)、完了するまで待機する。再割当された処理の実行を完了した場合(ステップS2103:Yes)、スレイブ端末装置T2は、ステップS1105へ移行する。また、ステップS2101において、マスタ端末装置T1から再割当された処理が実行キューに登録されていない場合(ステップS2101:No)、スレイブ端末装置T2は、ステップS1105へ移行する。
上述した再割当実行処理を実行することにより、スレイブ端末装置T2は、再割当された処理を実行することができる。これにより、通信強度Stiが第2閾値を下回ったスレイブ端末装置T2に割り当てられていた処理を、該スレイブ端末装置T2に割り当てられた割当データのバックアップデータを記憶する端末装置101−iによって、継続することができる。したがって、通信強度Stiが第2閾値を下回るまでは、処理による負荷の分散および端末装置間のアクセスによるネットワークの負荷の分散を図るとともに、通信強度Stiが第2閾値を下回った後にも、継続して処理を実行することができる。
以上説明した実施の形態3にかかるスケジューリング方法およびタスク処理方法によれば、第1閾値よりも通信強度Stiが低い端末装置にもデータを割り当てるとともに、割り当てたデータのバックアップデータを他端末装置に割り当てることとした。これにより、第1閾値よりも通信強度Stiが低い端末装置101−iの通信状態が悪化するまではネットワークの負荷を分散させることができるとともに、通信状態が悪化した後にも、バックアップデータを用いて処理を継続し、完遂することができる。
また、実施の形態3にかかるスケジューリング方法およびタスク処理方法によれば、第1閾値よりも高い通信強度Stiを有する端末装置101−iに、バックアップデータを割り当てることとした。これにより、バックアップデータを記憶する端末装置101−iの通信状態が悪化する可能性を低減させることができ、バックアップデータにアクセスできなくなる可能性を低減させることができる。
また、実施の形態3にかかるスケジューリング方法およびタスク処理方法によれば、通信強度Stiが最も高い端末装置101−iに、バックアップデータを割り当てることとした。これにより、バックアップデータを記憶する端末装置101−iの通信状態が悪化する可能性をより低減させることができ、バックアップデータにアクセスできなくなる可能性をより低減させることができる。
また、実施の形態3にかかるスケジューリング方法およびタスク処理方法によれば、処理中の端末装置101−iの通信状態が悪化した場合、該端末装置101−iに割り当てた処理を、バックアップデータを有する端末装置101−iに再割当することとした。これにより、第1閾値よりも通信強度Stiが低いスレイブ端末装置T2の通信状態が悪化するまでは処理による負荷を分散させることができる。また、第1閾値よりも通信強度Stiが低い端末装置101−iの通信状態が悪化した後にも、再割当された端末装置は、他端末装置のデータにアクセスせずに、バックアップデータにアクセスすればよいため、効率的に再割当された処理を実行させることができる。
なお、本実施の形態で説明したスケジューリング方法およびタスク処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本スケジューリングプログラムおよびタスク処理プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録される。そして、記録された本スケジューリングプログラムおよびタスク処理プログラムは、コンピュータによって記録媒体から読み出されることによって実行される。また本スケジューリングプログラムおよびタスク処理プログラムは、インターネット等のネットワークを介して配布してもよい。