(57)【要約】【課題】リアルタイムＯＳにおけるイベント発生時点からの遅延時間をタスク側へ通知し、タスク側では遅延時間に応じた適切な処理を選択して実行することにより、デッドライン異常をタスク側にて検知して遅延によるシステム障害を事前に回避することを可能とする、イベント通知タスク制御処理方式を提供する。【解決手段】実時間制御での割込み処理や周辺装置との入出力インタフェース機能などを実現するリアルタイムＯＳと、前記リアルタイムＯＳ上で前記リアルタイムＯＳが検知するイベントの処理を実行する複数のタスクと、を備えた情報処理装置において、前記タスクが、前記リアルタイムＯＳから通知されるイベントの発生時からの遅延時間により、前記遅延時間のデッドラインのレベルを判定し、前記レベルに応じた処理プログラムを選択して実行することにより、該イベントの処理を行うイベント処理手段を備える、ことを特徴とする。【選択図】　　　図１
2004070582.tif 000002
【特許請求の範囲】
【請求項１】
実時間制御での割込み処理や周辺装置との入出力インタフェース機能などを実現するリアルタイムＯＳと、前記リアルタイムＯＳ上で前記リアルタイムＯＳが検知するイベントの処理を実行する複数のタスクと、を備えた情報処理装置において、前記タスクが、前記リアルタイムＯＳから通知されるイベントの発生時からの遅延時間により、前記遅延時間のデッドラインのレベルを判定し、前記レベルに応じた処理プログラムを選択して実行することにより、該イベントの処理を行うイベント処理手段を備える、ことを特徴とするイベント通知タスク制御処理方式。
【請求項２】
前記リアルタイムＯＳは、イベントの発生を検知すると該イベントの処理を行う何れかの前記タスクに対し、イベント通知を発行するタスク制御手段を備え、前記タスクの前記イベント処理手段は、前記イベント通知に付された該イベントの発生時からの遅延時間により、前記遅延時間のデッドラインのレベルを判定するレベル判定用しきい値テーブルと、前記レベルに応じた処理プログラムを選択するイベント実行処理マトリクステーブルと、を含む、ことを特徴とする請求項１に記載のイベント通知タスク制御処理方式。
【請求項３】
前記タスク制御手段は、イベントの発生を検知し該イベントにイベント番号を付す制御を行うイベント発生検知部と、該イベントの処理を担当する何れかの前記タスクを選択してスケジューリングし、該イベントの処理を前記タスクに実行させるためのイベント通知を、前記タスクに発行して前記タスクの起動を制御するイベント通知部と、前記イベント発生検知部にて該イベントの発生を検知した時間から、前記イベント通知部が前記イベント通知を発行する時間までの遅延時間を計測する遅延時間計測部と、から構成され、前記イベント通知には、該イベントの前記イベント番号と前記遅延時間が付される、ことを特徴とする請求項２に記載のイベント通知タスク制御処理方式。
【請求項４】
前記レベル判定用しきい値テーブルは、行方向に前記イベント番号が並べられ、列方向にデッドラインのレベルが並べられる構成を取り、各行と列との交点に、前記遅延時間に対する前記レベル毎のしきい値が定義されており、前記イベント実行処理マトリクステーブルは、行方向に前記イベント番号が並べられ、列方向にデッドラインのレベルが並べられる構成を取り、各行と列との交点に、前記イベント番号の前記レベルのイベント処理を実行する処理プログラムのモジュール名が定義されている、ことを特徴とする請求項３に記載のイベント通知タスク制御処理方式。
【請求項５】
前記イベント処理手段は、前記タスク制御手段から前記イベント通知を受けて前記イベント通知に付されている前記イベント番号のイベント処理を実行する何れかの前記タスクが起動されると、前記タスクが前記レベル判定用しきい値テーブルを参照して前記イベント番号の前記遅延時間のデッドラインのレベルを判定し、次に、前記タスクが前記イベント実行処理マトリクステーブルを参照して前記イベント番号の前記レベルに対応するモジュール名を選択し、前記モジュール名を有する処理プログラムに制御を渡して実行させることにより、前記イベント番号を付されたイベントの処理を行わせる、ことを特徴とする請求項４に記載のイベント通知タスク制御処理方式。
【請求項６】
実時間制御での割込み処理や周辺装置との入出力インタフェース機能などを実現するリアルタイムＯＳと、前記リアルタイムＯＳ上で前記リアルタイムＯＳが検知するイベントの処理を実行する複数のタスクと、を備えた情報処理装置において、前記タスクが、前記リアルタイムＯＳから通知されるイベントの発生時からの遅延時間により、前記遅延時間のデッドラインのレベルを判定し、前記レベルに応じた処理プログラムを選択して実行することにより、該イベントの処理を行う、ことを特徴とするイベント通知タスク制御処理方法。
【請求項７】
前記リアルタイムＯＳは、イベントの発生を検知すると該イベントの処理を行う何れかの前記タスクに対し、イベント通知を発行し、前記イベント通知を受けた前記タスクは、前記イベント通知に付された該イベントの発生時からの遅延時間により、前記遅延時間のデッドラインのレベルを判定し、前記レベルに応じた処理プログラムを選択し、前記処理プログラムに制御を渡して実行させることにより該イベントの処理を行う、ことを特徴とする請求項６に記載のイベント通知タスク制御処理方法。
【請求項８】
前記リアルタイムＯＳは、イベントの発生を検知すると該イベントにイベント番号を付し、該イベントの発生時からイベント通知発行までの遅延時間を計測し、該イベントの処理を行う何れかの前記タスクを起動可能になると、前記イベント番号と前記遅延時間を付した前記イベント通知を前記タスクに対して発行し、前記タスクは、前記イベント番号の前記遅延時間のデッドラインのレベルを判定し、次に、前記タスクは、前記イベント番号の前記レベルに対応するモジュール名を選択し、前記モジュール名を有する処理プログラムに制御を渡して実行させることにより、該イベントの処理を行わせる、ことを特徴とする請求項６或いは請求項７の何れか１項に記載のイベント通知タスク制御処理方法。
【請求項９】
コンピュータに、イベントの発生を検知し、該イベントの処理を行う何れかのタスクプログラムに対し、イベント通知を発行する手順と、前記イベント通知を受けた前記タスクプログラムに、前記イベント通知に付されたイベントの発生時からの遅延時間により、前記遅延時間のデッドラインのレベルを判定する手順と、前記レベルに応じた処理プログラムを選択させ、前記処理プログラムに制御を渡して実行させる手順と、を実行させることにより該イベントの処理を行わせることを特徴とするプログラム。
【請求項１０】
コンピュータに、イベントの発生を検知すると該イベントにイベント番号を付す手順と、該イベントの発生時からイベント通知発行までの遅延時間を計測する手順と、該イベントの処理を行う何れかのタスクプログラムを起動可能になると、前記イベント番号と前記遅延時間を付した前記イベント通知を前記タスクプログラムに対して発行する手順と、前記タスクプログラムに、前記イベント番号の前記遅延時間のデッドラインのレベルを判定する手順と、前記イベント番号の前記レベルに対応するモジュール名を選択させる手順と、前記モジュール名を有する処理プログラムに制御を渡して実行させる手順と、を実行させることにより該イベントの処理を行わせる、ことを特徴とするプログラム。
【請求項１１】
コンピュータに、イベントの発生を検知し該イベントのイベント通知を発行する手順と、前記イベント通知に付された該イベントの発生時からの遅延時間のデッドラインのレベルを判定する手順と、前記レベルに応じた処理プログラムを選択させ前記処理プログラムに制御を渡して実行させる手順と、を実行させることを特徴とするプログラム。
【請求項１２】
コンピュータに、イベントの発生を検知すると該イベントにイベント番号を付す手順と、該イベントの発生時からイベント通知発行までの遅延時間を計測する手順と、前記イベント番号と前記遅延時間を付した前記イベント通知を発行する手順と、前記イベント番号の前記遅延時間のデッドラインのレベルを判定する手順と、前記イベント番号の前記レベルに対応するモジュール名を選択させる手順と、前記モジュール名を有する処理プログラムに制御を渡して実行させる手順と、を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はイベント通知タスク制御処理方式及び方法並びにプログラムに関し、特に、リアルタイムＯＳにおけるイベント発生からの遅延時間をタスク側へ通知し、タスク側では遅延時間に応じた適切な処理を実行することを可能とする、イベント通知タスク制御処理方式及び方法並びにプログラムに関する。
【０００２】
【従来の技術】
一般に、実時間処理が要求される監視制御装置などのＯＳ（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ：オペレーティングシステム）としては、実時間制御での割込み処理や汎用周辺装置との入出力インタフェース機能などを実現するリアルタイムＯＳが用いられている。
【０００３】
リアルタイムＯＳ上で各種の制御処理を実行するプログラムであるところのタスク（ｔａｓｋ）についても、当然のことながら実時間処理が要求されるようになってきており、リアルタイムＯＳ上の全てのタスクを限られた時間内で処理することが必要となってきている。この要求を満たすために、タスクのスケジューリングアルゴリズムなどの改善が図られ、処理効率が向上するようになってきている。
【０００４】
このような、リアルタイムＯＳ上でのタスクの動作を限られた時間内で処理させ得る方式の一例として、特開２００１−２３６２３６号公報記載の「タスク制御装置およびそのタスクスケジューリング方法」が知られている。
【０００５】
この公報では、一定時間間隔で繰り返し実行される定周期タスクをスケジューリングするリアルタイムＯＳにおいて、タスク切替頻度を低減し、タスクでの処理が限られた時間内に終了しない所謂デッドライン違反の発生を抑制する技術が記載されている。
【０００６】
【発明が解決しようとする課題】
しかしながら、上述した従来のタスク制御方式においては、タスクでの処理が過負荷状態となった場合や、負荷状態が継続して輻輳状態となった場合においては、タスクでの処理遅延によるデッドライン異常が発生してしまう、という問題点を有している。
【０００７】
この事は、例えば、実時間処理が要求される監視制御装置などにおいて、処理遅延により機器などの監視情報そのものが遅延してしまい、結果として現在の実際の機器状態とは異なる監視情報により無効な制御を行ってしまう、といった状況が発生し得るものとなっている。また、中継装置などにおいては、中継遅延が発生していることを認識できず、結果として遅延したままの無意味な処理を継続する、という状況も発生してしまう。
【０００８】
タスクでの処理遅延によるデッドライン異常が発生してしまう要因の１つとして、デッドライン異常をタスク側で認識できていない、という点を挙げることができる。リアルタイムＯＳでは、或る事象が発生した場合に、これをイベント（ｅｖｅｎｔ）として捉えており、イベントの処理は該当のタスクに行わせるようスケジューリングを行っている。しかし、優先度レベルが同一のタスクで同時に複数のイベント処理を行おうとする場合や、高優先度レベルのタスク内で処理すべきイベントが多発した場合などにおいては、リアルタイムＯＳ上で認識したイベント発生時から実際にタスク側で該イベントの処理を行うまでの時間に、イベント処理の待ち時間が発生してしまい、該イベントの処理を行うタスクでは、この待ち時間の発生を検知できず、遅延したままでイベント処理を実行してしまうという事である。
【０００９】
また、デッドライン異常とはならないまでも、例えば、監視制御装置などにおいて、機器などの状態変化の事象は不定期に発生する割込みイベントとして認識され、リアルタイムＯＳからタスク側へのイベント通知に遅延が発生してしまうが、タスク側ではこの遅延時間を認識できないため、遅延したままでのイベント処理を実行してしまう、という問題点を有している。
【００１０】
そこで本発明の目的は、リアルタイムＯＳにおけるイベント発生時点からの遅延時間をタスク側へ通知し、タスク側では遅延時間に応じた適切な処理を選択して実行することにより、デッドライン異常をタスク側にて検知して遅延によるシステム障害を事前に回避することを可能とする、イベント通知タスク制御処理方式及び方法並びにプログラムを提供することにある。
【００１１】
【課題を解決するための手段】
本発明のイベント通知タスク制御処理方式は、実時間制御での割込み処理や周辺装置との入出力インタフェース機能などを実現するリアルタイムＯＳと、前記リアルタイムＯＳ上で前記リアルタイムＯＳが検知するイベントの処理を実行する複数のタスクと、を備えた情報処理装置において、前記タスクが、前記リアルタイムＯＳから通知されるイベントの発生時からの遅延時間により、前記遅延時間のデッドラインのレベルを判定し、前記レベルに応じた処理プログラムを選択して実行することにより、該イベントの処理を行うイベント処理手段を備える、ことを特徴とする。
【００１２】
また、前記リアルタイムＯＳは、イベントの発生を検知すると該イベントの処理を行う何れかの前記タスクに対し、イベント通知を発行するタスク制御手段を備え、前記タスクの前記イベント処理手段は、前記イベント通知に付された該イベントの発生時からの遅延時間により、前記遅延時間のデッドラインのレベルを判定するレベル判定用しきい値テーブルと、前記レベルに応じた処理プログラムを選択するイベント実行処理マトリクステーブルと、を含む、ことを特徴とする。
【００１３】
さらに、前記タスク制御手段は、イベントの発生を検知し該イベントにイベント番号を付す制御を行うイベント発生検知部と、該イベントの処理を担当する何れかの前記タスクを選択してスケジューリングし、該イベントの処理を前記タスクに実行させるためのイベント通知を、前記タスクに発行して前記タスクの起動を制御するイベント通知部と、前記イベント発生検知部にて該イベントの発生を検知した時間から、前記イベント通知部が前記イベント通知を発行する時間までの遅延時間を計測する遅延時間計測部と、から構成され、前記イベント通知には、該イベントの前記イベント番号と前記遅延時間が付される、ことを特徴とする。
【００１４】
また、前記レベル判定用しきい値テーブルは、行方向に前記イベント番号が並べられ、列方向にデッドラインのレベルが並べられる構成を取り、各行と列との交点に、前記遅延時間に対する前記レベル毎のしきい値が定義されており、前記イベント実行処理マトリクステーブルは、行方向に前記イベント番号が並べられ、列方向にデッドラインのレベルが並べられる構成を取り、各行と列との交点に、前記イベント番号の前記レベルのイベント処理を実行する処理プログラムのモジュール名が定義されている、ことを特徴とする。
【００１５】
さらに、前記イベント処理手段は、前記タスク制御手段から前記イベント通知を受けて前記イベント通知に付されている前記イベント番号のイベント処理を実行する何れかの前記タスクが起動されると、前記タスクが前記レベル判定用しきい値テーブルを参照して前記イベント番号の前記遅延時間のデッドラインのレベルを判定し、次に、前記タスクが前記イベント実行処理マトリクステーブルを参照して前記イベント番号の前記レベルに対応するモジュール名を選択し、前記モジュール名を有する処理プログラムに制御を渡して実行させることにより、前記イベント番号を付されたイベントの処理を行わせる、ことを特徴とする。
【００１６】
本発明のイベント通知タスク制御処理方法は、実時間制御での割込み処理や周辺装置との入出力インタフェース機能などを実現するリアルタイムＯＳと、前記リアルタイムＯＳ上で前記リアルタイムＯＳが検知するイベントの処理を実行する複数のタスクと、を備えた情報処理装置において、前記タスクが、前記リアルタイムＯＳから通知されるイベントの発生時からの遅延時間により、前記遅延時間のデッドラインのレベルを判定し、前記レベルに応じた処理プログラムを選択して実行することにより、該イベントの処理を行う、ことを特徴とする。
【００１７】
また、前記リアルタイムＯＳは、イベントの発生を検知すると該イベントの処理を行う何れかの前記タスクに対し、イベント通知を発行し、前記イベント通知を受けた前記タスクは、前記イベント通知に付された該イベントの発生時からの遅延時間により、前記遅延時間のデッドラインのレベルを判定し、前記レベルに応じた処理プログラムを選択し、前記処理プログラムに制御を渡して実行させることにより該イベントの処理を行う、ことを特徴とする。
【００１８】
さらに、前記リアルタイムＯＳは、イベントの発生を検知すると該イベントにイベント番号を付し、該イベントの発生時からイベント通知発行までの遅延時間を計測し、該イベントの処理を行う何れかの前記タスクを起動可能になると、前記イベント番号と前記遅延時間を付した前記イベント通知を前記タスクに対して発行し、前記タスクは、前記イベント番号の前記遅延時間のデッドラインのレベルを判定し、次に、前記タスクは、前記イベント番号の前記レベルに対応するモジュール名を選択し、前記モジュール名を有する処理プログラムに制御を渡して実行させることにより、該イベントの処理を行わせる、ことを特徴とする。
【００１９】
本発明のプログラムは、コンピュータに、イベントの発生を検知し、該イベントの処理を行う何れかのタスクプログラムに対し、イベント通知を発行する手順と、前記イベント通知を受けた前記タスクプログラムに、前記イベント通知に付されたイベントの発生時からの遅延時間により、前記遅延時間のデッドラインのレベルを判定する手順と、前記レベルに応じた処理プログラムを選択させ、前記処理プログラムに制御を渡して実行させる手順と、を実行させることにより該イベントの処理を行わせることを特徴とする。
【００２０】
また、コンピュータに、イベントの発生を検知すると該イベントにイベント番号を付す手順と、該イベントの発生時からイベント通知発行までの遅延時間を計測する手順と、該イベントの処理を行う何れかのタスクプログラムを起動可能になると、前記イベント番号と前記遅延時間を付した前記イベント通知を前記タスクプログラムに対して発行する手順と、前記タスクプログラムに、前記イベント番号の前記遅延時間のデッドラインのレベルを判定する手順と、前記イベント番号の前記レベルに対応するモジュール名を選択させる手順と、前記モジュール名を有する処理プログラムに制御を渡して実行させる手順と、を実行させることにより該イベントの処理を行わせる、ことを特徴とする。
【００２１】
さらに、コンピュータに、イベントの発生を検知し該イベントのイベント通知を発行する手順と、前記イベント通知に付された該イベントの発生時からの遅延時間のデッドラインのレベルを判定する手順と、前記レベルに応じた処理プログラムを選択させ前記処理プログラムに制御を渡して実行させる手順と、を実行させることを特徴とする。
【００２２】
また、コンピュータに、イベントの発生を検知すると該イベントにイベント番号を付す手順と、該イベントの発生時からイベント通知発行までの遅延時間を計測する手順と、前記イベント番号と前記遅延時間を付した前記イベント通知を発行する手順と、前記イベント番号の前記遅延時間のデッドラインのレベルを判定する手順と、前記イベント番号の前記レベルに対応するモジュール名を選択させる手順と、前記モジュール名を有する処理プログラムに制御を渡して実行させる手順と、を実行させることを特徴とする。
【００２３】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して説明する。
【００２４】
図１は、本発明のイベント通知タスク制御処理方式の一実施形態を示すブロック図である。
【００２５】
図１に示す本実施の形態は、通信機器などの監視・制御を行う監視制御装置など、ＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ：中央処理装置）と記憶装置、及びその他必要な周辺機器・周辺装置などによって構成される情報処理装置であるところの装置９０を一例として示すものであるが、前述のハードウェアの図示は省略するものとし、ソフトウェアのみの構成を示すものである。
【００２６】
図１において、装置９０は、実時間制御での割込み処理や周辺装置との入出力インタフェース機能などを実現するリアルタイムＯＳ（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ：オペレーティングシステム）８０と、リアルタイムＯＳ８０上で監視制御の対象機器などから生ずるイベント（事象）の処理を実行するプログラムであるところの複数ｎ個のタスク１０と、タスク１０が参照してタスク１０自身の処理内容を決定するためのレベル判定用しきい値テーブル２０と、イベント実行処理マトリクステーブル３０と、から構成されている。
【００２７】
リアルタイムＯＳ８０は、イベントの発生を検知し該イベントの処理を該当のタスク１０に実行させるためのイベント通知７０を発行するタスク制御部６０を備えている。
【００２８】
タスク制御部６０は、イベントの発生を検知し該イベントにイベント番号を付す制御を行うイベント発生検知部６１と、該イベントの処理を担当する該当タスク１０を選択してスケジューリングし、該イベントの処理を該当タスク１０に実行させるためのイベント通知７０を、該当タスク１０に発行して該当タスクの起動を制御するイベント通知部６３と、イベント発生検知部６１にてイベント発生を検知した時間から、イベント通知部６３がイベント通知７０を発行する時間までの遅延時間を計測する遅延時間計測部６２と、から構成されている。イベント通知７０には、該イベントのイベント番号と前記の遅延時間が付されるものとなる。
【００２９】
タスク１０は、タスク１０−１からタスク１０−ｎ迄の複数ｎ個で構成されており、それぞれイベント通知７０で通知されるイベント番号に対応するイベント処理を行う。イベント通知７０により起動されたタスク１０は、イベント通知７０に付されている遅延時間から、レベル判定用しきい値テーブル２０を参照して該遅延時間のデッドラインのレベル判定を行い（図１のＳ０）、判定したレベルに応じた処理を、イベント実行処理マトリクステーブル３０を参照して選択し、該イベントの処理（図１のＳ１〜Ｓｘの何れかの処理）を行うようになっている。
【００３０】
ここで、デッドラインとは、イベント発生時点からタスク１０でのイベント処理完了迄の制限時間のことである。すなわち、或るイベントの発生時点から該イベントのイベント処理が終了するまでの時間には、該当装置や該当システムで定められる制限時間が存在し、イベント処理の終了が制限時間を超えてしまった場合にはデッドライン異常となる。本実施形態においては、上述の遅延時間がデッドライン異常を判定するために用いられることとなる。
【００３１】
デッドラインは、イベントごとに該当装置や該当システムに応じて定められる値であるが、大凡、遅延時間として問題の無いレベルでは、レベル１と判定して通常の処理（図１のＳ１）を行い、遅延しているとの認識は成されるが再処理を行って問題の無いレベルでは、レベル２と判定してリトライ処理などの準正常処理（図１のＳ２）を行い、イベント処理的に見てデッドラインを超えていると判定されるレベルでは、レベル３と判定して、イベント処理をタイムアウトとして中止して、処理を中断するなどの異常処理１（図１のＳ３）を行い、該当装置や該当システムとしてデッドラインを超えていると判定されるレベルでは、レベル４と判定して処理を行わずに他装置など外部へデッドライン異常を報告するなどの異常処理２（図１のＳ４）を行う。なお、該当装置や該当システムの要求に応じて、更なる判定レベルと対応する処理（図１のＳｘ）を付け加えたものであっても良い。
【００３２】
次に、図２を参照して、図１に示したレベル判定用しきい値テーブル２０について説明する。
【００３３】
図２は、レベル判定用しきい値テーブルの構成の一例を説明する図である。
【００３４】
図２のレベル判定用しきい値テーブル２０は、遅延時間の付されたイベント通知７０を受けたタスク１０が、該遅延時間のデッドラインのレベル判定を行うためのテーブルである。レベル判定用しきい値テーブル２０の、行方向にはイベント番号が、列方向にはデッドラインのレベルが並べられる構成となっており、各行と列との交点に、遅延時間に対するレベル毎のしきい値が定義されている。
【００３５】
例えば、イベント番号がイベント１の行２０１において、遅延時間０ｍｓ（ｍｉｌｌｉーｓｅｃｏｎｄ：ミリ秒）〜３ｍｓ以内をレベル１と定義する場合は、レベル１の列２１１のしきい値個所（行２０１と列２１１の交点）に「０〜３ｍｓ」と定義し、３ｍｓ〜１２ｍｓ以内をレベル２と定義する場合は、レベル２の列２１２のしきい値個所（行２０１と列２１２の交点）に「３〜１２ｍｓ」と定義する。同様にして、１２ｍｓ〜３０ｍｓ以内をレベル３と定義する場合は、レベル３の列２１３のしきい値個所（行２０１と列２１３の交点）に「１２〜３０ｍｓ」と定義する。なお、最高レベルのレベルｘ（列２１ｘ）では、２００ｍｓより大きい場合は全てレベルｘであると定義するため、レベルｘの列２１ｘのしきい値個所（行２０１と列２１ｘの交点）には「２００ｍｓ〜」と定義されている。
【００３６】
イベント番号がイベント２の行２０２においても同様にしきい値が定義されているが、イベント２においては、レベル２が無くレベル１からレベル３と続くものとしているため、レベル２の列２１２のしきい値個所（行２０２と列２１２の交点）には、レベル１と同じ値、すなわち、「０〜３ｍｓ」が定義されている。また、イベント番号がイベントｙの行２０ｙにおいては、レベル１、２、３だけのしきい値が定義されており、レベル４以降は無いものとしている。なお、タスク１０が遅延時間のデッドラインのレベル判定を行う際には、レベルの低い方から（レベル１の方から）レベル判定用しきい値テーブル２０を用いるものとする。
【００３７】
次に、図３を参照して、図１に示したイベント実行処理マトリクステーブル３０について説明する。
【００３８】
図３は、イベント実行処理マトリクステーブルの構成の一例を説明する図である。
【００３９】
図３のイベント実行処理マトリクステーブル３０は、遅延時間の付されたイベント通知７０を受けたタスク１０が、該遅延時間のデッドラインのレベル判定を行った後に、判定したレベルに応じた処理を選択するためのテーブルである。イベント実行処理マトリクステーブル３０の構成は、レベル判定用しきい値テーブル２０と同様のマトリクステーブルで、該当イベント番号の該当レベル毎に、対応するイベント処理を実行するプログラムのモジュール名、すなわち該プログラムのエントリーアドレスを定義しておくテーブルである。
【００４０】
例えば、イベント番号がイベント１で、デッドラインのレベル判定を行った結果がレベル２であったとすると、タスク１０は、イベント実行処理マトリクステーブル３０の行３０１（イベント１）と列３１２（レベル２）の交点に定義されている「ＥＶＥＮＴ１＿２」というモジュール名を有するプログラムを実行させることにより、イベント１のレベル２のイベント処理を行う。同様に、イベント番号がイベント２で、レベル判定の結果がレベル３であったとすると、タスク１０は、行３０２（イベント２）と列３１３（レベル３）の交点に定義されている「ＥＶＥＮＴ２＿３」というモジュール名を有するプログラムを実行させて、イベント２のレベル３のイベント処理を行う。
【００４１】
なお、レベル判定用しきい値テーブル２０及びイベント実行処理マトリクステーブル３０は、タスク１０の外部に存在するものとして説明を行ったが、この２つのテーブルを、タスク１０の内部に存在させるようにしても良い。この場合には、タスク１０の各々が処理するものとなっているイベント番号に関する部分だけのテーブルを、各タスク１０が保持すればよい。
【００４２】
次に、図４、図５を参照して、本実施形態の動作について詳細に説明する。なお、図４、図５において図１、図２、図３に示す構成要素に対応するものは同一の参照数字または符号を付し、その説明を省略する。
【００４３】
図４は、本実施形態の動作の概観を説明する図である。
【００４４】
図４において、時刻ｔ１に、機器などの状態変化などの事象であるところの「イベント１」が発生し、これをタスク制御部６０のイベント発生検知部６１が検知したものとする。この時、「イベント１」のイベント処理を行うタスク１０−１よりも高優先度或いは同一優先度のタスク１０−ｍが実行中であるとすると、このタスク１０−ｍの実行が終了するまでの待ち時間が生ずる。この待ち時間が時刻ｔ２まで続いたものとすると、タスク制御部６０の遅延時間計測部６２は、ｔ２−ｔ１＝Ｔ１を遅延時間として計測し、その後イベント通知部６３がタスク１０−１に対して、時刻ｔ２にイベント通知７０−１を発行し、タスク１０−１を起動する。イベント通知７０−１には、イベント番号として「イベント１」が、遅延時間として「Ｔ１」が付されている。
【００４５】
イベント通知７０−１の発行により、時刻ｔ２にタスク１０−１が起動され、「イベント１」に対するイベント処理が開始される。イベント処理を行うタスク１０−１の動作について図５を参照して説明する。
【００４６】
図５は、本実施形態のタスクの動作を説明する図である。
【００４７】
図５において、タスク１０は、タスク制御部６０から「イベント番号」と「遅延時間」が付加されたイベント通知７０を受けて、起動される（Ｓ１０）。
【００４８】
次に、タスク１０は、レベル判定用しきい値テーブル２０を参照し、イベント通知７０に付されている「イベント番号」と「遅延時間」からデッドラインのレベル判定を行う（Ｓ１１）。ここで、タスク１０−１の動作として具体的に説明すると、タスク１０−１に通知されたイベント通知７０−１には、「イベント番号」として「イベント１」が付されているので、先ずレベル判定用しきい値テーブル２０の行２０１（イベント番号＝イベント１）を参照することとなる。次に「遅延時間」が行２０１のどの列に対応するかを判定する。「遅延時間」として「Ｔ１」が付されており、「Ｔ１」＝５ｍｓであったとすると、５ｍｓは列２１２に対応するものであるため、そのレベルは「レベル２」であると判定される。
【００４９】
次に、タスク１０は、イベント実行処理マトリクステーブル３０を参照し、ステップＳ１１で求めたレベルに該当するイベント処理を行うモジュール名を求める（Ｓ１２）。ここで、タスク１０−１の動作として具体的に説明すると、「イベント番号」が「イベント１」で、かつ、そのレベルが「レベル２」と判定されたものであるため、イベント実行処理マトリクステーブル３０の行３０１（イベント１）と列３１２（レベル２）の交点に記載の「ＥＶＥＮＴ１＿２」が、求めるモジュール名となる。なお、今求めたイベント実行処理マトリクステーブル３０のマトリクス位置（行３０１と列３１２の交点）は、レベル判定用しきい値テーブル２０のマトリクス位置（行２０１と列２１２の交点）と全く同じ位置である。
【００５０】
モジュール名が求まると、タスク１０は該モジュール（プログラム）に制御を渡して実行させ、該モジュールがイベント処理を行う（Ｓ１３）。タスク１０−１の動作として具体的に説明すると、ステップＳ１２で求めたモジュール名は「ＥＶＥＮＴ１＿２」であるため、タスク１０−１は該モジュール「ＥＶＥＮＴ１＿２」に制御を渡して実行させ、該モジュール「ＥＶＥＮＴ１＿２」が「イベント１」の「レベル２」のイベント処理を行う。「イベント１」の「レベル２」のイベント処理がリトライ処理であるとすれば、「ＥＶＥＮＴ１＿２」のモジュールは、リトライ処理を行うようプログラミングされているモジュールである。
【００５１】
上述したように、タスク１０−１による「イベント１」のイベント処理は、図４の時刻ｔ２に開始され、図４に示すように「イベント１処理」として時刻ｔ５まで行われる。
【００５２】
タスク１０−１による「イベント１処理」が行われている間の時刻ｔ３に「イベント２」が発生し、これをタスク制御部６０のイベント発生検知部６１が検知したものとする。この時、「イベント２」のイベント処理を行うタスク１０−２の優先度よりも、「イベント１処理」を実行中のタスク１０−１の優先度の方が高い（或いは同一）ものとすると、タスク１０−１の実行が終了する時刻ｔ５まで、タスク１０−２の起動は待たされることとなり、この間の待ち時間、すなわちｔ５−ｔ３＝Ｔ２を、タスク制御部６０の遅延時間計測部６２が遅延時間として計測する。
【００５３】
タスク１０−１の「イベント１処理」が時刻ｔ５に終了すると、タスク制御部６０のイベント通知部６３は、イベント番号が「イベント２」、遅延時間が「Ｔ２」のイベント通知７０−２を、タスク１０−２に対して時刻ｔ５に発行し、タスク１０−２を起動する。
【００５４】
起動されたタスク１０−２は、図５を参照して述べたと同様の動作により、「イベント２処理」を実行する。すなわち、タスク１０−２は起動されると（図５のＳ１０）、イベント通知７０−２に付加されている「イベント番号＝イベント２」と「遅延時間＝Ｔ２」から、レベル判定用しきい値テーブル２０を参照して、「イベント２」のデッドラインのレベル判定を行い（図５のＳ１１）、次に、イベント実行処理マトリクステーブル３０を参照して、求めたレベルに該当するイベント処理を行うモジュール名を求め（図５のＳ１２）、求めたモジュール名のプログラムを実行させて、「イベント２処理」を行わせる（図５のＳ１３）。
【００５５】
タスク１０−１による「イベント１処理」が実行されている間の時刻ｔ４に、「イベント１」が再度検知された場合も同様に、この２度目の「イベント１」のイベント通知７０−３は、タスク１０−２による「イベント２処理」が終了する時刻ｔ６まで待たされる。そして、時刻ｔ６になった時に、タスク制御部６０のイベント通知部６３から、「イベント番号＝イベント１」、「遅延時間＝Ｔ３＝ｔ６−ｔ４」のイベント通知７０−３が、タスク１０−１に対して発行され、上述と同様の動作により、時刻ｔ６からタスク１０−１による「イベント１処理」が再度実行される。
【００５６】
【発明の効果】
以上説明したように、本発明のイベント通知タスク制御処理方式及び方法並びにプログラムは、リアルタイムＯＳにおけるイベント発生時点からの遅延時間をタスク側へイベント通知として通知し、タスク側では遅延時間のデッドラインレベルの判定を行い、判定レベルに応じた適切な処理（プログラムモジュール）を選択して実行させる事ができるので、デッドライン異常をタスク側で認識可能となり、タスク側でデッドライン異常の段階に応じた処理プログラムを作成可能となる、という効果を有している。従って、デッドライン異常によるシステム障害を事前に回避可能な処理プログラムを作成可能となる。
【００５７】
また、タスク側でデッドライン異常の段階に応じた処理プログラムを作成できるので、例えば、遅延時間がデッドライン異常でない時は正常処理、遅延時間がデッドライン異常に近い時は、準正常処理としてリトライ処理、デッドラインを超えていると判定される時は、異常処理その１として処理中断或いは他装置等外部に対し処理不可能であった旨の通知処理、デッドラインを大幅に超えている時は、ＣＰＵの輻輳状態や半暴走状態が考えられるため、回復不可能な状態と判断し、異常処理その２として全処理を中断し他装置等外部へ異常事態を通知する処理、などのように処理内容を分離することが可能となると共に、ウォッチドッグタイマのタイムアウト時と同様に、処理プログラム自体の暴走検出機能を持つこととなり、さらに、どのイベントで暴走検出が成されたかを把握することが可能となる、という効果を有している。
【図面の簡単な説明】
【図１】本発明のイベント通知タスク制御処理方式の一実施形態を示すブロック図である。
【図２】レベル判定用しきい値テーブルの構成の一例を説明する図である。
【図３】イベント実行処理マトリクステーブルの構成の一例を説明する図である。
【図４】本実施形態の動作の概観を説明する図である。
【図５】本実施形態のタスクの動作を説明する図である。
【符号の説明】
１０　　タスク
２０　　レベル判定用しきい値テーブル
３０　　イベント実行処理マトリクステーブル
６０　　タスク制御部
６１　　イベント発生検知部
６２　　遅延時間計測部
６３　　イベント通知部
７０　　イベント通知
８０　　リアルタイムＯＳ
９０　　装置
【図１】
2004070582.tif 000003
【図２】
2004070582.tif 000004
【図３】
2004070582.tif 000005
【図４】
2004070582.tif 000006
【図５】
2004070582.tif 000007