(57)【特許請求の範囲】
【請求項１】
デフェラブルタイマを示すデータが格納されたタイマ種類とデフェラブルタイマの実行期限を指定するデータが格納されたタイマ期限とを有する第一タイマ管理情報と、
ノーマルタイマを示すデータが格納されたタイマ種類と前記デフェラブルタイマの実行期限に許容誤差を加算した値を格納したタイマ期限とを有する第二タイマ管理情報と、
を用いるタイマ管理方法であって、
前記第一タイマ管理情報のタイマ期限の値に対応する、タイマ管理テーブルのタイムスロットに前記第一のタイマ管理情報をリンクさせる処理と、
前記第二タイマ管理情報のタイマ期限を超えているか、或いは別のノーマルタイマが存在する、タイマ管理テーブルのタイムスロットに前記第二タイマ管理情報をリンクさせる処理と
を有することを特徴とする、タイマ管理方法。
【請求項２】
デフェラブルタイマを示すデータが格納されたタイマ種類とデフェラブルタイマの実行期限を指定するデータが格納されたタイマ期限とを有する第一タイマ管理情報と、ノーマルタイマを示すデータが格納されたタイマ種類と前記デフェラブルタイマの実行期限に許容誤差を加算した値を格納したタイマ期限とを有する第二タイマ管理情報と、を記憶する記憶手段と、
前記第一タイマ管理情報のタイマ期限の値に対応する、タイマ管理テーブルのタイムスロットに前記第一のタイマ管理情報をリンクさせ、前記第二タイマ管理情報のタイマ期限を超えているか、或いは別のノーマルタイマが存在する、タイマ管理テーブルのタイムスロットに前記第二タイマ管理情報をリンクさせる管理手段と
を有することを特徴とする、タイマ管理装置。
【請求項３】
マージンタイマの第一タイマ管理情報，第二タイマ管理情報それぞれの二つのタイマＩＤを取得する処理と、
第一タイマ管理情報のタイマ期限の値に一致する、タイマ管理テーブルのタイムスロットを決定し、決定したタイムスロットに第一タイマ管理情報の前方リンク及び後方リンクを使用して、キューイングを行う処理と、
変数に、キューイングを行ったタイムスロットの位置に１を加算した値を代入する処理と、
前記変数の値が指すタイムスロットの位置が、前記第二タイマ管理情報のタイマ期限である、第一タイマ管理情報のタイマ期限の値に許容誤差を加算した値を超えたか否かを判定する第一判定条件と、前記変数の値が指すタイムスロットの位置に別のノーマルタイマが存在するか否を判定する第二判定条件とを判定する処理と、
前記第一判定条件及び前記第二判定条件のいずれかが満たされていると判定した場合、前記変数が指すタイムスロットの位置に、第二タイマ管理情報の前方リンク、後方リンクを使用してキューイングを行なう処理と
を有することを特徴とするタイマ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タイマ管理方法、並びにタイマ管理装置に関する。
【背景技術】
【０００２】
近年のＯＳ（Operating System）は、ＣＰＵに省電力モードが提供されたことに伴い、アイドル（ＣＰＵが）ときＣＰＵを省電力モードに遷移させ、システムを省電力化していることが多い。省電力モードに遷移したＣＰＵは定期的に発生するタイマ割り込みで通常のモードへ戻る。
【０００３】
この省電力モードを利用して、アイドル時には、ソフトタイマを評価し、次に実行すべきソフトタイマの期限まで、タイマ割り込みを発生させないようハードウエア（ＨＷ）タイマにプログラムを行うことで、ＣＰＵの省電力モードをより長く維持する方法（以下、この方法をダイナミックチックと呼ぶ）が提案されている（例えば、非特許文献１）。
【０００４】
上記「ダイナミックチック」の問題点は、ソフトタイマを使用するカーネルやアプリケーション、デバイスドライバが、各々好きな時刻を指定してソフトタイマの期限をセットするため、指定時刻はバラバラになり、各タイマが期限を迎えるたび、システムはアイドル状態から復帰するため、システムがアイドル状態を維持している時間が短く、省電力効果があまり得られないという点である。
【０００５】
その対応策として、ソフトタイマをクリティカルなものとクリティカルでないもので区別し、アイドル中は、クリティカルでないソフトタイマ（以下、デフェラブルタイマ;Deferrable timer）の期限は評価対象外として、システムを省電力モードから通常モードに復帰させないようにし、クリティカルなタイマ（以下、ノーマルタイマ）の期限にあわせてシステムを省電力モードから通常モードに復帰させるという考えが提案されている（例えば、非特許文献２）。
【０００６】
また、ソフトタイマを実行するたびに、期限を迎えたタイマの次に実行すべきタイマの許容誤差を調べ、許容誤差範囲内であればそのタイマも同時に実行し、タイマ割り込みを減らす技術も提案されている（例えば、特許文献１）。
【非特許文献１】Thomas Gleixner,  Ingo Molnar、  ”hrtimers”、[online]、[平成２０年３月２１日検索]、インターネット〈ＵＲＬ：http://tglx.de/hrtimers.html〉
【非特許文献２】corbet、” Deferrable timers”、[online]、平成１９年３月２８日、[平成２０年３月２１日検索]、インターネット〈http://lwn.net/Articles/228143/〉
【特許文献１】特開２０００−２５９４２９号公開公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、従来のデフェラブルタイマによる管理方法は、ノーマルタイマの使用頻度が少ない場合では、タイマを実行するタイミングがタイマ管理テーブルに依存することになり、いつになるかわからず、ソフトタイマを利用する側にとって使いづらいという欠点がある。
【０００８】
また、上記［特許文献１］に開示された方法はタイマの許容誤差を調べる回数に上限が必要となり、ＣＰＵの省電力モードを維持する時間もその上限に従わなければならないという問題があった。
【０００９】
本発明では、タイマの種類をノーマルタイマ、デフェラブルタイマの２種類を利用し、実行期限を保証する誤差を指定できるタイマであって、かつ、デフェラブルタイマのようなタイマを使用する際に、タイマの期限について意識することを必要とせず、省電力効果を得られるソフトタイマ（以下、マージンタイマと呼ぶ）を提案する。
【課題を解決するための手段】
【００１０】
上記課題を解決するための手段として、本発明は以下の特徴を有する。  
【００１１】
本発明の第１の態様は、タイマ管理方法として提案される。
【００１２】
このタイマ管理方法は、デフェラブルタイマを示すデータが格納されたタイマ種類と、デフェラブルタイマの実行期限を指定するデータが格納されたタイマ期限とを有する第一タイマ管理情報と、ノーマルタイマを示すデータが格納されたタイマ種類と、デフェラブルタイマの実行期限に許容誤差を加算した値を格納したタイマ期限とを有する第二タイマ管理情報とを用いるタイマ管理方法であって、第一タイマ管理情報のタイマ期限の値に対応する、タイマ管理テーブルのタイムスロットに第一のタイマ管理情報をリンクさせる処理と、第二タイマ管理情報のタイマ期限を超えているか、或いは別のノーマルタイマが存在する、タイマ管理テーブルのタイムスロットに第二タイマ管理情報をリンクさせる処理とを有することを特徴としている。
【００１３】
本発明の第２の態様は、タイマ管理装置として提案される。
【００１４】
このタイマ管理装置は、デフェラブルタイマを示すデータが格納されたタイマ種類と、デフェラブルタイマの実行期限を指定するデータが格納されたタイマ期限とを有する第一タイマ管理情報と、ノーマルタイマを示すデータが格納されたタイマ種類と、デフェラブルタイマの実行期限に許容誤差を加算した値を格納したタイマ期限とを有する第二タイマ管理情報とを記憶する記憶手段と、第一タイマ管理情報のタイマ期限の値に対応する、タイマ管理テーブルのタイムスロットに第一のタイマ管理情報をリンクさせ、第二タイマ管理情報のタイマ期限を超えているか、或いは別のノーマルタイマが存在する、タイマ管理テーブルのタイムスロットに第二タイマ管理情報をリンクさせる管理手段とを有することを特徴としている。
【００１５】
本発明の第３の態様は、タイマ管理方法として提案される。
【００１６】
このタイマ管理方法は、  マージンタイマの第一タイマ管理情報，第二タイマ管理情報それぞれの二つのタイマＩＤを取得する処理と、第一タイマ管理情報のタイマ期限の値に一致する、タイマ管理テーブルのタイムスロットを決定し、決定したタイムスロットに第一タイマ管理情報の前方リンク及び後方リンクを使用して、キューイングを行う処理と、
変数に、キューイングを行ったタイムスロットの位置に１を加算した値を代入する処理と、前記変数の値が指すタイムスロットの位置が、前記第二タイマ管理情報のタイマ期限である、第一タイマ管理情報のタイマ期限の値に許容誤差を加算した値を超えたか否かを判定する第一判定条件と、前記変数の値が指すタイムスロットの位置に別のノーマルタイマが存在するか否を判定する第二判定条件とを判定する処理と、前記第一判定条件及び前記第二判定条件のいずれかが満たされていると判定した場合、前記変数が指すタイムスロットの位置に、第二タイマ管理情報の前方リンク、後方リンクを使用してキューイングを行なう処理とを有することを特徴としている。
【発明の効果】
【００１７】
本発明によれば、実行期限を保証する誤差を指定できるタイマであって、かつ、タイマの期限について意識することを必要とせず、省電力効果を得られるソフトタイマの使用を可能とすることができる。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照しながら本発明の実施の形態を説明する。
【００１９】
本実施形態は、デフェラブルタイマに最低でも実行される期限を保証する許容誤差を設定できるタイマを実現する装置（以下、タイマ管理装置）及び、タイマ管理方法として提案される。
【００２０】
［本実施形態の前提］
図１は、タイマ管理装置のハードウエア構成の一例を示したブロック図である。図１に示した例では、タイマ管理装置１０は、中央処理装置（以下、ＣＰＵと称す）１０１と、ＣＰＵ１０１に接続されたメモリ１０２と、ＣＰＵ１０１に接続されたハードウエアタイマ１０３とを有している。メモリ１０２は、ランダム・アクセス・メモリ（以下、ＲＡＭと称す）１０４、リード・オンリ・メモリ（以下、ＲＯＭと称す）１０５を有しており、本発明の記憶手段として機能する。
【００２１】
ＣＰＵ１０１は、このタイマ管理装置１０の全体を制御する制御部であり、メモリ１０２、より詳しくはＲＡＭ１０４やＲＯＭ１０５に格納されたプログラムを実行し、各種の処理を行う機能を有している。また、ハードウエアタイマ１０３は、適当な周期で動作することにより、一定間隔で割り込みを発生させる機能を有する。ＣＰＵ１０１は本発明の管理手段として機能する。
【００２２】
図２は、上記タイマ管理装置１０による基本的なタイマ管理テーブルを用いたソフトウエアタイマの管理方法を図解したブロック図である。
【００２３】
クロックダイアル２０１は、システムが起動してから発生したハードウエアタイマ１０３の割り込み回数をカウントしたカウント値であり、このクロックダイアル２０１により後述するタイムスロットが指定される。クロックダイアル２０１はＣＰＵ１０１によって管理されるメモリ１０２内のデータである。
【００２４】
タイマ管理テーブル２０２は各タイマ情報を管理するためのデータであって、複数のタイムスロット２０３−１〜２０３−５を有している（以下、これらタイムスロットを区別しない場合は、代表して単に「タイムスロット２０３」と表記する）。各タイムスロット２０３−１〜２０３−５には、その時点で実行すべきタイマ管理情報へのリンクがなされている。
【００２５】
例えば、ハードウエアタイマ１０３の割り込みが１０ｍｓごとに発生し、クロックダイアル１０１が、図２にあるようにタイマ管理テーブル２０２における２番目のタイムスロット２０３−２を指しているとする。この状態の後、前回のハードウエアタイマ１０３による割り込み時から１０ｍｓ経過すると、クロックダイアル２０１は、２番目のタイムスロット２０３−２の次のタイムスロット２０３−３を指すようにインクリメントされる。このタイムスロット２０３−３からタイマ管理情報へのリンクがされている場合、ＣＰＵ１０１は、そのタイマ管理情報に記述されているすべてのタイマを実行する。
【００２６】
タイマ管理装置１０は、上記のタイマ管理テーブル２０２に加えて、オーバフローイベントバッファ２０４を用いる。
【００２７】
オーバフローイベントバッファ２０４はタイマ管理テーブル２０２で管理しきれない未来のタイマのタイマ管理情報を一時的に保存しておく手段で、クロックダイアル２０１がタイマ管理テーブル２０２の最後のタイムスロット２０３−５を指した時点で、オーバフローイベントバッファ２０４に格納されているタイマ管理情報２０５−１〜２０５−４の中から、次にタイマ管理テーブル２０２のタイムスロット２０３−１からタイムスロット２０３−５で管理できる範囲のタイマ管理情報（図２では、タイマ管理情報２０５−１，２０５−２であるものとする）をタイマ管理テーブル２０２の対応するタイムスロット（図２では、タイムスロット２０３−３、２０３−５であるものとする）へ移動（リンク付け）するとともに、クロックダイアル２０１をリセットし、クロックダイアル２０１の値がタイマ管理テーブル２０２の先頭のタイムスロット２０３−１を指すようにする。
【００２８】
このように、タイマ管理装置１０は、クロックダイアル２０１，タイマ管理テーブル２０２，オーバフローイベントバッファ２０４を用いて、タイマの実行を管理する。
【００２９】
次に、上記のタイマ管理情報２０５−１〜２０５−４（以下、これらタイマ管理情報を代表して単に「タイマ管理情報２０５」と表記する）について説明する。
【００３０】
図３は、従来の一般的なタイマ管理情報のデータ構成例を示したブロック図である。タイマ管理情報２０５は、前方リンク３０１，後方リンク３０２，タイマＩＤ３０３，タイマ期限３０４，イベントハンドラへのリンク３０５，タイマ種類３０６とを有している。
【００３１】
前方リンク３０１，後方リンク３０２は、同じタイマ期限を有するタイマの双方向リンクを行う情報である。図４は、あるタイムスロット２０３と、このタイムスロットからリンクされているタイマ管理情報２０５との関係を示す図である。同じタイマ期限３０４をもつタイマは、対応するタイマ管理情報２０５がそれぞれの前方リンク３０１、後方リンク３０２により双方向リンクとして管理される。また、タイマ期限３０４に応じたタイムスロット２０３に先頭のタイマ管理情報２０５のリンクがセットされる。リンクの終端は”ＮＵＬＬ”２０６によって示され、ＣＰＵ１０１はリンク先のデータ”ＮＵＬＬ”である場合、このタイムスロット２０３におけるタイマ管理情報２０５はこれ以上存在しないことを判定できるようになっている。
【００３２】
図３に戻り、タイマ管理情報２０５のデータ構成例の説明を再開する。  
【００３３】
タイマＩＤ３０３は、タイマの識別子であって、タイマ管理情報２０５が作成された段階でタイマそれぞれに一意に与えられ、タイマの開始、停止、削除に使用される。
【００３４】
タイマ期限３０４はタイマの起動時間を指定する情報である。タイマはタイマ期限３０４より指定された時間を迎えると、タイマ管理情報２０５のイベントハンドラのリンク３０５から対応するイベントハンドラ（図略）を特定し、このイベントハンドラを実行する。イベントハンドラの実行後、このタイマ管理情報２０５はタイムスロット２０３から削除される。
【００３５】
タイマ種類３０６には、そのタイマがノーマルタイマであるかディフェラブルタイマであるを示すデータ（例えば、値）を格納する。タイマ種類３０６がノーマルタイマを示す場合、アイドル時のタイマ期限の評価対象（後述する図５，Ｓ１０参照）となり、一方タイマ種類３０６がデフェラブルタイマを示す場合、アイドル時のタイマ期限の評価対象（後述する図５，Ｓ１０参照）とされない、すなわち省電力モードを妨げるタイマ割り込みを発生させることがない。
【００３６】
［ダイナミックチックを行うアイドル処理について］
上記のタイマ管理テーブル２０２を利用して、ダイナミックチックを行うアイドル処理を行う例を説明する。図５は、タイマ管理テーブル２０２を利用したアイドル処理の一例を示したフローチャートである。
【００３７】
タイマ管理装置１０がアイドル処理を開始すると、タイマ管理装置１０，より詳しくはＣＰＵ１０１は、タイマ管理テーブル２０２を参照し、現在のクロックダイアル２０１が示す値から、次に実行すべきタイムスロット２０３までの間隔を調べるタイマイベントの評価を行う（Ｓ１０）。次に、タイマ管理装置１０，より詳しくはＣＰＵ１０１は、次に実行すべきタイムスロット２０３までの間隔に相当する値をハードウエアタイマ１０３へ設定し、ハードウエアタイマ１０３へ次の割り込みを起こす時間をセットする（Ｓ２０）。
【００３８】
その後、タイマ管理装置１０，より詳しくはＣＰＵ１０１は、ＣＰＵ１０１を省電力モードへ遷移させる（Ｓ３０）。省電力モードに遷移したことにより、ＣＰＵ１０１は停止状態になる（Ｓ４０）。
【００３９】
その後、ハードウエアタイマ１０３は、前述のステップＳ２０において設定された時間が経過したのち、ＣＰＵ１０１へタイマ割り込みを行う（Ｓ５０）か、或いはその他の割り込みが発生する（Ｓ５０）と、ＣＰＵ１０１は省電力モードから通常モードへ遷移して（Ｓ６０）、割り込みハンドラを実行する（Ｓ７０）。次に、ＣＰＵ１０１はプロセス起床の有無をチェックし（Ｓ８０）、プロセス起床がある場合（Ｓ８０、Ｙｅｓ）、ＣＰＵ１０１はスケジューラを呼び出しプロセススケジューリングを行い（Ｓ９０）、アイドル処理を終了する。一方、ステップＳ８０においてプロセス起床がない場合（Ｓ８０、Ｎｏ）、ＣＰＵ１０１はステップＳ１０に制御を戻し、再び次のタイマまでの間隔を調べる（Ｓ１０）。
【００４０】
［次のタイマ期限の評価方法］
次に、前述のアイドル処理における次のタイマイベントの評価（Ｓ１０）の処理内容について詳述する。図６は、次のタイマイベントの評価処理（Ｓ１０）の処理例を示すフローチャートである。
【００４１】
タイマイベントの評価処理を開始すると、ＣＰＵ１０１は、その時点におけるクロックダイアルの値を示す変数iを初期値にセットする（Ｓ１１０）。次に、ＣＰＵ１０１は変数ｉの値をインクリメントする（Ｓ１２０）。次に、ＣＰＵ１０１はタイマ管理テーブル２０２のタイムスロット２０３のうち、変数iの値に対応する位置のタイムスロット２０３を調べ、そのタイムスロット２０３にタイマがセットされているか否かを判定する（Ｓ１３０）。
【００４２】
タイマがセットされていると判定した場合（Ｓ１３０、Ｙｅｓ）、ＣＰＵ１０１は、そのタイマがノーマルタイマか否かをタイマ管理情報２０５、より詳しくはタイマ種別３０６により判定する（Ｓ１４０）。そのタイムスロットにセットされているタイマがノーマルタイマであると判定した場合（Ｓ１４０、Ｙｅｓ）、変数ｉに格納されているクロックダイアルの値を次のハードウエアタイマの割り込みを起こす時間として使用する（Ｓ１５０）。
【００４３】
一方、ステップＳ１４０の判定において、変数ｉに対応するタイムスロット２０３にノーマルタイマがセットされていない場合、すなわちディフェラブルタイマ又はＮＵＬＬのみしかセットされていない場合（Ｓ１４０，Ｎｏ）、ＣＰＵ１０１はその変数iの値を評価せず、制御をステップＳ１２０に戻して変数ｉのインクリメントを行い（Ｓ１２０）、次のタイムスロット２０３にセットされているタイマを調べる（Ｓ１３０）。
【００４４】
この方法を使えばデフェラブルタイマは次のタイマの期限の評価対象から外れるため、アイドル時のダイナミックチックによる省電力効果を増すことができる。
【００４５】
［タイマ実行方法］
次に、タイマの実行方法について説明する。図７は、タイマ管理装置１０がタイマを実行するタイマ実行処理の一例を示したフローチャートである。
【００４６】
タイマの実行を開始すると、ＣＰＵ１０１はクロックダイアル２０１の値のアップデートを行う（Ｓ２１０）。クロックダイアル２０１をアップデートする値は、前回実行したソフトタイマの時刻から現在実行するソフトタイマの時刻の差分値をクロックダイアルｉに加算した値となる。
【００４７】
次に、ＣＰＵ１０１は、アップデート前のクロックダイアル２０１が指すタイマ管理テーブル２０２のタイムスロット２０３から、アップデート後のクロックダイアル２０１が指すタイムスロット２０３の範囲に存在するタイマ管理情報２０５へのリンクが指し示すタイマ管理情報２０５を参照し、そのタイマ管理情報２０５内のイベントハンドラへのリンク３０５が指し示すイベントハンドラを特定し、そのイベントハンドラの実行を行う（Ｓ２２０）。
【００４８】
ステップＳ２２０におけるすべてのタイマの実行が終了した後、ＣＰＵ１０１は、クロックダイアル２０１の指す値がタイマ管理テーブル２０２の末尾のタイムスロット２０３であるか否かを判定する（Ｓ２３０）。クロックダイアル２０１の指す値がタイマ管理テーブル２０２の末尾のタイムスロット２０３であると判定した場合（Ｓ２３０、Ｙｅｓ）、ＣＰＵ１０１はオーバフローイベントバッファ２０４から、次にタイマ管理テーブル２０２のタイムスロット２０３−１〜２０３−５で管理できるタイマ管理情報２０５の移動（リンクの設定）を行う（Ｓ２４０）。タイマ管理情報２０５の移動を終えると、ＣＰＵ１０１はクロックダイアル２０１の値をタイマ管理テーブル２０２の先頭のタイムスロット２０３の値にセットし（Ｓ２５０）、ソフトタイマ実行処理を終了する。一方、ステップＳ２３０においてクロックダイアル２０１の指す値がタイマ管理テーブル２０２の末尾のタイムスロット２０３でないと判定した場合（Ｓ２３０、Ｎｏ）、ＣＰＵ１０１はステップＳ２４０、Ｓ２５０を行うことなくそのままソフトタイマ実行処理を終了する。
【００４９】
［本発明の実施の形態にかかるソフトウエアタイマ（マージンタイマ）］
上記従来技術において、デフェラブルタイマについては、ダイナミックチックを利用したアイドル処理時、タイマの期限の評価がされないという特徴があり、アイドル処理でＣＰＵ１０１が省電力モードへ遷移した後から復帰までの間隔を延ばす効果が得られる。但し、デフェラブルタイマの使用頻度が高く、ノーマルタイマの使用頻度が低い状況では、デフェラブルタイマの実行に大きな遅延が生じ、使いづらいという欠点がある。
【００５０】
そこで本発明は、デフェラブルタイマのタイマ期限に許容誤差を指定することで、デフェラブルタイマの省電力効果を得つつ、最低でも実行が保証されるタイマ（マージンタイマと呼ぶ）を提案する。
【００５１】
以下で、本発明の実施の形態であるマージンタイマについて説明する。マージンタイマを扱う装置は、従来のタイマ管理装置１０と同様のハードウエア構成でかまわない。タイマ管理装置１０のハードウエア構成は図１において説明しているので、ここではその詳細な説明は省略する。
【００５２】
［マージンタイマのタイマ管理情報］
マージンタイマもまた、タイマ管理情報を用いてタイマ管理装置１０に実行され、管理される。図８に、マージンタイマにかかるタイマ管理情報のデータ構成例を示す。図８に示すように、マージンタイマのタイマ管理情報８０１は、二つのタイマ管理情報２０５Ａ、２０５Ｂを有している。タイマ管理情報２０５Ａ、２０５Ｂは前述したタイマ管理情報２０５（図３参照）と同様のデータ構成を有し、同様の構成要素には同様の参照符号を付した（但し、タイマ管理情報２０５Ａ、２０５Ｂ相互の区別のため、枝番号Ａ，Ｂを付している）。
【００５３】
一つ目のタイマ管理情報２０５Ａ（以下、区別のため「第一タイマ管理情報」と呼ぶ）は、前方リンク３０１Ａ，後方リンク３０２Ａ、タイマＩＤ３０３Ａ，タイマ期限３０４Ａ、イベントハンドラのリンク３０５Ａ，タイマ種類３０６Ａより構成されている。
【００５４】
第一タイマ管理情報７０１において、タイマ種類３０６Ａには「デフェラブル」を示すデータ／値が格納される。また、タイマ期限３０４Ａには、デフェラブルタイマの実行期限を指定するデータが格納される。なお、この第一タイマ管理情報２０５Ａは、本発明にかかるマージンタイマのタイマ処理の実行本体を表している。
【００５５】
もう一つのタイマ管理情報は、タイマ管理情報２０５Ｂ（以下、区別のため「第二タイマ管理情報」と呼ぶ）である。第二タイマ管理情報２０５Ｂは、本発明にかかるマージンタイマのタイマ期限の許容誤差を保証するための情報である。第二タイマ管理情報２０５Ｂにおいて、タイマ期限３０４Ｂには、タイマ期限２０５Ａの値に許容誤差の値を加算した値を格納させる。また、タイマ種類３０６Ｂには、ノーマルタイマを示すデータ／値を格納させる。また、イベントハンドラへのリンク３０５Ｂには「ＮＵＬＬ」を使用する。なお、第一タイマ管理情報２０５Ａ、第二タイマ管理情報２０５ＢそれぞれのタイマＩＤ３０３Ａ、３０３Ｂは互いに別の一意のＩＤを設定する。
【００５６】
本実施の形態では、この二つのタイマ管理情報２０５Ａ、２０５Ｂを、以下で説明するマージンタイマキューイング処理（マージンタイマのタイマ管理情報２０５Ａ、２０５Ｂをタイマ管理テーブル２０２のタイムスロットにリンク付けする処理を言う）を行い、タイマ管理テーブル２０２に設定する。
【００５７】
［マージンタイマキューイング処理］
図９に、マージンタイマキューイング処理の一例を示したフローチャートを掲げる。以下、図９を参照しながらマージンタイマキューイング処理を説明する。
【００５８】
タイマキューイング処理を開始すると、ＣＰＵ１０１は、マージンタイマ８０１の入力として、前述の第一タイマ管理情報２０５Ａ，第二タイマ管理情報２０５Ｂそれぞれの二つのタイマＩＤ３０３Ａ、３０３Ｂを取得する（Ｓ３１０）。
【００５９】
次に、ＣＰＵ１０１は、タイマＩＤ３０３Ａの指すタイマ管理情報である第一タイマ管理情報２０５Ａのタイマ期限３０４Ａの値に一致する、タイマ管理テーブル２０２のタイムスロット２０３を決定し、決定したタイムスロット２０３に第一タイマ管理情報２０５Ａの前方リンク３０１Ａ及び後方リンク３０２Ａを使用して、キューイングを行う（Ｓ３２０）。
【００６０】
次に、ＣＰＵ１０１は、変数iに、ステップＳ３２０でキューイングを行ったタイムスロット２０３位置に１を加算した値を代入する（Ｓ３３０）。
【００６１】
次に、ＣＰＵ１０１は、変数iの値が指すタイムスロット２０３の位置が第二タイマ管理情報のタイマ期限３０４Ｂ、すなわち第一タイマ管理情報２０５Ａのタイマ期限３０４Ａの値に許容誤差を加算した値を超えたか否か（以下、「第一判定条件」と呼ぶ）、又は前述の変数iの値が指すタイムスロット２０３の位置に別のノーマルタイマが存在するか否か（以下、第二判定条件）を判定する（Ｓ３４０）。
【００６２】
ステップＳ３４０の判定において、第一判定条件及び第二判定条件のいずれも満たさないと判定した場合（Ｓ３４０，Ｎｏ）、ＣＰＵ１０１は、変数iの値をインクリメントし（Ｓ３５０）、次のタイムスロット２０３について第一判定条件、第二判定条件を満たすか否かの判定を繰り返す（Ｓ３４０）。
【００６３】
一方、ステップＳ３４０の判定において、第一判定条件、第二判定条件のいずれかが満たされている場合（Ｓ３４０，Ｙｅｓ）、ＣＰＵ１０１は、変数iが指すタイムスロット２０３の位置に、タイマＩＤ３０３Ｂの指すタイマ管理情報である第二タイマ管理情報２０５Ｂの前方リンク３０１Ｂ、後方リンク３０２Ｂを使用してキューイングを行ない（Ｓ３６０）、その後このマージンタイマキューイング処理を終了する。
【００６４】
この方法を使うと、ステップＳ３４０の条件判定により、アイドル時では、すでにキューイングされている別のノーマルタイマと同じタイムスロットで実行されるようにマージンタイマが設定されるため、次に実行すべきタイマの期限の評価の制御フローでも、ノーマルタイマを使用したときよりも大きな値が得られ、デフェラブルタイマの実行時間が保証されない問題も第二タイマ管理情報２０５Ｂにより保障することで解決できる。
【００６５】
従って、第一タイマ管理情報２０５Ａのタイマ期限３０４Ａの値に許容誤差を加算した値に対応するタイムスロット２０３、或いは別のノーマルタイマが存在するタイムスロット２０３（但し、第一タイマ管理情報２０５Ａのタイマ期限３０４Ａの値に許容誤差を加算した値に対応するタイムスロット２０３より前のタイムスロットに限る）の位置にクロックダイアル２０１の値が到達した場合に、本マージンタイマ８０１の実行が行われることになる。
【００６６】
よって、実行期限を保証する誤差を指定できるタイマであって、かつ、タイマの期限について意識することを必要とせず、省電力効果を得られるソフトタイマの使用を可能とすることができる。
【００６７】
タイマ管理装置１０は、上述のマージンタイマキューイング処理によって、タイムスロット２０３にリンクされた第一タイマ管理情報２０５Ａ、第二タイマ管理情報２０５Ｂで構成されるマージンタイマを用いることで、次に実行すべきタイマの期限の評価の制御フローでも、ノーマルタイマを使用したときよりも大きな値が得られ、デフェラブルタイマの実行時間が保証されない問題もタイマ管理情報で保障することで解決できる。
【００６８】
［本発明の利点］
アイドル時におけるタイマ割り込みの頻度を減らし、かつ許容誤差の範囲内で実行されることを保証するため、使用者がタイマの実行期限について意識することなく省電力効果が得られる。
【図面の簡単な説明】
【００６９】
【図１】タイマ管理装置のハードウエア構成の一例を示したブロック図
【図２】タイマ管理装置による基本的なタイマ管理テーブルを用いたソフトウエアタイマの管理方法を図解したブロック図
【図３】従来の一般的なタイマ管理情報のデータ構成例を示したブロック図
【図４】あるタイムスロットと、このタイムスロットからリンクされているタイマ管理情報との関係を示す図
【図５】タイマ管理テーブルを利用したアイドル処理の一例を示したフローチャート
【図６】タイマイベントの評価処理の処理例を示すフローチャート
【図７】タイマ管理装置がタイマを実行するタイマ実行処理の一例を示したフローチャート
【図８】マージンタイマにかかるタイマ管理情報のデータ構成例を示す図
【図９】マージンタイマキューイング処理の一例を示したフローチャート
【符号の説明】
【００７０】
１０        …  タイマ管理装置
１０１      …  ＣＰＵ
１０２      …  メモリ
１０３      …  ハードウエアタイマ
２０２      …  タイマ管理テーブル
２０３      …  タイムスロット
２０５      …  タイマ管理情報
２０５Ａ    …  第一タイマ管理情報
２０５Ｂ    …  第二タイマ管理情報
８０１      …  マージンタイマ管理情報
【図１】
0005127541.tif 000002
【図２】
0005127541.tif 000003
【図３】
0005127541.tif 000004
【図４】
0005127541.tif 000005
【図５】
0005127541.tif 000006
【図６】
0005127541.tif 000007
【図７】
0005127541.tif 000008
【図８】
0005127541.tif 000009
【図９】
0005127541.tif 000010