(57)【要約】【課題】タスク間でメッセージの送受信を行う場合に、メッセージが破棄されるという問題を解決するタスクスケジューリング装置を提供する。【解決手段】メッセージ転送部１２は、実行中のタスクに対応するメッセージ受信キュー内のメッセージを、送信先のメッセージ受信キューに送信する。輻輳検出部１３は、送信先のメッセージ受信キューの滞留量が輻輳発生閾値以上か否かを判断する。スケジューラ管理部１５は、輻輳検出部１３にて滞留量が輻輳発生閾値以上であると判断されると、メッセージ転送部１２によるメッセージの送信を停止し、かつ、レディーキュー内の、送信先のメッセージ受信キューに対応するタスクの優先度を、実行中のタスクの優先度より高い優先度に変更する。そして、スケジューラ管理部１５は、その実行中のタスクを終了する。【選択図】図３
2010049314.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを優先度の高いタスクから順に実行するタスクスケジューリング装置であって、
各タスクの識別情報を、該タスクの優先度と対応付けて記憶する優先度記憶手段と、
各タスクに対応し、該タスク用のメッセージを蓄える複数のメッセージ記憶手段と、
前記優先度記憶手段内の識別情報のうち、最も高い優先度に対応する識別情報にて特定されるタスクを実行する制御手段と、
実行中のタスクに対応するメッセージ記憶手段内のメッセージを、該メッセージの送信先のメッセージ記憶手段に送信する転送手段と、
前記送信先のメッセージ記憶手段内のメッセージの量が予め定められた第一閾値以上であるか否かを判断する判断手段と、
前記判断手段にて前記メッセージの量が前記第一閾値以上であると判断された場合、前記転送手段による前記メッセージの送信を停止し、かつ、前記優先度記憶手段内の、前記送信先のメッセージ記憶手段に対応するタスクの優先度を、前記実行中のタスクの優先度より高い優先度に変更して、前記実行中のタスクを終了する管理手段と、を含むタスクスケジューリング装置。
【請求項２】
請求項１に記載のタスクスケジューリング装置において、
前記実行中のタスクに対応するメッセージ記憶手段内のメッセージの量が、前記第一閾値より小さい第二閾値を下回ったか否かを判断する判定手段を含み、
前記管理手段は、前記判定手段にて前記メッセージの量が前記第二閾値を下回ったと判断された場合、前記優先度を変更したタスクの識別情報を前記優先度記憶手段から削除して、前記実行中のタスクを終了する、タスクスケジューリング装置。
【請求項３】
複数のタスクの識別情報のそれぞれを、該タスクの優先度と対応付けて記憶する優先度記憶手段と、各タスクに対応し、該タスク用のメッセージを蓄える複数のメッセージ記憶手段と、を含むタスクスケジューリング装置によるスケジューリング方法であって、
前記優先度記憶手段内の識別情報のうち、最も高い優先度に対応する識別情報にて特定されるタスクを実行し、
実行中のタスクに対応するメッセージ記憶手段内のメッセージを、該メッセージの送信先のメッセージ記憶手段に送信し、
前記送信先のメッセージ記憶手段内のメッセージの量が予め定められた第一閾値以上であるか否かを判断し、
前記メッセージの量が前記第一閾値以上であると判断された場合、前記メッセージの送信を停止し、かつ、前記優先度記憶手段内の、前記送信先のメッセージ記憶手段に対応するタスクの優先度を、前記実行中のタスクの優先度より高い優先度に変更し、
前記実行中のタスクを終了する、タスクスケジューリング方法。
【請求項４】
請求項３に記載のタスクスケジューリング方法において、
前記実行中のタスクに対応するメッセージ記憶手段内のメッセージの量が、前記第一閾値より小さい第二閾値を下回ったか否かを判断し、
前記メッセージの量が前記第二閾値を下回ったと判断された場合、前記優先度を変更したタスクの識別情報を前記優先度記憶手段から削除し、
前記実行中のタスクを終了する、タスクスケジューリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスク間で行われるメッセージの送信をスケジューリングするためのタスクスケジューリング装置およびタスクスケジューリング方法に関する。
【背景技術】
【０００２】
リアルタイムオペレーティングシステム（ＲＴＯＳ）等のオペレーティングシステム（ＯＳ）では、複数のタスクが管理される。また、これらのタスク間では、データや制御信号などのメッセージの送受信が行われる。
【０００３】
このメッセージを送受信するタスク間通信方法は、以下のように行われる。
【０００４】
各タスクは、メッセージを蓄えるためのメッセージ受信キューを有する。また、各タスクには、優先度が予め設定される。タスクは、優先度が最も高い順に実行され、実行中のタスクは、自タスクのメッセージ受信キュー内のメッセージを、送信先のメッセージ受信キューに送信する。このとき、タスクは、予め定められたバースト量単位でメッセージを送信していき、自タスクのメッセージ受信キュー内の全てのメッセージを送信すると、次に優先度が高いタスクがメッセージの送信を行う。
【０００５】
図７は、このタスク間通信方法を実現する情報処理装置の構成を示したブロック図である。図７において、情報処理装置は、ＯＳ部５０と、アプリケーション部６０とを含む。ＯＳ部５０は、ＯＳにて実現され、レディーキュー管理部５１と、ディスパッチ部５２と、スケジューリング部５３とを含む。また、アプリケーション部６０は、アプリケーションプログラムにて実現され、複数のタスクを含む。
【０００６】
レディーキュー管理部５１は、タスクを優先度の高い順にキューイングするための優先度別キュー（以下、レディーキューと称する）を管理する。キューイングとは、メッセージ受信キュー内のメッセージを、送信先の処理の完了を待たずに、順次送信する処理である。
【０００７】
ディスパッチ部５２は、実行可能なタスクにディスパッチを行う。なお、ディスパッチとは、ＣＰＵの処理能力を割り当てる処理である。
【０００８】
スケジューリング部５３は、アプリケーション部６０から通知された各タスクの優先度を、レディーキュー管理部５１を介してレディーキューに登録し、その登録内容に応じてタスクを起動する。また、スケジューリング部５３は、ディスパッチ部５２に、その起動したタスクに対するディスパッチを指示する。
【０００９】
このようなタスク間通信方法では、優先度の高いタスクが自タスクのメッセージ受信キュー内のメッセージを全て送信しないと、他のタスクがメッセージを送信することができなかった。
【００１０】
このため、メッセージ受信キューに輻輳が発生すると、そのメッセージ受信キューがメッセージを蓄えることができなくなるという問題が発生する。例えば、メッセージが突発的に大量発生した場合など、送信先のタスクのメッセージ受信キューに蓄えることが可能なメッセージの量より多いメッセージが送信されると、そのメッセージ受信キューがメッセージを蓄えることができなくなる。この蓄えることができなかったメッセージは、破棄される。
【００１１】
このような問題は、タスク間で行われるキューイングに限らず、一般的なキューイングでも生じる。例えば、特許文献１に記載のキュー制御装置でも発生する。
【００１２】
このキュー制御装置には、送受信用のポートごとに、モジュールが対応付けられている。また、各モジュールは、受信側優先制御キュー部と、送信先ポート用キュー部と、送信側キュー部とを含む。
【００１３】
受信側優先制御キュー部は、自己のモジュールに対応するポートが受信したデータを蓄える。送信先ポート用キュー部は、受信側優先制御キュー部に蓄えられたデータを、そのデータを送信するポートの送信側キュー部に送信する。送信側キュー部は、送信先ポート用キュー部から受信したデータを一時的に蓄え、その蓄えたメッセージを送信先の装置に送信する。
【００１４】
ここで、送信側キュー部に蓄えられる量より多いデータが送信先ポート用キュー部から送信されると、送信側キュー部では、その送信されたデータを蓄えることができなくなる。
【００１５】
このキュー制御装置では、この問題を解決するために、送信側キュー部は、自己に蓄えられたデータの量が予め定められた第一値を超えると、送信先ポート用キュー部によるデータの送信を停止する。また、送信側キュー部は、自己に蓄えられたデータの量が予め定められた第二値を下回ると、送信先ポート用キュー部によるデータの送信を再開する。
【００１６】
これにより、送信側キュー部では、データを蓄えることができなくなる前に、新たにデータが送信されてくるのを防ぐことが可能になるので、メッセージ受信キューがメッセージを蓄えることができなくなるという問題を解決することができる。
【特許文献１】特開２００１−２４４９８１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
特許文献１に記載のキュー制御装置では、送信先ポート用キュー部と、送信側キュー部とは、互いに独立してデータを送信することができる。しかしながら、タスク間でメッセージの送受信が行われるタスク間通信では、上述のように、優先度の高いタスクが自タスクのメッセージ受信キュー内のメッセージを全て送信しないと、他のタスクは、メッセージを送信することができなかった。このため、特許文献１に記載の発明を、タスク間通信方法に適応すると、以下の問題が生じる。
【００１８】
つまり、タスク間通信では、送信先のタスクのメッセージ受信キューが第一値を超えたときに、送信元のタスクによるメッセージの送信を停止しても、送信先のタスクは、送信元のタスクより優先度が低いために、実行されない。したがって、送信先のタスクは、自タスクのメッセージ受信キュー内のメッセージを送信することができないので、送信先のタスクのメッセージ受信キューが第二値を下回ることがない。
【００１９】
このため、タスク間でメッセージの送受信が行われる場合には、メッセージ受信キューがメッセージを蓄えることができなくなり、そのメッセージが破棄されるという問題を解決することができない。
【００２０】
本発明の目的は、上記の課題である、タスク間でメッセージの送受信を行う場合に、メッセージが破棄されるという問題を解決するタスクスケジューリング装置およびタスクスケジューリング方法を提供することである。
【課題を解決するための手段】
【００２１】
本発明によるタスクスケジューリング装置は、複数のタスクを優先度の高いタスクから順に実行するタスクスケジューリング装置であって、各タスクの識別情報を、該タスクの優先度と対応付けて記憶する優先度記憶手段と、各タスクに対応し、該タスク用のメッセージを蓄える複数のメッセージ記憶手段と、前記優先度記憶手段内の識別情報のうち、最も高い優先度に対応する識別情報にて特定されるタスクを実行する制御手段と、実行中のタスクに対応するメッセージ記憶手段内のメッセージを、該メッセージの送信先のメッセージ記憶手段に送信する転送手段と、前記送信先のメッセージ記憶手段内のメッセージの量が予め定められた第一閾値以上であるか否かを判断する判断手段と、前記判断手段にて前記メッセージの量が前記第一閾値以上であると判断された場合、前記転送手段による前記メッセージの送信を停止し、かつ、前記優先度記憶手段内の、前記送信先のメッセージ記憶手段に対応するタスクの優先度を、前記実行中のタスクの優先度より高い優先度に変更し、その後、前記実行中のタスクを終了する管理手段と、を含む。
【００２２】
また、本発明によるタスクスケジューリング方法は、複数のタスクの識別情報のそれぞれを、該タスクの優先度と対応付けて記憶する優先度記憶手段と、各タスクに対応し、該タスク用のメッセージを蓄える複数のメッセージ記憶手段と、を含むタスクスケジューリング装置によるスケジューリング方法であって、前記優先度記憶手段内の識別情報のうち、最も高い優先度に対応する識別情報にて特定されるタスクを実行し、実行中のタスクに対応するメッセージ記憶手段内のメッセージを、該メッセージの送信先のメッセージ記憶手段に送信し、前記送信先のメッセージ記憶手段内のメッセージの量が予め定められた第一閾値以上であるか否かを判断し、前記メッセージの量が前記第一閾値以上であると判断された場合、前記メッセージの送信を停止し、かつ、前記優先度記憶手段内の、前記送信先のメッセージ記憶手段に対応するタスクの優先度を、前記実行中のタスクの優先度より高い優先度に変更し、前記実行中のタスクを終了する。
【発明の効果】
【００２３】
本発明によれば、タスク間でメッセージの送受信が行われる場合に、メッセージが破棄されることを抑制することが可能になる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施形態について図面を参照して説明する。
【００２５】
図１は、本発明の一実施形態の情報処理装置の構成を示したブロック図である。図１において、情報処理装置１００は、記憶部１０１と、情報処理部１０２とを含む。
【００２６】
記憶部１０１は、レディーキュー１１１と、メッセージ（ＭＳＧ）受信キュー１１２とを含む。
【００２７】
レディーキュー１１１は、優先度記憶手段の一例である。レディーキュー１１１は、複数のタスクのそれぞれの識別情報を、そのタスクの優先度と対応付けて記憶する。
【００２８】
メッセージ受信キュー１１２は、複数ある。メッセージ受信キュー１１２のそれぞれは、複数のタスクのいずれかに対応する。メッセージ受信キュー１１２は、自キュー（メッセージ受信キュー１１２）に対応するタスク用のメッセージを蓄える。
【００２９】
情報処理部１０２は、例えば、ＣＰＵであり、ＣＰＵにて読み取り可能な記録媒体からＯＳおよびアプリケーションプログラムを読み取り、その読み取ったＯＳおよびアプリケーションプログラムを実行する。なお、記録媒体は、記憶部１０１でもよいし、記憶部１０１とは別でもよい。
【００３０】
図２は、情報処理部１０２の構成例を示したブロック図である。図２において、情報処理部１０２は、ＯＳ部１と、アプリケーション部１１とを含む。
【００３１】
ＯＳ部１は、制御手段の一例であり、情報処理部１０２がＯＳを実行することで実現される。ＯＳ部１は、システムコール処理部２と、レディーキュー管理部３と、スケジューリング部４と、ディスパッチ部５と、メッセージ受信キュー管理部６とを含む。
【００３２】
システムコール処理部２は、アプリケーション部１１からシステムコールを受信する。システムコールには、タスクの優先度を変更する変更システムコール、新規のタスクを登録する登録システムコール、メッセージの送信先のメッセージ受信キュー１１２に蓄えられているメッセージの量を測定する測定システムコール、メッセージの送信元のメッセージ受信キュー１１２に蓄えられているメッセージの量を測定する監視システムコール、および、実行中のタスクを終了する終了システムコールなどがある。以下、その蓄えられているメッセージの量を滞留量と称する。
【００３３】
レディーキュー管理部３は、記憶部１０１内のレディーキュー１１１を管理する。具体的には、レディーキュー管理部３は、レディーキュー１１１内の情報の変更や削除、および、レディーキュー１１１への識別情報および優先度の登録などを行う。より具体的には、システムコール処理部２が変更システムコールを受信すると、レディーキュー管理部３は、その変更システムコールに従って、レディーキュー１１１内のタスクの優先度を変更する。また、システムコール処理部２が登録システムコールを受信すると、その登録システムコールに従って、識別情報および優先度を対応付けてレディーキュー１１１に登録する。さらに、システムコール処理部２が終了システムコールを受信すると、レディーキュー管理部３は、その終了システムコールに従って、レディーキュー１１１内の情報を削除する。
【００３４】
スケジューリング部４は、レディーキュー１１１内の識別情報が特定するタスクを、優先度の高いタスクから順に起動する。具体的には、スケジューリング部４は、レディーキュー１１１内の最も高い優先度のタスクを起動し、その後、システムコール処理部２が終了システムコールを受信すると、その起動したタスクを終了する。そして、スケジューリング部４は、レディーキュー１１１内の最も高い優先度のタスクを起動する。
【００３５】
ディスパッチ部５は、スケジューリング部４で起動されたタスクにディスパッチを行う。これにより、ＯＳ部１がレディーキュー１１１内の識別情報のうち、最も高い優先度と対応付けられた識別情報のタスクを実行することになる。
【００３６】
メッセージ受信キュー管理部６は、メッセージ受信キュー１１２のそれぞれの滞留量を監視する。より具体的には、システムコール処理部２が測定システムコールまたは監視システムコールを受信すると、メッセージ受信キュー管理部６は、その測定システムコールまたは監視システムコールに従って、メッセージ受信キュー１１２の滞留量を監視する。
【００３７】
アプリケーション部１１は、情報処理部１０２がアプリケーションプログラムを実行することで実現される。
【００３８】
図３は、アプリケーション部１１の構成例を示したブロック図である。図３において、アプリケーション部１１は、タスクＡないしＣを含む。タスクＡないしＣは、全て同じ構成を有するものとする。以下では、タスクＢを例として説明し、タスクＡおよびＣの説明は省略する。また、タスクＢが実行中のタスクであるとしている。
【００３９】
タスクＢは、メッセージ転送部１２と、送信先タスクメッセージ受信キュー輻輳検出部１３と、自タスクメッセージ受信キュー輻輳復旧検出部１４と、スケジューラ管理部１５とを含む。
【００４０】
メッセージ転送部１２は、転送手段の一例である。メッセージ転送部１２は、自タスク（タスクＢ）に対応するメッセージ受信キュー１１２内のメッセージを、そのメッセージの送信先のメッセージ受信キュー１１２に送信する。
【００４１】
送信先タスクメッセージ受信キュー輻輳検出部（以下、輻輳検出部と略す）１３は、判断手段の一例である。輻輳検出部１３は、メッセージ転送部１２が送信するメッセージの送信先のメッセージ受信キュー１１２の滞留量を監視する。具体的には、輻輳検出部１３は、定期的に、その送信先のメッセージ受信キュー１１２の滞留量を測定する測定システムコールをＯＳ部１に発行し、その応答情報に基づいて滞留量を監視する。
【００４２】
輻輳検出部１３は、その滞留量が予め定められた輻輳発生閾値以上か否かを判断する。なお、輻輳発生閾値は、第一閾値の一例である。
【００４３】
自タスクメッセージ受信キュー輻輳復旧検出部（以下、復旧検出部と略す）１４は、判定手段の一例である。復旧検出部１４は、自タスクに対応するメッセージ受信キュー１１２の滞留量を測定する。具体的には、復旧検出部１４は、定期的に、自タスクのメッセージ受信キュー１１２の滞留量を測定する監視システムコールをＯＳ部１に発行し、その応答情報に基づいて滞留量を監視する。
【００４４】
復旧検出部１４は、予め定められた輻輳復旧閾値以上であった滞留量が、その輻輳復旧閾値を下回ったか否かを判断する。なお、輻輳復旧閾値は、第二閾値の一例であり、輻輳発生閾値より小さい。
【００４５】
スケジューラ管理部１５は、輻輳検出部１３にて滞留量が輻輳発生閾値以上であると判断されると、メッセージ転送部１２によるメッセージの送信を停止する。スケジューラ管理部１５は、そのメッセージの送信先のメッセージ受信キュー１１２に対応するタスクの優先度を、自タスクの優先度より高い優先度に変更するための変更システムコールをＯＳ部１に発行して、そのメッセージの送信先のメッセージ受信キュー１１２に対応するタスクの優先度を、自タスクの優先度より高い優先度に変更する。そして、スケジューラ管理部１５は、終了システムコールをＯＳ部１に発行して、自タスクを終了する。
【００４６】
また、スケジューラ管理部１５は、復旧検出部１４にて滞留量が輻輳復旧閾値を下回ったと判断されると、終了システムコールをＯＳ部１に発行して、自タスクの識別情報をレディーキュー１１１から削除して、自タスクを終了する。
【００４７】
次に動作を説明する。
【００４８】
図４は、情報処理装置１００の基本的な動作を説明するための説明図である。なお、タスクＡは、情報処理装置１００の外部からメッセージを受信するタスクである。タスクＣは、情報処理装置１００の外部にメッセージを送信するタスクである。また、レディーキュー１１１内は、空であるとする。
【００４９】
情報処理装置１００が外部から受信したメッセージは、タスクＡのメッセージ受信キュー１１２に記憶される。ＯＳ部１のスケジューリング部４は、そのメッセージがメッセージ受信キュー１１２に記憶されたことを契機に、タスクＡの識別情報およびタスクＡ用の優先度を対応付けてレディーキュー１１１に登録する。
【００５０】
続いて、ＯＳ部１は、レディーキュー１１１内の最も高い優先度に対応するタスクを実行する。具体的には、ＯＳ部１のスケジューリング部４は、レディーキュー１１１内の最も高い優先度に対応する識別情報にて特定されるタスクを起動し、その識別情報をディスパッチ部５に通知する。ディスパッチ部５は、その識別情報を受信すると、その識別情報が特定するタスクにディスパッチを行う。
【００５１】
これにより、タスクＡが実行される。タスクＡのメッセージ転送部１２は、自タスクのメッセージ受信キュー１１２内のメッセージを、タスクＢのメッセージ受信キュー１１２に送信する。タスクＢのメッセージ受信キュー１１２は、そのメッセージを受信すると、そのメッセージを記憶する。
【００５２】
また、ＯＳ部１のスケジューリング部４は、そのメッセージがタスクＢのメッセージ受信キュー１１２に記憶されたことを契機に、タスクＢの識別情報およびタスクＢ用の優先度を対応付けてレディーキュー１１１に記憶する。
【００５３】
そして、メッセージ転送部１２は、タスクＡのメッセージ受信キュー１１２内のメッセージを全て送信すると、メッセージの送信が完了したことを示す完了報告をスケジューラ管理部１５に通知する。スケジューラ管理部１５は、完了報告を受信すると、終了システムコールを生成し、その終了システムコールを、システムコール処理部２を介して、ＯＳ部１のスケジューリング部４に送信する。なお、終了システムコールは、自タスクの識別情報を含む。
【００５４】
スケジューリング部４は、終了システムコールを受信すると、終了システムコール内の識別情報にて特定されるタスクを終了する終了処理を行う。具体的には、スケジューリング部４は、終了システムコールをレディーキュー管理部３に通知する。レディーキュー管理部３は、終了システムコールを受信すると、その終了システムコール内の識別情報と、その識別情報に対応する優先度を削除する。レディーキュー管理部３は、識別情報および優先度を削除したことを示す削除報告をスケジューリング部４に送信する。スケジューリング部４は、削除報告を受信すると、実行中のタスクを終了する。
【００５５】
これにより、タスクＡが終了される。その後、ＯＳ部１は、レディーキュー１１１内の最も高い優先度に対応するタスクＢを実行する。
【００５６】
タスクＢのメッセージ転送部１２は、自タスクのメッセージ受信キュー１１２内のメッセージを、タスクＣのメッセージ受信キュー１１２に送信する。タスクＣのメッセージ受信キュー１１２は、そのメッセージを受信すると、そのメッセージを記憶する。
【００５７】
ＯＳ部１のスケジューリング部４は、そのメッセージがタスクＣのメッセージ受信キュー１１２に記憶されたことを契機に、タスクＣの識別情報およびタスクＣ用の優先度を対応付けてレディーキュー１１１に記憶する。
【００５８】
ここで、スケジューリング部４は、情報処理装置１００の外部からメッセージを受信する受信処理が、情報処理装置１００の外部にメッセージを送信する送信処理より高い優先度で実行されるようにスケジューリングする。具体的には、スケジューリング部４は、優先度が高いほうから順にタスクＡ、タスクＢおよびタスクＣとなるように、識別情報および優先度をレディーキュー１１１に記憶する。
【００５９】
次に、タスクＢのメッセージ受信キュー１１２に輻輳が発生した場合における情報処理装置１００の動作について説明する。具体的には、情報処理装置１００が通常状態（状態α）の場合に、タスクＢのメッセージ受信キュー１１２で発生した輻輳が検出され、情報処理装置１００が輻輳状態（状態β）に遷移する。その後、タスクＢのメッセージ受信キュー１１２で発生した輻輳が復旧され、情報処理装置１００が通常状態（状態γ）に遷移するまでの動作を説明する。
【００６０】
図５は、それらの状態における、メッセージ受信キュー１１２のそれぞれの滞留量、および、実行権を有するタスクを示した説明図である。図６は、それらの状態における、レディーキュー１１１内の情報を示した説明図である。なお、図５では、メッセージ受信キュー１１２を、受信キューと略している。また、図６において、優先度は、[０]が最も高く、数字が大きくなるに従って小さくなるものとする。
【００６１】
状態αでは、タスクＡが実行されている。また、タスクＡおよびＢのそれぞれのメッセージ受信キュー１１２にメッセージが蓄えられている。さらに、レディーキュー１１１には、タスクＡの識別情報（タスクＡ１）と、タスクＢの識別情報（タスクＢ１）とが記憶される。また、タスクＡの優先度は、タスクＢの優先度より高い。そして、タスクＡのメッセージ転送部１２がタスクＡのメッセージ受信キュー１１２内のメッセージを、タスクＢのメッセージ受信キュー１１２に送信している。
【００６２】
タスクＡの輻輳検出部１３は、定期的に、タスクＢのメッセージ受信キュー１１２の滞留量を測定する測定システムコールを生成し、その測定システムコールを、システムコール処理部２を介して、メッセージ受信キュー管理部６に送信する。
【００６３】
メッセージ受信キュー管理部６は、測定システムコールを受信すると、タスクＢのメッセージ受信キュー１１２の滞留量を確認する。メッセージ受信キュー管理部６は、その確認した滞留量を示す情報を、測定システムコールの応答情報として生成し、その応答情報を、システムコール処理部２を介してタスクＡの輻輳検出部１３に送信する。
【００６４】
輻輳検出部１３は、応答情報を受信すると、その応答情報にて示される滞留量が輻輳発生閾値以上か否かを判断する。輻輳検出部１３は、滞留量が輻輳発生閾値未満であると、動作を終了する。一方、輻輳検出部１３は、滞留量が輻輳発生閾値以上であると、タスクＢのメッセージ受信キュー１１２で輻輳が発生したと判断する。これにより、情報処理装置１００が輻輳検出状態に遷移する。
【００６５】
輻輳検出状態では、輻輳検出部１３は、滞留量が輻輳発生閾値以上である旨をスケジューラ管理部１５に通知する。スケジューラ管理部１５は、その旨を受信すると、メッセージ転送部１２にメッセージの送信の停止を指示して、メッセージ転送部１２によるメッセージの送信を停止する。
【００６６】
スケジューラ管理部１５は、タスクＢの優先度を変更する変更システムコールを生成し、その変更システムコールを、システムコール処理部２およびスケジューリング部４を介して、レディーキュー管理部３に通知する。変更システムコールは、タスクＡの優先度より高いタスクＢの優先度と、タスクＢの識別情報（タスクＢ１）を含む。
【００６７】
レディーキュー管理部３は、変更システムコールを受信すると、レディーキュー１１１内の、その変更システムコールに含まれる識別情報に対応するタスクＢの優先度を、その変更システムコールに含まれる優先度に変更する。これにより、タスクＢの優先度がタスクＡより高くなる。その後、レディーキュー管理部３は、優先度の変更が終了したことを示す情報を、変更システムコールの応答情報として生成し、その応答情報を、スケジューリング部４およびシステムコール処理部２を介して、タスクＡのスケジューラ管理部１５に送信する。
【００６８】
スケジューラ管理部１５は、その応答情報を受信すると、タスクＡを登録する登録システムコールを生成し、その登録システムコールを、システムコール処理部２およびスケジューリング部４を介して、レディーキュー管理部３に通知する。なお、登録システムコールは、タスクＡ用の優先度と、タスクＡの識別情報（タスクＡ２）とを含む。
【００６９】
レディーキュー管理部３は、登録システムコールを受信すると、登録システムコール内の優先度および識別情報を対応付けて、レディーキュー１１１に登録する。これは、タスクＡのメッセージ受信キュー１１２に残存したメッセージを後で送信するためである。
【００７０】
その後、レディーキュー管理部３は、タスクＡの登録が終了したことを示す情報を、登録システムコールの応答情報として生成し、その応答情報を、スケジューリング部４およびシステムコール処理部２を介して、タスクＡのスケジューラ管理部１５に送信する。
【００７１】
スケジューラ管理部１５は、その応答情報を受信すると、タスクＡを終了する終了システムコールを生成し、その終了システムコールを、システムコール処理部２を介してスケジューリング部４に通知する。なお、終了システムコールは、タスクＡの識別情報（タスクＡ１）を含む。
【００７２】
スケジューリング部４は、終了システムコールを受信すると、終了システムコール内の識別情報にて特定されるタスクを終了する終了処理を行う。これにより、タスクＡが終了される。
【００７３】
ＯＳ部１が、レディーキュー１１１内の最も高い優先度に対応する識別情報が特定するタスクを実行する。今、タスクＢの優先度がタスクＡの優先度より高いので、タスクＢが実行される。これにより、情報処理装置１００が状態βに遷移する。
【００７４】
状態βでは、タスクＢのメッセージ転送部１２が、タスクＢのメッセージ受信キュー１１２内のメッセージを、タスクＣのメッセージ受信キュー１１２に送信する。
【００７５】
また、タスクＢの復旧検出部１４は、定期的に、タスクＢのメッセージ受信キュー１１２の滞留量を測定する監視システムコールを生成し、その監視システムコールを、システムコール処理部２を介して、メッセージ受信キュー管理部６に送信する。
【００７６】
メッセージ受信キュー管理部６は、監視システムコールを受信すると、タスクＢのメッセージ受信キュー１１２の滞留量を確認する。メッセージ受信キュー管理部６は、その確認した滞留量を示す情報を、監視システムコールの応答情報として生成し、その応答情報を、システムコール処理部２を介してタスクＡの復旧検出部１４に送信する。
【００７７】
復旧検出部１４は、応答情報を受信すると、その応答情報に基づいて、タスクＢのメッセージ受信キュー１１２の滞留量が輻輳復旧閾値を下回ったか否かを判断する。例えば、復旧検出部１４は、一つ前の応答情報が示す滞留量を保持し、その保持している滞留量が輻輳復旧閾値以上であり、新たに受信した応答情報が示す輻輳復旧閾値未満であると、タスクＢのメッセージ受信キュー１１２の滞留量が輻輳復旧閾値を下回ったと判断する。
【００７８】
復旧検出部１４は、メッセージ受信キュー１１２の滞留量が輻輳復旧閾値を下回っていないと判断すると、動作を終了する。一方、復旧検出部１４は、メッセージ受信キュー１１２の滞留量が輻輳復旧閾値を下回ったと判断すると、タスクＢのメッセージ受信キュー１１２の輻輳が復旧したと判断する。これにより、情報処理装置１００が輻輳復旧状態であると判断する。
【００７９】
輻輳復旧状態では、復旧検出部１４は、滞留量が輻輳復旧閾値を下回った旨をスケジューラ管理部１５に通知する。スケジューラ管理部１５は、その旨を受信すると、メッセージ転送部１２にメッセージの送信の停止を指示して、メッセージ転送部１２によるメッセージの送信を停止する。
【００８０】
スケジューラ管理部１５は、タスクＢを登録する登録システムコールを生成し、その登録システムコールを、システムコール処理部２およびスケジューリング部４を介して、レディーキュー管理部３に通知する。なお、登録システムコールは、タスクＢ用の優先度と、タスクＢの識別情報（タスクＢ２）とを含む。
【００８１】
レディーキュー管理部３は、登録システムコールを受信すると、登録システムコール内の優先度および識別情報を対応付けて、レディーキュー１１１に登録する。その後、レディーキュー管理部３は、タスクＢの登録が終了したことを示す情報を、登録システムコールの応答情報として生成し、その応答情報を、スケジューリング部４およびシステムコール処理部２を介して、タスクＢのスケジューラ管理部１５に送信する。
【００８２】
スケジューラ管理部１５は、その応答情報を受信すると、タスクＢを終了する終了システムコールを生成し、その終了システムコールを、システムコール処理部２を介してスケジューリング部４に通知する。なお、終了システムコールは、タスクＢの識別情報（タスクＢ１）を含む。
【００８３】
スケジューリング部４は、終了システムコールを受信すると、終了システムコール内の識別情報にて特定されるタスクを終了する終了処理を行う。これにより、タスクＢが終了される。
【００８４】
その後、ＯＳ部１が、レディーキュー１１１内の最も高い優先度に対応する識別情報が特定するタスクを実行する。今、タスクＡの優先度が最も高いので、タスクＡが実行される。これにより、情報処理装置１００が状態γに遷移する。
【００８５】
状態γでは、タスクＡのメッセージ転送部１２が、タスクＡのメッセージ受信キュー１１２内のメッセージを、タスクＡのメッセージ受信キュー１１２に送信する。
【００８６】
次に効果を説明する。
【００８７】
本実施形態では、メッセージ転送部１２は、実行中のタスクに対応するメッセージ受信キュー１１２内のメッセージを、送信先のメッセージ受信キュー１１２に送信する。輻輳検出部１３は、送信先のメッセージ受信キュー１１２の滞留量が輻輳発生閾値以上か否かを判断する。スケジューラ管理部１５は、輻輳検出部１３にて滞留量が輻輳発生閾値以上であると判断されると、メッセージ転送部１２によるメッセージの送信を停止し、かつ、レディーキュー１１１内の、送信先のメッセージ受信キュー１１２に対応するタスクの優先度を、実行中のタスクの優先度より高い優先度に変更する。そして、スケジューラ管理部１５は、その実行中のタスクを終了する。
【００８８】
この場合、送信先のメッセージ受信キュー１１２の滞留量が輻輳発生閾値以上になると、その送信先のメッセージ受信キュー１１２に対応するタスクの優先度が、実行中のタスクの優先度より高い優先度に変更される。また、その実行中のタスクが終了される。
【００８９】
したがって、送信先のメッセージ受信キュー１１２がメッセージを蓄えられなくなる前に、その送信先のメッセージ受信キュー１１２に対応するタスクを実行することが可能になる。よって、メッセージ受信キュー１１２がメッセージを蓄えることができなくなることを抑制することが可能になるので、メッセージが破棄されることを抑制することが可能になる。
【００９０】
また、本実施形態では、復旧検出部１４は、実行中のタスクに対応するメッセージ受信キュー１１２内の滞留量が、輻輳発生閾値より小さい輻輳復旧閾値を下回ったか否かを判断する。スケジューラ管理部１５は、復旧検出部１４にて滞留量が輻輳復旧閾値を下回ったと判断された場合、優先度を変更しタスクの識別情報をレディーキューから削除して、実行中のタスクを終了する。
【００９１】
この場合、メッセージ受信キュー１１２の輻輳が復旧された場合に、元の優先度に従ってタスクを実行することが可能になる。
【００９２】
以上説明した各実施形態において、図示した構成は単なる一例であって、本発明はその構成に限定されるものではない。
【００９３】
例えば、タスクＡないしＣは、アプリケーションプログラムにて実現されていたが、ミドルウェア、ファームウェアおよびドライバなどにて実現されてもよい。
【図面の簡単な説明】
【００９４】
【図１】本発明の一実施形態の情報処理装置の構成を示したブロック図である。
【図２】情報処理部の構成例を示したブロック図である。
【図３】アプリケーション部の構成例を示したブロック図である。
【図４】情報処理装置の基本的な動作を説明するための説明図である。
【図５】各状態におけるメッセージ受信キューの滞留量を示した説明図である。
【図６】各状態におけるレディーキュー内の情報を示した説明図である。
【図７】関連技術の情報処理装置の構成を示したブロック図である。
【符号の説明】
【００９５】
１        ＯＳ部
２        システムコール処理部
３        レディーキュー管理部
４        スケジューリング部
５        ディスパッチ部
６        メッセージ受信キュー管理部
１１      アプリケーション部
１２      メッセージ転送部
１３      送信先タスクメッセージ受信キュー輻輳検出部
１４      自タスクメッセージ受信キュー輻輳復旧検出部
１００    情報処理装置
１０１    記憶部
１０２    情報処理部
１１１    レディーキュー
１１２    メッセージ受信キュー
【図１】
2010049314.tif 000003
【図２】
2010049314.tif 000004
【図３】
2010049314.tif 000005
【図４】
2010049314.tif 000006
【図５】
2010049314.tif 000007
【図６】
2010049314.tif 000008
【図７】
2010049314.tif 000009