複数のコンピュータで並列処理や分散処理を行う場合、1台のマスター機能を有するコンピュータが複数のコンピュータの全体の制御を行うと、割り当てにかかる時間が大きくなる可能性がある。そこで、本実施の形態では、複数のコンピュータをグループ化し、スケジューリングシステムの全体を制御する全体マスター端末とグループに属するコンピュータを制御するグループマスター端末とが、割り当て処理を行うこととする。これにより、全体マスター端末の割り当てにかかる時間を減らし、全体マスター端末が過負荷状態となるのを回避することができる。
しかしながら、緊急性の高いアプリを実行する場合、全体マスター端末が割当先となるグループを決定する処理と、グループマスター端末がグループに属する複数の携帯端末から割当先を決定する処理との2段階の割り当て処理が行われる。緊急性の高いアプリとは、たとえば、動画処理や画像処理などのストリーミング系のアプリが挙げられ、携帯電話であれば電話やメールが挙げられる。たとえば、動画処理や画像処理などのストリーミング系のアプリでは、応答が遅いと処理が途切れてしまい、利用者に不快感を与えてしまうので、ここでは緊急性の高いアプリとして挙げる。また、緊急性の高いアプリとしては、応答性が早い方が利用者によいとスケジューリングシステムの設計者によって判断されたアプリである。2段階の割り当て処理が行われると、緊急性の高いアプリの場合、実行性能に影響を与える可能性がある。
また、全体マスター端末やグループマスター端末で緊急性の高いアプリが起動されると、全体マスター端末やグループマスター端末は、マスター機能に関する処理と、該アプリと、の両方を実行しなければならない。そのため、マスター機能に関する処理により該アプリの性能が劣化してしまう可能性がある。
そこで、本実施の形態では、緊急性の高いアプリであるか否かによって、割り当て方法を切り替えることで、アプリの性能劣化を低減させる。
本実施の形態では、並列処理を行うスケジューリングシステムについて、複数の携帯端末を例に挙げて説明する。たとえば、LTE(Long Term Evolution)などの高速無線通信サービスによって、今後複数の携帯端末で並列分散処理を行うサービスが提供されることが予測される。以下に添付図面を参照して、本発明にかかるスケジューリング方法、およびスケジューリングシステムの実施の形態を詳細に説明する。
図1−1〜1−2は、本発明による割り当て例を示す説明図である。図1−1,1−2では、複数の携帯端末201が、第1グループであるグループG1と第2グループであるグループG2に分類されている。グループG1は携帯端末201−1〜201−4を有し、グループG2は携帯端末201−5〜201−8を有している。グループG1とグループG2との通信は、アクセスポイント202を介して接続される。アクセスポイント202とは、たとえば、携帯端末201であれば基地局である。グループG1の携帯端末201間の通信は、アドホックモードで直接接続される。
ここで、携帯端末201―1は、複数の携帯端末201で並列分散処理されるアプリやスレッドを割り当てる全体マスターの機能を有する全体マスター端末である。さらに、携帯端末201−1は、グループG1に含まれる携帯端末201にアプリやスレッドを割り当てるグループマスターの機能を有する。ここで、携帯端末201―5は、グループG2に含まれる携帯端末201にアプリやスレッドを割り当てるグループマスターの機能を有するグループマスター端末である。
たとえば、携帯端末201―1が起動要求の発生した対象アプリの優先度が所定の優先度であるか否かを判定する。携帯端末201−1は、対象アプリの優先度が所定の優先度であれば、対象アプリを緊急性の高いアプリであると判断し、対象アプリの優先度が所定の優先度でなければ、対象アプリを緊急性の高くないアプリであると判断する。ここでは、たとえば、対象アプリの優先度は、対象アプリの設計者によりあらかじめ定められていることとする。
まず、図1−1の例では、携帯端末201−1が、対象アプリの優先度が所定の優先度であると判断する。そして、携帯端末201−1が、アプリの優先度が所定の優先度である場合、グループG2またはグループG1に含まれる他の携帯端末201に全体マスター端末の機能を移転する。図1−1の例では、携帯端末201−1が、携帯端末201−2に全体マスターの機能を移転する。そして、携帯端末201−1が対象アプリの実行を直ちに開始する。これにより、携帯端末201−1が対象アプリの実行に処理を専念できる。
つぎに、図1−2の例では、携帯端末201−1が、対象アプリの優先度が所定の優先度でないと判断する。そして、携帯端末201−1が、対象アプリの優先度が所定の優先度でない場合、ランキューにアプリを登録する。これにより、携帯端末201−1が、対象アプリと全体マスター端末の機能に関する処理とを切り替えながら実行する。
(スケジューリングシステム例)
図2は、スケジューリングシステムの一例を示す説明図である。スケジューリングシステム200では、複数の携帯端末201−1〜201−n(n≧2,図2ではn=16)と、アクセスポイント202−1〜202−m(m≧1,図2ではm=3)と、を有している。複数の携帯端末201−1〜202−16はグループに群分けされている。
携帯端末201間は、無線LANネットワークで接続される。たとえば、異なるグループの携帯端末201同士は、アクセスポイント202を介して通信を行い、同一のグループの携帯端末201同士は、アクセスポイント202を介さずに直接通信を行う。また、携帯端末201は、常時同一のアクセスポイント202に接続するのではなく、近傍のアクセスポイント202を探索する。アクセスポイント202間については、たとえば、有線LANネットワークで接続されている。
図2では、グループG1には携帯端末201−1〜201−4が属し、グループG2には携帯端末201−5〜201−8が属し、グループG3には携帯端末201−9〜201−12が属し、グループG4には携帯端末201−13〜201−16が属する。グループについては、たとえば、同一アクセスポイント202を介する携帯端末201ごとに所定数で分けてもよい。
また、複数の携帯端末201は、あらかじめ該スケジューリングシステム200に属する識別情報を有していることとする。複数の携帯端末201−1〜201−16は、全体マスター端末と、グループマスター端末と、スレーブ端末に分類される。全体マスター端末は、スケジューリングシステム200の全体を制御し、全体マスター端末が属するグループのグループマスター端末でもある。図2の例では、全体マスター端末は、携帯端末201−1である。
グループマスター端末は、グループマスター端末が属するグループの全体を制御する。図2の例では、グループG1のグループマスター端末は携帯端末201−1であり、グループG2のグループマスター端末は携帯端末201〜5である。そして、図2の例では、グループG3のグループマスター端末は携帯端末201−9であり、グループG4のグループマスター端末は携帯端末201−13である。複数の携帯端末201−1〜201−16のうち、全体マスター端末とグループマスター端末を除く残余の携帯端末201は、スレーブ端末である。
全体マスター端末が、複数の携帯端末201で並列処理可能な対象アプリの起動指示を受け付けると、実行要求をスレーブ端末に送信する。つぎに、各携帯端末201のハードウェア構成例を図3に示す。本実施の形態では、理解の容易化のために、すべての携帯端末201を同一のハードウェア構成としている。
(各携帯端末201のハードウェア構成例)
図3は、各携帯端末201のハードウェア構成例を示す説明図である。携帯端末201は、CPU301と、I/O(Input/Output)302と、I/F(InterFace)304と、メモリコントローラ306と、メモリ307と、ストレージ309と、ストレージコントローラ308と、を有している。CPU301と、I/O302と、I/F304と、メモリコントローラ306と、ストレージコントローラ308とは、バス310を介して接続されている。
ここで、CPU301は、携帯端末201の全体の制御を司る。CPU301は、レジスタとコアとキャッシュを有している。コアは、演算機能を有している。各CPU301内のレジスタは、PC(Program Counter)やリセットレジスタを有している。CPU301はOS321を実行し、OS321は携帯端末201に割り当てられたアプリやスレッドを実行する。OS321は、ウエイトキュー331と、ランキュー332を有している。OS321は、ウエイトキュー331にアプリが積まれると、該アプリの起動指示を受け付けたと判断する。OS321は、実行待機中のアプリやスレッドを実行キューであるランキュー332に積むことで、複数のアプリやスレッドを切り替えて実行することができる。
I/O302は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。I/O302は、たとえば、TFT液晶ディスプレイなどを採用することができる。また、I/O302は、タッチパネル式の入力パッドであり、数字、各種指示などの入力を受け付けることができる。
I/F304は、無線通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク305に接続され、ネットワーク305を介して他の携帯端末201に接続される。そして、I/F304は、ネットワーク305と内部のインターフェースを司り、外部装置や他の携帯端末201からのデータの入出力を制御する。I/F304には、たとえば、無線通信用のモデムを採用することができる。たとえば、I/F304は、アドホックモードにより他の携帯端末201と直接通信を行い、インフラストラクチャー・モードにより他の携帯端末201とアクセスポイント202を介して通信を行う機能を有する。
ストレージ309は、たとえば、ROM、フラッシュROMなどが挙げられる。ストレージコントローラ308は、CPU301からストレージ309へのアクセスを制御する。たとえば、ROMは、ブートプログラムなどのプログラムを記憶している。フラッシュROMは、OS321などのシステムソフトウェアやアプリケーションのプログラムを記憶している。
メモリ307は、各CPU301のワークエリアとして使用される。メモリコントローラ306は、CPU301からメモリ307へのアクセスを制御する。メモリ307は、たとえば、RAMが挙げられる。つぎに、メモリ307の管理について図4−1〜4−3を用いて説明する。
(各携帯端末201のメモリ307管理例)
図4−1は、各携帯端末201のメモリ307管理の一例を示す説明図である。本実施の形態では、全体マスター端末とグループマスター端末の2段階で処理の割り当てを決定する。そこで、本実施の形態では、割り当てや並列処理を容易化させるために、各携帯端末201がメモリ307の領域を3つの領域に分割して管理する。ただし、携帯端末201が、緊急性の高いアプリ(以下、「強制アプリ」と称する。)を実行中であれば、強制アプリにメモリ307を独占して使用させるために3つの領域に分けない。図4−1で示すように、携帯端末201が強制アプリを実行していない場合にメモリ307は、GLOBAL領域と、SHARED領域と、LOCAL領域と、の3つの領域に分けて管理される。
たとえば、GLOBAL領域は第1領域であり、GLOBAL領域には、異なるグループで割り当てられたアプリやスレッドに関するデータが記憶され、該スケジューリングシステム200全体に関する情報が記憶される。たとえば、SHARED領域は第2領域であり、SHARED領域には、携帯端末201が属するグループのグループマスター端末に割り当てられたアプリの命令コードやアプリのデータやスレッド間で共有するデータなどが記憶される。たとえば、LOCAL領域には、携帯端末201でのみ実行されるアプリやスレッドに関する情報が記憶される。
また、携帯端末201が強制アプリを実行している場合にメモリ307領域が分類されていると、強制アプリの実行性能に影響を与える可能性があるため、携帯端末201が強制アプリを実行している場合には、メモリ307領域をすべてLOCAL領域とする。
メモリ管理テーブル400は、領域名、アドレスのフィールドを有している。領域名のフィールドには、LOCAL、SHARED、GLOBALが登録されている。アドレスのフィールドには、領域ごとに確保されたアドレス情報が登録される。携帯端末201が強制アプリを実行していない場合のメモリ管理テーブル400には、各領域に対応するアドレスのフィールドにはアドレス情報が登録されている。携帯端末201が強制アプリを実行している場合のメモリ管理テーブル400には、SHARED領域とGLOBAL領域に対応するアドレスのフィールドにはアドレス情報が登録されていない。メモリ管理テーブル400については、LOCAL領域または書き込み可能なストレージ309に記憶されていることとする。
図4−2は、GLOBAL領域の管理例を示す説明図である。図4−2では、各携帯端末201のメモリ307であることを明確にするため、各携帯端末201に付された通し番号と同一の番号がメモリ307にも付してある。ここでは、GLOBAL領域は、CPU301のキャッシュのスヌープ処理のように管理される。たとえば、ある携帯端末201がGLOBAL領域内のデータを変更しても、他の携帯端末201が有するGLOBAL領域内の該データを同様に更新することができるようにする。
図4−2では、携帯端末201−4でGLOBAL領域への書き込み要求が発生し、GLOBAL領域に変更が発生した例を示している。たとえば、携帯端末201−4ではGLOBAL領域への書き込み要求はメモリコントローラ306が検出することとする。そして、携帯端末201−4のメモリコントローラ306がCPU301に対して該書き込み要求の検出を通知し、携帯端末201のCPU301が、(1)I/F304を介して全体マスター端末である携帯端末201−1にデータの変更通知を送信する。
そして、携帯端末201−1が該データの変更通知を受信すると、該データをGLOBAL領域に有している場合、該データを更新する。そして、携帯端末201−1が、(2)他のグループのグループマスター端末である携帯端末201−5と携帯端末201−9と携帯端末201−13とにデータの変更通知を送信する。さらに、携帯端末201−1が、(3)携帯端末201−1が属するグループG1のスレーブ端末である携帯端末201−2と携帯端末201−3に対して該データの変更通知を送信する。
そして、各グループのグループマスター端末である携帯端末201−5や携帯端末201−9や携帯端末201−13は、データの変更通知を受け付けると、該データをそれぞれのGLOBAL領域に有している場合、(4)該データを更新する。そして、携帯端末201−5や携帯端末201−9や携帯端末201−13は、(5)それぞれが属するグループのスレーブ端末に該データの変更通知を送信する。各スレーブ端末は、該データの変更通知を受け付けると、該データをGLOBAL領域に有している場合、(6)該データを更新する。
図4−3は、SHARED領域の管理例を示す説明図である。ここでは、SHARED領域については、分散共有メモリのように、グループ内の携帯端末201で共有することとする。また、位置情報は、全体マスター端末やグループマスター端末が有していることとする。位置情報の詳細は、図5にて後述する。
図4−3の例では、たとえば、全体マスター端末である携帯端末201−1が、(1)割り当て指示の送信によってスレッドを携帯端末201−3に割り当て、(2)スレッドの格納指示を携帯端末201−2に送信する。そして、携帯端末201−2は、(3)格納指示によってスレッドの命令コードをSHARED領域に格納する。携帯端末201−3は、(4)携帯端末201−2のSHARD領域に記憶されたスレッドの命令コードを参照することで、割り当てられたスレッドを実行する。スレッドの命令コードを参照するとは、具体的には、たとえば、携帯端末201−3がI/F304を介して携帯端末201−2にアドホックモードで通信を行い、携帯端末201−2のSHARED領域にアクセスする。
(各携帯端末201の有するテーブル例)
図5は、各携帯端末201の有するテーブル例を示す説明図である。各携帯端末201は、全体マスター端末の機能を処理している場合と、グループマスター端末の機能を処理している場合と、スレーブ端末の機能を処理している場合と、で保持しているテーブルが異なる。
まず、たとえば、全体マスター端末は、グループマスター端末情報501と、位置情報502と、スレッドテーブル600と、を有している。図5では、全体マスター端末である携帯端末201−1の例が挙げられている。グループマスター端末情報501には、いずれの携帯端末201が各グループのグループマスター端末であるかが登録されている。たとえば、グループマスター端末情報501には、グループマスター端末の識別情報が登録されている。これにより、全体マスター端末は、グループマスター端末情報501に登録されている携帯端末201の識別情報に基づいて、各グループにアプリやスレッドの割り当て依頼通知や実行終了通知を送信することができる。
位置情報502には、全体マスター端末のグループに属する各スレーブ端末の位置に関する情報が登録されている。上述したように、同一グループ内であれば、全体マスター端末とスレーブ端末とは、アドホックモードにより通信が行われるため、全体マスター端末は、GPS(Global Positioning System)などを用いて取得したスレーブ端末の位置に関する情報を有していることとする。位置情報502は、グループ内端末ID、位置のフィールドを有している。グループ内端末IDのフィールドには、全体マスター端末のグループに属するスレーブ端末の識別情報が登録されている。位置のフィールドには、全体マスター端末のグループに属するスレーブ端末の位置情報が登録されている。グループマスター端末情報501は、全体マスター端末のメモリ307などの記憶装置に記憶されている。位置情報502は、上述したようにメモリ307のSHARED領域に記憶されている。スレッドテーブル600については、図6を用いて後述する。
つぎに、たとえば、グループマスター端末は、全体マスター端末情報503と、位置情報504と、スレッドテーブル600と、を有している。全体マスター端末情報503には、全体マスター端末の識別情報が登録されている。図5では、グループマスター端末である携帯端末201−5の例が挙げられている。これにより、グループマスター端末が、後述する割り当て依頼通知やマイグレーション依頼通知や実行終了通知などを全体マスター端末へ送信することができる。
位置情報504には、グループマスター端末のグループに属する各スレーブ端末の位置に関する情報が登録されている。位置情報504は、グループ内端末ID、位置のフィールドを有している。グループ内端末IDのフィールドには、グループマスター端末のグループに属するスレーブ端末の識別情報が登録されている。位置のフィールドには、全体マスター端末のグループに属するスレーブ端末の位置情報が登録されている。これにより、グループマスター端末が、同一グループに属するスレーブ端末とアドホックモードにより通信を行うことができる。全体マスター端末情報503は、全体マスター端末のメモリ307などの記憶装置に記憶されている。位置情報504は、上述したようにメモリ307のSHARED領域に記憶されている。スレッドテーブル600については、図6を用いて後述する。
そして、スレーブ端末は、グループマスター端末情報505と、スレッドテーブル600と、を有している。図5では、スレーブ端末である携帯端末201−2の例が挙げられている。グループマスター端末情報505は、スレーブ端末が属するグループのグループマスター端末の識別情報が登録されている。これにより、各スレーブ端末が、後述する割り当て依頼通知やマイグレーション依頼通知や実行終了通知などをグループマスター端末へ送信することができる。グループマスター端末情報505は、全体マスター端末のメモリ307などの記憶装置に記憶されている。つぎに、スレッドテーブル600について、図6を用いて説明する。
(スレッドテーブル600)
図6は、スレッドテーブル600の一例を示す説明図である。スレッドテーブル600には、各アプリに関する情報が登録されている。ここで、アプリは1以上のスレッドを有している。スレッドとは、CPU301で実行される処理の単位である。本実施の形態では、アプリが1スレッドのみを有している場合、アプリとスレッドは同一であるが、アプリが2以上のスレッドを有している場合、2以上のスレッドの集合をアプリと称する。
スレッドテーブル600は、アプリID、スレッドID、共有データ、フラグ、終了時刻、負荷量のフィールドを有している。各フィールドに値が設定されることで、スレッド情報(たとえば、601−1,601−2)がレコードとして記憶される。
アプリIDのフィールドには、アプリの識別情報が登録される。スレッドIDのフィールドには、スレッドの識別情報が登録される。共有データのフィールドには、複数のスレッドで共有されるデータが登録される。
フラグのフィールドには、アプリが強制アプリであるか否かを示す値が登録される。本実施の形態では、アプリの優先度を強制アプリであるか否かによって表すこととする。強制アプリであると分類されたアプリは、アプリの優先度が所定の優先度であると識別され、強制アプリでないと分類されたアプリは、アプリの優先度が所定の優先度でないと識別されることとする。たとえば、フラグのフィールドに0が登録されているアプリは、強制アプリでないが、フラグのフィールドに1が登録されているアプリは、強制アプリである。スレッドテーブル600は、各携帯端末201のメモリ307やストレージ309などの記憶装置に記憶されていることとする。
終了時刻のフィールドには、スレッドの実行を終了させなければならない時刻が登録される。ここでは、たとえば、終了時刻のフィールドに時刻情報が設定されているスレッドは、リアルタイム制約を有していると判断され、終了時刻のフィールドに時刻情報が設定されていないスレッドは、リアルタイム制約を有していないと判断される。また、図示していないが、実行開始から実行終了までの時間があらかじめ決定されている場合にもスレッドは、リアルタイム制約があると判断される。
本実施の形態では、理解の容易化のために、すべての携帯端末201が同一のスレッドテーブル600を有していることとしている。実際には、携帯端末201によってダウンロードされるアプリが異なるため、各携帯端末201が異なるスレッドテーブル600を有することとなる。または、並列分散処理されるスレッドの情報のみをスレッドテーブル600に登録し、各携帯端末201のみで処理されるスレッド情報は各携帯端末201でテーブル化してもよい。
また、理解の容易化のため、すべての携帯端末201が同一のハードウェア構成であるとしているため、負荷量がすべての携帯端末201で共通化されているが、実際には携帯端末201のCPU301性能によって負荷量が異なる。
(各携帯端末201のOS321の機能例を示すブロック図)
図7−1〜7−3は、各携帯端末201のOS321の機能例を示すブロック図である。各携帯端末201のOS321は、全体マスター端末の機能と、グループマスター端末の機能と、スレーブ端末の機能と、をすべて有しているが、各携帯端末201は各機能の有効無効を設定可能であることとする。これにより、各携帯端末201は、全体マスター端末の機能やグループマスター端末の機能を移転させたり、全体マスター端末やグループマスター端末に遷移したりすることができる。
図7−1では、全体マスター端末である場合のOS321(「全体マスター端末のOS321」と称する。)の機能ブロック図を示している。全体マスター端末のOS321は、検出部701#1と、アプリ識別部702#1と、第1スケジューラ703#1と、第2スケジューラ704#1と、負荷量解析部705#1と、を有している。さらに、全体マスター端末のOS321は、遷移部706#1と、実行部707#1と、判断部708#1と、更新部709#1と、格納部710#1と、を有している。
検出部701#1から格納部710#1の処理がOS321にコーディングされている。CPU301が、ストレージ309などの記憶装置に記憶されているOS321を読み出し、OS321にコーディングされている処理を実行する。これにより、検出部701#1から格納部710#1の機能が実現される。
図7−2では、グループマスター端末である場合のOS321(「グループマスター端末のOS321」と称する。)の機能ブロック図を示している。グループマスター端末のOS321は、検出部701#2と、アプリ識別部702#2と、第1スケジューラ703#2と、第2スケジューラ704#2と、負荷量解析部705#2と、を有している。さらに、グループマスター端末のOS321は、遷移部706#2と、実行部707#2と、判断部708#2と、更新部709#2と、格納部710#2と、を有している。検出部701#2から格納部710#2の処理がOS321にコーディングされている。CPU301が、ストレージ309などの記憶装置に記憶されているOS321を読み出し、OS321にコーディングされている処理を実行する。これにより、検出部701#2から格納部710#2の機能が実現される。
図7−3では、スレーブ端末である場合のOS321(「スレーブ端末のOS321」と称する。)の機能ブロック図を示している。スレーブ端末のOS321は、検出部701#3と、アプリ識別部702#3と、スケジューラ703#3と、負荷量解析部704#3と、遷移部705#3と、実行部706#3と、判断部707#3と、格納部708#3と、を有している。検出部701#3から格納部708#3の処理がOS321にコーディングされている。CPU301が、ストレージ309などの記憶装置に記憶されているOS321を読み出し、OS321にコーディングされている処理を実行する。これにより、検出部701#3から格納部708#3の機能が実現される。
つぎに、図7−1〜7−3で示したOS321の機能について、実施例1〜実施例6を挙げて詳細に説明する。
(実施例1)
まず、実施例1では、全体マスター端末において、強制アプリの起動要求を受け付けたら、強制アプリを優先的に実行させるために、全体マスター端末の機能を他の携帯端末201に移転する。これにより、強制アプリの実行にCPU301の能力を割り当てることができ、強制アプリの性能劣化を低減することで、強制アプリの応答性を向上させることができる。
まず、全体マスター端末の検出部701#1は、イベントの発生を検出する。ここでは、具体的には、たとえば、全体マスター端末の検出部701#1は、アプリ(対象アプリ)の起動要求を検出することとする。つぎに、全体マスター端末のアプリ識別部702#1は、検出部701#1により対象アプリの起動要求が検出されると、対象アプリが強制アプリであるか否かを識別する。具体的には、たとえば、全体マスター端末のアプリ識別部702#1は、対象アプリの識別情報に基づいてスレッドテーブル600を参照し、対象アプリに関するスレッド情報のフラグのフィールドの値を特定する。そして、たとえば、全体マスター端末のアプリ識別部702#1は、特定した値が1であれば、対象アプリを強制アプリであると識別し、特定した値が0であれば、対象アプリを強制アプリでないと識別する。
そして、全体マスター端末の第1スケジューラ703#1は、アプリ識別部702#1によって対象アプリが強制アプリであると識別した場合に、全体マスター端末の機能を移転する移転先の携帯端末201を選択する。つぎに、対象アプリが強制アプリである場合の詳細な動作例を説明する。
図8−1は、対象アプリが強制アプリの場合の動作例(その1)を示す説明図である。具体的には、たとえば、全体マスター端末の第1スケジューラ703#1は、アプリ識別部702#1によって対象アプリが強制アプリであると識別された場合に、同一グループG1内の各スレーブ端末の負荷量を負荷量解析部705#1に解析させる。全体マスター端末の負荷量解析部705#1は、グループG1内の各スレーブ端末の負荷量を解析する。具体的には、たとえば、全体マスター端末の負荷量解析部705#1は、グループG1内の各スレーブ端末に負荷量算出通知を送信する。
各スレーブ端末の検出部701#3は、負荷量算出通知の受信を検出する。そして、各スレーブ端末の負荷量解析部704#3は、スレーブ端末で実行中または実行待機中のアプリやスレッドの負荷量の合計値を算出する。そして、各スレーブ端末の負荷量解析部704#3は、算出した負荷量の合計値をスレーブ端末の負荷量として負荷量算出通知の送信元の携帯端末201へ送信する。
そして、全体マスター端末の負荷量解析部705#1は、各スレーブ端末から、スレーブ端末で実行中または実行待機中のアプリやスレッドの負荷量の合計値を受け付ける。図8−1では、携帯端末201−3の負荷量の合計値が75[%]であり、携帯端末201−4の負荷量の合計値が75[%]であり、携帯端末201−2の負荷量の合計値が30[%]である。
そして、たとえば、全体マスター端末の第1スケジューラ703#1は、グループG1内の強制アプリを実行していないスレーブ端末から、負荷量が最小のスレーブ端末を全体マスター端末の機能の移転先として選択する。ここでは、たとえば、移転先を携帯端末201−2とする。
図8−2は、対象アプリが強制アプリの場合の動作例(その2)を示す説明図である。全体マスター端末の第1スケジューラ703#1は、アプリ識別部702#1により対象アプリが強制アプリであると識別された場合、GLOBAL領域に記憶されているデータをすべて廃棄する。そして、全体マスター端末の第1スケジューラ703#1は、全体マスター端末の機能の移転先に決定された携帯端末201−2のSHARED領域に携帯端末201のSHARED領域に記憶された位置情報502を移行させる。
つぎに、たとえば、全体マスター端末の第1スケジューラ703#1は、SHARED領域に記憶されたデータから順に移行対象データに選択する。そして、たとえば、全体マスター端末の第1スケジューラ703#1は、選択された移行対象データと依存関係のあるアプリまたはスレッドを実行中の携帯端末201を特定する。たとえば、全体マスター端末の第1スケジューラ703#1は、スレッドテーブル600を参照することで、いずれのスレッドが移行対象データを利用しているかを特定する。そして、たとえば、全体マスター端末の第1スケジューラ703#1は、特定したスレッドが割り当てられているグループG1内のスレーブ端末を特定する。
たとえば、携帯端末201−1のSHARED領域に記憶されているデータaは、スレッド801−1−1とスレッド801−1−2で共有される共有データである。図8−2では、スレッド801−1−2が携帯端末201−4に割り当てられているため、全体マスター端末の第1スケジューラ703#1は、携帯端末201−4にデータaを送信することで、携帯端末201−4のSHARED領域にデータaを記憶させる。
たとえば、携帯端末201−1のSHARED領域に記憶されているデータkは、スレッド801−1−1とスレッド801−1−2で共有される共有データである。図8−2では、スレッド801−1−2が携帯端末201−4に割り当てられているため、全体マスター端末の第1スケジューラ703#1は、携帯端末201−4にデータkを送信することで、携帯端末201−4のSHARED領域にデータkを記憶させる。
たとえば、携帯端末201−1のSHARED領域に記憶されているデータbは、スレッド801−1−1とスレッド801−1−3で共有される共有データである。図8−2では、スレッド801−1−3が携帯端末201−3に割り当てられているため、全体マスター端末の第1スケジューラ703#1は、携帯端末201−3にデータbを送信することで、携帯端末201−3のSHARED領域にデータbを記憶させる。
そして、たとえば、全体マスター端末の第1スケジューラ703#1は、メモリ管理テーブル400のLOCAL領域に関するアドレスのフィールドにGLOBAL領域とSHARED領域のアドレスを追加する。そして、全体マスター端末の第1スケジューラ703#1は、メモリ管理テーブル400のGLOBAL領域のアドレスのフィールドと、SHARED領域のアドレスのフィールドと、を空にする。これにより、強制アプリが実行中にメモリ307の空間を広く使用することができる。
図8−1に戻って、つぎに、全体マスター端末の第1スケジューラ703#1は、全体マスター端末の機能の移転先に決定した携帯端末201−2に全体マスター端末への遷移通知を送信する。具体的には、たとえば、全体マスター端末の第1スケジューラ703#1は、スレーブ端末の機能から全体マスター端末の機能への遷移通知を携帯端末201−2に送信する。
さらに、全体マスター端末の第1スケジューラ703#1は、各グループマスター端末に全体マスター端末の機能の移転先を通知する。そして、全体マスター端末の遷移部706#1は、全体マスター端末の機能からスレーブ端末の機能に遷移する。そして、全体マスター端末からスレーブ端末に遷移した携帯端末202−2の実行部707#3は、対象アプリを実行する。
そして、たとえば、携帯端末201−2の検出部701#3が、スレーブ端末の機能から全体マスター端末の機能への遷移通知の受信を検出し、携帯端末201−2の遷移部705#1が、スレーブ端末の機能から全体マスター端末の機能に遷移する。
実施例1によれば、強制アプリを優先的に実行させることができ、強制アプリの応答性を向上させることができる。さらに、実施例1によれば、強制アプリの実行時には、他の携帯端末201と並列分散処理を行うために記憶されたデータを他の携帯端末201に移行させることで、強制アプリがメモリ307を使用可能な領域を最大限に広げることができる。これにより、強制アプリの実行性能を向上させることができる。
また、実施例1では、全体マスター端末を例に挙げているが、グループマスター端末も同様に、起動要求の発生した対象アプリが強制アプリであれば、グループマスター端末の機能を他の携帯端末201に移転させる。さらに、全体マスター端末の機能やグループマスター端末の機能だけでなく、割り当てられているスレッドを他の携帯端末201に移行させてもよい。
(実施例2)
つぎに、実施例2では、起動要求の発生した対象アプリが強制アプリでない場合であっても、携帯端末201の負荷が余力を超えそうな場合には他の携帯端末201に対象アプリを割り当てる。これにより、対象アプリやすでに携帯端末201で実行中のアプリや実行待機中のアプリの性能劣化を低減させることができる。
図9は、対象アプリが強制アプリでない場合の動作例を示す説明図である。全体マスター端末の第2スケジューラ704#1は、アプリ識別部702#1によって対象アプリが強制アプリでないと識別した場合に、ランキュー332に対象アプリを登録する。具体的には、たとえば、全体マスター端末の負荷量解析部705#1は、携帯端末201に割り当てられたアプリおよびスレッドの負荷量の合計値を算出する。
つぎに、たとえば、全体マスター端末の第2スケジューラ704#1は、負荷量解析部705#1によって算出された負荷量の合計値が閾値未満であるか否かを判断する。図9の例では、アプリまたはスレッドのそれぞれに括弧( )で負荷量を示している。全体マスター端末の第2スケジューラ704#1は、負荷量の合計値(40[%]+40[%]=80[%])が閾値(たとえば、70[%])より大きいと判断する。ここで、閾値については、図9の例ではスケジューリングシステム200の設計者が決定した固定値となっているが、100[%]から対象アプリの負荷量を引いた値であってもよい。
全体マスター端末の負荷量解析部705#1は、負荷量の合計値が閾値より大きいと判断された場合、グループG1内の各スレーブ端末の負荷量を解析する。全体マスター端末の負荷量解析部705#1によるグループ内の各スレーブ端末の負荷量の解析については、実施例1で説明した処理と同一であるため、詳細な説明を省略する。
全体マスター端末の第2スケジューラ704#1は、負荷量解析部705#1によって解析された各スレーブ端末の負荷量が閾値未満であるか否かを判断する。ここで、閾値は、たとえば、対象アプリの負荷量であってもよいし、スケジューリングシステム200の設計者が決定した固定値であってもよい。図9の例では、全体マスター端末の第2スケジューラ704#1は、携帯端末201−3の負荷量と携帯端末201−4の負荷量が閾値より大きいと判断し、携帯端末201−2の負荷量が閾値未満であると判断する。そして、全体マスター端末の第2スケジューラ704#1は、負荷量が閾値未満である携帯端末201−2に対象アプリを割り当てる。
実施例2によれば、起動要求の発生した対象アプリやすでに携帯端末201で実行中のアプリや実行待機中のアプリの性能劣化を低減させることができる。
また、実施例2では、全体マスター端末を例に挙げているが、グループマスター端末やスレーブ端末も同様に、対象アプリを実行可能な余力が無い場合に、対象アプリを同一グループ内の他の携帯端末201に割り当ててもよい。
(実施例3)
つぎに、実施例3では、対象アプリが強制アプリでない場合に、起動要求の発生した対象アプリを実行するための余力のある携帯端末201が同一グループ内に無い場合、他のグループの余力のある携帯端末201に対象アプリを割り当てる。これにより、グループ間の負荷を分散させることができ、対象アプリの性能劣化を低減させることができる。
図10は、他のグループに対象アプリが割り当てられる例を示す説明図である。ここでは、全体マスター端末のアプリ識別部702#1が、対象アプリを強制アプリでないと識別済であり、全体マスター端末の負荷量解析部705#1が、グループ内のスレーブ端末の負荷量を解析済であるとする。
そして、全体マスター端末の第2スケジューラ704#1は、負荷量が閾値未満であるグループG1内のスレーブ端末がないと判断した場合、負荷量解析部705#1に他のグループの負荷状況を解析させる。具体的には、たとえば、全体マスター端末の負荷量解析部705#1が、各グループのグループマスター端末へ負荷状況通知を送信する。
そして、たとえば、各グループマスター端末の検出部701#2が、負荷状況通知の受信を検出する。つぎに、たとえば、各グループマスター端末の負荷量解析部705#2が、グループ内のスレーブ端末の負荷量を解析する。グループ内のスレーブ端末の負荷量の解析については、実施例1で説明した全体マスター端末による処理と同一であるため、詳細な説明を省略する。
そして、たとえば、各グループマスター端末の負荷量解析部705#2は、負荷量が閾値未満であるスレーブ端末があるか否かを判断する。そして、たとえば、各グループマスター端末の負荷量解析部705#2は、判断結果を負荷状況として全体マスター端末に送信する。
そして、たとえば、全体マスター端末の検出部701#1が、各グループマスター端末から負荷状況の受信を検出する。ここでは、全体マスター端末の検出部701#1は、各グループマスター端末から負荷状況を受信すると共に、携帯端末201−1と各グループマスター端末との通信速度を取得することとする。ここでは、たとえば、携帯端末201−1から各グループマスター端末まで負荷状況通知がいくつのアクセスポイント202を介して送信されたかを通信速度の目安とする。図10の例では、携帯端末201−1から携帯端末201−5までの負荷状況通知がアクセスポイント202を1個経由して送信され、携帯端末201−1から携帯端末201−9までの負荷状況通知がアクセスポイント202を2個経由して送信された。また、たとえば、全体マスター端末が、負荷状況通知の送信時刻から各グループマスター端末からの負荷状況の受信時刻を計測してもよい。
そして、全体マスター端末の第2スケジューラ704#1は、負荷量解析部705#1により解析された各グループの負荷状況に基づいて、負荷量が閾値未満の携帯端末201を有するグループを特定する。図10の例では、全体マスター端末の第2スケジューラ704#1は、負荷量が閾値未満の携帯端末201を有するグループとしてグループG2とグループG3を特定する。そして、たとえば、全体マスター端末の第2スケジューラ704#1は、特定したグループの中で、通信速度が最も速いグループのグループマスター端末に対象アプリの割り当て依頼通知を送信する。
グループマスター端末の検出部701#2は、対象アプリの割り当て依頼通知の受信を検出する。そして、グループマスター端末の第1スケジューラ703#2が、負荷量解析部705#2によってスレーブ端末の負荷量が閾値未満であるか否かを解析する。グループマスター端末の第1スケジューラ703#2が、負荷量解析部705#2によって負荷量が閾値未満であると解析されたスレーブ端末に対象アプリを割り当てる。ここでは、グループマスター端末の第1スケジューラ703#2が、携帯端末201−8に対象アプリの割り当て通知を送信する。これにより、対象アプリを実行可能な余力のある携帯端末201に対象アプリを割り当てることができ、対象アプリの性能劣化を低減させることができる。
そして、たとえば、携帯端末201−8の検出部701#3は、対象アプリの割り当てを検出すると、携帯端末201−8の実行部706#3が、対象アプリを実行する。そして、たとえば、携帯端末201−8の検出部701#3は、対象アプリの終了を検出すると、グループマスター端末に対象アプリの実行結果を有する実行終了通知を送信する。そして、たとえば、グループマスター端末の検出部701#2は、対象アプリの実行終了通知の受信を検出する。グループマスター端末の検出部701#2は、実行が終了したアプリの依頼元携帯端末が自携帯端末201の属するグループの携帯端末201であるか否かを判断する。図10の例では、グループマスター端末の検出部701#2は、依頼元携帯端末が自携帯端末201の属するグループの携帯端末201でないと判断し、全体マスター端末に実行終了通知を送信する。
全体マスター端末の検出部701#1は、実行終了通知の受信を検出すると、実行が終了したアプリの依頼元携帯端末が自携帯端末201の属するグループG1の携帯端末201であるか否かを判断する。図10の例では、全体マスター端末の検出部701#1は、依頼元携帯端末が自携帯端末201の属するグループG1の携帯端末201であると判断する。そして、たとえば、全体マスター端末の検出部701#1は、依頼元携帯端末が自携帯端末201であるか否かを判断する。図10の例では、全体マスター端末の検出部701#1は、対象アプリの依頼元携帯端末は自携帯端末201であると判断し、実行終了通知に含まれる実行結果をメモリ307またはストレージ309などの記憶装置に格納する。
図11は、図10で示した各通知のデータ構造の一例を示す説明図である。各通知のヘッダは、送信元のアドレスと、宛先のアドレスと、を保持する。図11の例では、各携帯端末201に割り当てた符号をアドレスの代わりに表記している。各通知のタグには、依頼元端末IDと、依頼元のグループマスター端末IDと、割り当て対象のアプリID/スレッドIDと、を保持する。各通知のペイロードには、メッセージ種別を保持する。
ヘッダやペイロードに変更があっても、通知を受け付けた各携帯端末201がタグの値を変更せずに通知を作成する。これにより、スケジューリングシステム200のいずれの携帯端末201で対象アプリが実行されても、全体マスター端末やグループマスター端末を介して、依頼元携帯端末に実行結果が渡される。
たとえば、携帯端末201−1から携帯端末201−5に送信された割り当て依頼通知のメッセージ種別は、割当依頼である。たとえば、携帯端末201−5から携帯端末201−8に送信された割り当て通知のメッセージ種別は、割当である。たとえば、携帯端末201−8から携帯端末201−5に送信された実行終了通知のメッセージ種別は、終了である。たとえば、携帯端末201−5から携帯端末201−1に送信された実行終了通知のメッセージ種別は、終了である。
また、図示していないが、実行終了通知のペイロードには、たとえば、実行結果が保持されている。また、たとえば、割り当て依頼通知のペイロードや割り当て通知のペイロードには、たとえば、割り当ての対象となるアプリやスレッドの命令コードが保持されていてもよい。
実施例3によれば、同一グループ内の携帯端末201に余力がなければ、他のグループの余力のある携帯端末201に対象アプリを割り当てることで、グループ間で負荷を分散させることができ、対象アプリの性能劣化を低減させることができる。
(実施例4)
実施例4では、割り当て依頼がグループ間を跨ぐ際には、全体マスター端末とグループマスター端末を介することで、割り当て依頼の経路を明確にすることができる。これにより、1台の携帯端末201にすべての割り当て処理を行わせずに、グループごとにグループマスター端末に割り当てを行わせることで、1台の携帯端末201が割り当て処理によって過負荷状態となるのを防止することができる。
図12は、割り当て依頼通知が他のグループから送信された場合の例を示す説明図である。図12の例では、携帯端末201−14が、(1)対象アプリの割り当て依頼通知を携帯端末201−14が属するグループマスター端末に送信する。そして、グループマスター端末である携帯端末201−13が、対象アプリを実行可能な余力のあるスレーブ端末がグループ内にないと判断すると、(2)全体マスター端末である携帯端末201−1に割り当て依頼通知を送信する。
たとえば、全体マスター端末の検出部701#1は、グループマスター端末から割り当て依頼通知の受信を検出する。そして、全体マスター端末の第1スケジューラ703#1は、負荷量解析部705#1に各グループの負荷状況を解析させる。全体マスター端末の負荷量解析部705#1による各グループの負荷状況の解析は、実施例3で示した処理と同一であるため、詳細な説明を省略する。図12の例では、全体マスター端末の第1スケジューラ703#1が、負荷量解析部705#1による解析結果に基づいて、(3)割り当て依頼通知をグループのグループマスター端末である携帯端末201−5に送信する。
そして、グループマスター端末である携帯端末201−5が、割り当て依頼通知を受信すると、グループ内の各スレーブ端末の負荷量を解析する。図12の例では、グループマスター端末である携帯端末201−5が、(4)割り当て通知を携帯端末201−8に送信する。
そして、たとえば、携帯端末201−8が、対象アプリの割り当て通知を受信すると、対象アプリを実行する。そして、携帯端末201−8が、対象アプリの実行終了を検出すると、(5)グループマスター端末である携帯端末201−5に対象アプリの実行終了通知を送信する。
グループマスター端末である携帯端末201−5が、対象アプリの実行終了通知を受信すると、実行終了通知に含まれるタグに基づいて、(6)全体マスター端末である携帯端末201−1に対象アプリの実行終了通知を送信する。
全体マスター端末である携帯端末201−1が、対象アプリの実行終了通知を受信すると、実行終了通知に含まれるタグに基づいて、(7)グループマスター端末である携帯端末201−13に対象アプリの実行終了通知を送信する。
グループマスター端末である携帯端末201−13が、対象アプリの実行終了通知を全体マスター端末から受信すると、実行終了通知に含まれるタグに基づいて、(8)依頼元携帯端末である携帯端末201−14に対象アプリの実行終了通知を送信する。
依頼元携帯端末である携帯端末201−14は、グループマスター端末からの実行終了通知の受信を検出すると、実行結果をメモリ307やストレージ309などの記憶装置に格納する。
実施例4によれば、割り当て依頼がグループ間を跨ぐ際には、全体マスター端末とグループマスター端末を介することで、割り当て依頼の経路を明確にすることができる。これにより、1台の携帯端末201にすべての割り当て処理を行わせずに、グループごとにグループマスター端末に割り当てを行わせることで、1台の携帯端末201が割り当て処理によって過負荷状態となるのを防止することができる。さらに、割り当てにかかる時間によってアプリの実行性能が低下するのを抑制することができる。さらに、1台の携帯端末201に対して通信をさせないことで、通信待ちによる性能劣化を低減させることができる。
(実施例5)
つぎに、本実施の形態で示すスケジューリングシステム200のように、各装置が携帯端末201であると、携帯端末201の電池消耗により電池残量が減少したり、各携帯端末201の位置が移動したりすることで携帯端末201の通信環境が悪化する可能性がある。実施例5では、全体マスター端末の電池残量や通信強度を定期的にモニターし、電池残量か通信強度のいずれか一方であっても、閾値を下回る場合には全体マスター端末の機能を他の携帯端末201に移転させる。これにより、電池が切れることなく、通信環境がよい携帯端末201に全体マスター端末の機能を行わせることができ、スケジューリングシステム200の全体の制御が絶たれてしまうことを防止することができる。実施例5では、タイマ割り込みが検出される都度、電池残量と通信強度をモニターすることとする。
図13は、タイマ割り込みを検出した場合の全体マスター端末の動作例を示す説明図である。まず、全体マスター端末の検出部701#1は、タイマ割り込みを検出する。そして、全体マスター端末の判断部708#1は、検出部701#1によりタイマ割り込みが検出された場合、自携帯端末201の電池残量が閾値以上であるか否かを判断する。さらに、全体マスター端末の判断部708#1は、自携帯端末201とアクセスポイント202−1との通信強度が閾値以上であるか否かを判断する。
そして、全体マスター端末の第1スケジューラ703#1は、判断部708#1により電池残量が閾値未満であると判断された場合、携帯端末201の全体マスター端末の機能の移転先となる携帯端末201を選択する。そして、全体マスター端末の第1スケジューラ703#1は、判断部708#1により通信強度が閾値未満であると判断された場合、携帯端末201の全体マスター端末の機能の移転先となる携帯端末201を選択する。全体マスター端末の第1スケジューラ703#1は、決定した移転先に全体マスター端末の機能を移転する。
具体的には、たとえば、全体マスター端末の判断部708#1は、各携帯端末201の電池残量をOS321のAPIにより取得することができる。図13の例では、各携帯端末201の電池残量が3段階に分けられている。ここでは、たとえば、電池残量が下の1段階目の場合には電池残量が閾値未満であると判断され、電池残量が上の2段階の場合には電池残量が閾値以上であると判断されることとする。図13の例では、全体マスター端末の判断部708#1は、携帯端末201の電池残量が閾値以上であると判断する。
そして、全体マスター端末の判断部708#1は、自携帯端末201の電池残量が閾値以上であると判断した場合、自携帯端末201とアクセスポイント202との通信強度が閾値以上であるか否かを判断する。たとえば、全体マスター端末の判断部708#1は、通信強度をOS321のAPIにより取得することができる。
図13の例では、通信強度が3段階に分けられている。ここでは、たとえば、全体マスター端末の判断部708#1が、通信強度が下の1段階目の場合には通信強度が閾値未満であると判断し、通信強度が上の2段階の場合には通信強度が閾値以上であると判断することとする。図13の例では、全体マスター端末の判断部708#1は、携帯端末201の通信強度が閾値未満であると判断する。
つぎに、たとえば、全体マスター端末の第1スケジューラ703#1は、判断部708#1により自携帯端末201の通信強度が閾値未満であると判断された場合、自携帯端末201が属するグループG1の各スレーブ端末に電池残量の確認通知を送信する。これにより、全体マスター端末の第1スケジューラ703#1は、グループG1の各スレーブ端末の電池残量を取得する。
そして、たとえば、全体マスター端末の第1スケジューラ703#1は、各スレーブ端末の電池残量が閾値以上であるか否かを判断する。図13の例では、全体マスター端末の第1スケジューラ703#1は、携帯端末201−3の電池残量と携帯端末201−4の電池残量が閾値未満であると判断し、携帯端末201−2の電池残量の電池残量が閾値以上であると判断する。
そして、たとえば、全体マスター端末の第1スケジューラ703#1が、携帯端末201とアクセスポイント202との通信強度の確認通知を送信する。これにより、全体マスター端末の第1スケジューラ703#1は、グループG1の各スレーブ端末の通信強度を取得する。
そして、たとえば、全体マスター端末の第1スケジューラ703#1は、携帯端末201とアクセスポイント202との通信強度が閾値以上であるか否かを判断する。図13の例では、全体マスター端末の第1スケジューラ703#1は、携帯端末201−2,201−3,201−4とアクセスポイント202−1との通信強度が閾値以上でないと判断する。したがって、全体マスター端末の第1スケジューラ703#1は、グループG1のスレーブ端末に全体マスター端末の機能を移転できないと判断する。
つぎに、たとえば、全体マスター端末の第1スケジューラ703#1が、自携帯端末201が属するグループG1以外の他のグループのグループマスター端末に応答要求を送信し、最も応答の早いグループマスター端末を検出する。図13の例では、携帯端末201−5が最も応答の早いグループマスター端末であるとする。そして、たとえば、全体マスター端末の第1スケジューラ703#1は、検出されたグループマスター端末に全体マスター端末の機能を移転する。
図14は、移転後のグループを示す説明図である。携帯端末201−1がグループG1の全体マスター端末の機能をG2のグループマスター端末に移転してしまうと、グループG1のグループマスター端末の機能も移転してしまうので、グループG1とグループG2は1つのグループG2となる。
実施例5によれば、電池が切れることなく、通信環境がよい携帯端末201に全体マスター端末の機能を移転させることができ、スケジューリングシステム200の全体の制御が絶たれてしまうことを防止することができる。
また、実施例5では、電池残量や通信強度によって全体マスター端末の機能を移転させる例を示したが、グループマスター端末の機能も同様に電池残量や通信強度によって移転させてもよい。
(実施例6)
実施例6では、定期的に電池残量と通信状態をモニターし、スレーブ端末の電池残量が少ない場合や通信環境が悪い場合にはグループから離脱させる。これにより、他の携帯端末201からの割り当てを実行可能な環境である携帯端末201だけで、並列分散処理を行うことができる。
図15は、スレーブ端末がグループから離脱する例を示す説明図である。グループG1のスレーブ端末である携帯端末201−4の検出部701#3は、タイマ割り込みを検出する。そして、たとえば、携帯端末201−4の判断部707#3は、検出部701#3によりタイマ割り込みが検出された場合、自携帯端末201の電池残量が閾値以下であるか否かを判断する。図15の例では、携帯端末201−4の判断部707#3は、自携帯端末201の電池残量が閾値以下であると判断する。
そして、たとえば、携帯端末201−4のスケジューラ703#3は、判断部707#3により自携帯端末201の電池残量が閾値以下であると判断した場合、メモリ307のGLOBAL領域を破棄する。そして、たとえば、携帯端末201−4のスケジューラ703#3は、メモリ307のSHARED領域の移行処理を行う。移行処理については、実施例1の図8−2で説明した処理と同様の処理であるため、詳細な説明を省略する。
そして、たとえば、携帯端末201−4のスケジューラ703#3は、判断部707#3により自携帯端末201の電池残量が閾値以下であると判断された場合、グループG1から離脱する離脱通知を携帯端末201−1に通知する。携帯端末201−1は、全体マスター端末であり、グループG1のグループマスター端末でもある。
たとえば、携帯端末201−1の検出部701#1は、携帯端末201−4からの離脱通知の受信を検出する。そして、たとえば、携帯端末201−1の更新部709#1は、検出部701#1により離脱通知の受信が検出された場合、位置情報502から携帯端末201−4の情報を削除する。
実施例6によれば、他の携帯端末201からの割り当てを実行可能な環境である携帯端末201だけで、並列分散処理を行うことができる。
(実施例7)
スレーブ端末の位置が変化することで、スレーブ端末がいままで属していたグループの携帯端末201よりも他のグループの携帯端末201との通信状態の方がよくなる場合がある。そこで、実施例7では、スレーブ端末とグループマスター端末との通信強度を定期的にモニターし、スレーブ端末が属するグループを更新する。これにより、アドホックモードによる通信環境がよい携帯端末201同士でグループ化させることができ、通信環境による性能劣化を軽減させることができる。
図16は、スレーブ端末が他のグループに移動する例を示す説明図である。グループG1のスレーブ端末である携帯端末201−4の検出部701#3は、タイマ割り込みを検出する。そして、たとえば、携帯端末201−4の判断部707#3は、検出部701#3によりタイマ割り込みが検出された場合、自携帯端末201がいずれかのグループに属しているか否かを判断する。ここでは、たとえば、携帯端末201−4の判断部707#3は、自携帯端末201がグループに属していると判断する。そして、たとえば、携帯端末201−4の判断部707#3は、自携帯端末201の電池残量が閾値以上であるか否かを判断する。図16の例では、携帯端末201−4の判断部707#3は、自携帯端末201の電池残量が閾値以上であると判断する。
そして、携帯端末201−4のスケジューラ703#3は、判断部707#3により自携帯端末201の電池残量が閾値以上であると判断された場合、自携帯端末201と各グループマスター端末とのアドホックモードによる通信での通信強度を検出する。そして、たとえば、携帯端末201−4のスケジューラ703#3は、通信強度が最も強いグループマスター端末を検出する。図16の例では、携帯端末201−4の検出部701#3は、携帯端末201−5を検出する。
そして、たとえば、携帯端末201−4のスケジューラ703#3は、検出されたグループマスター端末と自携帯端末201との通信強度が閾値以上であるか否かを判断する。ここでは、たとえば、携帯端末201−4のスケジューラ703#3は、検出されたグループマスター端末と自携帯端末201との通信強度が閾値以上であると判断することとする。そして、たとえば、携帯端末201−4のスケジューラ703#3は、検出されたグループマスター端末が属するグループと自携帯端末201の属するグループが同一か否かを判断する。図16の例では、携帯端末201−4のスケジューラ703#3は、検出されたグループマスター端末が属するグループと自携帯端末201の属するグループが同一でないと判断する。
そして、たとえば、携帯端末201−4のスケジューラ703#3は、自携帯端末201が属するグループマスター端末である携帯端末201−1にグループの離脱通知を送信する。そして、たとえば、携帯端末201−1の検出部701#1は、離脱通知の受信を検出する。つぎに、たとえば、携帯端末201−1の更新部709#1は、位置情報502から携帯端末201−4の情報を削除する。
そして、たとえば、携帯端末201−4のスケジューラ703#3は、検出されたグループマスター端末である携帯端末201−5にグループG2への登録通知を送信する。そして、たとえば、携帯端末201−5の検出部701#2は、登録通知の受信を検出する。そして、たとえば、携帯端末201−5の更新部709#2は、位置情報504に携帯端末201の情報を登録する。
実施例7によれば、スレーブ端末とグループマスター端末との通信強度を定期的にモニターし、各スレーブ端末が属するグループを変更する。これにより、アドホックモードによる通信環境がよい携帯端末201同士でグループ化させることができ、通信環境による性能劣化を軽減させることができる。
(実施例8)
つぎに、電池残量や通信環境によって携帯端末201がグループから離脱したとしても、携帯端末201に電池が充電されることで、電池残量が増加したり、携帯端末201の位置が変化することで、通信環境がよくなることがある。そこで、実施例8では、いずれのグループに属していなくとも定期的に電池残量と通信環境をモニターし、グループに属せるか否かを決定する。これにより、電池残量や通信環境のよい携帯端末201でスケジューリングシステム200による並列分散処理を行うことができる。
図17は、スレーブ端末のグループ登録例を示す説明図である。スレーブ端末である携帯端末201−4の検出部701#3は、タイマ割り込みを検出する。そして、たとえば、携帯端末201−4の判断部707#3は、検出部701#3によりタイマ割り込みが検出された場合、自携帯端末201がいずれかのグループに属しているか否かを判断する。ここでは、たとえば、携帯端末201−4の判断部707#3は、自携帯端末201がいずれのグループにも属していないと判断する。そして、たとえば、携帯端末201−4の判断部707#3は、自携帯端末201の電池残量が閾値以上であるか否かを判断する。図17の例では、携帯端末201−4の判断部707#3は、自携帯端末201の電池残量が閾値以上であると判断する。
つぎに、たとえば、携帯端末201−4のスケジューラ703#3は、判断部707#3により自携帯端末201の電池残量が閾値以上であると判断された場合、自携帯端末201と各グループマスター端末とのアドホックモードによる通信の通信強度を検出する。具体的には、たとえば、携帯端末201−4のスケジューラ703#3は、アドホックモードによって通信可能な携帯端末201のすべてと一定期間の間に通信を行うことで、グループマスター端末を探索することができ、通信強度を検出することができる。そして、たとえば、携帯端末201−4のスケジューラ703#3は、通信強度が最も強いグループマスター端末を検出する。図17の例では、携帯端末201−4のスケジューラ703#3は、通信強度が最も強いグループマスター端末として携帯端末201−1を検出する。
携帯端末201−4のスケジューラ703#3は、検出されたグループマスター端末と自携帯端末201との通信強度が閾値以上であるか否かを判断する。ここでは、携帯端末201−4のスケジューラ703#3は、検出されたグループマスター端末と自携帯端末201との通信強度が閾値以上であると判断することとする。
そして、たとえば、携帯端末201−4のスケジューラ703#3は、検出されたグループマスター端末にグループの登録通知を送信する。そして、たとえば、検出された携帯端末201−1の検出部701#1は、登録通知の受信を検出する。そして、携帯端末201−1の更新部709#1は、位置情報502に携帯端末201−4の情報を登録することで、携帯端末201−4をグループG1に登録する。
実施例8によれば、電池残量や通信環境のよい携帯端末201でスケジューリングシステム200による並列分散処理を行うことができる。
(全体マスター端末が行う処理手順)
図18〜25は、全体マスター端末が行う処理手順の一例を示すフローチャートである。まず、全体マスター端末が、検出部701#1により、イベントの発生を検出したか否かを判断する(ステップS1801)。そして、全体マスター端末が、検出部701#1により、イベントの発生を検出していないと判断した場合(ステップS1801:No)、ステップS1801へ戻る。つぎに、全体マスター端末が、アプリの起動要求を検出したと判断した場合(ステップS1801:起動要求)、アプリ識別部702#1により、起動要求が検出された対象アプリが強制アプリであるか否かを識別する(ステップS1802)。
そして、全体マスター端末が、対象アプリが強制アプリであるか否かを判断する(ステップS1803)。つぎに、全体マスター端末が、対象アプリが強制アプリであると判断した場合(ステップS1803:Yes)、負荷量解析部705#1により、グループ内負荷量解析処理を実行する(ステップS1804)。そして、全体マスター端末が、第1スケジューラ703#1により、受け付けた負荷量が最小のスレーブ端末を全体マスター端末の機能の移転先に決定する(ステップS1805)。つぎに、全体マスター端末が、第1スケジューラ703#1により、GLOBAL領域のデータを廃棄する(ステップS1806)。そして、全体マスター端末が、第1スケジューラ703#1により、データ移行処理を実行する(ステップS1807)。
そして、全体マスター端末が、第1スケジューラ703#1により、移転先となるスレーブ端末に全体マスター端末への遷移を通知する(ステップS1808)。つぎに、全体マスター端末が、第1スケジューラ703#1により、全体マスター端末の移転先をグループマスター端末に通知する(ステップS1809)。そして、全体マスター端末が、遷移部706#1により、スレーブ端末に遷移し、実行部707#1により、対象アプリの実行を開始し(ステップS1810)、ステップS1801へ戻る。
また、ステップS1803において、全体マスター端末が、対象アプリが強制アプリでないと判断した場合(ステップS1803:No)、第2スケジューラ704#1により、リアルタイム制約があるか否かを判断する(ステップS1811)。リアルタイム制約があるとは、実行開始から実行終了までの時間があらかじめ決定されていたり、実行終了時刻が定められていたりする場合を示している。そして、全体マスター端末が、リアルタイム制約があると判断した場合(ステップS1811:Yes)、ステップS1814へ移行する。
つぎに、全体マスター端末が、リアルタイム制約がないと判断した場合(ステップS1811:No)、負荷量解析部705#1により、負荷量を算出し(ステップS1812)、算出した負荷量>閾値であるか否かを判断する(ステップS1813)。そして、全体マスター端末が、算出した負荷量>閾値でないと判断した場合(ステップS1813:No)、第2スケジューラ704#1により、ランキュー332に対象アプリを登録し(ステップS1814)、ステップS1801へ戻る。
一方、全体マスター端末が、算出した負荷量>閾値であると判断した場合(ステップS1813:Yes)、負荷量解析部705#1により、グループ内負荷量解析処理を実行する(ステップS1815)。つぎに、全体マスター端末が、第2スケジューラ704#1により、受け付けた負荷量と対象アプリの負荷量に基づき、対象アプリを実行可能なスレーブ端末を特定し(ステップS1816)、特定したか否かを判断する(ステップS1817)。そして、全体マスター端末が、特定したと判断した場合(ステップS1817:Yes)、第2スケジューラ704#1により、特定したスレーブ端末の中で、負荷量が最小のスレーブ端末に対象アプリの割り当て通知を送信する(ステップS1818)。そして、全体マスター端末が、ステップS1801へ戻る。
そして、全体マスター端末が、特定していないと判断した場合(ステップS1817:No)、負荷量解析部705#1により、各グループ負荷量解析処理を実行する(ステップS1819)。つぎに、全体マスター端末が、第2スケジューラ704#1により、受け付けたグループの負荷状況と対象アプリの負荷量に基づき、対象アプリを実行可能なスレーブ端末を有するグループを特定する(ステップS1820)。
そして、全体マスター端末が、特定したか否かを判断する(ステップS1821)。そして、全体マスター端末が、特定していないと判断した場合(ステップS1821:No)、第2スケジューラ704#1により、ランキュー332に対象アプリを登録し(ステップS1822)、ステップS1801へ戻る。そして、全体マスター端末が、特定したと判断した場合(ステップS1821:Yes)、第2スケジューラ704#1により、特定したグループの中で通信速度が最速のグループのグループマスター端末に対象アプリの割り当て依頼通知を送信する(ステップS1823)。そして、全体マスター端末が、ステップS1801へ戻る。
また、ステップS1801において、全体マスター端末が、検出部701#1により、グループマスター端末または同一グループ内のスレーブ端末からの実行終了通知の受信を検出した場合(ステップS1801:実行終了通知)、ステップS2101へ移行する。ステップS2101は図21に示す。
全体マスター端末が、実行が終了したアプリまたはスレッドの割り当て依頼を行った依頼元携帯端末は同一グループに属するか否かを判断する(ステップS2101)。全体マスター端末が、依頼元携帯端末は同一グループに属さないと判断した場合(ステップS2101:No)、対象スレッドの依頼元グループのグループマスター端末に実行終了通知を送信する(ステップS2102)。
全体マスター端末が、依頼元携帯端末は同一グループに属すると判断した場合(ステップS2101:Yes)、依頼元携帯端末が自携帯端末201か否かを判断する(ステップS2103)。全体マスター端末が、依頼元携帯端末が自携帯端末201であると判断した場合(ステップS2103:Yes)、格納部710#1により、実行結果を格納し(ステップS2105)、ステップS2101へ戻る。
全体マスター端末が、依頼元携帯端末が自携帯端末201でないと判断した場合(ステップS2103:No)、依頼元携帯端末であるスレーブ端末に実行終了通知を送信し(ステップS2104)、ステップS2101へ戻る。
また、ステップS1801において、全体マスター端末が、検出部701#1により、スレーブ端末からの割り当て依頼通知の受信を検出したと判断した場合(ステップS1801:スレーブ端末からの割り当て依頼通知)、ステップS2201へ移行する。ステップS2201は図22に示す。
全体マスター端末が、負荷量解析部705#1により、グループ内負荷量解析処理を実行する(ステップS2201)。そして、全体マスター端末が、第1スケジューラ703#1により、受け付けたグループの負荷量と対象スレッドの負荷量に基づき、対象スレッドを実行可能なスレーブ端末を特定する(ステップS2202)。
全体マスター端末が、特定したか否かを判断する(ステップS2203)。全体マスター端末が、特定したと判断した場合(ステップS2203:Yes)、第1スケジューラ703#1により、特定したスレーブ端末の中で負荷量が最小のスレーブ端末に対象スレッドの割り当て通知を送信する(ステップS2204)。そして、全体マスター端末が、ステップS1801へ戻る。
また、全体マスター端末が、特定していないと判断した場合(ステップS2203:No)、負荷量解析部705#1により、各グループ負荷量解析処理を実行する(ステップS2205)。全体マスター端末が、受け付けたグループの負荷状況と対象スレッドの負荷量に基づき、対象スレッドを実行可能なスレーブ端末を有するグループを特定する(ステップS2206)。
そして、全体マスター端末が、特定したか否かを判断する(ステップS2207)。全体マスター端末が、特定したと判断した場合(ステップS2207:Yes)、第1スケジューラ703#1により、特定したグループの中で通信速度が最速のグループのグループマスター端末に対象スレッドの割り当て依頼通知を送信する(ステップS2208)。そして、全体マスター端末が、ステップS1801へ戻る。
全体マスター端末が、特定していないと判断した場合(ステップS2207:No)、第1スケジューラ703#1により、依頼元携帯端末に対象スレッドの割り当て通知を送信し(ステップS2209)、ステップS1801へ戻る。
また、ステップS1801において、全体マスター端末が、検出部701#1により、グループマスター端末からの割り当て依頼通知の受信を検出したと判断した場合(ステップS1801:グループマスター端末からの割り当て依頼)、ステップS2205へ移行する。
また、ステップS1801において、全体マスター端末が、検出部701#1により、タイマ割り込みを検出したと判断した場合(ステップS1801:タイマ割り込み)、ステップS2301へ移行する。ステップS2301は図23に示す。
全体マスター端末が、判断部708#1により、電池残量>閾値であるか否かを判断する(ステップS2301)。全体マスター端末が、電池残量>閾値でないと判断した場合(ステップS2301:No)、ステップS2303へ移行する。全体マスター端末が、電池残量>閾値であると判断した場合(ステップS2301:Yes)、判断部708#1により、自携帯端末201とアクセスポイント202との通信強度>閾値であるか否かを判断する(ステップS2302)。全体マスター端末が、自携帯端末201とアクセスポイント202との通信強度>閾値であると判断した場合(ステップS2302:Yes)、ステップS1801へ戻る。
そして、全体マスター端末が、自携帯端末201とアクセスポイント202との通信強度>閾値でないと判断した場合(ステップS2302:No)、ステップS2303へ移行する。そして、全体マスター端末が、第1のスケジューラ703#1により、自携帯端末201と同一グループの各スレーブ端末に各スレーブ端末とアクセスポイント202との通信強度と電池残量との確認通知を送信する(ステップS2303)。つぎに、全体マスター端末が、スレーブ端末から電池残量と通信強度を受け付けたか否かを判断する(ステップS2304)。
全体マスター端末が、スレーブ端末から電池残量と通信強度を受け付けたと判断した場合(ステップS2304:Yes)、すべてのスレーブ端末から電池残量と通信強度を受け付けたか否かを判断する(ステップS2305)。全体マスター端末が、すべてのスレーブ端末から電池残量と通信強度を受け付けたと判断した場合(ステップS2305:Yes)、ステップS2307へ移行する。
ステップS2304において、全体マスター端末が、スレーブ端末から電池残量と通信強度を受け付けていないと判断した場合(ステップS2304:No)、ステップS2306へ移行する。ステップS2305において、全体マスター端末が、すべてのスレーブ端末から電池残量と通信強度を受け付けていないと判断した場合(ステップS2305:No)、ステップS2306へ移行する。
つぎに、全体マスター端末が、一定時間経過したか否かを判断する(ステップS2306)。全体マスター端末が、一定時間経過していないと判断した場合(ステップS2306:No)、ステップS2304へ戻る。一方、全体マスター端末が、一定時間経過したと判断した場合(ステップS2306:Yes)、ステップS2307へ移行する。
つぎに、全体マスター端末が、第1スケジューラ703#1により、受け付けた通信強度>閾値であるスレーブ端末を特定し(ステップS2307)、特定したか否かを判断する(ステップS2308)。全体マスター端末が、特定したと判断した場合(ステップS2308:Yes)、第1スケジューラ703#1により、特定したスレーブ端末のうち、電池残量>閾値であるスレーブ端末を特定する(ステップS2309)。全体マスター端末が、特定したか否かを判断する(ステップS2310)。
全体マスター端末が、受け付けた通信強度>閾値であるスレーブ端末を特定していないと判断した場合(ステップS2308:No)、ステップS2311へ移行する。また、全体マスター端末が、特定したスレーブ端末のうち、電池残量>閾値であるスレーブ端末を特定していないと判断した場合(ステップS2310:No)、ステップS2311へ移行する。つぎに、全体マスター端末が、第1スケジューラ703#1により、各グループマスター端末に応答要求を送信し(ステップS2311)、いずれかのグループマスター端末から応答を受信したか否かを判断する(ステップS2312)。
全体マスター端末が、いずれのグループマスター端末からも応答を受信していないと判断した場合(ステップS2312:No)、ステップS2312へ移行する。また、全体マスター端末が、グループマスター端末から応答を受信したと判断した場合(ステップS2312:Yes)、第1スケジューラ703#1により、応答の送信元であるグループマスター端末を全体マスター端末の機能の移転先に決定する(ステップS2313)。そして、全体マスター端末が、ステップS2315へ移行する。
全体マスター端末が、特定したと判断した場合(ステップS2310:Yes)、第1スケジューラ703#1により、特定したスレーブ端末を全体マスター端末の機能の移転先に決定し(ステップS2314)、ステップS2315へ移行する。
つぎに、全体マスター端末が、第1スケジューラ703#1により、GLOBAL領域のデータを廃棄し(ステップS2315)、第1スケジューラ703#1により、データ移行処理を実行する(ステップS2316)。そして、全体マスター端末が、決定したスレーブ端末に全体マスター端末への遷移を通知する(ステップS2317)。そして、全体マスター端末が、第1スケジューラ703#1により、全体マスター端末の変更を各グループマスター端末に通知する(ステップS2318)。
そして、全体マスター端末が、遷移部706#1により、スレーブ端末に遷移し、ランキュー332に登録されている他の携帯端末201からのアプリまたはスレッドのマイグレーションを移転後の全体マスター端末に依頼する(ステップS2319)。そして、全体マスター端末が、ステップS1801へ戻る。
また、ステップS1801において、全体マスター端末が、検出部701#1により、マイグレーション依頼通知の受信を検出した場合(ステップS1801:マイグレーション依頼通知)、ステップS2501へ移行する。ステップS2501は、図25に示す。
全体マスター端末が、第1スケジューラ703#1により、マイグレーション依頼されたデータのうち、未移行のデータがあるか否かを判断する(ステップS2501)。ここで、マイグレーション依頼されるのはアプリやスレッドなどの処理であるが、移行されるのは処理に関するデータであるため、マイグレーション依頼されたデータとしている。
そして、全体マスター端末が、マイグレーション依頼されたデータのうち、未移行のデータがないと判断した場合(ステップS2501:No)、ステップS1801へ戻る。つぎに、全体マスター端末が、マイグレーション依頼されたデータのうち、未移行のデータがあると判断した場合(ステップS2501:Yes)、未移行のデータのうち、サイズが最大のデータを移行対象データに選択する(ステップS2502)。
つぎに、全体マスター端末が、第1スケジューラ703#1により、移行対象データと依存関係のあるアプリまたはスレッドを実行中の同一グループ内のスレーブ端末を特定する(ステップS2503)。そして、全体マスター端末が、特定したか否かを判断する(ステップS2504)。全体マスター端末が、特定したと判断した場合(ステップS2504:Yes)、特定したスレーブ端末に移行可能か否かを判断する(ステップS2505)。ここでは、たとえば、特定したスレーブ端末に移行対象データを記憶可能な領域が空いていない場合には、移行できないと判断される。
全体マスター端末が、特定したスレーブ端末に移行可能であると判断した場合(ステップS2505:Yes)、第1スケジューラ703#1により、特定したスレーブ端末に移行対象データを送信し(ステップS2506)、ステップS2501へ戻る。全体マスター端末が、特定していないと判断した場合(ステップS2504:No)、または特定したスレーブ端末に移行できないと判断した場合(ステップS2505:No)、ステップS2507へ移行する。
そして、全体マスター端末が、同一グループ内のスレーブ端末から、移行対象データを記憶可能なSHARED領域を有するスレーブ端末を特定する(ステップS2507)。全体マスター端末が、特定したか否かを判断し(ステップS2508)、特定したと判断した場合(ステップS2508:Yes)、負荷量解析部705#1により、グループ内負荷量解析処理を実行する(ステップS2509)。そして、全体マスター端末が、第1スケジューラ703#1により、特定したスレーブ端末の中で、負荷最小のスレーブ端末に移行対象データを送信し(ステップS2510)、ステップS2501へ戻る。
また、全体マスター端末が、特定していないと判断した場合(ステップS2508:No)、ステップS2511へ移行する。そして、全体マスター端末が、第1スケジューラ703#1により、移行対象データと依存関係のある処理とデータを移行対象としてグループマスター端末にマイグレーション依頼通知を送信し(ステップS2511)、ステップS2501へ戻る。ここで、マイグレーション依頼の送信先となるグループマスター端末は、いずれのグループマスター端末であってもよいが、たとえば、全体マスター端末が各グループの負荷状況に基づいて決定してもよい。
図26は、図18で示したグループ内負荷量解析処理(ステップS1804)の詳細な説明を示すフローチャートである。グループ内負荷量解析処理(ステップS1815,S2201)はグループ内負荷量解析処理(ステップS1804)と同一処理である。まず、全体マスター端末が、グループ内の各スレーブ端末に負荷量算出通知を送信し(ステップS2601)、スレーブ端末から負荷量を受け付けたか否かを判断する(ステップS2602)。全体マスター端末が、スレーブ端末から負荷量を受け付けたと判断した場合(ステップS2602:Yes)、グループ内のすべてのスレーブ端末から負荷量を受け付けたか否かを判断する(ステップS2603)。
全体マスター端末が、グループ内のすべてのスレーブ端末から負荷量を受け付けたと判断した場合(ステップS2603:Yes)、ステップS1805(S1816,S2204)に移行する。全体マスター端末が、スレーブ端末から負荷量を受け付けていないと判断した場合(ステップS2602:No)、ステップS2604へ移行する。また、全体マスター端末が、グループ内のすべてのスレーブ端末から負荷量を受け付けていないと判断した場合(ステップS2603:No)、ステップS2604へ移行する。
そして、全体マスター端末が、一定時間経過したか否かを判断する(ステップS2604)。全体マスター端末が、一定時間経過していないと判断した場合(ステップS2604:No)、ステップS2602へ戻る。一方、全体マスター端末が、一定時間経過したと判断した場合(ステップS2604:Yes)、ステップS1805(S1816,S2204)に移行する。
図27は、図20で示した各グループ負荷量解析処理(ステップS1819)の詳細な説明を示すフローチャートである。各グループ負荷量解析処理(ステップS2205)は、各グループ負荷量解析処理(ステップS1819)と同一処理である。まず、全体マスター端末が、各グループのグループマスター端末に負荷状況通知を送信し(ステップS2701)、グループマスター端末から負荷状況を受け付けたか否かを判断する(ステップS2702)。
全体マスター端末が、グループマスター端末から負荷状況を受け付けたと判断した場合(ステップS2702:Yes)、すべてのグループマスター端末から負荷状況を受け付けたか否かを判断する(ステップS2703)。全体マスター端末が、すべてのグループマスター端末から負荷状況を受け付けたと判断した場合(ステップS2703:Yes)、ステップS1820(S2206)へ移行する。
全体マスター端末が、グループマスター端末から負荷状況を受け付けていないと判断した場合(ステップS2702:No)、ステップS2704へ移行する。また、全体マスター端末が、すべてのグループマスター端末から負荷状況を受け付けていないと判断した場合(ステップS2703:No)、ステップS2704へ移行する。
そして、全体マスター端末が、一定時間経過したか否かを判断する(ステップS2704)。全体マスター端末が、一定時間経過していないと判断した場合(ステップS2704:No)、ステップS2702へ戻る。一方、全体マスター端末が、一定時間経過したと判断した場合(ステップS2704:Yes)、ステップS1820(S2206)へ移行する。
図28は、図18で示したデータ移行処理(ステップS1807)の詳細な説明を示すフローチャートである。データ移行処理(ステップS2316)は、データ移行処理(ステップS1807)と同一処理である。まず、全体マスター端末が、SHARED領域の位置情報を決定した移転先のSHARED領域に移行する(ステップS2801)。全体マスター端末が、SHARED領域に未移行のデータがあるか否かを判断する(ステップS2802)。全体マスター端末が、SHARED領域に未移行のデータがないと判断した場合(ステップS2802:No)、ステップS1808(S2317)へ移行する。
そして、全体マスター端末が、SHARED領域に未移行のデータがあると判断した場合(ステップS2802:Yes)、未移行のデータのうち、サイズが最大のデータを移行対象データに選択する(ステップS2803)。
つぎに、全体マスター端末が、移行対象データと依存関係のあるアプリまたはスレッドを実行中の同一グループ内のスレーブ端末を特定する(ステップS2804)。そして、全体マスター端末が、特定したか否かを判断する(ステップS2805)。全体マスター端末が、特定したと判断した場合(ステップS2805:Yes)、特定したスレーブ端末に移行可能か否かを判断する(ステップS2806)。ここでは、たとえば、特定したスレーブ端末に移行対象データを記憶可能な領域が空いていない場合には、移行できないと判断される。
全体マスター端末が、特定したスレーブ端末に移行可能であると判断した場合(ステップS2806:Yes)、特定したスレーブ端末に移行対象データを送信し(ステップS2807)、ステップS2802へ戻る。全体マスター端末が、特定していないと判断した場合(ステップS2805:No)、または特定したスレーブ端末に移行できないと判断した場合(ステップS2806:No)、ステップS2808へ移行する。
そして、全体マスター端末が、同一グループ内のスレーブ端末から、移行対象データを記憶可能なSHARED領域を有するスレーブ端末を特定する(ステップS2808)。全体マスター端末が、特定したか否かを判断し(ステップS2809)、特定したと判断した場合(ステップS2809:Yes)、グループ内負荷量解析処理を実行する(ステップS2810)。グループ内負荷量解析処理(ステップS2810)については、上述したグループ内負荷量解析処理(ステップS1804)と同一処理であるため、詳細な説明を省略する。そして、全体マスター端末が、特定したスレーブ端末の中で、負荷最小のスレーブ端末に移行対象データを送信し(ステップS2811)、ステップS2802へ戻る。
また、全体マスター端末が、特定していないと判断した場合(ステップS2809:No)、ステップS2812へ移行する。そして、全体マスター端末が、移行対象データと依存関係のある処理とデータを移行対象としてグループマスター端末にマイグレーション依頼通知を送信し(ステップS2812)、ステップS2802へ戻る。ここで、マイグレーション依頼の送信先となるグループマスター端末は、いずれのグループマスター端末であってもよいが、たとえば、全体マスター端末が各グループの負荷状況に基づいて決定してもよい。
(グループマスター端末が行う処理手順)
図29〜36は、グループマスター端末が行う処理手順の一例を示すフローチャートである。まず、グループマスター端末が、検出部701#2により、イベントの発生を検出したか否かを判断する(ステップS2901)。グループマスター端末が、イベントの発生を検出していないと判断した場合(ステップS2901:No)、ステップS2901へ戻る。
まず、グループマスター端末が、対象アプリの起動要求を検出したと判断した場合(ステップS2901:起動要求)、ステップS2902へ移行する。ステップS2902〜S2918は、それぞれステップS1801〜S1818と同一処理であるため、詳細な説明を省略する。ステップS2917のNoの場合のつぎに、グループマスター端末が、第2スケジューラ704#2により、全体マスター端末に割り当て依頼通知を送信し(ステップS2919)、ステップS2901へ戻る。
また、ステップS2901において、グループマスター端末が、検出部701#2により、スレーブ端末からの実行終了通知の受信を検出した場合(ステップS2901:スレーブ端末からの実行終了通知)、ステップS3101へ移行する。ステップS3101は、図31に示す。ステップS3101〜S3105は、図21で示したステップS2101〜S2105と同一処理であるため、詳細な説明を省略する。
また、ステップS2901において、グループマスター端末が、検出部701#2により、スレーブ端末からの割り当て依頼通知の受信を検出した場合(ステップS2901:スレーブ端末からの割り当て依頼通知)、ステップS3201へ移行する。ステップS3201は図32に示す。
ステップS3201〜S3204は、図22で示したステップS2201〜S2204と同一処理であるため、詳細な説明を省略する。ステップS3203のNoの場合のつぎに、グループマスター端末が、第1スケジューラ703#2により、全体マスター端末に割り当て依頼通知を送信し(ステップS3205)、ステップS2901へ移行する。
また、ステップS2901において、グループマスター端末が、検出部701#2により、全体マスター端末からの割り当て依頼通知の受信を検出した場合(ステップS2901:全体マスター端末からの割り当て依頼通知)、ステップS3301へ移行する。ステップS3301は、図33に示す。
そして、グループマスター端末が、負荷量解析部705#2により、グループ内負荷量解析処理を実行する(ステップS3301)。グループ内負荷量解析処理(ステップS3301)については、グループ内負荷量解析処理(ステップS1804)と同一処理であるため、詳細な説明を省略する。そして、グループマスター端末が、第1スケジューラ703#2により、受け付けた負荷量に基づき、グループ内で負荷量が最小のスレーブ端末を特定する(ステップS3302)。グループマスター端末が、第1スケジューラ703#2により、特定した負荷量が最小のスレーブ端末に対象スレッドの割り当て通知を送信し(ステップS3303)、ステップS2901へ戻る。
また、図29で示すステップS2901において、グループマスター端末が、検出部701#2により、タイマ割り込みを検出した場合(ステップS2901:タイマ割り込み)、ステップS3401(図34に示す。)へ移行する。ステップS3401〜S3408,S3412〜S3417は、図23,24で示したステップS2301〜S2308,S2314〜S2319と同一処理であるため、詳細な説明を省略する。
ステップS3408のNoの場合、またはステップS3410のNoの場合のつぎに、グループマスター端末が、全体マスター端末にグループから離脱する離脱通知を送信し(ステップS3411)、ステップS2901へ戻る。
また、図29で示すステップS2901において、グループマスター端末が、マイグレーション依頼通知を検出したと判断した場合(ステップS2901:マイグレーション依頼通知)、ステップS3601(図36に示す。)へ移行する。ステップS3601〜S3610は、図25で示したステップS2501〜S2510と同一処理であるため、詳細な説明を省略する。
ステップS3608のNoの場合のつぎに、グループマスター端末が、第1スケジューラ703#2により、移行対象データと依存関係のある処理とデータを移行対象として全体マスター端末にマイグレーション依頼通知を送信する(ステップS3611)。そして、グループマスター端末が、ステップS3601へ戻る。
図37は、図29で示したデータ移行処理(ステップS2907)の詳細な説明を示すフローチャートである。ステップS3701〜S3711については、図28で示したステップS2801〜S2811と同一処理であるため、詳細な説明を省略する。ステップS3709のNoの場合、グループマスター端末が、移行対象データと依存関係のある処理とデータを移行対象として全体マスター端末にマイグレーション依頼通知を送信し(ステップS3712)、ステップS3702へ戻る。
(スレーブ端末が行う処理手順)
図38〜42は、スレーブ端末が行う処理手順を示すフローチャートである。まず、スレーブ端末が、検出部701#3により、イベントの発生を検出したか否かを判断する(ステップS3801)。そして、スレーブ端末が、イベントの発生を検出していないと判断した場合(ステップS3801:No)、ステップS3801へ戻る。つぎに、スレーブ端末が、イベントの発生を検出したと判断した場合(ステップS3801:起動要求)、ステップS3901へ移行する。ステップS3901は図39に示す。
スレーブ端末が、アプリ識別部702#3により、起動要求が検出された対象アプリが強制アプリか否かを識別し(ステップS3901)、対象アプリが強制アプリであるか否かを判断する(ステップS3902)。スレーブ端末が、対象アプリが強制アプリであると判断した場合(ステップS3902:Yes)、スケジューラ703#3により、GLOBAL領域のデータを廃棄し(ステップS3903)、データ移行処理を実行する(ステップS3904)。データ移行処理(ステップS3904)については、図28で示したデータ移行処理(ステップS1807)と同一であるため、詳細な説明を省略する。そして、スレーブ端末が、実行部706#3により、対象アプリの実行を開始し(ステップS3905)、ステップS3801へ戻る。
一方、スレーブ端末が、対象アプリが強制アプリでないと判断した場合(ステップS3902:No)、リアルタイム制約があるか否かを判断する(ステップS3906)。スレーブ端末が、リアルタイム制約があると判断した場合(ステップS3906:Yes)、自携帯端末201の負荷量を算出する(ステップS3907)。そして、スレーブ端末が、算出した負荷量>閾値であるか否かを判断する(ステップS3908)。
スレーブ端末が、算出した負荷量>閾値であると判断した場合(ステップS3908:Yes)、グループマスター端末に対象アプリの割り当て依頼を通知し(ステップS3909)、ステップS3801へ戻る。スレーブ端末が、リアルタイム制約がないと判断した場合(ステップS3906:No)、または算出した負荷量>閾値でないと判断した場合(ステップS3908:No)、ランキュー332に対象アプリを登録し(ステップS3910)、ステップS3801へ戻る。
また、ステップS3801において、スレーブ端末が、検出部701#3により、グループマスター端末の機能への遷移命令の受信を検出したと判断した場合(ステップS3801:グループマスター端末の機能への遷移命令)、ステップS3802へ移行する。そして、スレーブ端末が、遷移部705#3により、グループマスター端末に遷移し(ステップS3802)、ステップS3801へ戻る。
また、ステップS3801において、スレーブ端末が、検出部701#3により、全体マスター端末の機能への遷移命令の受信を検出したと判断した場合(ステップS3801:全体マスター端末の機能への遷移命令)、ステップS3803へ移行する。そして、スレーブ端末が、遷移部705#3により、全体マスター端末に遷移し(ステップS3803)、ステップS3801へ戻る。
また、ステップS3801において、スレーブ端末が、アプリまたはスレッドの実行終了を検出したと判断した場合(ステップS3801:実行終了)、ステップS4001へ移行する。スレーブ端末が、グループマスター端末に割り当てられたスレッドであるか否かを判断する(ステップS4001)。スレーブ端末が、グループマスター端末に割り当てられたスレッドであると判断した場合(ステップS4001:Yes)、実行終了通知をグループマスター端末に送信し(ステップS4002)、ステップS3801へ戻る。
一方、スレーブ端末が、グループマスター端末に割り当てられたスレッドでないと判断した場合(ステップS4001:No)、格納部708#3により、実行結果を格納する(ステップS4003)。そして、スレーブ端末が、実行終了したスレッドが強制アプリであるか否かを判断する(ステップS4004)。
そして、スレーブ端末が、実行終了したスレッドが強制アプリであると判断した場合(ステップS4004:Yes)、GLOBAL領域を作成し(ステップS4005)、SHARED領域を作成する(ステップS4006)。つぎに、スレーブ端末が、実行終了したスレッドが強制アプリでないと判断した場合(ステップS4004:No)、ステップS3801へ戻る。
また、ステップS3801において、スレーブ端末が、検出部701#3により、スイッチを検出したと判断した場合(ステップS3801:スイッチ)、強制アプリがランキュー332にあるか否かを判断する(ステップS3804)。スレーブ端末が、強制アプリがランキュー332にあると判断した場合(ステップS3804:Yes)、スイッチ後のスレッドのマイグレーション依頼通知をグループマスター端末に送信し(ステップS3805)、ステップS3801へ戻る。スレーブ端末が、強制アプリがランキュー332にないと判断した場合(ステップS3804:No)、ステップS3801へ戻る。
また、ステップS3801において、スレーブ端末が、検出部701#3により、タイマ割り込みを検出したと判断した場合(ステップS3801:タイマ割り込み)、ステップS4101へ移行する。ステップS4101は、図41に示す。そして、スレーブ端末が、自携帯端末201がいずれかのグループに属しているか否かを判断し(ステップS4101)、いずれかのグループに属していると判断した場合(ステップS4101:Yes)、判断部707#3により、電池残量>閾値であるか否かを判断する(ステップS4102)。
そして、スレーブ端末が、電池残量>閾値であると判断した場合(ステップS4102:Yes)、スケジューラ703#3により、近傍のグループマスター端末を探索する(ステップS4103)。そして、スレーブ端末が、スケジューラ703#3により、探索したグループマスター端末のうち、自携帯端末201との通信強度が最も強いグループマスター端末を特定する(ステップS4104)。グループマスター端末と自携帯端末201との通信強度とは、アドホックモードによる無線LAN通信である。
つぎに、スレーブ端末が、スケジューラ703#3により、特定したグループマスター端末と自携帯端末201との通信強度>閾値であるか否かを判断する(ステップS4105)。スレーブ端末が、スケジューラ703#3により、特定したグループマスター端末と自携帯端末201との通信強度>閾値であると判断した場合(ステップS4105:Yes)、特定したグループマスター端末が、自携帯端末201が属するグループマスター端末であるか否かを判断する(ステップS4106)。
スレーブ端末が、特定したグループマスター端末が、自携帯端末201が属するグループマスター端末であると判断した場合(ステップS4106:Yes)、ステップS3801へ戻る。また、スレーブ端末が、特定したグループマスター端末が、自携帯端末201が属するグループマスター端末でないと判断した場合(ステップS4106:No)、データ移行処理を実行する(ステップS4107)。データ移行処理(ステップS4107)については、図28で示したデータ移行処理(ステップS1807)と同一であるため、詳細な説明を省略する。
そして、スレーブ端末が、自携帯端末201が属するグループのグループマスター端末にグループから離脱する離脱通知を送信する(ステップS4108)。そして、スレーブ端末が、スケジューラ703#3により、特定したグループマスター端末のグループに移動し(ステップS4109)、ステップS3801へ戻る。
そして、ステップS4102において、スレーブ端末が、電池残量>閾値でないと判断した場合(ステップS4102:No)、ステップS4110へ移行する。また、ステップS4105において、スレーブ端末が、特定したグループマスター端末と自携帯端末201との通信強度>閾値でないと判断した場合(ステップS4105:No)、ステップS4110へ移行する。
そして、スレーブ端末が、スケジューラ703#3により、GLOBAL領域のデータを廃棄し(ステップS4110)、データ移行処理を実行する(ステップS4111)。データ移行処理(ステップS4111)については、図28で示したデータ移行処理(ステップS1807)と同一であるため、詳細な説明を省略する。そして、スレーブ端末が、スケジューラ703#3により、グループマスター端末により割り当てられたスレッドのマイグレーション依頼通知をグループマスター端末へ送信する(ステップS4112)。そして、スレーブ端末が、グループマスター端末にグループから離脱する離脱通知を送信し(ステップS4113)、ステップS3801へ戻る。
つぎに、ステップS4101において、スレーブ端末が、いずれのグループにも属していないと判断した場合(ステップS4101:No)、判断部707#3により、電池残量>閾値であるか否かを判断する(ステップS4114)。そして、スレーブ端末が、電池残量>閾値でないと判断した場合(ステップS4114:No)、ステップS3801へ戻る。
一方、スレーブ端末が、電池残量>閾値であると判断した場合(ステップS4114:Yes)、スケジューラ703#3により、近傍のグループマスター端末を探索する(ステップS4115)。そして、スレーブ端末が、探索したグループマスター端末のうち、自携帯端末201との通信強度が最も強いグループマスター端末を特定し(ステップS4116)、特定したグループマスター端末と自携帯端末201との通信強度>閾値であるか否かを判断する(ステップS4117)。
そして、スレーブ端末が、特定したグループマスター端末と自携帯端末201との通信強度>閾値でないと判断した場合(ステップS4117:No)、ステップS3801へ戻る。スレーブ端末が、特定したグループマスター端末と自携帯端末201との通信強度>閾値であると判断した場合(ステップS4117:Yes)、スケジューラ703#3により、GLOBAL領域を作成する(ステップS4118)。そして、スレーブ端末が、スケジューラ703#3により、SHARED領域を作成し(ステップS4119)、特定したグループマスター端末のグループに移動し(ステップS4120)、ステップS3801へ戻る。
また、スケジューリングシステム200では、装置をすべて携帯端末201で表したが、これに限らず、たとえば、装置がノート型パソコン、デスクトップ型パソコン、サーバであってもよい。また、スケジューリングシステム200では、複数種類の装置が混在していてもよい。
以上説明したように、スケジューリング方法、およびスケジューリングシステムによれば、マスターの機能を担う第1装置に緊急性の高いアプリが起動された際には、マスターの機能を第1装置と同一グループまたは他のグループの第2装置に移転させる。これにより、スケジューリング方法、およびスケジューリングシステムによれば、第1装置に緊急性の高いアプリの実行に専念させることができ、マスター機能の負荷による緊急性の高いアプリの性能劣化の低減を図ることができる。
また、第1装置から第2装置にマスター機能を移転させる際には、第1装置は、各グループのグループマスターである装置にマスター機能の移転先を通知する。これにより、スケジューリングシステムでは、各グループがいずれの装置がマスター機能に関する処理を行っているかを管理することができる。
また、メモリの領域が、複数のグループの装置で共有されるデータを記憶する第1領域と、自装置が属するグループでデータが共有される第2領域と、自装置のみが使用する第3領域と、に分割される。スケジューリングシステムでは、複数のグループで共有するデータを第1領域に記憶させることで、キャッシュのスヌープ処理のように管理を容易化させることができる。
さらに、スケジューリングシステムでは、同一グループ内で第2領域を分散共有メモリのように扱う。同一グループ内の装置の方が、他のグループの装置よりもアプリやスレッドを並列処理させる可能性が高い。さらに、並列処理されるアプリやスレッドであれば、同一のデータを用いる可能性がある。そこで、スケジューリングシステムでは、第2領域を同一グループ内の装置で共有することで、同一グループ内でメモリの使用量を減少させることができる。
また、各装置は、緊急性の高いアプリの実行時には、第1領域に格納されているデータを削除し、第2領域に格納されているデータを他の携帯端末に退避する。これにより、スケジューリングシステムでは、緊急性の高いアプリが使用するメモリの領域を広げることができ、緊急性の高いアプリの性能劣化の低減を図ることができる。
また、起動対象のアプリが緊急性の高くないアプリである場合、第1装置の負荷量が閾値より大きいとき、第1装置と同一のグループまたは異なるグループの第2装置に起動対象のアプリを割り当てる。これにより、スケジューリングシステムでは、第1装置で実行中の異なる処理の負荷による起動対象のアプリの性能劣化の低減を図ることができる。
また、第1装置が、複数のグループから負荷量が所定値以下であるデータ処理装置を有するグループを選択し、選択されたグループの中で最大の通信速度を有するグループにマスター機能の移転通知を送信する。これにより、スケジューリングシステムでは、余力のあるグループにマスター機能を移転させることができ、スケジューリングシステム内で負荷量を分散させることができる。これにより、スケジューリングシステムでは、各アプリやスレッドが他のアプリや他のスレッドの負荷によって性能劣化するのを低減することができる。
また、第1装置が、複数のグループから負荷量が所定値以下であるデータ処理装置を有するグループを選択し、選択されたグループの中で最大の通信速度を有するグループに割り当て依頼通知を送信する。これにより、スケジューリングシステムでは、1グループに負荷が偏らないようにスケジューリングシステム内で負荷量を分散させることができる。これにより、各アプリやスレッドが他のアプリや他のスレッドの負荷によって性能劣化するのを低減することができる。
また、グループマスターである装置が割り当て依頼通知を受けたときに、まずは同一グループ内で余力のある装置を探索するが、いずれの装置にも余力が無い場合には、全体マスターである装置に割り当て依頼通知を送信する。これにより、スケジューリングシステムでは、スケジューリングシステム内で負荷量を分散させることができる。これにより、各アプリやスレッドが他のアプリや他のスレッドの負荷によって性能劣化するのを低減することができる。
また、装置が携帯端末であれば、電池の消耗によって電池残量が減少してしまったり、携帯端末の位置が移動することで、通信環境が悪化したりする可能性がある。そこで、スケジューリングシステムでは、各装置で定期的に電池残量と通信環境をモニターし、電池残量か通信強度のいずれか一方であっても、閾値を下回る場合にはグループを離脱する。これにより、スケジューリングシステムでは、電池が切れることなく、通信環境がよい装置で並列分散処理を行うことができる。
また、スケジューリングシステムでは、マスター機能に関する処理を実行する装置の電池残量が閾値以下である、または通信環境が悪化している場合には、電池残量または基地局との通信強度の大きさに基づいてマスター機能の移転先を決定する。これにより、スケジューリングシステムでは、電池が切れることなく、通信環境がよい装置に全体マスター端末の機能を行わせることができ、スケジューリングシステムの全体の制御が絶たれてしまうことを防止することができる。
また、スケジューリングシステムでは、アプリやスレッドを移行させる場合、該アプリやスレッドに関するデータを記憶可能な領域を有している装置を該アプリやスレッドの移行先にする。これにより、アプリやスレッドがメモリの領域不足によって性能劣化するのを軽減させることができる。
また、スケジューリングシステムでは、データを移行させる場合、該データと依存関係のある処理を実行する装置をデータの移行先にする。これにより、該依存関係のある処理がデータの読み出し・書き込みにかかる時間を減少させることができ、データを最適な装置のメモリに記憶させることができる。
なお、本実施の形態で説明したスケジューリング方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本スケジューリングプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本スケジューリングプログラムは、インターネット等のネットワークを介して配布してもよい。