(57)【要約】  端末＃０のＯＳが、端末＃０で動画圧縮処理と動画撮影処理を実行中に、（１）端末＃０の電池残量をチェックして、該電池残量が閾値以下となるのを検出すると、（２）動画圧縮処理の実行を停止する。端末＃０のＯＳが、（３）端末＃０と無線通信可能な端末＃１に動画圧縮処理の識別情報を送信する。端末＃１のＯＳが、動画圧縮処理の識別情報に基づいてメモリから動画圧縮処理のコードを検索する。動画圧縮処理のコードがメモリにないため、端末＃１のＯＳが、（４）動画圧縮処理のコードと動画圧縮処理の実行結果との送信依頼を端末＃０に送信する。端末＃０のＯＳが、動画圧縮処理のコードと動画圧縮処理の実行結果との送信依頼を受信すると、（５）動画圧縮処理のコードと動画圧縮処理の実行結果とを端末＃１へ送信する。端末＃１のＯＳが、動画圧縮処理のコードと動画圧縮処理の実行結果とを受信すると、（７）動画圧縮処理を実行する。
2012017545.tif 000002
【特許請求の範囲】
【請求項１】
第１の端末でタスクが実行中に、前記第１の端末の電池残量が閾値以下となるのを検出する検出工程と、
前記検出工程により前記第１の端末の電池残量が前記閾値以下となるのが検出された場合、前記タスクの実行を停止する停止工程と、
前記検出工程により前記第１の端末の電池残量が前記閾値以下となるのが検出された場合、前記第１の端末と通信可能な第２の端末に前記タスクの識別情報を送信する第１の送信工程と、
前記第１の送信工程により前記タスクの識別情報が送信されたあと、前記タスクの実行可能性に関する情報を前記第２の端末から受信する受信工程と、
前記受信工程により受信された実行可能性に関する情報に応じた情報を前記第２の端末に送信する第２の送信工程と、
を前記第１の端末のプロセッサに実行させることを特徴とする制御プログラム。
【請求項２】
前記第２の送信工程は、
前記実行可能性に関する情報が前記タスクのコードを有していないことを示す場合、前記タスクのコードおよび前記タスクの実行指示を前記第２の端末に送信することを特徴とする請求項１に記載の制御プログラム。
【請求項３】
前記第２の送信工程は、
前記実行可能性に関する情報が前記タスクのコードを有していることを示す場合、前記タスクの実行指示を前記第２の端末に送信することを特徴とする請求項１に記載の制御プログラム。
【請求項４】
前記第２の送信工程は、
さらに、前記タスクの実行結果を前記第２の端末に送信することを特徴とする請求項２または３に記載の制御プログラム。
【請求項５】
前記停止工程は、
前記受信工程により受信されたタスクの実行可能性に関する情報が前記第２の端末で前記タスクが実行不可であることを示す場合、前記タスクの実行を停止しないことを特徴とする請求項１に記載の制御プログラム。
【請求項６】
前記第１の送信工程は、
前記検出工程により前記第１の端末の電池残量が前記閾値以下となるのが検出されても、前記タスクが前記タスクの実行開始からの実行期限を有している場合、前記第２の端末に前記タスクの識別情報を送信せず、
前記停止工程は、
前記検出工程により前記第１の端末の電池残量が前記閾値以下となるのが検出されても、前記タスクが前記タスクの実行開始からの実行期限を有している場合、前記タスクの実行を停止しないことを特徴とする請求項１に記載の制御プログラム。
【請求項７】
前記検出工程は、
前記電池残量が前記閾値より小さい他の閾値以下となるのを検出し、
前記第１の送信工程は、
前記検出工程により前記電池残量が前記他の閾値以下となるのを検出した場合、前記タスクが前記タスクの実行開始からの実行期限を有していても、前記第２の端末に前記タスクの識別情報を送信することを特徴とする請求項６に記載の制御プログラム。
【請求項８】
第１の端末から第２の端末へのタスクの実行指示を受信する受信工程と、
前記受信工程により前記実行指示が受信されたタスクを実行する実行工程と、
前記実行工程により前記タスクの実行中に、前記第２の端末の電池残量が閾値以下となるのを検出する検出工程と、
前記検出工程により前記電池残量が閾値以下となるのが検出された場合、前記タスクの実行結果を前記第１の端末に送信する送信工程と、
を前記第２の端末のプロセッサが実行することを特徴とする制御プログラム。
【請求項９】
第１の端末から第２の端末へのタスクの実行指示を受信する受信工程と、
前記受信工程により前記実行指示が受信されたタスクが前記タスクの実行開始からの実行期限を有していない場合、前記第２の端末のプロセッサへのクロックの供給源に対して、前記クロックの周波数を前記タスクに応じた周波数に設定する設定工程と、
前記設定工程による設定後に、前記タスクを実行する実行工程と、
を前記第２の端末のプロセッサが実行することを特徴とする制御プログラム。
【請求項１０】
第１の端末から第２の端末へのタスクの実行指示を受信する受信工程と、
前記受信工程により前記実行指示が受信されたタスクが前記タスクの実行開始からの実行期限を有していない場合、前記第２の端末のプロセッサへの電源電圧の供給源に対して、前記電源電圧の値を前記タスクに応じた電源電圧の値に設定する設定工程と、
前記設定工程による設定後に、前記タスクを実行する実行工程と、
を前記第２の端末のプロセッサが実行することを特徴とする制御プログラム。
【請求項１１】
第１の端末でタスクが実行中に、前記第１の端末の電池残量が閾値以下となるのを検出する検出手段と、
前記検出手段により前記第１の端末の電池残量が前記閾値以下となるのが検出された場合、前記タスクの実行を停止する停止手段と、
前記検出手段により前記第１の端末の電池残量が前記閾値以下となるのが検出された場合、前記第１の端末と通信可能な第２の端末に前記タスクの識別情報を送信する第１の送信手段と、
前記第１の送信手段により前記タスクの識別情報が送信されたあと、前記タスクの実行可能性に関する情報を前記第２の端末から受信する受信手段と、
前記受信手段により受信された実行可能性に関する情報に応じた情報を前記第２の端末に送信する第２の送信手段と、
を備えることを特徴とする制御装置。
【請求項１２】
第１の端末から第２の端末へのタスクの実行指示を受信する受信手段と、
前記受信手段により前記実行指示が受信されたタスクを実行する実行手段と、
前記実行手段により前記タスクの実行中に、前記第２の端末の電池残量が閾値以下となるのを検出する検出手段と、
前記検出手段により前記電池残量が閾値以下となるのが検出された場合、前記タスクの実行結果を前記第１の端末に送信する送信手段と、
を備えることを特徴とする制御装置。
【請求項１３】
第１の端末から第２の端末へのタスクの実行指示を受信する受信手段と、
前記受信手段により前記実行指示が受信されたタスクが前記タスクの実行開始からの実行期限を有していない場合、前記第２の端末のプロセッサへのクロックの供給源に対して、前記クロックの周波数を前記タスクに応じた周波数に設定する設定手段と、
前記設定手段による設定後に、前記タスクを実行する実行手段と、
を備えることを特徴とする制御装置。
【請求項１４】
第１の端末から第２の端末へのタスクの実行指示を受信する受信手段と、
前記受信手段により前記実行指示が受信されたタスクが前記タスクの実行開始からの実行期限を有していない場合、前記第２の端末のプロセッサへの電源電圧の供給源に対して、前記電源電圧の値を前記タスクに応じた電源電圧の値に設定する設定手段と、
前記設定手段による設定後に、前記タスクを実行する実行手段と、
を備えることを特徴とする制御装置。
【請求項１５】
第１の端末でタスクが実行中に、前記第１の端末の電池残量が閾値以下となるのを検出する検出工程と、
前記検出工程により前記第１の端末の電池残量が前記閾値以下となるのが検出された場合、前記タスクの実行を停止する停止工程と、
前記検出工程により前記第１の端末の電池残量が前記閾値以下となるのが検出された場合、前記第１の端末と通信可能な第２の端末に前記タスクの識別情報を送信する第１の送信工程と、
前記第１の送信工程により前記タスクの識別情報が送信されたあと、前記タスクの実行可能性に関する情報を前記第２の端末から受信する受信工程と、
前記受信工程により受信された実行可能性に関する情報に応じた情報を前記第２の端末に送信する第２の送信工程と、
を前記第１の端末のプロセッサが実行することを特徴とする制御方法。
【請求項１６】
第１の端末から第２の端末へのタスクの実行指示を受信する受信工程と、
前記受信工程により前記実行指示が受信されたタスクを実行する実行工程と、
前記実行工程により前記タスクの実行中に、前記第２の端末の電池残量が閾値以下となるのを検出する検出工程と、
前記検出工程により前記電池残量が閾値以下となるのが検出された場合、前記タスクの実行結果を前記第１の端末に送信する送信工程と、
を前記第２の端末のプロセッサが実行することを特徴とする制御方法。
【請求項１７】
第１の端末から第２の端末へのタスクの実行指示を受信する受信工程と、
前記受信工程により前記実行指示が受信されたタスクが前記タスクの実行開始からの実行期限を有していない場合、前記第２の端末のプロセッサへのクロックの供給源に対して、前記クロックの周波数を前記タスクに応じた周波数に設定する設定工程と、
前記設定工程による設定後に、前記タスクを実行する実行工程と、
を前記第２の端末のプロセッサが実行することを特徴とする制御方法。
【請求項１８】
第１の端末から第２の端末へのタスクの実行指示を受信する受信工程と、
前記受信工程により前記実行指示が受信されたタスクが前記タスクの実行開始からの実行期限を有していない場合、前記第２の端末のプロセッサへの電源電圧の供給源に対して、前記電源電圧の値を前記タスクに応じた電源電圧の値に設定する設定工程と、
前記設定工程による設定後に、前記タスクを実行する実行工程と、
を前記第２の端末のプロセッサが実行することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスクの実行を制御する制御プログラム、制御装置、および制御方法に関する。
【背景技術】
【０００２】
従来、複数の端末間で、無線通信を介した分散処理技術の利用が行われている。たとえば、携帯電話などの端末では電池駆動のシステムであるため、無線通信を介して分散処理を行う場合、該処理中に電池が切れてしまうと該処理を継続することができなかった。そこで、各端末の電池残量に基づいてプロセスを割り当てる割り当て先の端末を決定する技術が知られている（たとえば、下記特許文献１，２参照。）。具体的には、電池残量が閾値以下である端末にはプロセスが割り当てられないように制御される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１４１６６９号公報
【特許文献２】特開２００６−２４６２０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術では、電池残量の判定をプロセスの割り当て時のみに行うため、少しでも電池残量が閾値を超えていれば、端末の負荷に基づいてプロセスを割り当てる。すなわち、演算能力の高いＣＰＵを有する端末には多くのプロセスが割り当てられるため、多くの電力を消耗し、電池残量が早く減少してしまう問題点があった。【０００５】
分散処理中に各端末が分散処理以外のタスクの実行を行う場合、それらのタスクの実行によって電池残量がなくなってしまう場合があり、分散処理で割り当てられたタスクが完了することを保証できない問題点があった。【０００６】
本発明は、上述した従来技術による問題点を解消するため、タスクの実行による電池の消耗を抑制することができる制御プログラム、制御装置、および制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一観点によれば、第１の端末でタスクが実行中に、前記第１の端末の電池残量が閾値以下となるのを検出し、前記第１の端末の電池残量が前記閾値以下となるのが検出された場合、前記タスクの実行を停止し、前記第１の端末と通信可能な第２の端末に前記タスクの識別情報を送信し、前記タスクの識別情報が送信されたあと、前記タスクの実行可能性に関する情報を前記第２の端末から受信し、受信された実行可能性に関する情報に応じた情報を前記第２の端末に送信する制御プログラム、制御装置、および制御方法が提供される。
【発明の効果】
【０００８】
本制御プログラム、制御装置、および制御方法によれば、タスクの実行による電池の消耗を抑制することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】本発明の一例を示す説明図である。
【図２】複数の端末のハードウェアを示すブロック図である。
【図３】各メモリ内のデータ例を示す説明図である。
【図４】テーブル４００を示す説明図である。
【図５】テーブル５００を示す説明図である。
【図６】タスク制約テーブル６００の一例を示す説明図である。
【図７】電力制御テーブル７００の一例を示す説明図である。
【図８】電力コストテーブル８００を示す説明図である。
【図９】各端末の機能ブロック図である。
【図１０】端末＃０でタスクが実行中の例を示す説明図である。
【図１１】図１０におけるタスクテーブル１１００を示す説明図である。
【図１２】図１０におけるタスクテーブル１２００を示す説明図である。
【図１３】端末＃０の電池残量が低い例を示す説明図である。
【図１４】移行対象タスクの決定例を示す説明図である。
【図１５】移行先端末にコードがあるタスクの移行例を示す説明図である。
【図１６】移行先端末にコードがないタスクの移行例を示す説明図である。
【図１７】図１６におけるタスクテーブル１１００を示す説明図である。
【図１８】図１６におけるタスクテーブル１２００を示す説明図である。
【図１９】タスクスイッチの検出例１を示す説明図である。
【図２０】タスクスイッチの検出例２を示す説明図である。
【図２１】タスクの実行終了の検出例を示す説明図である。
【図２２】移行後の端末＃０での電池残量のチェック例を示す説明図（その１）である。
【図２３】移行後の端末＃０での電池残量のチェック例を示す説明図（その２）である。
【図２４】移行後の端末＃１での電池残量のチェック例を示す説明図である。
【図２５】制御装置の制御処理手順を示すフローチャート（その１）である。
【図２６】制御装置の制御処理手順を示すフローチャート（その２）である。
【図２７】制御装置の制御処理手順を示すフローチャート（その３）である。
【図２８】制御装置の制御処理手順を示すフローチャート（その４）である。
【図２９】制御装置の制御処理手順を示すフローチャート（その５）である。
【図３０】制御装置の制御処理手順を示すフローチャート（その６）である。
【図３１】制御装置の制御処理手順を示すフローチャート（その７）である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明にかかる制御プログラム、制御装置、および制御方法の好適な実施の形態を詳細に説明する。
【００１１】
図１は、本発明の一例を示す説明図である。端末＃０のＯＳが、端末＃０で動画圧縮処理と動画撮影処理を実行中に、（１）一定時間ごとに端末＃０の電池残量をチェックすることにより、該電池残量が閾値以下となるのを検出する。そして、端末＃０のＯＳが、電池残量が閾値以下となるのを検出した場合、たとえば、（２）動画圧縮処理と動画撮影処理のうち、動画圧縮処理の実行を停止する。ここでは、動画圧縮処理の実行のみを停止させ、動画圧縮処理を移行対象としているが、同時に動画撮影処理の実行も停止させ、動画撮影処理も移行対象としてもよい。
【００１２】
そして、端末＃０のＯＳが、（３）端末＃０と無線通信可能な端末＃１に動画圧縮処理の識別情報を送信する。端末＃１のＯＳが、動画圧縮処理の識別情報に基づいてメモリから動画圧縮処理のコードを検索する。ここでは、動画圧縮処理のコードが検索されないこととする。そして、端末＃１のＯＳが、（４）動画圧縮処理のコードと動画圧縮処理の実行結果との送信依頼を端末＃０に送信する。端末＃０のＯＳが、動画圧縮処理のコードと動画圧縮処理の実行結果との送信依頼を受信すると、端末＃１が動画圧縮処理を実行可能であると判断し、（５）動画圧縮処理のコードと動画圧縮処理の実行結果とを端末＃１へ送信する。
【００１３】
端末＃１のＯＳが、動画圧縮処理のコードと動画圧縮処理の実行結果とを受信すると、動画圧縮処理の実行指示を受信したと判断する。そして、端末＃１のＯＳが、（６）動画圧縮処理のコードと動画圧縮処理の実行結果とをメモリへ保存し、（７）動画圧縮処理を実行する。
【００１４】
（複数の端末のハードウェア）
図２は、複数の端末のハードウェアを示すブロック図である。図２において、端末＃０および端末＃１は、それぞれ制御装置である。端末＃０には、電源供給回路２０１と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０２と、通信Ｉ／Ｆ２０３と、クロック供給回路２０４と、メモリ２０５と、を有している。各部は、バス２０６によってそれぞれ接続されている。端末＃１には、電源供給回路２１１と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１２と、通信Ｉ／Ｆ２１３と、クロック供給回路２１４と、メモリ２１５と、を有している。各部は、バス２１６によってそれぞれ接続されている。
【００１５】
ＣＰＵ２０２とＣＰＵ２１２とは、各端末の全体の制御を司る。ＣＰＵ２０２は制御プログラムを有するＯＳ２２１を実行している。また、ＯＳ２２１はＣＰＵ２０２に割り当てられたタスクを順に実行するために、レディーキュー２２２を有している。レディーキュー２２２には実行待ちのタスクが積まれており、たとえば、ＯＳ２２１がレディーキュー２２２から順にタスクを取り出して、実行する。そして、ＯＳ２２１は端末＃０の電池残量をモニタするＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）２２３を実行している。ＯＳ２２１は該ＡＰＩ２２３により電池残量をチェックすることができる。
【００１６】
また、ＯＳ２３１はＣＰＵ２１２に割り当てられたタスクを積まれた順に実行するために、レディーキュー２３２を有している。レディーキュー２３２には実行待ちのタスクが積まれており、たとえば、ＯＳ２３１がレディーキュー２３２から積まれた順にタスクを取り出して、実行する。そして、ＯＳ２３１は端末＃０の電池残量をモニタするＡＰＩ２３３を実行している。ＯＳ２３１は該ＡＰＩ２３３により電池残量をチェックすることができる。本実施の形態では、端末＃０の電池と端末＃１の電池との電池容量が同一であるとする。
【００１７】
電源供給回路２０１は端末＃０内の各部に電源を供給する。電源供給回路２０１はレジスタを有し、該レジスタに設定された値に基づいて各部に与える電源電圧の値を切り替えることができることとする。たとえば、ＣＰＵ２０２に与える電源電圧の値に対応するレジスタは２ビットのレジスタであり、該レジスタに設定された値によって０．４［Ｖ］と、０．６［Ｖ］と、０．８［Ｖ］と、１．１［Ｖ］と、から電源電圧の値が選択されることとする。ＯＳ２２１が電源供給回路２０１に対して電源電圧の値を０．４［Ｖ］に設定するとは、具体的には、たとえば、ＯＳ２２１がＣＰＵ２０２の電源電圧の値に対応するレジスタを０．４［Ｖ］に対応する値に設定することを示している。
【００１８】
クロック供給回路２０４は端末＃０内の各部にクロックを供給する。クロック供給回路２０４はレジスタを有し、該レジスタに設定された値に基づいて各部に与えるクロックの周波数を切り替えることができることとする。たとえば、ＣＰＵ２０２へ与えるクロックの周波数に対応するレジスタは２ビットのレジスタである。
【００１９】
ＣＰＵ２０２に与えるクロックの周波数に対応するレジスタに設定された値によってＣＰＵ２０２に与えるクロックの周波数が選択されることとする。具体的には、たとえば、ＣＰＵ２０２の仕様で定義されたクロックの周波数に対して１００［％］の周波数と、７０［％］の周波数と、５０［％］の周波数と、３０［％］の周波数と、からクロックの周波数が選択される。ＯＳ２２１がクロック供給回路２０４に対してクロックの周波数をＣＰＵ２０２の仕様で定義されたクロックの周波数に対して３０［％］の周波数に設定するとは、ＯＳ２２１が該レジスタを該３０［％］に対応する値に設定することを示している。
【００２０】
電源供給回路２１１は端末＃１内の各部に電源を供給する。電源供給回路２１１については上述の電源供給回路２０１と同一構成とし、その説明を省略する。クロック供給回路２１４は端末＃１内の各部にクロックを供給する。クロック供給回路２１４については上述のクロック供給回路と同一構成とし、その説明を省略する。
【００２１】
通信Ｉ／Ｆ２０３と通信Ｉ／Ｆ２１３とは、たとえば、アドホック通信により無線通信を行うことができる。
【００２２】
メモリ２０５とメモリ２１５とは、具体的には、たとえば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と、フラッシュＲＯＭなどを有している。たとえば、フラッシュＲＯＭがブートプログラムを記憶し、ＲＯＭがアプリケーションソフトウェアを記憶し、ＲＡＭが各端末のＣＰＵのワークエリアとして使用される。各メモリに記憶されているプログラムは、各ＣＰＵにロードされることで、コーディングされている処理を該各ＣＰＵに実行させることとなる。
【００２３】
図３は、各メモリ内のデータ例を示す説明図である。メモリ２０５は、タスク＃０のコード〜タスク＃３のコードと、テーブル４００と、タスク制約テーブル６００と、電力制御テーブル７００と、電力コストテーブル８００と、タスクテーブル１１００と、を有している。メモリ２１５は、タスク＃０のコードと、タスク＃２のコードと、テーブル５００と、電力制御テーブル７００と、タスクテーブル１２００と、タスク制約テーブルと、電力コストテーブルと、を有している。
【００２４】
図４は、テーブル４００を示す説明図である。テーブル４００は、許可端末の項目４０１と移行先端末の項目４０２とを有している。許可端末の項目４０１には割り当てを許可する端末の識別情報が保持されている。許可端末の項目４０１については端末の利用者により設定される。移行先端末の項目４０２は電池残量状態が低または中となったときに、実行中のタスクやレディーキュー２２２内のタスクを移行させる移行先の端末の識別情報がＯＳ２２１により設定される。
【００２５】
図５は、テーブル５００を示す説明図である。テーブル５００は、許可端末の項目５０１と移行先端末の項目５０２とを有している。許可端末の項目５０１には割り当てを許可する端末の識別情報が保持されている。許可端末の項目５０１については端末の利用者により設定される。移行先端末の項目５０２は電池残量の状態が低または中となったときに、実行中のタスクやレディーキュー２３２内のタスクを移行させる移行先の端末の識別情報がＯＳ２３１により設定される。
【００２６】
図６は、タスク制約テーブル６００の一例を示す説明図である。タスク制約テーブル６００は、タスク識別情報の項目６０１と、リアルタイム制約の項目６０２と、周波数の項目６０３と、を有している。タスク識別情報の項目６０１には、端末＃０がコードを有するタスクの識別情報が保持されている。リアルタイム制約の項目６０２にはリアルタイム制約が保持されている。リアルタイム制約とは何［ｍｓ］以内にタスクの実行を終了させるといった制約である。−の場合はリアルタイム制約がないことを示している。
【００２７】
周波数の項目６０３にはＣＰＵ２０２の仕様で定義されたクロックの周波数の何［％］となる周波数をＣＰＵ２０２に与えるかが保持されている。また、リアルタイム制約がある場合には周波数を下げないため、リアルタイム制約の項目６０２が１００［ｍｓ］および２００［ｍｓ］の場合、周波数の項目６０３の値は１００［％］となっている。また、メモリ２１５内のタスク制約テーブルは、タスク制約テーブル６００と同一の項目を有するテーブルであり、端末＃１がコードを有するタスクに関する情報を有している。
【００２８】
図７は、電力制御テーブル７００の一例を示す説明図である。本実施の形態ではＣＰＵ２０２に与えるクロックの周波数に沿って電源電圧が決定することとしている。よって、クロックの周波数が下がると、電源電圧も下げる。電力制御テーブル７００は、周波数の項目７０１と電源電圧の項目７０２とを有している。具体的には、たとえば、本実施の形態ではＣＰＵ２０２へ供給されるクロックの周波数を定義された周波数の７０［％］に設定する場合、電源電圧は０．８［Ｖ］に設定する。
【００２９】
図８は、電力コストテーブル８００を示す説明図である。電力コストテーブル８００とは、たとえば、タスク識別情報の項目８０１と、実行中データサイズの項目８０２と、コードサイズの項目８０３と、電力コスト（実行中データ）の項目８０４と、電力コストの項目（実行中データ＋コード）８０５と、係数の項目８０６と、１パケットあたりの通信電力コストの項目８０７と、を有している。
【００３０】
タスク識別情報の項目８０１にはタスクの識別情報が保持されている。実行中データサイズの項目８０２にはタスクの実行中データサイズの最大値が保持されている。コードサイズの項目８０３にはタスクのコードのサイズが保持されている。電力コストの項目８０４にはタスクの実行中データを他の端末に送信するためにかかる電力が保持されている。電力コストの項目８０５にはタスクの実行中データとタスクのコードを他の端末に送信するためにかかる電力が保持されている。
【００３１】
係数の項目８０６には利用者が定めた係数が保持されている。１パケットあたりの通信電力コストの項目８０７には１パケットあたりを他の端末に送信するためにかかる電力が保持されている。
【００３２】
ここで、移行電力コストの算出について説明する。
・移行電力コスト＝パケット量×１パケットあたりの通信電力コスト
・パケット量（実行中データ＋コードの場合）＝（タスクのコードのサイズ＋実行中データサイズ）／パケットサイズ
・パケット量（実行中データ）＝（実行中データサイズ）／パケットサイズ
【００３３】
１パケットあたりの通信電力コストについては利用者があらかじめ設定する。１パケットが１２８Ｂｙｔｅであると、１パケットは１０２４ビットである。
・１パケット＝１２８Ｂｙｔｅ＝１０２４ｂｉｔ
・単位時間あたりの消費電力：２．４Ｗｈ
・上りの帯域速度：３８４［Ｋｂｐｓ］
・１パケットあたりの通信電力コスト＝１０２４／３８４Ｋ×（２．４／６０／６０
＝１．７８×１０＾−６［Ｗ］
＝１．７８［μＷ］
【００３４】
ここで、たとえば、実行中データが４ＫＢｙｔｅであり、１パケットあたりの通信電力コストが１．５［μＷ］であるとする。
・移行電力コスト（実行中データのみを送信する場合）＝４×１０２４／１２８×１．５
＝４８［μｗ］
【００３５】
また、タスクテーブル１１００およびタスクテーブル１２００は、各端末に割り当てられたタスクを実行中であるか否かを示す情報である。たとえば、ＯＳ２２１はタスクの割当指示や他の端末からのタスクの実行指示を受け付けると、各指示を受け付けたタスクをタスクテーブル１１００に登録する。タスクテーブル１１００およびタスクテーブル１２００の詳細例については後述する。
【００３６】
（各端末の機能ブロック図）
図９は、各端末の機能ブロック図である。本実施の形態では、検出部９０１と、停止部９０２と、第１の送信部９０３と、受信部９０４と、第２の送信部９０５と、を有する制御装置として端末＃０を例に挙げて説明する。検出部９０１〜第２の送信部９０５はメモリ２０５に記憶されているＯＳ２２１が有している。該端末＃０のＣＰＵ２０２が該ＯＳ２２１をロードして該ＯＳ２２１にコーディングされている処理を実行することにより、検出部９０１〜第２の送信部９０５の処理が実現される。
【００３７】
また、本実施の形態では、受信部９１１と、設定部９１２と、実行部９１３と、検出部９１４と、送信部９１５と、を有する制御装置として端末＃１を例に挙げて説明する。受信部９１１〜送信部９１５はメモリ２１５に記憶されているＯＳ２３１が有し、該端末＃１のＣＰＵ２１２が該ＯＳ２３１をロードして該ＯＳ２３１にコーディングされている処理を実行することにより、受信部９１１〜送信部９１５の処理が実現される。
【００３８】
検出部９０１は、端末＃０でタスクが実行中に、端末＃０の電池残量が閾値以下となるのを検出する。
【００３９】
停止部９０２は、検出部９０１により端末＃０の電池残量が閾値以下となるのが検出された場合、タスクの実行を停止する。
【００４０】
第１の送信部９０３は、検出部９０１により端末＃０の電池残量が閾値以下となるのが検出された場合、端末＃０と通信可能な端末＃１にタスクの識別情報を送信する。
【００４１】
受信部９０４は、第１の送信部９０３によりタスクの識別情報が送信されたあと、タスクの実行可能性に関する情報を端末＃１から受信する。
【００４２】
第２の送信部９０５は、受信部９０４により受信された実行可能性に関する情報に応じた情報を端末＃１に送信する。
【００４３】
また、第２の送信部９０５は、実行可能性に関する情報がタスクのコードを有していないことを示す場合、タスクのコードおよびタスクの実行指示を端末＃１に送信する。
【００４４】
また、第２の送信部９０５は、実行可能性に関する情報がタスクのコードを有していることを示す場合、タスクの実行指示を端末＃１に送信する。
【００４５】
また、第２の送信部９０５は、タスクの実行結果を端末＃１に送信する。
【００４６】
また、停止部９０２は、受信部９０４により受信されたタスクの実行可能性に関する情報が端末＃１でタスクが実行不可であることを示す場合、タスクの実行を停止しない。
【００４７】
第１の送信部９０３は、検出部９０１により端末＃０の電池残量が閾値以下となるのが検出されても、タスクがタスクの実行開始からの実行期限を有している場合、端末＃１にタスクの識別情報を送信しない。ここで、タスクの実行開始からの実行期限をリアルタイム制約と称する。
【００４８】
停止部９０２は、検出部９０１により端末＃０の電池残量が閾値以下となるのが検出されても、タスクがリアルタイム制約を有している場合、タスクの実行を停止しない。
【００４９】
検出部９０１は、電池残量が閾値より小さい他の閾値以下となるのを検出する。
【００５０】
第１の送信部９０３は、検出部９０１により電池残量が他の閾値以下となるのを検出した場合、タスクがリアルタイム制約を有していても、端末＃１にタスクの識別情報を送信する。以下、閾値を閾値１と称し、他の閾値を閾値２とする。
【００５１】
また、本実施の形態では、端末＃０の電池残量が閾値２以下となると、端末＃０の電池残量状態が低に設定され、端末＃０の電池残量が閾値２より大きく閾値１以下となると、端末＃０の電池残量状態が中に設定される。
【００５２】
受信部９１１は、端末＃０から端末＃１へのタスクの実行指示を受信する。
【００５３】
実行部９１３は、受信部９１１により実行指示が受信されたタスクを実行する。
【００５４】
検出部９１４は、実行部９１３によりタスクを実行中に、端末＃１の電池残量が閾値以下となるのを検出する。本実施の形態では閾値を移行電力コストに基づいて決定している。
【００５５】
送信部９１５は、検出部９１４により電池残量が閾値以下となるのが検出された場合、タスクの実行結果を端末＃０に送信する。
【００５６】
また、設定部９１２は、受信部９１１により実行指示が受信されたタスクがタスクの実行開始からの実行期限を有していない場合、端末＃１のＣＰＵ２１２へのクロックの供給源に対して、クロックの周波数をタスクに応じた周波数に設定する。
【００５７】
また、設定部９１２は、受信部９１１により実行指示が受信されたタスクがタスクの実行開始からの実行期限を有していない場合、端末＃１のＣＰＵ２１２への電源電圧の供給源に対して、電源電圧の値をタスクに応じた電源電圧の値に設定する。
【００５８】
また、実行部９１３は、設定部９１２による設定後に、受信されたタスクを実行する。
【００５９】
以上を踏まえて図を用いて詳細に説明する。
【００６０】
図１０は、端末＃０でタスクが実行中の例を示す説明図である。まず、端末＃０にはタスク＃０〜タスク＃３が割り当てられている。レディーキュー２２２にはタスク＃１〜タスク＃３が登録されている。ＯＳ２２１ではタスク＃０が実行中である。端末＃０の電池残量が端末＃０の電池容量の４０［％］であり、端末＃１の電池残量が端末＃１の電池容量の９５［％］である。
【００６１】
図１１は、図１０におけるタスクテーブル１１００を示す説明図である。タスクテーブル１１００は、タスク識別情報の項目１１０１と、割当元端末の項目１１０２と、状態の項目１１０３と、を有している。タスク識別情報の項目１１０１にはタスクの識別情報が保持されている。割当元端末の項目１１０２には割当元の端末の識別情報が保持されている。状態の項目１１０３にはタスクの状態が保持されている。タスクの状態は実行中と待機中と移行との３つの状態である。
【００６２】
図１０においてはタスク＃０が実行中であり、タスク＃１〜タスク＃３がレディーキュー２２２に登録されているため、タスク＃１〜タスク＃３は待機中である。また、ＯＳ２２１が、タスクスイッチを検出すると、タスクテーブル１１００内の状態の項目を更新する。さらに、ＯＳ２２１が、タスクの実行終了を検出すると、実行が終了したタスクに関する記述をタスクテーブル１１００から削除する。
【００６３】
図１２は、図１０におけるタスクテーブル１２００を示す説明図である。タスクテーブル１２００は、タスク識別情報の項目１２０１と、割当元端末の項目１２０２と、状態の項目１２０３と、を有している。タスク識別情報の項目１２０１にはタスクの識別情報が保持されている。割当元端末の項目１２０２にはタスクの割当元の端末の識別情報が保持されている。状態の項目１２０３にはタスクの状態が保持されている。図１０においては、いずれのタスクも割り当てられていないため、タスクテーブル１２００にはいずれのタスクも登録されていない。
【００６４】
図１３は、端末＃０の電池残量が低い例を示す説明図である。各端末では、一定時間周期でＯＳが電池残量をチェックする。ＯＳ２２１が端末＃０の電池残量をチェックすると、電池残量が電池容量の４０［％］であるため、電池残量が閾値２以下であることを検出する。そして、ＯＳ２２１が（１）端末＃０の電池残量状態を中に設定する。
【００６５】
つぎに、ＯＳ２２１が（２）端末＃０の識別情報を端末＃１へ通信Ｉ／Ｆ２０３を介して送信する。ＯＳ２３１は通信Ｉ／Ｆ２１３を介して端末＃１の識別情報を受信すると、（３）テーブル５００の許可端末の項目５０１内に受信した端末＃０の識別情報が保持されているかを検索する。ここでは、テーブル５００の許可端末の項目５０１内に端末＃０の識別情報が登録されている。そして、ＯＳ２３１が（４）移行許可を通信Ｉ／Ｆ２１３を介して端末＃０へ送信する。
【００６６】
ＯＳ２２１が端末＃１からの移行許可を受信すると、（５）テーブル４００の移行先端末の項目４０２に端末＃１を設定する。
【００６７】
図１４は、移行対象タスクの決定例を示す説明図である。つぎに、ＯＳ２２１が端末＃０に割り当てられたタスクの中で移行電力コストが登録されているタスクを選択する。各タスクの移行電力コストが登録されているか否かについてはＯＳ２２１が電力コストテーブル８００を参照する。そして、ＯＳ２２１が、電池残量状態が中であるため、選択したタスクの中から、リアルタイム制約のないタスクを移行対象タスクとする。各タスクがリアルタイム制約を有するか否かについてはＯＳ２２１が（６）タスク制約テーブル６００を参照することで判断することができる。ここでは、タスク＃２とタスク＃３が移行対象タスクとなる。つぎに、ＯＳ２２１が（７）レディーキュー２２２からタスク＃２とタスク＃３とを削除する。
【００６８】
図１５は、移行先端末にコードがあるタスクの移行例を示す説明図である。ＯＳ２２１が（１）タスク＃２の識別情報を通信Ｉ／Ｆ２０３を介して送信する。ＯＳ２３１がタスク＃２の識別情報を通信Ｉ／Ｆ２１３を介して受信すると、（２）メモリ２１５からタスク＃２のコードをタスク＃２の識別情報に基づいて検索する。タスク＃２のコードはメモリ２１５に記憶されているため、ＯＳ２３１が（３）タスク＃２の実行中データの送信依頼を通信Ｉ／Ｆ２１３を介して端末＃０へ送信する。ここで、実行中データとは各タスクの送信時までの実行結果である。
【００６９】
そして、ＯＳ２２１がタスク＃２の実行中データの送信依頼を通信Ｉ／Ｆ２０３を介して受信すると、（４）タスク＃２の実行中データを通信Ｉ／Ｆ２０３を介して端末＃１へ送信する。ここで、同時にタスク＃２を実行中に設定可能なクロックの周波数もＯＳ２２１が送信する。ＯＳ２３１がタスク＃２の実行中データを通信Ｉ／Ｆ２１３を介して受信し、（５）タスク＃２の実行中データをメモリ２１５へ保存する。ここで、同時にタスク＃２を実行中に設定可能なクロックの周波数もＯＳ２３１が受信し、メモリ２１５へ保存する。
【００７０】
そして、ＯＳ２３１が（６）タスク＃２をレディーキュー２３２へ積む。さらに、ＯＳ２３１がタスクテーブル１２００にタスク＃２に関する情報を登録する。これにより、タスク＃２が端末＃０から端末＃１へ移行される。そして、ＯＳ２２１がタスク＃２の移行完了を通信Ｉ／Ｆ２０３を介して端末＃１へ送信する。ＯＳ２２１はタスクテーブル１１００のタスク＃２に関する状態の項目１１０３を移行に変更する。
【００７１】
図１６は、移行先端末にコードがないタスクの移行例を示す説明図である。つぎに、ＯＳ２２１が（１）タスク＃３の識別情報を通信Ｉ／Ｆ２０３を介して送信する。ＯＳ２３１がタスク＃３の識別情報を通信Ｉ／Ｆ２１３を介して受信すると、（２）メモリ２１５からタスク＃３のコードを検索する。タスク＃３のコードはメモリ２１５に記憶されていないため、ＯＳ２３１が（３）タスク＃３のコードとタスク＃３の実行中データとの送信依頼を通信Ｉ／Ｆ２１３を介して端末＃０へ送信する。
【００７２】
そして、ＯＳ２２１がタスク＃３のコードとタスク＃３の実行中データとの送信依頼を通信Ｉ／Ｆ２０３を介して受信すると、（４）タスク＃３のコードとタスク＃３の実行中データとを通信Ｉ／Ｆ２０３を介して端末＃１へ送信する。ここで、同時にタスク＃３を実行中に設定可能なクロックの周波数もＯＳ２２１が送信する。ＯＳ２３１がタスク＃３のコードとタスク＃３の実行中データとを通信Ｉ／Ｆ２１３を介して受信し、（５）メモリ２１５へ保存する。ここで、同時にタスク＃３を実行中に設定可能なクロックの周波数もＯＳ２３１が受信し、メモリ２１５へ保存する。
【００７３】
そして、ＯＳ２３１が（６）タスク＃３をレディーキュー２３２へ積む。さらに、ＯＳ２３１がタスクテーブル１２００にタスク＃３に関する情報を登録する。これにより、タスク＃３が端末＃０から端末＃１へ移行される。そして、ＯＳ２２１がタスク＃３の移行完了を通信Ｉ／Ｆ２０３を介して端末＃０へ通知する。ＯＳ２２１はタスクテーブル１１００のタスク＃３に関する状態の項目１１０３を移行に変更する。ＯＳ２２１はすべての移行対象タスクの移行完了を通信Ｉ／Ｆ２０３を介して端末＃１へ通知する。
【００７４】
図１７は、図１６におけるタスクテーブル１１００を示す説明図である。タスクテーブル１１００では、タスク＃２とタスク＃３とに関する状態の項目１１０３が移行に設定されている。
【００７５】
図１８は、図１６におけるタスクテーブル１２００を示す説明図である。タスクテーブル１２００ではタスク＃２に関する情報とタスク＃３に関する情報が登録されている。タスク＃２を例に挙げると、割当元端末の項目１２０２には端末＃０の識別情報が保持され、状態の項目１２０３には待機中であることが保持されている。
【００７６】
図１９は、タスクスイッチの検出例１を示す説明図である。ここでは、端末＃１において、タスクスイッチによりタスク＃２が実行中となる例を挙げて説明する。ＯＳ２３１が、（１）タスクスイッチを検出すると、（２）切り替えられたタスク＃２がリアルタイム制約を有しているか否かをタスク制約テーブル６００に基づいて判断する。タスク＃２はリアルタイム制約を有していないため、ＯＳ２３１が、タスク制約テーブル６００の周波数の項目６０３からタスク＃２の周波数の率を取得する。
【００７７】
ＯＳ２３１が取得した周波数の率に基づいて電力制御テーブル７００から電源電圧を取得する。ここでは、タスク＃２の周波数の率が５０［％］であるため、電源電圧の値は０．６［Ｖ］である。そして、ＯＳ２３１が、（３）電源供給回路２１１に対して、ＣＰＵ２１２へ与える電源電圧の値を０．６［Ｖ］に設定する。ＯＳ２３１が、（４）クロック供給回路２１４に対して、ＣＰＵ２１２へ与えるクロックの周波数を仕様で定義された周波数の５０［％］に設定する。たとえば、仕様で定義された周波数が１００［ＭＨｚ］であれば、５０［ＭＨｚ］がＣＰＵ２１２へ与える周波数として設定される。
【００７８】
図２０は、タスクスイッチの検出例２を示す説明図である。ここでは、端末＃１において、タスクスイッチによりタスク＃３が実行中となる例を挙げて説明する。ＯＳ２３１が、（１）タスクスイッチを検出すると、（２）切り替えられたタスク＃３がリアルタイム制約を有しているか否かをタスク制約テーブルに基づいて判断する。タスク制約テーブル６００にはタスク＃３に関する情報がないため、受信した周波数の率を用いる。
【００７９】
ＯＳ２３１が受信した周波数の率に基づいて電力制御テーブル７００から電源電圧を取得する。ここでは、タスク＃３の周波数の率が３０［％］であるため、電源電圧の値は０．４［Ｖ］である。そして、ＯＳ２３１が、電源供給回路２１１に対して、（３）ＣＰＵ２１２へ与える電源電圧の値を０．４［Ｖ］に設定する。ＯＳ２３１が、クロック供給回路２１４に対して、（４）ＣＰＵ２１２へ与えるクロックの周波数を仕様で定義された周波数の３０［％］に設定する。
【００８０】
図２１は、タスクの実行終了の検出例を示す説明図である。ＯＳ２３１が、（１）タスク＃３の実行終了を検出すると、（２）タスクテーブル１２００からタスク＃３の割当元端末を特定する。タスク＃３の割当元端末は端末＃０であるため、ＯＳ２３１が（３）タスク＃３の実行結果を通信Ｉ／Ｆ２１３を介して端末＃０へ送信する。ＯＳ２２１は、タスク＃３の実行結果を通信Ｉ／Ｆ２０３を介して受信すると、（４）タスク＃３の実行結果をメモリ２０５へ保存する。
【００８１】
一方、ＯＳ２３１は、電源供給回路２１１に対して、（５）ＣＰＵ２２１へ与える電源電圧の値を１．１［Ｖ］に設定する。さらに、ＯＳ２３１は、クロック供給回路２１４に対して、（６）ＣＰＵ２２１へ与えるクロックの周波数を仕様で定義された最大周波数に設定する。
【００８２】
図２２は、移行後の端末＃０での電池残量のチェック例を示す説明図（その１）である。ＯＳ２２１が、タイマー割り込みを検出し、一定時間経過しているか否かを判断する。ＯＳ２２１が、一定時間経過していると判断した場合、（１）端末＃０の電池残量をチェックし、（２）電池残量のチェック依頼を通信Ｉ／Ｆ２０３を介して端末＃１へ送信する。ＯＳ２３１が電池残量のチェック依頼を通信Ｉ／Ｆ２１３を介して受信すると、（３）電池残量をチェックし、（４）電池残量を端末＃０へ通信Ｉ／Ｆ２１３を介して送信する。
【００８３】
図２３は、移行後の端末＃０での電池残量のチェック例を示す説明図（その２）である。ＯＳ２２１が、（５）端末＃１の電池残量が端末＃０の電池残量以下であるか否かを判断する。ここでは、端末＃１の電池残量が３０［％］であり、端末＃０の電池残量が３５［％］であるため、端末＃１の電池残量は端末＃０の電池残量以下である。そして、ＯＳ２２１が、（６）タスク＃２およびタスク＃３の実行停止とタスク＃２およびタスク＃３の実行中データの回収依頼を通信Ｉ／Ｆ２０３を介して端末＃１へ送信する。
【００８４】
ＯＳ２３１がタスク＃２およびタスク＃３の実行停止とタスク＃２およびタスク＃３の実行中データの回収依頼を受信すると、（７）タスク＃２の実行を停止し、タスク＃３をレディーキュー２３２から削除することによりタスク＃３の実行を停止する。そして、ＯＳ２３１が、（８）タスク＃２の実行中データとタスク＃３の実行中データとを通信Ｉ／Ｆ２１３を介して端末＃０へ送信する。つぎに、ＯＳ２２１がタスク＃２の実行中データとタスク＃３の実行中データとを通信Ｉ／Ｆ２０３を介して受信すると、（９）各実行中データをメモリ２０５へ保存する。
【００８５】
そして、ＯＳ２２１が、（１０）実行中データを保存済であることを通信Ｉ／Ｆ２０３を介して端末＃１へ送信する。ＯＳ２３１が、実行中データを保存済であることを通信Ｉ／Ｆ２１３を介して受信すると、（１１）タスク＃２の実行中データとタスク＃３の実行中データとをメモリ２１５から削除する。
【００８６】
図２４は、移行後の端末＃１での電池残量のチェック例を示す説明図である。ＯＳ２３１が、（１）一定時間周期ごとに端末＃１の電池残量をチェックする。ＯＳ２３１が、（２）タスクテーブル１２００から端末＃０から移行されたタスクを特定する。そして、ＯＳ２３１が、（３）通信電力コストと電池残量とに基づいて移行されたタスクを端末＃０に戻すかを判断する。具体的には、ＯＳ２３１が、電力コストテーブルに基づいて端末＃０から移行されたタスクの実行中データの送信電力コストの合計を算出する。
【００８７】
つぎに、ＯＳ２３１が、端末＃１の電池残量と算出した合計値×係数とを比較して、端末＃１の電池残量が合計値×係数より小さいか否かを判断する。ここで、係数は、電力コストテーブルに保持されている値を用いる。ＯＳ２３１が、端末＃１の電池残量が合計値×係数より小さいと判断した場合、（４）端末＃０から移行されたタスクの実行中データを通信Ｉ／Ｆ２１３を介して端末＃０へ送信する。そして、ＯＳ２３１が、（５）端末＃０から移行されたタスクをレディーキュー２３２から削除する。そして、ＯＳ２２１が、タスク＃２の実行中データとタスク＃３の実行中データとを通信Ｉ／Ｆ２０３を介して受信する。ＯＳ２２１が、（６）タスク＃２の実行中データとタスク＃３の実行中データとをメモリ２０５へ保存し、（７）タスク＃２とタスク＃３をレディーキュー２２２に積む。
【００８８】
本実施の形態では、端末＃０が検出部９０１〜第２の送信部９０５の処理を実行しているが、同時に端末＃１が検出部９０１〜第２の送信部９０５の処理を実行してもよい。また、本実施の形態では、理解の容易化のために、端末＃０と端末＃１との２つの端末のみで説明したが、３以上の端末間で電池残量に基づいてタスクを移行させてもよい。
【００８９】
（制御装置の制御処理手順）
図２５〜３１は、制御装置の制御処理手順を示すフローチャートである。まず、端末＃０が、ｔｉｍｅｒ０＝０とし（ステップＳ２５０１）、ｃｙｃｌｅ０＝５［ｍｉｎｓ］とし（ステップＳ２５０２）、タイマー割り込みを検出したか否かを判断する（ステップＳ２５０３）。つぎに、端末＃０が、タイマー割り込みを検出していないと判断した場合（ステップＳ２５０３：Ｎｏ）、ステップＳ２５０３に戻る。
【００９０】
端末＃０が、タイマー割り込みを検出したと判断した場合（ステップＳ２５０３：Ｙｅｓ）、ｔｉｍｅｒ０＜ｃｙｃｌｅ０か否かを判断する（ステップＳ２５０４）。端末＃０が、ｔｉｍｅｒ０＜ｃｙｃｌｅ０であると判断した場合（ステップＳ２５０４：Ｙｅｓ）、ｔｉｍｅｒ０のインクリメントを行い（ステップＳ２５０５）、ステップＳ２５０３へ戻る。ここでは、５分ごとに電池残量のチェックを行う例を示している。ｔｉｍｅｒ０のインクリメントは端末＃０がタイマー割り込みごとに割り込み時間間隔をｔｉｍｅｒ０に加算することであり、５分の経過をカウントしている。
【００９１】
つぎに、端末＃０が、ｔｉｍｅｒ０＜ｃｙｃｌｅ０でないと判断した場合（ステップＳ２５０４：Ｎｏ）、電池残量のチェックを行い（ステップＳ２５０６）、電池残量≦閾値２（たとえば、電池容量の１０［％］）であるか否かを判断する（ステップＳ２５０７）。端末＃０が、電池残量≦閾値２であると判断した場合（ステップＳ２５０７：Ｙｅｓ）、電池残量状態＝低に設定し（ステップＳ２５１０）、ステップＳ２５１１へ移行する。
【００９２】
端末＃０が、電池残量≦閾値２でないと判断した場合（ステップＳ２５０７：Ｎｏ）、電池残量≦閾値１（たとえば、電池容量の５０［％］）であるか否かを判断する（ステップＳ２５０８）。端末＃０が、電池残量≦閾値１でないと判断した場合（ステップＳ２５０８：Ｎｏ）、ステップＳ２５０１へ戻る。端末＃０が、電池残量≦閾値１であると判断した場合（ステップＳ２５０８：Ｙｅｓ）、電池残量状態＝中に設定し（ステップＳ２５０９）、ステップＳ２５１１へ移行する。
【００９３】
ステップＳ２５１１において、端末＃０が、端末の識別情報を送信し（ステップＳ２５１１）、端末＃１が、端末の識別情報を受信し（ステップＳ２５１２）、端末＃１が、受信した端末の識別情報が許可端末に登録されているか否かを判断する（ステップＳ２５１３）。ここでは、端末＃０が端末＃０の識別情報を端末＃１に送信し、端末＃１がテーブル内の許可端末の項目から端末＃０の識別情報を検索する。
【００９４】
そして、端末＃１が、受信した端末の識別情報が許可端末に登録されていると判断した場合（ステップＳ２５１３：Ｙｅｓ）、移行許可を送信し（ステップＳ２５１４）、ステップＳ２５３５へ移行する。一方、端末＃１が、受信した端末の識別情報が許可端末に登録されていないと判断した場合（ステップＳ２５１３：Ｎｏ）、移行拒否を送信し（ステップＳ２５１５）、一連の処理を終了する。
【００９５】
一方、ステップＳ２５１４またはステップＳ２５１５のつぎに、端末＃０が、移行許可または移行拒否を受信したか否かを判断する（ステップＳ２５１６）。端末＃０が、移行許可または移行拒否を受信していないと判断した場合（ステップＳ２５１６：Ｎｏ）、ステップＳ２５１６へ戻る。端末＃０が、移行許可または移行拒否を受信したと判断した場合（ステップＳ２５１６：Ｙｅｓ）、移行許可を受信したか否かを判断する（ステップＳ２５１７）。
【００９６】
端末＃０が、移行許可を受信していない（移行拒否を受信した）と判断した場合（ステップＳ２５１７：Ｎｏ）、一連の処理を終了する。一方、端末＃０が、移行許可を受信したと判断した場合（ステップＳ２５１７：Ｙｅｓ）、移行許可を送信した端末を移行先端末に設定し（ステップＳ２５１８）、ステップＳ２５１９へ移行する。
【００９７】
つぎに、端末＃０が、実行中のタスクおよび待機中のタスクの中で未選択のタスクがあるか否かを判断する（ステップＳ２５１９）。端末＃０が、実行中のタスクおよび待機中のタスクの中で未選択のタスクがあると判断した場合（ステップＳ２５１９：Ｙｅｓ）、未選択のタスクから１つのタスクを選択タスクとして選択する（ステップＳ２５２０）。
【００９８】
端末＃０が、選択タスクの移行電力コストが登録されているか否かを判断する（ステップＳ２５２１）。端末＃０が、選択タスクの移行電力コストが登録されていないと判断した場合（ステップＳ２５２１：Ｎｏ）、ステップＳ２５１９へ戻る。端末＃０が、選択タスクの移行電力コストが登録されていると判断した場合（ステップＳ２５２１：Ｙｅｓ）、電池残量状態が中であるか否かを判断する（ステップＳ２５２２）。
【００９９】
端末＃０が、電池残量状態が中であると判断した場合（ステップＳ２５２２：Ｙｅｓ）、選択タスクはリアルタイム制約なしであるか否かを判断する（ステップＳ２５２３）。端末＃０が、選択タスクはリアルタイム制約なしでないと判断した場合（ステップＳ２５２３：Ｎｏ）、ステップＳ２５１９へ戻る。端末＃０が、選択タスクはリアルタイム制約なしであると判断した場合（ステップＳ２５２３：Ｙｅｓ）、選択タスクを移行対象タスクに設定する（ステップＳ２５２４）。
【０１００】
端末＃０が、選択タスクをレディーキューから削除し（ステップＳ２５２５）、ステップＳ２５１９へ戻る。一方、電池残量状態が中でない場合（ステップＳ２５２２：Ｎｏ）、ステップＳ２５２４へ移行する。すなわち、電池残量状態が中であれば、移行電力コストが登録されているタスクのうちリアルタイム制約なしのタスクを端末＃１に移行させるが、電池残量状態が低であれば、移行電力コストが登録されているすべてのタスクを端末＃１に移行させる。
【０１０１】
また、端末＃０が、実行中のタスクおよび待機中のタスクの中で未選択のタスクがないと判断した場合（ステップＳ２５１９：Ｎｏ）、ステップＳ２５２６へ移行する。
【０１０２】
ステップＳ２５２６において、端末＃０が、未送信の移行対象タスクがあるか否かを判断する（ステップＳ２５２６）。端末＃０が、未送信の移行対象タスクがあると判断した場合（ステップＳ２５２６：Ｙｅｓ）、未送信の移行対象タスクから１つの移行対象タスクを選択し（ステップＳ２５２７）、選択した移行対象タスクの識別情報を送信する（ステップＳ２５２８）。
【０１０３】
端末＃１が、タスクの識別情報またはタスクの移行完了を受信したか否かを判断し（ステップＳ２５３５）、タスクの識別情報およびタスクの移行完了を受信していないと判断した場合（ステップＳ２５３５：Ｎｏ）、ステップＳ２５３５に戻る。端末＃１が、タスクの識別情報を受信したと判断した場合（ステップＳ２５３５：タスクの識別情報）、識別情報を受信したタスクのコードをメモリに保持しているか否かを判断する（ステップＳ２５３６）。
【０１０４】
端末＃１が、識別情報を受信したタスクのコードをメモリに保持していると判断した場合（ステップＳ２５３６：Ｙｅｓ）、タスクの実行中データの送信依頼を送信し（ステップＳ２５３７）、ステップＳ２５３９へ移行する。端末＃１が、識別情報を受信したタスクのコードをメモリに保持していないと判断した場合（ステップＳ２５３６：Ｎｏ）、タスクの実行中データおよびタスクのコードの送信依頼を送信し（ステップＳ２５３８）、ステップＳ２５３９へ移行する。
【０１０５】
端末＃０が、送信依頼を受信したか否かを判断し（ステップＳ２５２９）、送信依頼を受信していないと判断した場合（ステップＳ２５２９：Ｎｏ）、ステップＳ２５２９へ戻る。一方、端末＃０が、送信依頼を受信したと判断した場合（ステップＳ２５２９：Ｙｅｓ）、移行対象タスクの実行時のクロック周波数を取得する（ステップＳ２５３０）。そして、端末＃０が、受信した送信依頼が実行中データのみの送信依頼であるか否かを判断する（ステップＳ２５３１）。
【０１０６】
端末＃０が、受信した送信依頼が実行中データのみの送信依頼であると判断した場合（ステップＳ２５３１：Ｙｅｓ）、移行対象タスクの実行中データと移行対象タスクのクロック周波数とを送信し（ステップＳ２５３２）、ステップＳ２５２６へ戻る。端末＃０が、受信した送信依頼が実行中データのみの送信依頼でないと判断した場合（ステップＳ２５３１：Ｎｏ）、移行対象タスクの実行中データと移行対象タスクのコードと移行対象タスクのクロック周波数とを送信する（ステップＳ２５３３）。そして、ステップＳ２５３３のつぎに、ステップＳ２５２６へ戻る。
【０１０７】
端末＃０が、未送信の移行対象タスクがないと判断した場合（ステップＳ２５２６：Ｎｏ）、移行完了を送信し（ステップＳ２５３４）、ステップＳ２５４３へ移行する。
【０１０８】
一方、ステップＳ２５３９において、端末＃１が、データを受信したか否かを判断し（ステップＳ２５３９）、データを受信していないと判断した場合（ステップＳ２５３９：Ｎｏ）、ステップＳ２５３９に戻る。端末＃１が、データを受信したと判断した場合（ステップＳ２５３９：Ｙｅｓ）、受信したデータを保存し（ステップＳ２５４０）、タスクをレディーキューに積む（ステップＳ２５４１）。端末＃１が、タスクテーブルにクロック周波数を登録し（ステップＳ２５４２）、ステップＳ２５３５へ戻る。
【０１０９】
つぎに、端末＃０が、ｔｉｍｅｒ１＝０に設定し（ステップＳ２５４３）、ｃｙｃｌｅ１＝５［ｍｉｎｓ］に設定し（ステップＳ２５４４）、イベント発生を検出したか否かを判断する（ステップＳ２５４５）。端末＃０が、イベント発生を検出していないと判断した場合（ステップＳ２５４５：Ｎｏ）、ステップＳ２５４５に戻る。端末＃０が、タイマー割り込みを検出したと判断した場合（ステップＳ２５４５：タイマー割り込み）、ｔｉｍｅｒ１＜ｃｙｃｌｅ１であるか否かを判断する（ステップＳ２５４６）。
【０１１０】
端末＃０が、ｔｉｍｅｒ１＜ｃｙｃｌｅ１であると判断した場合（ステップＳ２５４６：Ｙｅｓ）、ｔｉｍｅｒ１のインクリメントを行い（ステップＳ２５４７）、ステップＳ２５４５へ戻る。端末＃０が、ｔｉｍｅｒ１＜ｃｙｃｌｅ１でないと判断した場合（ステップＳ２５４６：Ｎｏ）、電池残量のチェックを行い（ステップＳ２５４８）、電池残量のチェック依頼通知を行い（ステップＳ２５４９）、ステップＳ２５４３へ戻る。
【０１１１】
また、ステップＳ２５４５において、端末＃０が、端末＃１から電池残量を受信したと判断した場合（ステップＳ２５４５：電池残量を受信）、端末＃０の電池残量≧端末＃１の電池残量であるか否かを判断する（ステップＳ２５５０）。端末＃０が、端末＃０の電池残量≧端末＃１の電池残量であると判断した場合（ステップＳ２５５０：Ｙｅｓ）、移行対象タスクの実行停止と実行中データの回収を送信し（ステップＳ２５５１）、ステップＳ２５４５へ戻る。端末＃０が、端末＃０の電池残量≧端末＃１の電池残量でないと判断した場合（ステップＳ２５５０：Ｎｏ）、ステップＳ２５４５へ戻る。
【０１１２】
また、ステップＳ２５４５において、端末＃０が、端末＃１から実行結果を受信したと判断した場合（ステップＳ２５４５：実行結果を受信）、受信した実行結果をメモリに保存する（ステップＳ２５５２）。そして、端末＃０が、実行結果を受信したタスクの実行を開始し（ステップＳ２５５３）、ステップＳ２５４５へ戻る。
【０１１３】
また、ステップＳ２５４５において、端末＃０が、端末＃１から実行中データを受信したと判断した場合（ステップＳ２５４５：実行中データを受信）、実行中データをメモリに保存し（ステップＳ２５５４）。端末＃０が、実行中データを回収したタスクをレディーキューに積み（ステップＳ２５５５）、ステップＳ２５４５へ戻る。
【０１１４】
ステップＳ２５３５の移行完了の場合のつぎに、端末＃１が、ｔｉｍｅｒ２＝０に設定し（ステップＳ２５５６）、ｃｙｃｌｅ２＝１００［ｍｓ］に設定する（ステップＳ２５５７）。そして、端末＃１が、イベント発生を検出したか否かを判断する（ステップＳ２５５８）。端末＃１が、イベント発生を検出していないと判断した場合（ステップＳ２５５８：Ｎｏ）、ステップＳ２５５８に戻る。端末＃１が、電池残量のチェック依頼を受信したと判断した場合（ステップＳ２５５８：電池残量のチェック依頼）、電池残量のチェックを行い（ステップＳ２５５９）、依頼元端末に電池残量を送信する（ステップＳ２５６０）。
【０１１５】
また、ステップＳ２５５８において、端末＃１が、実行停止依頼を受信したと判断した場合（ステップＳ２５５８：実行停止）、移行されたタスクの実行を停止し（ステップＳ２５６１）、実行中データを移行元端末に送信する（ステップＳ２５６２）。
【０１１６】
また、ステップＳ２５５８において、端末＃１が、タスクスイッチを検出したと判断した場合（ステップＳ２５５８：タスクスイッチ）、切り替えられたタスクに応じた周波数・電源電圧の設定を行う（ステップＳ２５６３）。そして、端末＃１が、該タスクの実行を開始する（ステップＳ２５６４）。
【０１１７】
また、ステップＳ２５５８において、端末＃１が、タスクの実行終了を検出したと判断した場合（ステップＳ２５５８：タスクの実行終了）、実行が終了したタスクの割当元端末が他端末であるか否かを判断する（ステップＳ２５６５）。端末＃１が、割当元端末が他端末でないと判断した場合（ステップＳ２５６５：Ｎｏ）、ステップＳ２５５８へ戻る。端末＃１が、割当元端末が他端末であると判断した場合（ステップＳ２５６５：Ｙｅｓ）、実行結果を割当元端末に送信し（ステップＳ２５６６）、周波数・電源電圧を初期値に設定し（ステップＳ２５６７）、ステップＳ２５５８へ戻る。
【０１１８】
また、ステップＳ２５５８において、端末＃１が、タイマー割り込みを検出したと判断した場合（ステップＳ２５５８：タイマー割り込み）、ｔｉｍｅｒ２＜ｃｙｃｌｅ２であるか否かを判断する（ステップＳ２５６８）。端末＃１が、ｔｉｍｅｒ２＜ｃｙｃｌｅ２であると判断した場合（ステップＳ２５６８：Ｙｅｓ）、ｔｉｍｅｒ２のインクリメントを行い（ステップＳ２５６９）、ステップＳ２５５８へ戻る。
【０１１９】
一方、端末＃１が、ｔｉｍｅｒ２＜ｃｙｃｌｅ２でないと判断した場合（ステップＳ２５６８：Ｎｏ）、電池残量のチェックを行い（ステップＳ２５７０）、移行されたタスクの実行中データの通信電力コストを取得する（ステップＳ２５７１）。そして、端末＃１が、電池残量＜移行されたタスクの実行中データの通信電力コストの合計値×係数であるか否かを判断する（ステップＳ２５７２）。
【０１２０】
端末＃１が、電池残量＜移行されたタスクの実行中データの通信電力コストの合計値×係数でないと判断した場合（ステップＳ２５７２：Ｎｏ）、ステップＳ２５５６へ戻る。一方、端末＃１が、電池残量＜移行されたタスクの実行中データの通信電力コストの合計値×係数であると判断した場合（ステップＳ２５７２：Ｙｅｓ）、移行されたタスクの実行中データを移行元端末に送信する（ステップＳ２５７３）。そして、移行されたぇタスクをレディーキューから削除し（ステップＳ２５７４）、ステップＳ２５５６へ戻る。
【０１２１】
以上説明したように、制御プログラム、制御装置、および制御方法によれば、タスクを実行中に第１の端末の電池残量が閾値以下となると、該タスクの実行を停止して、該タスクの識別情報を第２の端末に送信して、第２の端末で実行させる。すなわち、実行中のタスクを第２の端末に移行することで、タスクの実行による第１の端末の電池消耗を抑制することができ、該タスクの実行結果の消失を防止することができる。
【０１２２】
また、該タスクのコードを第２の端末が有していなくとも、タスクのコードを第２の端末に送信することにより、第２の端末にタスクを移行させることができ、第１の端末の電池消耗を抑制することができる。
【０１２３】
また、実行可能性に関する情報がタスクのコードを有していることを示す場合、タスクの実行指示を第２の端末に送信することで、第２の端末にタスクを移行させることができ、第１の端末の電池消耗を抑制することができる。
【０１２４】
また、タスクの実行結果を第２の端末に送信することにより、実行結果に継続性のあるタスクであっても、第２の端末にタスクを移行させることができ、第１の端末の電池消耗を抑制することができる。
【０１２５】
また、第２の端末で該タスクが実行不可である場合、該タスクの実行を停止しないことにより、タスクの実行を中断させることなく第１の端末でのタスクの実行を制御することができる。
【０１２６】
また、第１の端末の電池残量が閾値以下となっても、実行中のタスクがタスクの実行開始からの実行期限を有していれば第２の端末に移行させないことにより、実行中のタスクを中断させないことで、該タスクの実行期限を遵守させることができる。
【０１２７】
また、第１の端末の電池残量が閾値よりも小さい他の閾値以下となった場合、実行中のタスクがタスクの実行開始からの実行期限を有していれば第２の端末に移行させる。これにより、第１の端末の電池切れを防止することができ、第１の端末の電池切れにより実行中のタスクの実行結果が消失するのを防止することができる。
【０１２８】
以上説明したように、制御プログラム、制御装置、および制御方法によれば、第１の端末から実行指示を受信したタスクを第２の端末で実行中に、第２の端末の電池残量が閾値以下となるのを検出する。そして、第２の端末の電池残量が閾値以下となるのが検出された場合、該受信したタスクの実行結果を第１の端末に送信することにより、タスクの実行結果の消失を防止することができる。
【０１２９】
以上説明したように、制御プログラム、制御装置、および制御方法によれば、第１の端末から実行指示を受信したタスクがタスクの実行開始からの実行期限を有していなければ、ＣＰＵに与える電源電圧の値を下げる。これにより、第２の端末を省電力化することができ、第２の端末の電池消耗を防止することができる。
【０１３０】
以上説明したように、制御プログラム、制御装置、および制御方法によれば、第１の端末から実行指示を受信したタスクがタスクの実行開始からの実行期限を有していなければ、ＣＰＵに与えるクロック周波数の値を下げる。これにより、第２の端末を省電力化することができ、第２の端末の電池消耗を防止することができる。
【符号の説明】
【０１３１】
９０１，９１４  検出部
９０２  停止部
９０３  第１の送信部
９０４，９１１  受信部
９０５  第２の送信部
９１２  設定部
９１３  実行部
９１５  送信部
【図１】
2012017545.tif 000003
【図２】
2012017545.tif 000004
【図３】
2012017545.tif 000005
【図４】
2012017545.tif 000006
【図５】
2012017545.tif 000007
【図６】
2012017545.tif 000008
【図７】
2012017545.tif 000009
【図８】
2012017545.tif 000010
【図９】
2012017545.tif 000011
【図１０】
2012017545.tif 000012
【図１１】
2012017545.tif 000013
【図１２】
2012017545.tif 000014
【図１３】
2012017545.tif 000015
【図１４】
2012017545.tif 000016
【図１５】
2012017545.tif 000017
【図１６】
2012017545.tif 000018
【図１７】
2012017545.tif 000019
【図１８】
2012017545.tif 000020
【図１９】
2012017545.tif 000021
【図２０】
2012017545.tif 000022
【図２１】
2012017545.tif 000023
【図２２】
2012017545.tif 000024
【図２３】
2012017545.tif 000025
【図２４】
2012017545.tif 000026
【図２５】
2012017545.tif 000027
【図２６】
2012017545.tif 000028
【図２７】
2012017545.tif 000029
【図２８】
2012017545.tif 000030
【図２９】
2012017545.tif 000031
【図３０】
2012017545.tif 000032
【図３１】
2012017545.tif 000033
【国際調査報告】
2012017545.tif 000034
2012017545.tif 000035
2012017545.tif 000036
2012017545.tif 000037