(57)【要約】【課題】タイマ管理装置及びタイマ管理方法に関し、多数のタイマが同時一斉にタイムアウトする場合に発生するタイムアウトイベントの消失を防ぎ、多数のタイマ要求に対するタイムアウト通知を取りこぼすことなく、タイマ要求を管理する。【解決手段】各登録領域（バッファ）に、システムクロック（Ｔｉｃ）単位の識別値毎に、ＣＰＵのクロックカウンタ値、タイマ要求の登録数、各タイマ要求のタイマ登録情報＃０〜＃ｎを格納するリングバッファ構造予約テーブル（ｃ）を備える。タイマ要求を受けると、そのタイムアウトのタイミングに対応した登録領域（１Ｔｉｃ，２Ｔｉｃ，・・・）を起点として空き領域を有する登録領域を検索し、その登録領域にタイマ要求のタイマ情報を登録する。現時点のタイミングに対応した登録領域（０Ｔｉｃ）に登録された各タイマ要求のタイマ情報を読み出し、該タイマ要求の要求元にタイムアウトの通知を行う。【選択図】図１
2007213486.tif 000002
【特許請求の範囲】
【請求項１】
タイマ管理の単位時間となるシステムクロックのタイミング位置に対応した複数の登録領域を有し、該登録領域の各々に同一のタイムアウトタイミングの複数のタイマ要求のタイマ登録情報を格納するテーブル形式の予約テーブル記憶部と、
各タスク又はプロセスから発せられるタイマ要求のタイムアウトのタイミングに対応した前記予約テーブル記憶部の登録領域を起点として、該起点の登録領域を含めて複数の近接する登録領域の中から、空き領域の有る登録領域を検索し、該空き領域の有る登録領域に、前記タイマ要求のタイマ情報を登録するタイマ情報登録手段と、
前記予約テーブル記憶部の各登録領域に登録されたタイマ要求のタイマ登録情報の中から、現時点のタイミングに対応した登録領域に登録された各タイマ要求のタイマ登録情報を読み出し、該タイマ要求のタイマ登録情報を基に、該タイマ要求の要求元にタイムアウトの旨を通知する手段と、
を備えたことを特徴とするタイマ管理装置。
【請求項２】
前記タイマ情報登録手段は、前記タイマ要求のタイムアウトのタイミングに対応した前記予約テーブル記憶部の登録領域を起点として、該起点の登録領域を含めて複数の後続する登録領域の中から、該起点の登録領域から順番に空き領域の有る登録領域を検索することを特徴とする請求項１に記載のタイマ管理装置。
【請求項３】
前記予約テーブルは、前記システムクロックのタイミング位置に対応した複数の登録領域のポインタをリング状に繋いだリングバッファ構造としたことを特徴とする請求項１又は２に記載のタイマ管理装置。
【請求項４】
タイマ管理の単位時間となるシステムクロックのタイミング位置に対応した複数の登録領域を有し、該登録領域の各々に同一のタイムアウトタイミングの複数のタイマ要求のタイマ登録情報を格納するテーブル形式の予約テーブル記憶部を用い、
各タスク又はプロセスから発せられるタイマ要求のタイムアウトのタイミングに対応した前記予約テーブル記憶部の登録領域を起点として、該起点の登録領域を含めて複数の近接する登録領域の中から、空き領域の有る登録領域を検索し、該空き領域の有る登録領域に、前記タイマ要求のタイマ情報を登録するステップと、
前記予約テーブル記憶部の各登録領域に登録されたタイマ要求のタイマ登録情報の中から、現時点のタイミングに対応した登録領域に登録された各タイマ要求のタイマ登録情報を読み出し、該タイマ要求のタイマ登録情報を基に、該タイマ要求の要求元にタイムアウトの旨を通知するステップと、
を含むことを特徴とするタイマ管理方法。
【請求項５】
前記タイマ情報を登録するステップは、前記タイマ要求のタイムアウトのタイミングに対応した前記予約テーブル記憶部の登録領域を起点として、該起点の登録領域を含めて複数の後続する登録領域の中から、該起点の登録領域から順番に空き領域の有る登録領域を検索するステップを含むことを特徴とする請求項４に記載のタイマ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タイマ管理装置及びタイマ管理方法に関し、特に、モバイルシステムの基地局装置等、種々のリアルタイム処理に多数のタイマを使用するシステムに用いられるタイマ管理であって、タイムアウトの予測タイミングを基に、タイマ管理を行う装置及び方法に関する。
【背景技術】
【０００２】
リアルタイム処理を行うためのタイマ機能に関して、ＩＥＥＥ（Institute of Electrical and Electronic Engineers）によって定められた、ＵＮＩＸ（登録商標）ベースのＯＳ（Operating System）が備えるべき最低限の仕様セットであるＰＯＳＩＸ（Portable Operating System Interface for UNIX）標準の1003.1bにその概要が示され、その中で、timer_***（）コールによるタイマ登録、タイマ開始、タイマ停止、タイマ削除が定義されている。
【０００３】
但し、上記ＰＯＳＩＸ標準の1003.1ｂでは、１プロセス当たりのタイマ登録個数や同時タイムアウト発生個数等に上限が定められ、例えば、１プロセス中のタイマ登録個数は３２タイマまで、また、全プロセスでの同時タイムアウト発生個数は３２イベントまでなどと定められ、同時タイムアウト発生個数の制限を越えてタイマ登録の要求が行われた場合には、そのタイマに係るタイムアウトイベントを削除する扱いが標準動作となっている。
【０００４】
実装上で前述のタイマの標準動作を実現する構成は幾つか存在するが、その一例を、図７を参照して説明する。図７において、タイマ要求を行うユーザ定義のメインタスク７−１からタイマの生成要求が発生すると（１）、timer_create（）コールは、タイマ情報管理テーブル領域（ヒープ)７−２に該タイマのタイマＩＤ構造体（ti_id）、ハンドラポインタ、カウンタ値等を格納する領域を確保し（２）、メインタスク７−１に該タイマＩＤを通知する（３）。
【０００５】
メインタスク７−１は次にハンドラ登録要求を行うと（４）、timer_connect（）コールは、前述のタイマＩＤ構造体の格納領域にハンドラポインタを登録する（５）。メインタスク７−１は次にタイマ開始要求を行うと（６）、timer_setting（）コールは、前述のタイマＩＤ構造体の格納領域にタイマの期間をカウンタ値として登録する（７）。
【０００６】
上記各タイマＩＤ構造体に対して、タイムアウト処理部７−３は、所定時間毎にカウンタ値の減算処理を行うカウンタ処理を行い（８）、該カウンタ値がゼロとなったことによりタイムアウトと判定すると、タイムアウトを知らせるシグナルをシグナルハンドラ７−４に対して発行する（９）。
【０００７】
シグナルハンドラ７−４は、タイムアウト処理部７−３から受け取ったシグナルを、その発生順にＦＩＦＯ（First-In First-Out）のキューに格納し、該キューに格納したシグナルを格納順に取り出して通知処理部７−５に送信する（１０）。通知処理部７−５は、シグナルハンドラ７−４から送信されたシグナルを受け取り、タイマ情報管理テーブル領域７−２に対して該シグナルのタイマ情報の読み出し要求を行い（１１）、該シグナルのタイマ情報を取得する（１２）。
【０００８】
通知処理部７−５は、該タイマ情報を処理するハンドラをＦＩＦＯ（First-In First-Out）のキューにその取得順に格納し、該キューに格納したハンドラを格納順に取り出して、該ハンドラの先頭位置を示すタイマポインタに分岐し（１３）、登録済みのユーザ作成タイマハンドラを起動し、タイマ要求を行ったメインタスク７−１に対して、タイマ完了メッセージを送信する（１４）。
【０００９】
上述のタイマ処理機能において、シグナルハンドラ７−４におけるシグナルのＦＩＦＯ（First-In First-Out）のキューへの格納、及び通知処理部７−５におけるハンドラのＦＩＦＯ（First-In First-Out）のキューへの格納の際に、各ＦＩＦＯ（First-In First-Out）のキューの容量の制限を越えてイベントが発生すると、該イベントはＦＩＦＯ（First-In First-Out）のキューに積み込まれることなく、該イベントは消失することとなる。
【００１０】
上述の従来のタイマ処理におけるシーケンスを図８に示す。同図において、各機能タスク８−１は図７におけるメインタスク７−１に相当し、タイマ実行関数８−２及びタイマ管理タスク８−３は、図７におけるtimer_create（）コール、timer_connect（）コール、timer_setting（）コール等に相当し、構造体管理関数８−４は、図７におけるタイマ情報管理テーブル領域７−２を管理する関数に相当し、タイマ管理構造体８−５は、図７におけるタイマ情報管理テーブル領域７−２のメモリに相当し、タイマ実処理タスク８−６及びタイマ用割り込みハンドラ８−７は、図７におけるタイムアウト処理部７−３、シグナルハンドラ７−４及び通知処理部７−５に相当する。
【００１１】
図８に示すように、各機能別タスク８−１からタスクＩＤ及びタイマカウント値を含むタイマ要求が発せられると、タイマ実行関数８−２は、要求（コール）元のタスクＩＤ及びタイマカウント値をタイマ管理タスク８−３に渡し、タイマ管理タスク８−３は、タイマ管理構造体８−５への割り込みのためのセマフォを獲得した後に、タスクＩＤ、タイマカウント値及び登録面情報を含むタイマ登録要求を構造体管理関数８−４に渡し、構造体管理関数８−４は、タイマ管理構造体８−５に対してタスクＩＤ及びタイマカウント値の書き込みを含む登録実行を行う。
【００１２】
また、タイマ用割り込みハンドラ８−７は、１０ｍｓ毎にタイマ実処理タスク８−６に対して割り込みを行い、該割り込みを受けたタイマ実処理タスク８−６は、タイマ管理構造体８−５等への割り込みのためのセマフォを獲得した後に、タイマ管理タスク８−３に対してタイマタスクＩＤ、登録面切替え情報を含むメッセージを渡す。
【００１３】
また、タイマ実処理タスク８−６は、タイマ管理構造体８−５に対してタイマ登録によるセットフラグの確認を行い、タイマ管理構造体８−５から登録有りの情報を受け取ると、タイマ管理構造体８−５に対してリスト構造のカウンタ値の読み出し要求を行い、タイマ管理構造体８−５から読み出したカウンタ値に対して減算処理を行い、該減算処理を行ったカウンタ値をタイマ管理構造体８−５に書き戻す。
【００１４】
タイマ実処理タスク８−６は、順次、リスト構造の次のカウンタ値の読み出し要求を行い、読み出したカウンタ値に対して減算処理を行い、該減算処理を行ったカウンタ値をタイマ管理構造体８−５に書き戻す。もしも、読み出したカウンタ値がタイムアップ（タイムアウト）を示す値で有った場合は、タイマ実行関数８−２に対してコール元タスクＩＤ、登録面及び完了コードを含むメッセージを渡す。
【００１５】
タイマ実行関数８−２は、タイマ管理タスク８−３に対してコール元タスクＩＤ、登録面及び登録削除の旨を含むメッセージを渡し、タイマ完了待ちのループから抜け出し、各機能別タスク８−１にタイマ完了の旨を通知する。タイマ管理タスク８−３は、タイマ実行関数８−２から前記メッセージを受け取ると、タイマ管理構造体８−５に対する割り込みのためのセマフォを獲得した後に、構造体管理関数８−４に対してタスクＩＤ及び登録面を含む登録削除要求を渡し、構造体管理関数８−４は、タイマ管理構造体８−５に対して、カウンタ値がゼロであることを確認した後、該タイマの削除（ポインタの付け替え）を実行する。その後、セマフォを開放し、無限ループから抜け出す。
【００１６】
上述のような、タイム管理テーブルを使用し、スケジューラがタイマタスクを周期的に起動し、起動されたタイマタスクがタイム管理テーブルを検索し、そこに登録されている各タイマ要求のタイマ値を減算し、タイマ値がゼロになったタイマの要求元に対してタイムアウト通知を行うタイマ管理方式は、下記の特許文献１などに記載されている。
【特許文献１】特開平６−４３２０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
モバイルシステムの基地局装置などにおいては、多数の移動通信端末によって送受される多数のパケットを同時に処理する必要があり、かつ、リアルタイムな処理が要求されるため、組込みファームウェアにはタイマが多数使用される。ところが、タイマ要求などの処理に使用し得るリソースは有限であるため、単位時間当たりに処理し得るタイムアウト処理個数の上限が決定されている。
【００１８】
この個数はシステムの基本構成などによって変動するが、現状の組込みカーネルでは、ＰＯＳＩＸ標準となるタイマを使用して、例えば、タイマ登録数は１プロセス当たり３２タイマ、プロセス全体での同時完了タイマ処理数は３２タイマまでなどのように、タイマ要求の処理数を制限していたため、特に、多数のタイマの一斉タイムアウトに対する制約は大きな制約となり、モバイルシステム等において、タイマ要求の一部を処理することができないことがあった。
【００１９】
図９に従来のタイマ管理によるタイマイベント消失の例を示す。同図に示すように、例えば１０ｍｓ毎のシステムクロック（Ｔｉｃ）を単位時間とし、１単位時間内に３３個のタイマ要求（タイマ１〜タイマ３３）が発生し、それらが２システムクロック（Ｔｉｃ）後の単位時間内にタイマアウトするタイマ要求であった場合、１番目から３２番目のタイマ要求（タイマ１〜タイマ３２）は正常に処理されるが、３３番目のタイマ要求はタイムアウトのイベントが消失してしまう。このように、多数のタイマ要求が一斉にタイマ管理の単位時間内にタイムアウトしてしまう事象が発生すると、その一部のタイマ要求が正常に処理されないことがあった。
【００２０】
本発明は、タイマ管理の１単位時間内に多数のタイマが同時に一斉にタイムアウトする場合に発生するタイムアウトイベントの消失を防ぎ、多数のタイマ要求に対するタイムアウト通知の取りこぼしを生じることなく、タイマ要求を管理するタイマ管理装置及びタイマ管理方法を提供することを目的とする。
【課題を解決するための手段】
【００２１】
本発明のタイマ管理装置は、（１）タイマ管理の単位時間となるシステムクロックのタイミング位置に対応した複数の登録領域を有し、該登録領域の各々に同一のタイムアウトタイミングの複数のタイマ要求のタイマ登録情報を格納するテーブル形式の予約テーブル記憶部と、各タスク又はプロセスから発せられるタイマ要求のタイムアウトのタイミングに対応した前記予約テーブル記憶部の登録領域を起点として、該起点の登録領域を含めて複数の近接する登録領域の中から、空き領域の有る登録領域を検索し、該空き領域の有る登録領域に、前記タイマ要求のタイマ情報を登録するタイマ情報登録手段と、前記予約テーブルの各登録領域に登録されたタイマ要求のタイマ登録情報の中から、現時点のタイミングに対応した登録領域に登録された各タイマ要求のタイマ登録情報を読み出し、該タイマ要求のタイマ登録情報を基に、該タイマ要求の要求元にタイムアウトの旨を通知する手段と、を備えたことを特徴とする。
【００２２】
また、（２）前記タイマ情報登録手段は、前記タイマ要求のタイムアウトのタイミングに対応した前記予約テーブル記憶部の登録領域を起点として、該起点の登録領域を含めて複数の後続する登録領域の中から、該起点の登録領域から順番に空き領域の有る登録領域を検索することを特徴とする。
【００２３】
また、（３）前記予約テーブルは、前記システムクロックのタイミング位置に対応した複数の登録領域のポインタをリング状に繋いだリングバッファ構造としたことを特徴とする。
【００２４】
また、本発明のタイマ管理方法は、（４）タイマ管理の単位時間となるシステムクロックのタイミング位置に対応した複数の登録領域を有し、該登録領域の各々に同一のタイムアウトタイミングの複数のタイマ要求のタイマ登録情報を格納するテーブル形式の予約テーブル記憶部を用い、各タスク又はプロセスから発せられるタイマ要求のタイムアウトのタイミングに対応した前記予約テーブル記憶部の登録領域を起点として、該起点の登録領域を含めて複数の近接する登録領域の中から、空き領域の有る登録領域を検索し、該空き領域の有る登録領域に、前記タイマ要求のタイマ情報を登録するステップと、前記予約テーブルの各登録領域に登録されたタイマ要求のタイマ登録情報の中から、現時点のタイミングに対応した登録領域に登録された各タイマ要求のタイマ登録情報を読み出し、該タイマ要求のタイマ登録情報を基に、該タイマ要求の要求元にタイムアウトの旨を通知するステップと、を含むことを特徴とする。
【００２５】
また、（５）前記タイマ情報を登録するステップは、前記タイマ要求のタイムアウトのタイミングに対応した前記予約テーブル記憶部の登録領域を起点として、該起点の登録領域を含めて複数の後続する登録領域の中から、該起点の登録領域から順番に空き領域の有る登録領域を検索するステップを含むことを特徴とする。
【発明の効果】
【００２６】
モバイルシステムの基地局装置等において、一斉にタイムアウトとなるタイマ要求の最大数は不定であり、標準として固定することは望ましくない。そこで本発明のように、タイマ要求のタイムアウトのタイミングに対応した予約テーブル記憶部の登録領域を起点とするその周辺の登録領域の中から、空き領域を有する登録領域を検索し、その登録領域にタイマ要求のタイマ情報を登録し、現時点のタイミングに対応した登録領域に登録された各タイマ要求のタイマ情報を読み出し、該タイマ要求の要求元にタイムアウトの通知を行うことにより、タイマ管理の１単位時間内に多数のタイマが同時に一斉にタイムアウトするタイマ要求の登録個数の制限を撤廃するとともに、多数のタイマ要求に対してタイムアウトイベントの消失を防ぎ、取りこぼしなくタイムアウトを通知することができる。
【００２７】
また、タイマ要求のタイムアウトのタイミングに対応した登録領域に、タイマ要求のタイマ情報を登録し、該登録領域に対応したタイミングが現在の時刻に達したときに、該登録領域のタイマ情報を読み出してタイムアウトの通知を行うことにより、従来のように、タイムアウトの検出のために、タイマ管理の単位時間毎に、各タイマ要求のタイマカウント値の減算を行う演算処理が不要となり、処理負担の軽減、処理の簡素化を図ることができ、タイムアウト処理を高速に行うことができる。
【発明を実施するための最良の形態】
【００２８】
発明によるタイマ管理について図１を参照して説明する。図１には、ＣＰＵのクロックカウンタ出力と、タイマ管理の単位時間毎のクロックであるシステムクロック（Ｔｉｃ）毎のイベントとの相関関係、及び８システムクロック（Ｔｉｃ）分までのタイマ要求の登録を想定した場合のタイマ管理の具体例を示している。
【００２９】
図１において、（ａ）はＣＰＵのクロックカウンタ出力、（ｂ）はシステムクロック（Ｔｉｃ）割り込み、（ｃ）は後述するリングバッファ構造予約テーブル、（ｄ）は該リングバッファ構造予約テーブル内の１バッファのデータ構成を示している。なお、説明を簡略化するため、１システムクロック（Ｔｉｃ）の周期をＣＰＵクロックの１００００クロックカウント分としている。
【００３０】
リングバッファ構造予約テーブルの外周（０Ｔｉｃ，１Ｔｉｃ，・・・，７Ｔｉｃ）は、システムクロック（Ｔｉｃ）単位の識別値でタイマ要求の登録に使用し、時間の経過とともに図１（ｃ）に示すように時計回りに回転しながら変化し、常に現在時点の値は０Ｔｉｃである。タイマ要求の登録は、現在時点の値０Ｔｉｃを基点とし、該タイマ要求のタイムアウトのタイミングに相当するシステムクロック（Ｔｉｃ）の値のバッファ位置に登録する。
【００３１】
リングバッファ構造予約テーブルの内週（１００００，２００００，・・・，９００００）は、システムクロック（Ｔｉｃ）毎のＣＰＵクロックカウンタ出力を表し、前述の外周の値を基に登録したタイマ要求のタイムアウトのタイミングの絶対時刻を表している。該リングバッファ構造予約テーブルに登録したタイマ要求は、現在時点を示す０Ｔｉｃ位置のバッファに登録されているタイマ要求のタイマ情報を全て読み出すことによって、それらのタイマ要求の要求元にタイムアウトを通知する。
【００３２】
リングバッファ構造予約テーブルの各登録領域（バッファ）には、図１（ｄ）に示すように、システムクロック（Ｔｉｃ）単位の識別値毎に、ＣＰＵのクロックカウンタ値、タイマ要求の登録数、各タイマ要求のタイマ登録情報＃０〜＃ｎを格納する。タイマ登録情報としては、タイマＩＤ、タスクＩＤ、周期性のタイマ要求であることを示すピアリオディックフラグ、周期性のタイマ要求である場合にその周期を示すシステムクロック単位のサイクルの情報が格納される。なお、周期性のタイマ要求である場合には、該タイマ要求のタイムアウト時（エクスパイアー時）に、１サイクル分隔てたバッファ位置に該タイマ要求を再登録する。
【００３３】
システムクロックの開始時が、ＣＰＵクロックカウンタ出力の値が０の時であるとすると、現在位置を示す０Ｔｉｃのシステムクロックに対応するＣＰＵクロックカウンタ出力値は０から９９９９までであり、以降発生するタイマ要求が予約登録されるバッファの位置は、ＣＰＵクロックカウンタ出力が１００００の以上の位置のバッファとなる。
【００３４】
タイマ要求が発生するタイミングは、１システムクロック（Ｔｉｃ）周期内で不定期のため、システムクロック（Ｔｉｃ）の割り込み（イベント）が発生したときに、該１周期の間に発生したタイマ要求の登録を開始するものとする。１システムクロック（Ｔｉｃ）対応のバッファには、図１の（ｄ）に示す通り、タイマ要求の登録個数とその登録位置でタイムアウトするタイマ情報とが含まれる。
【００３５】
このタイマ要求の登録個数が、初期設定されている最大登録個数に達した場合は、その登録位置のバッファは登録フル状態であるとソフトウェアにより判定し、次に発生したこの登録位置へのタイマ要求に対しては、リングバッファ構造予約テーブルの次のタイミング位置に近接する登録位置へ、登録位置を移動させる。
【００３６】
即ち、システム起動時に、そのシステムに合わせた指定時間に同時にタイムアウトとなるタイマ数の上限を登録し、リングバッファ構造の予約テーブルを作成する。そして、タイマ要求の登録時に、該予約テーブルのタイムアウトのタイミングに対応したバッファに登録されたタイマ数の上限を超える場合は、該バッファに近接する複数の登録領域の中から、空き領域の有る登録領域を検索し、その登録領域に登録する。
【００３７】
予約テーブルは、システムクロック（Ｔｉｃ）と同期しその処理位置を移動させ、また、ベースとなるＣＰＵタイマカウント値も、システムクロック（Ｔｉｃ）割り込みが発生する度に更新する。予約テーブルから、現在のタイミング（システムクロックＴｉｃ＝０）の位置に登録してある全てのタイマ要求のタイマ情報を読み出してタイムアウト完了処理を実行する。
【００３８】
このように、タイマ要求の登録時に、同時タイムアウトするタイマ登録数を認識することで、該タイマ登録数が上限値を超える場合、タイムアウト時期を適宜移動することによって、多数のタイマ要求を登録することができ、タイムアウト完了イベントを取りこぼすことなく、タイムアウトを柔軟に管理する処理機能を実現することができる。
【００３９】
図１に示したタイマ要求の登録管理の動作シーケンスを図２に示す。同図に示すように、タイマ用割り込みハンドラ８−７により、システムクロック（Ｔｉｃ）の割り込みイベント（１０ｍｓ割り込み）が発生すると、図１に示したようにタイマ管理構造体８−５の現在位置を示すシステムクロック（０Ｔｉｃ）位置のバッファに登録されているタイマ情報を読み出し、タイムアウト処理を実施する。
【００４０】
図８に示した従来のタイマ管理処理と異なるところは、図２の（Ａ）で示すシーケンスのところである。従来のタイマ管理処理では、システムクロック（Ｔｉｃ）の割り込みイベント（１０ｍｓ割り込み）でカウンタの減算処理を行うのに対して、本発明では、システムクロック（Ｔｉｃ）の割り込みイベント（１０ｍｓ割り込み）で、タイマ管理構造体８−５からタイマ登録情報を順々に読み出し、直ちにタイムアウト完了のメッセージをタイマ要求元に通知する処理を行う。
【００４１】
タイマ要求発生時に、該タイマ要求のタイムアウトのタイミングに相当するバッファに、該タイマ要求を登録し、現在時刻が該バッファの読み出しタイミングに達したとき、該バッファに登録された全てのタイマ要求のタイマ情報を読み出して、タイマ要求の要求元にタイムアウトを通知することにより、従来のように、タイマカウンタを用意して該タイマカウンタを減算処理させるといったようなオーバーヘッドがなくなるため、タイムアウト処理を高速に行うことができることとなる。
【００４２】
また、タイマ要求の登録処理は、任意のタスクからの要求に対していつでも実行可能となる。それは、タイマ要求の予約テーブルが、現在位置（この位置はタイムアウト処理位置である）とタイマ要求の登録処理位置とに分かれているためであり、また、タイムアウトのタイミングが同一となる複数のタイマ要求が、１つのバッファの最大登録個数に達した場合でも、次に発生したこのタイムアウトタイミングと同一のタイマ要求に対しては、リングバッファ構造予約テーブルの時系列上の後位に隣接する登録位置の空き状態のバッファを順々に探索して該空きバッファに登録するため、一斉にタイムアウトとなるタイマ要求が１つのバッファ容量を越えて発生しても、それらのタイマ要求を後位の登録位置に登録することにより、若干のタイムアウト時刻のずれ込みが生じるものの、タイムアウト処理を実行することができる。
【００４３】
なお、タイマ要求が１つのバッファの最大登録個数に達した場合、次に発生したこのタイムアウトタイミングと同一のタイマ要求を、時系列上の後位方向に隣接する登録位置の空き状態のバッファに登録する構成とする必要は必ずしもなく、タイマ要求の条件によって、本来のタイムアウトの登録位置より時系列上の前位方向に隣接する登録位置の空き状態のバッファを探索して登録する構成とすることもできる。
【００４４】
図２に示した動作例では、タイマ管理構造体８−５へのアクセス権獲得のためにセマフォを用いる例を示しているが、セマフォを使用せずにタイマ管理構造体８−５へアクセスする構成とすることもできる。図３に、本発明によるタイマ要求の登録処理フロー及びタイムアウトハンドラフローを示す。
【００４５】
タイマ要求の登録処理は、図３（ａ）に示すように、タイマ要求のタイムアウトのシステムクロック（Ｔｉｃ）に対応する登録位置を算出し（３−１）、その登録位置の予約テーブルのバッファ内に既に登録されているタイマ要求の登録個数数を取得し（３−２）、該登録個数が登録可能な上限値を超えているか、即ち、登録可能な空き領域が有るか否かを判定し（３−３）、空きが有る場合にはその登録位置の予約テーブルのバッファに登録する（３−４）。
【００４６】
しかし、上記登録位置の予約テーブルのバッファが満杯の状態である場合は、該登録位置の次のシステムクロック（Ｔｉｃ）の登録位置に移動し（３−５）、該登録先のバッファのタイマ要求登録個数数を取得し（３−２）、前述の処理と同様に該バッファに登録可能であるかどうかを確認し、登録可能であれば該バッファへ登録する。このバッファへの登録が可能でない場合は、更に次のシステムクロック（Ｔｉｃ）の登録位置のバッファに対して同様の処理を繰り返す。
【００４７】
このようにして、登録可能な空きバッファを検索し、最初に発見された空きバッファにタイマ要求を登録する。予約テーブルのバッファをリング構造とし、タイマ要求のタイムアウト時の登録位置に最も近い位置のバッファから順番に空きバッファ検索することで、本来登録すべき登録位置から最も手前の登録位置にタイマ要求を登録することができる。
【００４８】
ただし、現在位置つまりタイムアウト処理中のバッファには、新規のタイマ要求を登録することができない。また、システムクロック（Ｔｉｃ）毎の各予約テーブルのバッファの登録可能なタイマ予約の登録個数の上限値は、システム起動時に初期設定値として設定する。
【００４９】
タイムアウトハンドラフローは、図３（ｂ）に示すように、システムクロック（Ｔｉｃ）毎の割り込みを監視し（３−６）、該割り込みがあると、現在位置の予約テーブルのバッファに登録されているタイマ要求のタイマ情報を一つずつ取得し（３−７）、該タイマ要求の要求元に対してタイムアウトを通知するシグナル送信処理を行い、登録されているタイマ要求がまだ残っているか否かを判定し（３−９）、登録されているタイマ要求がなくなるまで、上記の処理を繰り返す。
【００５０】
図４に本発明によるタイマ管理における全体処理の実装構成の一例を示す。図４において、プロセス（ユーザ定義タスク）４−１からタイマ要求が発生すると、タイマ登録関数４−２によりタイマ生成部４−３に対してタイマ生成要求が発せられ（１）、タイマ生成部４−３はそれに対してタイマＩＤをタイマ登録関数に通知し（２）、また、ユーザタイマ情報をタイマ情報登録部４−４に登録する（３）。
【００５１】
次に、プロセス（ユーザ定義タスク）４−１からタイマ開始の通知を受けると、タイマ開始関数４−５によりタイマ開始要求を送出して（４）、タイマ情報登録部４−４からタイマＩＤを含む登録データを取得し、タイマ開始部４−６に該登録データと共にタイマ開始要求を送出する（５）。
【００５２】
タイマ開始部４−６は、該タイマのタイムアウトのタイミングを予測し、該タイムアウトのタイミングに対応する予約テーブル４−７のバッファ位置を起点として、該バッファを含めてそれ以降の位置に有る登録可能な空き領域を検索し、空き領域の情報を取得して、該空き領域を有する予約テーブル４−７のバッファ内のキューに、該タイマ要求に係るハンドラ（タイマＩＤ等）を登録する（６）。
【００５３】
上述の予約テーブル４−７に対して、常時起動しているシステムクロック（Ｔｉｃ）カウンタ４−８により、タイムアウトのタイミングに関する時間情報を更新し、また、現時点がタイムアウト（Ｔ．Ｏ．）のタイミングとなっているバッファの位置情報を取得し（７）、該位置のバッファからタイマハンドラポインタを取得し、該ハンドラをキュー登録する（８）。
【００５４】
終了処理部４−９では、上記キューに登録されたハンドラを順番に取り出して起動し（９）、該ハンドラによりプロセス（ユーザ定義タスク）４−１に対してタイマ完了のメッセージを送出する（１０）。また、該タイマ要求が周期タイマの要求である場合は、該タイマ要求に係るハンドラ（タイマＩＤ）を、再度、空き領域を有する予約テーブルのバッファ内のキューに登録する。
【００５５】
図５に本発明のタイマ管理によるタイマ要求の登録の例を示す。同図に示すように、１システムクロック（Ｔｉｃ）の単位時間内に、タイマ１〜タイマＮ＋１の（Ｎ＋１）個のタイマ要求が発生し、それらが２システムクロック（Ｔｉｃ）後の単位時間内にタイマアウトするタイマ要求であった場合、ここで、１システムクロック（Ｔｉｃ）の単位時間内でタイムアウト処理を行うことができる限界値がＮであったとすると、１番目からＮ番目のタイマ要求（タイマ１〜タイマＮ）は、２システムクロック（Ｔｉｃ）後の登録位置に登録されるが、Ｎ＋１番目のタイマ要求は、次の３システムクロック（Ｔｉｃ）後の登録位置に登録する。従って、従来は図９に示すように上限値を超えるタイマ要求のタイムアウト処理が消失していたのに対して、本発明では図５に示すように消失することなく、本来のタイムアウトのタイミング位置に最も近いタイミング位置に対応した登録領域に登録されることとなる。
【実施例１】
【００５６】
本発明によるタイマ管理の実施例を図６に示す。この実施例では、プロセスＡ〜プロセスＤからのタイマ要求を登録する処理を示している。プロセスＡ、プロセスＢ及びプロセスＣからの同一のタイミング（システムクロックＴｉｃ＝１）のタイムアウトのタイマ要求の登録を終えた時点で、該システムクロックＴｉｃ＝１の登録数が上限の１００に達したため、プロセスＤからのタイマ要求は、システムクロックＴｉｃ＝１の登録位置に登録することができず、次のシステムクロックＴｉｃ＝２の登録領域に空きがあるため、システムクロックＴｉｃ＝２の登録位置へ登録する。
【００５７】
なお、タイマ予約テーブルはリングバッファ形式であっても、テーブル内の各バッファの情報格納領域は、リスト構造として実装してもよいし、また、ＦＩＦＯのバッファとして登録情報を積み込むような構成してもよい。
【図面の簡単な説明】
【００５８】
【図１】発明によるタイマ管理の原理説明図である。
【図２】本発明によるタイマ要求の登録管理の動作シーケンスを示す図である。
【図３】本発明によるタイマ要求の登録処理フロー及びタイムアウトハンドラフローを示す図である。
【図４】本発明によるタイマ管理における全体処理の実装構成の一例を示す図である。
【図５】本発明のタイマ管理によるタイマ要求の登録の例を示す図である。
【図６】本発明によるタイマ管理の実施例を示す図である。
【図７】従来のタイマの標準動作を実現する実装構成例を示す図である。
【図８】従来のタイマ処理におけるシーケンスを示す図である。
【図９】従来のタイマ管理によるタイマイベント消失の例を示す図である。
【符号の説明】
【００５９】
４−１  プロセス（ユーザ定義タスク）
４−２  タイマ登録関数
４−３  タイマ生成部
４−４  タイマ情報登録部
４−５  タイマ開始関数
４−６  タイマ開始部
４−７  予約テーブル
４−８  システムクロック（Ｔｉｃ）カウンタ
４−９  終了処理部
７−１  メインタスク
７−２  タイマ情報管理テーブル領域（ヒープ)
７−３  タイムアウト処理部
７−４  シグナルハンドラ
７−５  通知処理部
８−１  各機能別タスク
８−２  タイマ実行関数
８−３  タイマ管理タスク
８−４  構造体管理関数
８−５  タイマ管理構造体
８−６  タイマ実処理タスク
８−７  タイマ用割り込みハンドラ
【図１】
2007213486.tif 000003
【図２】
2007213486.tif 000004
【図３】
2007213486.tif 000005
【図４】
2007213486.tif 000006
【図５】
2007213486.tif 000007
【図６】
2007213486.tif 000008
【図７】
2007213486.tif 000009
【図８】
2007213486.tif 000010
【図９】
2007213486.tif 000011