(57)【要約】【課題】  マルチタスクで駆動される他のタスクの負荷の増加に伴ってタスクでの処理時間が増大した場合に、これがタスク異常として誤検知されることを回避する。【解決手段】  データ通信処理部１１におけるデータ通信量を計測し監視周期における変動量をデータ通信の負荷状態値として算出する。タスク処理時間がその監視時間を超え（ステップＳ３）、且つデータ通信量の負荷状態値がそのしきい値を超えるときには復旧処理回避カウンタ値をインクリメントしてタスク異常と判断しないが（ステップＳ５〜Ｓ７）、復旧処理回避カウンタ値がそのしきい値を超えたとき、タスク異常と判断し、該当タスクの再起動や組み込み機器全体を再起動させ、正常状態への復旧を図る（ステップＳ１０）。【選択図】          図２
2005293164.tif 000002
【特許請求の範囲】
【請求項１】
マルチタスクで実行されるタスクが所定の処理を開始してから完了するまでの所要時間を処理時間として検出する処理時間検出手段を有し、当該処理時間検出手段で検出した処理時間が予め設定したそのしきい値を超えるとき、前記タスクをタスク異常と判断するようにしたタスク監視方式において、
前記タスクと共にマルチタスクで実行されるタスクの負荷状態を検出する負荷状態検出手段を備え、
当該負荷状態検出手段で検出される負荷状態がそのしきい値を超えるタスクがあるときには、前記処理時間検出手段で検出される処理時間がそのしきい値を超えるタスクをタスク異常と判断しないようになっていることを特徴とするタスク監視方式。
【請求項２】
前記処理時間検出手段で検出される処理時間がそのしきい値を超え、且つ前記負荷状態検出手段で検出される負荷状態がそのしきい値を超える状態が予め設定した判定期間以上継続したときには、前記タスクをタスク異常と判断するようになっていることを特徴とする請求項１記載のタスク監視方式。
【請求項３】
データ通信を行うデータ通信処理タスクと共にマルチタスクで実行されるタスクのタスク監視方式であって、
前記負荷状態検出手段は、前記データ通信処理タスクにおけるデータ通信量を検出するようになっていることを特徴とする請求項１又は請求項２記載のタスク監視方式。
【請求項４】
マルチタスクで実行されるタスクが所定の処理を開始してから完了するまでの所要時間を処理時間として検出する処理時間検出手段を有し、当該処理時間検出手段で検出した処理時間が予め設定したそのしきい値を超えるとき、前記タスクをタスク異常と判断するようにしたタスク監視方式において、
前記タスクと共にマルチタスクで実行されるタスクの負荷状態を検出する負荷状態検出手段を備え、
前記処理時間検出手段で検出される処理時間が、前記しきい値よりも短い実行制限開始時間を超えるとき、前記負荷状態検出手段で検出される負荷状態がそのしきい値を超えるタスクの実行を一時的に制限するようになっていることを特徴とするタスク監視方式。
【請求項５】
前記処理時間検出手段で検出される処理時間が前記実行制限開始時間を超えるとき、前記負荷状態検出手段で検出される負荷状態がそのしきい値を超え、且つ、前記処理時間が前記実行制限開始時間を超えたタスクの優先度と同等以上の優先度を有するタスクの実行を一時的に制限するようになっていることを特徴とする請求項４記載のタスク監視方式。
【請求項６】
前記タスクの実行を一時的に制限している状態で、前記処理時間検出手段で検出される処理時間がそのしきい値を超えるときには、該タスクをタスク異常と判断するようになっていることを特徴とする請求項４又は請求項５記載のタスク監視方式。
【請求項７】
前記タスク異常が検出されたとき、異常が検出されたタスク又は当該タスクが搭載されたシステムを再起動させるようになっていることを特徴とする請求項１から請求項６の何れか１項に記載のタスク監視方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチタスクシステムにおけるタスク監視方式に関し、特に、負荷の増加に起因するタスクの処理遅延をタスク異常として誤検知することを回避することの可能なタスク監視方式に関する。
【背景技術】
【０００２】
従来、１つのＣＰＵによって複数のタスクを時分割的に実行するマルチタスクシステムが広く用いられている。このようなマルチタスクシステムにおいては、各タスクの動作状況を監視することによってタスク異常を検出するようにしており、例えば、タスク毎にその処理時間を監視し、予め設定した監視時間と比較することによってタスクの動作が的確に行われたかどうかを監視し、同時に、実際の処理時間に応じて監視時間を適宜補正することによって最適な監視時間を設定し、これに基づいてタスクの動作状況を判定することによってタスクの動作監視を行うようにしたものが提案されている（例えば、特許文献１参照）。
【０００３】
また、例えば、各タスクが一定時間以内にウォッチドッグタイマに生存通知を行うことによりタスクの正常動作を確認するようにした方法においては、タスクが実際に実行中であるときにのみ、前回生存通知が行われた時点からの経過時間を計測することによって、待ち時間状態にあるタスクが生存通知を行わないことに起因してタスクの異常と誤検知を回避するようにした方法等も提案されている（例えば、特許文献２参照）。
【特許文献１】特開平１−１５４２７６号公報
【特許文献２】特開平５−３４６８７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述のように、タスク毎にその処理時間を監視するようにした方法においては、実際の処理時間に応じて監視時間を更新することによって実際の動作状況に応じた最適な監視時間を設定することができる。しかしながら、例えば取り扱うデータ通信量の一時的な増加、或いは何らかによる一時的な演算負荷の増加等によって一部のタスクの負荷が増加すると、このタスクの優先度が高い場合には、この高優先度タスクが頻繁に起動されることになり、これ以外のタスク、特にこのタスクよりも優先度の低い低優先度タスクが起動される機会が減少し、低優先度タスクの処理時間が通常よりも延長してしまう可能性がある。このため、低優先度タスクの処理時間が監視時間を上回った時点でタスク異常と判断されることになり、実際にはタスクの異常ではないにも関わらず、タスク異常と判断されてしまう場合がある。
【０００５】
また、実際にタスクが実行状態にあるときにのみ、生存通知が行われるまでの経過時間を計測するようにした方法においても、一部のタスクで取り扱うデータ通信量や処理負荷の増加等が生じた場合には、他のタスクが起動される機会が減少する可能性があり、この場合もタスクの処理時間の延長を引き起こす可能性があり、このため、実際にはタスク異常ではないにも関わらず、タスク異常と判断されてしまう場合がある。
そこで、この発明は、上記従来の未解決の問題に着目してなされたものであり、一部のタスクでの処理負荷の増加に伴ってタスク処理時間が延長した場合に、これをタスク異常として誤検知することを回避することの可能なタスク監視方式を提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明の請求項１に係るタスク監視方式は、マルチタスクで実行されるタスクが所定の処理を開始してから完了するまでの所要時間を処理時間として検出する処理時間検出手段を有し、当該処理時間検出手段で検出した処理時間が予め設定したそのしきい値を超えるとき、前記タスクをタスク異常と判断するようにしたタスク監視方式において、前記タスクと共にマルチタスクで実行されるタスクの負荷状態を検出する負荷状態検出手段を備え、当該負荷状態検出手段で検出される負荷状態がそのしきい値を超えるタスクがあるときには、前記処理時間検出手段で検出される処理時間がそのしきい値を超えるタスクをタスク異常と判断しないようになっていることを特徴としている。
【０００７】
この請求項１に係る発明では、マルチタスクで実行されるタスクについて、その処理時間、つまり、所定の処理を開始してから完了するまでの所要時間が処理時間検出手段で検出され、この処理時間検出手段で検出された処理時間が予め設定されたそのしきい値を超えるとき、このタスクはタスク異常として検出される。このとき、このタスクと共にマルチタスクで実行されるタスクについてその負荷状態が検出され、前記負荷状態検出手段で検出される負荷状態がそのしきい値を超えるタスクがあるときには、処理時間検出手段で検出された処理時間がそのしきい値を超えたとしても、このタスクをタスク異常と判断しない。したがって、負荷状態がしきい値を超え高負荷状態のタスクがあることに起因して、タスクの処理時間が延長したとしてもこのタスクはタスク異常と判断されることはない。
【０００８】
また、請求項２に係るタスク監視方式は、前記処理時間検出手段で検出される処理時間がそのしきい値を超え、且つ前記負荷状態検出手段で検出される負荷状態がそのしきい値を超える状態が予め設定した判定期間以上継続したときには、前記タスクをタスク異常と判断するようになっていることを特徴としている。
この請求項２に係る発明では、負荷状態がしきい値を超え高負荷状態の他のタスクがある場合には、処理時間検出手段で検出される処理時間がしきい値を超えたとしてもこの時点では、このタスクはタスク異常と判断されないが、負荷状態がしきい値を超えるタスクが存在し、且つタスクの処理時間がしきい値を超える状態が、予め設定した判定期間以上継続したときには、このタスクはタスク異常と判断される。
【０００９】
また、請求項３に係るタスク監視方式は、データ通信を行うデータ通信処理タスクと共にマルチタスクで実行されるタスクのタスク監視方式であって、前記負荷状態検出手段は、前記データ通信処理タスクにおけるデータ通信量を検出するようになっていることを特徴としている。
この請求項３に係る発明では、データ通信処理タスクを含む複数のタスクがマルチタスクで実行されるときには、負荷状態検出手段によって前記データ通信処理タスクにおけるデータ通信量が検出される。つまり、データ通信量の変動が比較的発生し、負荷状態が変動しやすく他のタスクの処理時間の延長を引き起こし易いデータ通信処理タスクについて、その負荷状態としてデータ通信量が検出され、このデータ通信量に応じてタスク異常かどうかの判断が行われることになる。
【００１０】
また、請求項４に係るタスク監視方式は、マルチタスクで実行されるタスクが所定の処理を開始してから完了するまでの所要時間を処理時間として検出する処理時間検出手段を有し、当該処理時間検出手段で検出した処理時間が予め設定したそのしきい値を超えるとき、前記タスクをタスク異常と判断するようにしたタスク監視方式において、前記タスクと共にマルチタスクで実行されるタスクの負荷状態を検出する負荷状態検出手段を備え、前記処理時間検出手段で検出される処理時間が、前記しきい値よりも短い実行制限開始時間を超えるとき、前記負荷状態検出手段で検出される負荷状態がそのしきい値を超えるタスクの実行を一時的に制限するようになっていることを特徴としている。
【００１１】
この請求項４に係る発明では、マルチタスクで実行されるタスクについて、その処理時間、つまり、所定の処理を開始してから完了するまでの所要時間が処理時間検出手段で検出され、この処理時間検出手段で検出された処理時間が予め設定されたそのしきい値を超えるとき、このタスクはタスク異常として検出される。このとき、このタスクと共にマルチタスクで実行されるタスクについてその負荷状態が検出され、前記処理時間検出手段で検出される処理時間が、前記しきい値よりも短い実行制限開始時間を超えるとき、前記負荷状態検出手段で検出される負荷状態がそのしきい値を超えるタスクの実行が一時的に制限される。したがって、負荷状態がそのしきい値を超え高負荷状態であるタスクの実行が一時的に制限されるから、その分、他のタスクが実行される機会が増えることになる。このため、処理時間がその実行制限開始時間を超えるタスクが実行される機会の増加が図られることになり、遅延傾向にある処理の進行が図られることになるから、処理時間がしきい値を超えることが回避される。
【００１２】
また、請求項５に係るタスク監視方式は、前記処理時間検出手段で検出される処理時間が前記実行制限開始時間を超えるとき、前記負荷状態検出手段で検出される負荷状態がそのしきい値を超え、且つ、前記処理時間が前記実行制限開始時間を超えたタスクの優先度と同等以上の優先度を有するタスクの実行を一時的に制限するようになっていることを特徴としている。
【００１３】
この請求項５に係る発明では、処理時間検出手段で検出される処理時間が実行制限開始時間を超えるときには、負荷状態検出手段で検出される負荷状態がそのしきい値を超えるタスクであって且つ、処理時間が実行制限開始時間を超えたタスクの優先度と同等、又はそれ以上の優先度を有するタスクについて、一時的にその実行が制限される。つまり、処理時間が実行制限開始時間を超えたタスクの実行を遅延させる要因となっているタスクについてその実行が制限される。このため、処理時間が実行制限開始時間を超えたタスクが実行される機会が増えることになり、このタスクの処理の速やかな進行が図られることになって、処理時間がそのしきい値を超え、タスク異常と判断されることが回避される。
【００１４】
また、請求項６に係るタスク監視方式は、前記タスクの実行を一時的に制限している状態で、前記処理時間検出手段で検出される処理時間がそのしきい値を超えるときには、該タスクをタスク異常と判断するようになっていることを特徴としている。
この請求項６に係る発明では、処理時間検出手段で検出される処理時間が、実行制限開始時間を超えた時点で他のタスクに対する実行制限が行われ、これによって処理時間が実行制限開始時間を超えたタスクが実行される機会が増加するが、その処理が、処理時間のしきい値を超えてもまだ終了しないときには、タスク異常と判断される。
【００１５】
さらに、請求項７に係るタスク監視方式は、前記タスク異常が検出されたとき、異常が検出されたタスク又は当該タスクが搭載されたシステムを再起動させるようになっていることを特徴としている。
この請求項７に係る発明では、処理時間の長いタスクについてタスク異常と判断されたときには、この異常と判断されたタスクか、或いはこの異常と判断されたタスクが搭載されたシステムが再起動され、システムの復旧が図られる。
【発明の効果】
【００１６】
本発明の請求項１に係るタスク監視方式によれば、負荷状態検出手段で検出される負荷状態がそのしきい値を超えるタスクがあるときには、処理時間検出手段で検出される処理時間がそのしきい値を超えたとしてもこのタスクをタスク異常と判断しないようにしたから、高負荷状態の他のタスクがあることに起因して、タスクの処理時間が延長したときにこのタスクがタスク異常と判断されることを回避することができ、負荷状態の一時的な変動に伴ってタスク異常と判断されることを回避することができる。
【００１７】
また、請求項２に係るタスク監視方式によれば、処理時間検出手段で検出される処理時間がそのしきい値を超え、且つ負荷状態検出手段で検出される負荷状態がそのしきい値を超える状態が判定期間以上継続したときには、処理時間がそのしきい値を超えたタスクをタスク異常と判断するようにしたから、真のタスク異常が発生している場合には、高負荷状態の他のタスクが存在する場合であってもタスク異常を確実に検出することができる。
【００１８】
また、請求項３に係るタスク監視方式によれば、データ通信を行うデータ通信処理タスクと共にマルチタスクで実行されている場合には、負荷状態が比較的変動しやすく、他のタスクの処理時間の延長を引き起し易い、前記データ通信処理タスクにおけるデータ通信量を負荷状態として検出しこれに応じて、タスク異常かどうかの判断を行うようにしたから、タスク異常かどうかの判定を効果的に行うことができる。
【００１９】
また、請求項４に係るタスク監視方式によれば、処理時間検出手段で検出される処理時間が、実行制限開始時間を超えるときには、負荷状態検出手段で検出される負荷状態がそのしきい値を超えるタスクの実行を一時的に制限するようにしたから、その分、他のタスクが実行される機会が増えることになって、処理時間がその実行制限開始時間を超えるタスクが実行される機会を増加させ、遅延傾向にある処理を進行させることができ、このタスクの処理時間がそのしきい値を超えタスク異常と判断されることを回避することができる。
【００２０】
また、請求項５に係るタスク監視方式によれば、処理時間検出手段で検出される処理時間が実行制限開始時間を超えるときには、負荷状態検出手段で検出される負荷状態がそのしきい値を超え、且つ、処理時間が実行制限開始時間を超えたタスクの優先度と同等以上の優先度を有するタスクの実行を一時的に制限するようにしたから、処理時間が実行制限開始時間を超えたタスクが実行される機会を与えることができ、他のタスクの実行制限を効率よく行うことができる。
【００２１】
また、請求項６に係るタスク監視方式によれば、他のタスクの実行を一時的に制限している状態で、処理時間検出手段で検出される処理時間が、そのしきい値を超えるときには、このタスクをタスク異常と判断するようにしたから、真のタスク異常が発生している場合には高負荷状態の他のタスクがある場合であっても、タスク異常を確実に検出することができる。
さらに、請求項７に係るタスク監視方式によれば、タスク異常が検出されたときには、異常が検出されたタスク又はこのタスクが搭載されたシステムを再起動させるようにしたから、速やかにシステムの復旧を図ることができる。
【発明を実施するための最良の形態】
【００２２】
以下に、本発明の実施の形態を説明する。
図１は、本発明を適用した組み込み機器１００のソフトウェア構成を示すブロック図である。
この組み込み機器１００は、マルチタスクで動作するプログラムが搭載され、各タスク１の動作状況を、タスク監視部１０によって監視するようになっている。また、同様にマルチタスクで動作する、図示しない外部機器等とのデータ通信処理を行うデータ通信処理部１１を備えている。
【００２３】
このデータ通信処理部１１には、データ通信の処理量をカウントするデータ通信量カウンタ（負荷状態検出手段）１１ａが設けられており、このデータ通信量カウンタ１１ａでは、実行しているデータ通信の種類に応じて、例えば、電文やメッセージの処理回数や、パケットの処理回数等をデータ処理量としてカウントする。
前記タスク監視部１０は、予め設定された所定の監視周期毎に起動され、タスク毎にその処理時間を監視し、この処理時間に基づいてタスクの異常を検出するようになっている。このタスク監視部１０は、監視対象のタスク毎にタスク動作監視に利用するための、タスク管理情報を有している。
【００２４】
前記タスク管理情報としては、例えば、タスクを識別するためのタスクステータス情報、タスクの実行時間を監視するための後述の監視要求が行われた時点における起動時刻、監視停止要求が行われた時点における終了時刻、また、監視要求が行われたとき起動され且つ監視停止要求が行われたときに停止される、タスクでの処理時間を計測するための経過時間カウンタ（処理時間検出手段）のカウンタ値、処理時間のしきい値である監視時間、復旧処理回避カウンタのカウンタ値、復旧処理回避判定しきい値等、タスクの処理時間の監視に用いられる各種時間情報等から構成される。
【００２５】
また、タスク監視部１０では、前記監視要求が行われたときには前記起動時刻を更新記憶すると共に、前記終了時刻を初期値に更新記憶するようになっている。また、タスク監視部１０では、前記監視要求が行われたとき前記復旧処理回避カウンタのカウンタ値を零にリセットするようになっている。
そして、タスク監視部１０は、監視周期毎に各タスク１について経過時間カウンタで特定されるタスクの処理時間、及びそのしきい値である監視時間に照らして、各タスクの処理時間がその監視時間内に収まるかどうかに基づいて異常監視を行うようになっている。また、監視周期毎にデータ通信量カウンタ１１ａの現在値と、データ通信量カウンタの前回値格納領域１０ａに格納している、前回の監視周期におけるデータ通信量カウンタ値との差、つまり、データ通信量カウンタ１１ａの監視周期における変動量を算出し、これをデータ通信負荷状態値として負荷状態値格納領域１０ｂに格納する。そして、前回値格納領域１０ａに、前記データ通信量カウンタ１１ａの現在値を更新記憶する。
【００２６】
一方、タスク１は、処理開始時にタスク監視部１０に対して監視要求を行い、所定の処理が終了した後、前記タスク監視部１０に対して監視停止要求を行うようになっている。この監視要求及び監視停止要求の出力タイミングは、タスク１での処理の処理時間を監視したい時点で出力させるようにすればよい。例えば、タスク１での処理全体に要する処理時間を監視したい場合には、タスク１での処理の開始時点及び処理の終了時点で、監視要求及び監視停止要求を出力するようにすればよく、また、タスク１での処理のうちその一部の処理についてのみその処理時間を監視したいときには、所望の処理の開始時点及び終了時点で監視要求及び監視停止要求を出力するようにすればよい。
【００２７】
図２は、タスク監視部１０で実行される監視処理の処理手順の一例を示すフローチャートである。
タスク監視部１０では、この監視処理を監視周期毎に実行する。そして、まず、ステップＳ１で、１番目の処理対象のタスクについて、これが監視対象のタスクであるかどうかを判断する。この判断は、タスク管理情報として保持している、監視要求が行われた時点における時刻である起動時刻及び終了時刻が設定されているかどうかを判断し、起動時刻が設定され且つ終了時刻が初期値であるときには監視対象のタスクであると判断し、それ以外のときには、監視対象のタスクではないか又は監視終了のタスクと判断する。そして、監視対象のタスクである場合にはステップＳ２に移行し、この処理対象のタスクに対応するタスク監視情報を参照し経過時間カウンタのカウンタ値をタスク処理時間として読み出す。
【００２８】
次いで、ステップＳ３に移行し、タスク処理時間が、予めこのタスクに対して設定し且つタスク管理情報として保持しているタスク処理時間のしきい値、つまり監視時間を上回るかどうかを判定し、タスク処理時間が監視時間を上回るときにはステップＳ４に移行し、前記データ通信負荷状態値の格納領域１０ｂからデータ通信負荷状態値を読み込む。
次いで、ステップＳ５に移行し、データ通信負荷状態値が予め設定したそのしきい値を上回るかどうかを判定し、データ通信負荷状態値がそのしきい値を上回るときにはステップＳ６に移行し、この処理対象のタスクのタスク管理情報において、復旧処理回避カウンタ値を“１”だけインクリメントする。
【００２９】
次いで、ステップＳ７に移行し、この復旧処理回避カウンタ値が、このタスクに対して予め設定した復旧処理回避判定しきい値を上回るかどうかを判定し、復旧処理回避カウンタ値が復旧処理回避判定しきい値を上回らないときには、このタスクは異常ではないとしてステップＳ８に移行し、管理している全てのタスクに対し監視処理を行ったかどうかを判定し、全てのタスクについて監視処理が終了している場合にはそのまま処理を終了するが、全てのタスクについて監視処理が終了してないときにはステップＳ９に移行し、処理対象のタスクを変更する。そして、ステップＳ１に戻り、新たに処理対象となったタスクに対して上記と同様に処理を行う。
【００３０】
前記ステップＳ７で復旧処理回避カウンタ値が復旧処理回避判定しきい値を上回るときには、タスク処理時間がその監視時間を上回り、且つデータ通信量が大きい状態が継続している状態であって、タスク或いは機器の異常と予測されるとしてステップＳ１０に移行し、機器の復旧処理を行う。具体的には、例えば、タスク処理時間がその監視時間を上回っているタスクを再起動させたり、或いは、組み込み機器全体を再起動する等といった処理を行い、組み込み機器の正常状態への復旧を図る。そして処理を終了する。
【００３１】
一方、前記ステップＳ５で、データ通信負荷状態値がそのしきい値を超えていないときときには、ステップＳ１１に移行し、このとき復旧処理回避回数が零であるときには、データ通信負荷状態値がしきい値を超えていないにも関わらず、タスク処理時間がその監視時間を超えており、タスクの異常とみなすことができるとして、ステップＳ１０に移行し、異常が発生したタスクの再起動、或いは、組み込み機器１００全体を再起動する等といった機器復旧処理を実行し、タスクの正常状態への復旧を図る。そして、処理を終了する。
【００３２】
また、前記ステップＳ１１の処理で復旧処理回避回数が零でないときには、データ通信量の増加に伴ってタスク処理時間が監視時間を超えているが、データ通信量は正常に復帰している状態であって、タスクでの処理が正常に復帰した状態であると判断し、復旧処理回避回数を初期値に戻した後、ステップＳ８に移行する。
また、前記ステップＳ１で処理対象のタスクが監視対象のタスクでないとき、つまり、タスクの監視要求が行われておらず、タスク管理情報として起動時刻が設定されていないとき、或いは、起動時刻は設定されてはいるが終了時刻が初期値ではなく、すなわち、タスクでの所定の処理が終了してタスクの監視が終了しているとき、また、前記ステップＳ３で、タスク処理時間がそのしきい値を超えていないときには、そのままステップＳ８に移行する。
【００３３】
次に、上記第１の実施の形態の動作を説明する。
データ通信処理部１１では、このデータ通信処理部１１で通信するデータ通信量を逐次カウントし、これをデータ通信量カウンタ現在値として順次カウントする。
また、タスク監視部１０では、監視周期毎に、前記データ通信量カウンタ１１ａの現在値と、データ通信量カウンタ１１ａの前回値格納領域１０ａに格納されているデータ通信量カウンタの前回値との差分を算出し、これをデータ通信負荷状態値として、その格納領域１０ｂに格納する。
【００３４】
また、各タスク１で監視対象の処理を実行するときには、タスク監視部１０に対して監視要求を行い、タスク監視部１０では、監視要求を受けると、このタスクに該当するタスク管理情報において監視要求が通知された時点における時刻を起動時刻として記憶しまた、終了時刻を初期値にセットする。また、経時時間カウンタのカウントを開始する。
そして、タスク監視部１０では、監視周期毎に、各タスクについて、そのタスク管理情報において起動時刻及び終了時刻が登録されているかを判断し、起動時刻が登録され且つ終了時刻が初期値であるときには、監視対象のタスクであるとして（ステップＳ１）、経過時間カウンタのカウンタ値に基づいてタスク処理時間を算出する（ステップＳ２）。
【００３５】
このとき、例えば、各タスクが正常に動作している場合には、タスク処理時間がその監視時間を上回らないからステップＳ３からステップＳ８を経てステップＳ９に移行し次のタスクについて検証を行う。そして、全てのタスクのタスク処理時間が、その監視時間よりも小さいときには、タスクは正常に動作していると判断し、そのまま処理を終了する。
この状態から、あるタスク１ａにおいてそのタスク処理時間がその監視時間を超えると、ステップＳ３からステップＳ４に移行し、格納領域１０ｂに格納されているデータ通信負荷状態値が読み込まれ、これとしきい値とが比較される（ステップＳ５）。
【００３６】
ここで、例えば、データ通信処理部１１が起動されたとき、データ通信量が通常量である場合には、データ通信処理部１１での処理は通常の所要時間で終了するが、何らかの原因で、データ通信量が通常よりも多くなった場合には、このデータ通信処理部１１でのデータ通信に要する所要時間は長くなる。このため、例えばデータ通信処理部１１の優先度が比較的高い場合には、データ通信処理部１１での処理が優先的に行われることになり、このデータ通信処理部１１よりも優先度の低いタスクは、これが起動される機会が減ることになる。
【００３７】
例えば、タスク１ａが、データ通信処理部１１よりも優先度が低い場合には、タスク１ａの起動回数が減少することになる。このとき、タスク１ａでは実行される機会が減ると、一連の処理が終了するまでの所要時間が通常よりも長くなることになり、タスク１ａ自体は、何ら異常が生じていない状態であっても、タスク処理時間が長くなって監視時間を超えることになる。
【００３８】
しかしながら、このように、タスク処理時間がその監視時間を超えた場合には、ステップＳ３からステップＳ４に移行し、このときのデータ通信処理部１１で処理されているデータ通信情報量が大きく、データ通信負荷状態値がそのしきい値を超えるような場合には、ステップＳ６に移行して、復旧処理回避カウンタがインクリメントされることになり、この復旧処理カウンタ値がしきい値を超えないときには、ステップＳ７からステップＳ８に移行して、機器復旧処理は実行されない。
【００３９】
そして、次の監視周期で、タスク１ａのタスク処理時間がさらに増加した場合であっても、データ通信負荷状態値がしきい値を超えている間は、復旧処理回避カウンタ値がインクリメントされ、復旧処理回避カウンタ値がそのしきい値を超えない間は、機器復旧処理は実行されない。したがって、データ通信処理部１１で処理されるデータ通信量が多いためにタスク１ａの起動される機会が減ったことに起因してタスク１ａのタスク処理時間が増加している状態では、タスク１ａが異常として判定されることはなく、なんら異常が発生していない状態であるにも関わらず、不必要に機器復旧処理が実行されることが回避される。
【００４０】
そして、データ通信処理部１１でのデータ通信処理が終了し、そのデータ通信量が通常値以下に復帰すると、ステップＳ４からステップＳ５、ステップＳ１１を経てステップＳ８に移行し、タスク１ａのタスク処理時間がその監視時間を超えてはいるが、タスク１ａの異常と判断されることはない。
一方、タスク処理時間がその監視時間を超えている状態であり、且つデータ通信量が多い状態であっても、この状態が比較的長く継続したときには、復旧処理回避カウンタ値が徐々に増加し、やがてその復旧処理回避回数を超えた時点で、ステップＳ７からステップＳ１０に移行し、機器復旧処理が実行される。したがって、タスク１ａの異常或いはデータ通信処理部１１の異常等によって、データ通信量が多い状態が継続した場合にはこれが的確に検出されて、機器復旧処理が実行されることになる。
【００４１】
また、例えば、タスク１ａ自体に何らかの異常が発生し、タスク処理時間がその監視時間を超えた場合には、データ通信量が小さい場合であっても、ステップＳ５からステップＳ１１を経てステップＳ１０に移行して、機器復旧処理が実行されることになる。したがって、真にタスク１ａに異常が発生した場合にはこれが速やかに検出されるから、タスク１ａの異常に対し、速やかに組み込み機器の復旧を図ることができる。
【００４２】
このように、データ通信量の増加、つまり一時的な組み込み機器の負荷の増大に伴ってタスクの処理時間が延長した場合には、高負荷状態であることを考慮し、タスクの処理時間がしきい値を超えるような場合であってもタスク異常とはすぐに判断せず、この状態がある程度継続し、高負荷状態であることに起因するタスク処理時間の延長ではないとみなすことができるときにのみ機器復旧処理を実行するようにしたから、タスク異常ではないにも関わらず不必要に機器復旧処理を実行することを回避することができる。
【００４３】
また、このようにデータ通信量の一時的な増加に起因するタスク処理時間の増加に対してタスク異常を誤判断することを回避し的確に対処することができるから、データ通信量の一時的な増加に伴うタスク処理時間の増加を考慮して、その監視時間を設定する必要はない。したがって、タスク処理時間の監視時間を、通常のタスク処理時間に即した値に設定することができる。
【００４４】
また、このとき、タスク処理時間のしきい値や、データ通信負荷状態値のしきい値等、判定用のしきい値を更新しないから、次にタスク１が実行され、そのデータ通信量が通常に戻った場合には、この通常のデータ通信量に即して判断を行うことができ、一時的なデータ通信量の増加に対して的確に対処することができる。
また、このとき、タスクの処理時間の増加に影響を与え易いデータ通信量を検出し、このデータ通信量に基づいてタスクが高負荷状態にあるかをどうかを推定し、これを考慮してタスク異常かどうかを判断するようにしたから、タスク異常の判断を的確に行うことができる。
【００４５】
なお、上記第１の実施の形態においては、タスクの処理時間の増加に影響を与え易いデータ通信量を考慮してタスク異常を判断するようにした場合について説明したが、これに限るものではない。前記データ通信量に替えて、例えば、後述の第２の実施の形態と同様に、各タスクの実行回数を検出するようにし、タスク処理時間が監視時間を超えているタスクと同等以上の優先度であり且つ実行回数がしきい値よりも大きいタスクがあるとき、高負荷状態であると判断する等、タスクの処理時間の増加に影響を与えると予測される要因を測定し、これを考慮してタスク異常を判断するようにすることも可能である。また、タスク毎に、それぞれの負荷状態を表す相当値を検出しこれに応じてタスク異常を判断するようにしてもよい。
【００４６】
また、上記第１の実施の形態においては、データ通信を行うデータ通信処理部１１を一つ備えた場合について説明したが、データ通信を行うデータ通信処理部１１を複数備えている場合であっても適用することができる。この場合には、例えば、各データ通信処理部１１におけるデータ通信量をそれぞれ検出し、これらの何れか大きい方や、これらを双方から判定用のデータ通信量を算出しこの判定用のデータ通信量を用いて、データ通信による負荷状態を判定するようにしてもよい。
【００４７】
次に、本発明の第２の実施の形態を説明する。
図３は、本発明の第２の実施の形態を適用した組み込み機器１００のソフトウェア構成を示すブロック図である。
この組み込み機器１００は、上記第１の実施の形態と同様に、マルチタスクで動作するプログラムが搭載され、各タスク１の動作状況を、タスク監視部１０によって監視するようになっている。
このタスク監視部１０は、予め設定された所定の監視周期毎に起動され、タスク毎にその処理時間を監視し、この処理時間に基づいてタスクの異常を検出するようになっている。このタスク監視部１０は、監視対象のタスク毎にタスク動作監視に利用するための、タスク管理情報を有している。
【００４８】
前記タスク管理情報としては、上記第１の実施の形態と同様に、タスクを識別するためのタスクステータス情報、タスクの処理時間を監視するための、監視要求が行われた時点における起動時刻、監視停止要求が行われた時点における終了時刻、監視要求が行われたとき開始され且つ監視停止要求が行われたときに停止される、タスクの処理時間を計測するための経過時間カウンタ（処理時間検出手段）のカウンタ値、処理実行時間のしきい値である実行制限開始時間、さらに、当該実行制限開始時間よりも長い値に設定された復旧処理監視時間等の情報を有している。また、各タスクでの処理開始時に各タスクから通知される起動通知と共にタスク実行回数カウンタのカウンタ値からなる情報を獲得し、タスク実行回数カウンタに格納されている値を、タスク実行回数カウンタの前回値として更新記憶すると共に、獲得した現時点におけるタスク実行回数カウンタのカウンタ値を、タスク実行回数カウンタのカウンタ値として保持するようになっている。また、予め設定された、高負荷状態判定用の実行回数監視しきい値、タスク優先度、実行制限フラグ等の情報も有している。
【００４９】
また、タスク監視部１０では、前記監視要求が行われたときには、監視要求が行われたタスクに該当するタスク管理情報の前記起動時刻を更新記憶すると共に前記終了時刻を初期値に更新記憶する。
そして、タスク監視部１０は、監視周期毎に、各タスク１について、経過時間カウンタで特定されるタスクの処理時間及びそのしきい値である復旧処理監視時間に照らして、各タスクの処理時間がその復旧処理監視時間内に収まるかどうかに基づいて異常監視を行うようになっている。
【００５０】
一方、各タスク１は、監視対象の処理の実行回数をカウントするためのタスク実行回数カウンタ（負荷状態検出手段）を備えており、監視対象の処理を実行するときにはタスク監視部１０に対して監視要求を行うと共に、前記タスク実行回数カウンタをインクリメントし、このときのタスク実行回数カウンタのカウンタ値を前記タスク監視部１０に通知する。また、各タスク１は、監視対象の処理を実行するときには、監視要求の応答として通知される実行制限フラグを参照し、この実行制限フラグが“ＯＦＦ”に設定されているときには、そのまま所定の処理を開始するが、前記実行制限フラグが“ＯＮ”に設定されているときには、予め設定された所定の待ち時間だけウエイト状態に移行するようになっている。
【００５１】
図４は、タスク監視部１０で実行される監視処理の処理手順の一例を示すフローチャートである。
前記タスク監視部１０では、この監視処理を監視周期毎に実行する。まず、ステップＳ１１で、１番目の処理対象のタスクについて、これが監視対象のタスクであるかどうかを判断する。この判断は、上記第１の実施の形態と同様に行い、起動時刻が設定され且つ終了時刻が初期値であるときに監視対象のタスクであると判断し、それ以外のときには、監視対象のタスクではないか、または、監視終了のタスクと判断する。そして、監視対象のタスクである場合にはステップＳ１２に移行し、この処理対象のタスクに対応するタスク監視情報を参照し、経過時間カウンタのカウンタ値をタスク処理時間として読み出す。そして、ステップＳ１３に移行し、タスク処理時間が、予めこのタスクに対して設定したタスク処理時間のしきい値である実行制限開始時間を上回るかどうかを判定する。
【００５２】
このステップＳ１３の処理で、タスク処理時間が、その実行制限開始時間を上回るときにはステップＳ１４に移行し、次に、タスク処理時間が、予め設定した復旧処理監視時間を上回るかどうかを判定する。そして、タスク処理時間が復旧処理監視時間を上回らないときにはステップＳ１５に移行し、他のタスクのタスク管理情報を参照し、他のタスクの負荷状態値及びその優先度を読み込む。前記負荷状態値は、各タスク管理情報として保持しているタスク実行カウンタのカウンタ値の前回値と現在値との差分を算出し、これを負荷状態値とする。
【００５３】
次いで、ステップＳ１６に移行し、負荷状態値が予めタスク毎に設定した負荷状態値のしきい値を超えており、且つ、タスクの優先度が処理対象のタスクの優先度と同等又はそれ以上のタスクがあるかどうかを検索する。そして、該当するタスクがある場合には、ステップＳ１７に移行し、この負荷状態値がそのしきい値を上回り且つ、そのタスクの優先度が、処理対象のタスクと同等又はそれ以上であるタスクを選定し、この選定したタスクに該当するタスク管理情報の実行制限フラグを“ＯＮ”に設定する。
【００５４】
次いで、ステップＳ１８に移行し、管理している全てのタスクに対し監視処理を行ったかどうかを判定し、全てのタスクについて監視処理が終了している場合にはそのまま処理を終了するが、全てのタスクについて監視処理が終了してないときにはステップＳ１９に移行し、処理対象のタスクを更新する。そして、ステップＳ１１に戻る。
一方、前記ステップＳ１４でタスク処理時間が復旧処理監視時間を上回ったときには、ステップＳ２０に移行し、上記第１の実施の形態と同様に、処理対象のタスクを再起動するか或いは、組み込み機器全体を再起動する等の機器復旧処理を行う。
【００５５】
また、前記ステップＳ１１で、処理対象のタスクが監視対象でないとき、また、ステップＳ１３で、タスク処理時間がその実行制限開始時間を超えていないとき、また、ステップＳ１６で、負荷状態値がそのしきい値を超え且つ、優先度が監視対象のタスクと同等以上であるタスクが他に存在しないときには、そのままステップＳ１８に移行する。
【００５６】
次に、上記第２の実施の形態の動作を説明する。
各タスク１では監視対象の処理を実行するときには、タスク監視部１０に対して監視要求を行うと共に、タスク実行回数カウンタをインクリメントし、そのカウンタ値をタスク監視部１０に通知する。
タスク監視部１０では、監視要求を受けると、このタスクに該当するタスク管理情報においてその実行制限フラグのフラグ値をタスクに通知する。また、実行制限フラグが“ＯＦＦ”に設定されている場合には、他のタスクの処理が正常に行われているとして、起動時刻の更新を行うと共に経過時間カウンタによる計測を開始する。
【００５７】
タスク１では、監視要求の応答として通知される実行制限フラグ値を参照し、この実行制限フラグが“ＯＦＦ”であれば所定の処理を実行する。
そして、タスク監視部１０では、監視周期毎に、各タスクについて、そのタスク管理情報において起動時刻及び終了時刻が登録されているかを判断し、起動時刻が登録され且つ終了時刻が初期値であるときには監視対象のタスクであるとして（ステップＳ１１）、タスク監視情報を参照し、その経過時間カウンタのカウント値を読み出す（ステップＳ１２）。
【００５８】
このとき、例えば、各タスクが正常に動作している場合には、タスク処理時間がその実行制限開始時間よりも小さいから、ステップＳ１３からそのままステップＳ１８、ステップＳ１９を経てステップＳ１１に戻り、次のタスクに対して同様に処理を行う。
そして、全てのタスクがその実行制限フラグが“ＯＦＦ”に設定されておりまた、そのタスク処理時間が正常である場合には、各タスクでは所定の処理が実行されることになる。
【００５９】
この状態から、例えば、タスク１ｂがデータ通信処理を行うタスクであってそのデータ通信量が何らかによって増加したため高負荷状態となり、これによってタスク１ｂが起動される回数が増加すると、タスク１ｂよりも優先順位が同等以下のタスク、例えばタスク１ｃが起動される機会が減少することになり、タスク１ｃのタスク処理時間が増加する。そして、タスク１ｃのタスク処理時間がその実行制限開始時間を上回ると、ステップＳ１３からステップＳ１４を経てステップＳ１５に移行し、タスク１ｃを除く各タスクのタスク管理情報を参照し、タスク実行回数カウンタの前回値及び現在値を比較し、負荷状態値を算出する。
【００６０】
そして、タスク１ｃと同等以上の優先度を有し且つ負荷状態値が各タスクに設定されたしきい値を超えるタスクが選定される。例えば前記タスク１ｂの優先度がタスク１ｃの優先度よりも高く且つタスク１ｂの負荷状態値がそのしきい値を超えるときには、このタスク１ｂが選定され、その実行制限フラグが“ＯＮ”に設定される（ステップＳ１６、Ｓ１７）。
【００６１】
このため、タスク１ｂは、次に起動されたときには、監視要求の応答として通知される実行制限フラグが“ＯＮ”に設定されているから、所定期間ウエイト状態となる。
したがって、タスク１ｂによる処理は実行されず、他のタスクが起動されることになって、他のタスクが起動される機会が増えることになり、すなわち、タスク１ｃが起動される機会が増えることになるから、タスク１ｃの処理が進むことになる。
そして、タスク１ｃの処理が終了しない間は、ステップＳ１３からステップＳ１４を経てステップＳ１５に移行し、タスク１ｃと同等以上の優先度を持ち、且つその負荷状態値がしきい値を上回るタスクが逐次選定されその実行制限が行われる。
【００６２】
一方、実行制限されたタスク１ｂは所定期間ウエイト状態となると、処理再開時にタスク監視部１０で管理する実行制限フラグを“ＯＦＦ”にリセットした後、所定の処理を実行する。そして、次に起動されたときに、実行制限フラグが“ＯＦＦ”にリセットされているならばそのまま所定の処理を実行することが可能となる。そして、ウエイト状態となることによって、その処理実行回数が減少し、タスク１ｃによる実行制限対象から外れると、その実行制限は行われず、起動されるタイミングで処理を実行することが可能となり、この状態から再度その処理実行回数が増加しタスク１ｃによる実行制限対象となると、その処理が実行制限されることになり、つまり、タスク１ｃの実行制限を行いつつ、且つタスク１ｃの処理の実行が確保されることになる。
【００６３】
そして、このようにタスク１ｂの実行制限を行うことによってタスク１ｃの処理が進み、所定の処理が終了すると、タスク１ｃからタスク監視部１０に監視終了要求が通知され、これによってタスク１ｃに対する監視処理が終了する。
一方、タスク１ｃのタスク処理時間がその実行制限開始時間を上回り、他タスクに対する実行制限を行っても、タスク１ｃの処理が終了せず、タスク処理時間が復旧処理監視時間を上回った場合には、ステップＳ１４からステップＳ２０に移行して、機器復旧処理が実行される。したがって、タスク１ｃに真に異常が発生しているときには、タスク処理時間が復旧処理監視時間を経過した時点でタスク１ｃの異常として検出されるから、タスク１ｃの異常を確実に検出することができる。
【００６４】
また、このとき、実行制限の対象のタスクとして、優先度がタスク１ｃと同等以上のタスクを検索するようにし、優先度がタスク１ｃより小さく、タスク１ｃの起動回数に影響のないタスクについては、実行制限の対象としていないから、不必要に実行制限を行うことを回避することができる。
このように、他のタスクが高負荷状態であることに起因して、タスク処理時間が増加している場合には、タスク処理時間の増加の要因となっている高負荷状態のタスク自体の実行を制限し、タスク処理時間が増加しているタスクに対しこれを実行する機会を与えるようにしているから、タスク処理時間が増加しているタスクの処理をより速やかな終了を図ることによって、タスク処理時間の延長を抑制することができ、復旧処理監視時間を上回ることによりタスク異常と判断されることを回避することができる。したがって、この第２の実施の形態においても、上記第１の実施の形態と同様に、他のタスクが高負荷状態となることに起因して、実際には正常であるにも関わらず、タスク異常と誤判断されることによって、不必要に機器復旧処理が実行させることを回避することができ、タスクの監視をより的確に行うことができる。
【００６５】
なお、上記第２の実施の形態においては、タスク処理時間の実行制限開始時間を一定値とした場合について説明したが、これに限るものではなく、タスク毎に実行制限開始時間を複数設定しておき、タスク処理時間が実行制限開始時間を上回る傾向にあるタスク（例えば、タスク１ａとする。）については、そのタスク処理時間に応じて実行制限開始時間を変更するようにしてもよい。
【００６６】
例えば、所定時間当たりに、タスク処理時間がその実行制限開始時間を上回る回数を検出すること等により、タスク処理時間が実行制限開始時間を上回る傾向にあるかどうかを検出するための超過傾向検出手段を設け、この超過傾向検出手段によって、タスク１ａのタスク処理時間がその実行制限開始時間を上回る傾向にあると判定されたときには、実行制限開始時間を、一段階短い実行制限開始時間に変更し、この変更したより短い実行制限開始時間に基づいて動作監視を行うようにする。つまり、タスク処理時間が実行制限開始時間を上回る傾向にあるということは、このタスク１ａは、起動される機会が少ないということであるから、このような場合には、実行制限開始時間をより短い値に設定し、より早い段階で他のタスクの実行制限を行うことによって、タスク１ａが起動される機会を確保することができ、より的確に、タスク異常を誤判断されることを回避することができる。
【００６７】
なお、前記実行制限開始時間の変更は、例えば予め複数の実行制限開始時間を設定しておき、タスク処理時間がその実行制限開始時間を上回る傾向にあるときには、より短い実行制限開始時間を順次選定するようにしてもよく、また、タスク処理時間がその実行制限開始時間を上回る度合に応じて連続的に変化させるようにしてもよい。
【００６８】
また、上記第２の実施の形態においては、負荷状態を判断する情報としてタスクの実行回数を用いるようにした場合について説明したが、これに限らず、タスクの負荷状態を検出することができればどのような情報を用いても良い。例えば、データ通信を行うタスクである場合には、上記第１の実施の形態と同様にそのデータ通信量を検出するようにしてもよく、各タスクにおいて負荷状態に相当する情報を検出するようにすればよい。
また、上記第２の実施の形態においては、全てのタスクにおいてその実行回数をカウントし負荷状態を検出するようにしているが、必ずしも全てのタスクについて負荷状態の検出を行う必要はない。特にタスク処理時間の監視を行いたいタスクを実行制限の対象とすることで、その分、負荷低減を図ることができる。
【図面の簡単な説明】
【００６９】
【図１】本発明を適用した組み込み機器のソフトウェア構成を示すブロック図である。
【図２】図１のタスク監視部の監視処理の処理手順の一例を示すフローチャートである。
【図３】本発明の第２の実施の形態を適用した組み込み機器のソフトウェア構成を示すブロック図である。
【図４】図３のタスク監視部の監視処理の処理手順の一例を示すフローチャートである。
【符号の説明】
【００７０】
１、１ａ〜１ｃ  タスク
１０  タスク監視部
１０ａ  前回値格納領域
１０ｂ  負荷状態値格納領域
１１  データ通信処理部
１１ａ  データ通信量カウンタ
１００  組み込み機器
【図１】
2005293164.tif 000003
【図２】
2005293164.tif 000004
【図３】
2005293164.tif 000005
【図４】
2005293164.tif 000006