JP4449255B2 - タスクスケジューリング装置及びタスクスケジューリング方法 - Google Patents
タスクスケジューリング装置及びタスクスケジューリング方法 Download PDFInfo
- Publication number
- JP4449255B2 JP4449255B2 JP2001172731A JP2001172731A JP4449255B2 JP 4449255 B2 JP4449255 B2 JP 4449255B2 JP 2001172731 A JP2001172731 A JP 2001172731A JP 2001172731 A JP2001172731 A JP 2001172731A JP 4449255 B2 JP4449255 B2 JP 4449255B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- limit
- unit
- queue
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Combined Controls Of Internal Combustion Engines (AREA)
Description
【発明の属する技術分野】
タスクスケジューリング装置及びタスクスケジューリング方法に関する。
【0002】
【従来の技術】
従来から、複数のタスクを擬似的に並列に処理するマルチタスキング処理において、各タスクの実行順序を決定する方法、つまりスケジューリングについて種々の検討がなされてきた。現在、多くのRTOS(リアルタイム処理に用いられるオペレーティングシステム)では各タスクに優先度を割り当て、優先度の高いタスクから順に実行する優先度固定型のスケジューリングが用いられている。
【0003】
しかしながら、この方式ではそれぞれのタスクがいつ終了するかは予測不能であり、いわゆるリアルタイム処理が必要な場合のように、タスクに明確なデッドライン(その時点までに該タスクが終了することが必要な期限)がある場合に、そのデッドラインを保証してスケジューリングを行うことは不可能であった。このようなリアルタイム処理を必要とするスケジューリング方法として、デッドラインでタスクの実行を管理するEDF(Earlist Deadline First)スケジューリング方式が知られている。これはデッドラインに最も近いタスクから実行権を与える方式である。この方式については以下の文献で紹介されている。
【0004】
Xu and Parnas, "Scheduling Process with Release Times, Deadlines, Precedence, and Exclusion Relations", IEEE Transactions on Software Engineering, Vol.16, No.3, March 1990, pp.360-369.
藤倉俊幸、”スケジューリング可能性を判定する理論と手法”、月刊インターフェース1998年12月、p101〜p112、CQ出版社
この方式は、各タスクがデッドラインを守ることができるようにスケジューリングする方式としては、最も直接的で確実である。
【0005】
【発明が解決しようとする課題】
しかしながら、EDFスケジューリング方式を適用する為にはすべてのタスクの明確なデッドラインが既知でなくてはならない。ただし、システムによってはデッドラインが、時間により変化するようなタスクが存在する場合がある。たとえばリアルタイム性が要求されるエンジン制御を例にとって見ると、エンジン制御には点火タスク、燃料噴射タスク等のクランク角からの入力される割込み信号の回数でデッドラインが決まるタスクと、何ミリ秒毎といった実時間で予めデッドラインが決まったタスクが混在して動作する。そしてクランク角からの割込み信号に同期したタスクはエンジンの回転数によってクランク割込み信号の間隔が変わり、デッドラインがダイナミックに変化することになる。従ってエンジン回転数により、何ミリ秒毎といった固定周期で起動されるタスクとの実行順位が入れ替わる可能性がある。この為に、エンジン回転数の変化にともないEDFスケジューリングを頻繁に行わなければならない。エンジン回転数は連続的に変化する為、EDFスケジューリングをその度に行なった場合、CPUがスケジューリングに多大な処理時間を費やし、本来のタスク処理に費やす時間が圧迫されることが問題となる。
【0006】
例えば、割込み信号の回数でデッドラインが決まるタスク(所定のイベント入力回数(制限回数)内に実行を完了すべきタスク)である制限回数タスクと、絶対時間で予めデッドラインが決められたタスク(所定時間(制限時間)内に実行を完了すべきタスク)である制限時間タスクとが混在する場合に、最もデッドラインに近いタスク(ディスパッチすべきタスク)を決定するためには、例えば制限回数タスク群のデッドラインの表現単位であるイベント入力の回数(制限回数)を所定の換算係数等を用いて制限時間に換算し、制限時間タスク群と合わせて、制限時間の昇べきの順にすべてのタスクを1つのキューに整列して、一番先頭のタスクを選択するなどする必要がある。このようにした場合、制限回数から制限時間へ換算する際の換算係数はイベント入力の周期(間隔)に応じて変化するので、イベント入力の周期が変わる毎に、すべての制限回数タスクのデッドライン(制限回数)を制限時間へ換算しなければならず、しかもこの換算したすべての制限回数タスクとすべての制限時間タスクとを合わせてタスクの制限時間の大きさによってキュー内のタスクを再整列する処理も行わなければならない。そのためCPUがスケジューリングに多大な処理時間を費やし、本来のタスク処理に費やす時間が圧迫されてしまう。
【0007】
そこで本発明は、例えば制限時間タスクと制限回数タスクのように、デッドラインの表現単位が異なるタスクが混在し、デッドラインが時間によって変化する表現単位を含む場合に特に効率よくスケジューリングを行うことのできるスケジューリング装置及びスケジューリング方法を提供することを目的とする。
【0008】
【課題を解決するための手段及び発明の効果】
上述した問題点を解決するためになされた請求項1に記載のタスクスケジューリング装置は、デッドラインの表現単位別にタスクを管理する。そして、デッドラインの表現単位別に管理された各タスク群において、それぞれのタスク群中で最もデッドラインの近いタスクを抽出し、その抽出されたタスクのうち換算すべき表現単位のタスクのデッドラインを、基準となる表現単位にそれぞれ換算する。基準となる表現単位は、管理している表現単位のうちのいずれかの表現単位を利用してもよいし、また、例えば、別の所定の表現単位を利用してもよい。管理しているいずれかの表現単位を基準とする表現単位とする場合には抽出されたタスクのうち基準となる表現単位以外のタスクのデッドラインを、基準となる表現単位にそれぞれ換算してその換算されたデッドラインと基準となる表現単位のデッドラインとの中で最もデッドラインの近いタスクをディスパッチする。一方、別の所定の表現単位を基準とする表現単位とする場合であれば、抽出されたタスクを所定の基準となる表現単位にそれぞれ換算してその換算されたデッドラインの中で最もデッドラインの近いタスクをディスパッチしても良い。
【0009】
例えば、請求項2に示すように、デッドラインが絶対時間により決まるタスク、すなわちデッドラインが実時間で制限される制限時間タスク(表現単位が制限時間)と、デッドラインがイベントの発生回数により決まる制限回数タスク(表現単位が制限回数)とがある場合には、制限時間タスクと制限回数タスクを別々に管理する。そして、制限時間タスク群の中で最もデッドラインに近いタスクと制限回数タスク群の中で最もデッドラインに近いタスクとから、換算すべきタスクを基準となる表現単位のデッドラインに換算する。
【0010】
例えば、基準となる表現単位として制限時間を用いる場合には、制限回数タスク群の中で最もデッドラインに近いタスクの制限回数を制限時間に換算する。そしてこの換算した制限時間と制限時間タスク群の中で最もデッドラインに近いタスクの制限時間との中で、制限時間の最も小さいタスクをディスパッチする。
【0011】
一方、基準となる表現単位として制限回数を用いる場合には、制限時間タスク群の中で最もデッドラインに近いタスクの制限時間を制限回数に換算する。そしてこの換算した制限回数と制限回数タスク群の中で最もデッドラインに近いタスクの制限回数とを比較して、制限回数の最も少ないタスクをディスパッチする。
【0012】
また、基準となる表現単位として制限回数や制限時間とは別の所定の制限単位を用いる場合には、制限回数タスク群の中で最もデッドラインに近いタスクの制限回数を所定の制限単位に換算し、制限時間タスク群の中で最もデッドラインに近いタスクの制限時間を所定の制限単位に換算する。そして換算された制限単位の値を比較してその値の最も小さいタスクをディスパッチする。
【0013】
このようにデッドラインの表現単位が異なるタスクを別々に管理し、各々の表現単位のタスク群の中で最もデッドラインに近いタスクをそれぞれ抽出するので、各表現単位内ではそれぞれの表現単位のままで管理することができる。したがって、従来は1つにまとめて管理する場合に必要なすべてのタスクの表現単位の値の換算処理や、換算後の値を用いて整列する処理などが不要になり、効率よくスケジューリングを行うことのできる。
【0014】
しかも、換算内容が時々刻々変化するものがある場合には、単に抽出されたそれぞれの表現単位における最もデッドラインの近いタスクのうち、換算内容の変化したタスクを換算しなおして、最もデッドラインの近いタスクを選ぶだけでよい。したがって従来のように換算内容が変化するたびにすべてのタスクの換算をし直して整列し直す必要がない。よって、例えば、エンジンの回転によって発生するクランク割込み等のようにイベントの周期に応じて換算係数等の換算方法(換算関数)が変化する場合においても、スケジューリングを効率よく行うことができる。
【0015】
なお基準となる表現単位は、表現単位を統一した際に最小のピッチを持つ表現単位を採用するとよい。すなわち例えば、表現単位を統一しようとした際に制限時間の方が制限回数より細かいピッチで表現される場合には制限時間を基準となる表現単位とし、制限回数の方が制限時間より細かいピッチで表現される場合には制限回数を基準となる表現単位とすればよい。こうすることで換算後の値を正確な値とすることができる。
【0016】
そして、請求項3に示すように、複数の種類のイベントが存在し、各種類のイベントは、他の種類のイベントと重なることなく、1または複数のデッドラインがイベントの発生回数により決まるタスクに対応しており、該タスクのデッドラインは、対応する種類のイベントの発生回数により決まるよう構成されていても良い。そして、デッドラインが絶対時間により決まるタスクの表現単位を、基準となる表現単位とし、デッドラインがイベントの発生回数により決まるタスク群に関しては、イベントの種類別にタスクを管理し、イベントの種類別に管理された各タスク群において、それぞれのタスク群中で最もデッドラインに近いタスクを抽出し、該抽出されたタスクのデッドラインを基準となる表現単位にそれぞれ換算して該換算されたデッドラインと基準となる表現単位のデッドラインとの中で最もデッドラインの近いタスクをディスパッチしても良い。このようにすれば、イベントの種類毎にタスクが管理されるので、あるイベントが発生した際にはそのイベントに関して管理されたタスク群に対して処理を行うだけで済む。また、換算もイベントの種類毎行うので、例えば換算係数等をイベントの種類毎に変えることも容易にできる。
【0017】
なおそれぞれの表現単位別のタスクの管理は例えば請求項4のようにするとよい。このようにすれば、管理を容易に行うことができる。
このように請求項1〜4のいずれかに記載のタスクスケジューリング装置よれば、すべてのタスクを1つにまとめて管理する場合に比べて、効率よくEDFスケジューリングを行うことができる。
【0018】
こうしたタスクスケジューリング装置は、例えば請求項5に示すように構成することができる。請求項5に記載のタスクスケジューリング装置によれば、換算部によって制限回数キュー部の先頭タスクが持つ制限回数が制限時間に換算され、制限時間キュー部の先頭タスクが持つ制限時間と比較して制限時間が最も短いタスクをディスパッチする。
【0019】
したがって、ディスパッチすべきタスクを決定するために、従来のようにデッドラインが制限回数で表現されるすべてのタスクのデッドラインを制限時間によるデッドラインに換算して整列する必要はなく、それぞれの制限回数キュー部の先頭タスクのみ制限時間に換算するだけで済む。したがって例えば換算部における換算係数が、時間の経過に伴って変化しても、先頭タスクのみ新たな換算係数を用いて制限時間に換算するだけでよい。よって、デッドラインが実時間で制限されるタスクと、デッドラインがイベント等の割り込み回数で決まりその割り込み周期が時間とともに変化するタスクを含むシステムにおいて、効率よくEDFスケジューリングを行うことができる。
【0020】
なお、このようなスケジューリングは、ソフトウェアでもハードウェアでも行うことができる。
そしてこうした制限時間キュー部は、例えば請求項6のように構成することができる。また制限回数キュー部は、例えば請求項7のように構成することができる。
【0021】
請求項6に記載のタスクスケジューリング装置は、制限時間キュー部の各タスクの制限時間を、基本周期信号に同期してディクリメントする。また、新たなタスクを追加する際に制限時間の短い順に再整列する。
同様に請求項7に記載のタスクスケジューリング装置は、制限回数キュー部の各タスクの制限回数を、基本周期信号に同期してディクリメントする。また、新たなタスクを追加する際に制限回数の少ない順に再整列する。
【0022】
制限回数キュー部の先頭タスクが持つ制限回数を制限時間に換算する方法としては、種々の方法がありうる。例えば、制限回数と制限時間の関係をルックアップテーブルとして持ち、制限回数をインデックスとして制限時間に換算するようにしてもよい。また例えば、請求項8に示すように制限回数キュー部の持つ制限回数に基本周期信号の入力回数により求めたイベント入力の周期を乗じて制限時間に換算するようにしてもよい。
【0023】
また請求項9に示すように、あるイベントが入力されてから次に同じイベントが入力されるまでの間、基本周期信号入力に同期して制限回数キュー部の先頭タスクが持つ制限回数分を累積加算して換算するようにしてもよい。そして、この場合、選択部は制限回数キュー部に待ちタスクが存在しない場合には、請求項10に示すように累積加算を行わず、制限時間キュー部の先頭タスクを優先的に実行するようにしてもよい。
【0024】
請求項8〜10に示すように、イベント周期内の基本周期信号の入力回数を換算係数として用いるのは、次のイベント入力までの時間をイベント入力の周期から推定することに相当する。すなわちイベント入力の間隔が相対的に短ければイベント周期内の基本周期信号の入力回数は小さくなり換算後の制限時間は短くなる。一方、イベント入力の間隔が相対的に長ければ基本周期信号の入力回数は大きくなり、制限時間は長くなる。すなわち周期から制限時間を推定することに相当する。このような換算方法は、イベント信号の入力間隔がまったくランダムではなく、ある連続性を持って変化する場合に特に有効である。例えばエンジン制御のように機械系の動作を検出するセンサ等からの入力信号は、ある連続性を持って変化する場合が多く、特に有効である。
【0025】
なお、請求項11〜16は、請求項5〜10に記載の内容にそれぞれ対応するタスクスケジューリング方法であり、それぞれ対応する請求項の効果と同様の効果を奏する。例えば、請求項11に記載のタスクスケジューリング方法によれば、上述した請求項5に記載のタスクスケジューリング装置における効果と同様の効果を奏する。
【0026】
【発明の実施の形態】
以下、本発明が適用された実施例について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施例に何ら限定されることなく、本発明の技術的範囲に属する限り種々の形態を採りうることは言うまでもない。
[第1実施例]
図1は第1実施例としてのタスクスケジューリング装置100の構成を示す図である。本実施例のタスクスケジューリング装置100は、制限時間キュー部10、第1〜第NまでのN個の制限回数キュー部20、第1〜第NまでのN個の換算部30、選択部40、ディスパッチ部50より構成される。
【0027】
制限時間キュー部10は実行可能かつデッドラインがタイマー割込み等の基本周期信号に同期した実時間で決まるタスクが待ち行列を形成する。基本周期信号は、CPUに使用されるクロックを分周したもので、例えばCPUの10MHzのクロックを10000分の1分周することにより1msの周期の基本周期信号を生成する。待ち行列には、各タスクに予め割り当てられたIDと各タスクに対する現時刻における制限時間とのペアを制限時間が小さいタスク(デッドラインが近いタスク)順に整列し、先頭に位置するタスクの制限時間とタスクIDを選択部40に出力する。また、制限時間キュー(待ち行列)中の各タスクに対する制限時間はタイマー割込みが入る毎に、デクリメントする。
【0028】
第1〜第N制限回数キュー部20は実行可能かつデッドラインが第1〜第Nのそれぞれのイベントの入力回数で決まるタスクが待ち行列を形成する。この待ち行列には各タスクに予め割り当てられたIDと各タスクの現時刻における各イベント入力に対する制限回数とのペアを制限回数が小さいタスク(デッドラインが近いタスク)順に整列し、先頭に位置するタスクの制限回数を換算部30へ、タスクIDを選択部40へ出力する。また、制限回数キュー部20中の各タスクに対する制限回数はイベント入力が起こる毎に、デクリメントする。
【0029】
第1〜第N換算部30はそれぞれ第1〜第N制限回数キュー部20より出力される先頭タスクの制限回数を、制限時間に換算し、換算結果を選択部40へ出力する。
選択部40は、制限時間キュー部10の先頭タスクの現時点での制限時間と、第1〜第N制限回数キュー部20のそれぞれの先頭タスクの現時点での制限回数をそれぞれ第1〜第N換算部30で換算した換算結果の制限時間と比較し、これらの中で最も制限時間が少ないタスクを選択して、そのタスクIDをディスパッチ部50に出力する。
【0030】
ディスパッチ部50は選択部40より入力したタスクIDが、現在、CPUで実行中のタスクに対するタスクIDと異なる場合に、選択部40より入力したタスクIDのタスクのディスパッチを実施する。このようにして最もデッドラインに近いタスクを実行させることができる。
【0031】
なお、換算部30と選択部40とを合わせ、図1に破線で示す部分を換算選択部としてまとめたブロック構成としてもよい。
以下、さらに具体的にタスクスケジューリング装置100の構成及び動作を説明する。ここでは、説明を分かりやすくするため、制限回数キュー部20が1つのみ(N=1)の場合について説明する。
【0032】
例えば、図2に示すように、現在の制限時間キュー部10の先頭のタスクIDが2で制限時間が19、制限回数キュー部20の先頭のタスクIDが1で制限回数が6の場合について考えてみる。この制限回数「6」は、図3に示す換算部30によって制限時間に換算する。なお図3に示す換算部30は請求項10に記載の換算部に相当する。
【0033】
換算部30の動作を図3のブロック図及び図4に示すタイミングチャートを用いて説明する。
図3の換算部30に入力されるイベント入力信号は、外部から非同期に入力されたイベント割込み信号を一旦、基本周期信号でラッチすることにより、基本制御信号に同期した信号としたものである。図3に示すREG1は制限回数キュー部20の先頭タスクの制限回数を記憶するレジスタで、Selector1の出力が入力される。Selector1は制御信号であるイベント入力信号が0の場合はREG1の出力を、1の場合はREG1の出力をデクリメント(DEC)した結果を出力するセレクタである。これによりREG1はイベント入力信号が1で、かつ基本周期信号の立ち上がりに同期して制限回数をデクリメントする。図4のタイミングチャートにおいては、1回目のイベント入力信号が1の際に、基本周期信号の立ち上がりに同期してREG1が6から5にデクリメントされる動作がそれに相当する(時刻t1参照)。
【0034】
REG2はSelector2の出力が入力されるレジスタである。Selector2は制御信号であるイベント入力信号が0の場合はREG2の値とREG1の出力からデクリメント(DEC)した値を加算した結果を、1の場合は0を出力するセレクタである。これによりREG2は基本周期信号の立ち上がり時に、イベント入力信号が1の場合は、値を0にリセットし、0の場合はREG1からデクリメントした値を自自身の値に加算する。図4のタイミングチャートにおいては1回目のイベント入力信号が1の際に、基本周期信号の立ち上がりで0にリセットされ(時刻t1参照)、その後、基本周期信号の立ち上がりに同期して、4、8、12とREG1が保持する5から1デクリメントした4づつ累積加算を行う動作がそれに相当する。
【0035】
REG3はSelector3の出力が入力されるレジスタである。Selector3は制御信号であるイベント入力信号が0の場合はREG3の値からデクリメント(DEC)した値を、1の場合はAdderの値を出力するセレクタである。これによりREG3は基本周期信号の立ち上がり時に、イベント入力信号が0の場合は、自身の値をデクリメントし、1の場合はREG2が保持する値とREG1をデクリメントした値を加算した値をプリセットする。図4のタイミングチャートにおいて、2回目のイベント入力信号が1で、かつ基本周期信号の立ち上がりに同期して、REG2が保持する値「12」とREG1をデクリメントした値「4」を加算した値「16」をプリセットし(時刻t2参照)、その後、基本周期信号の立ち上がりに同期して、15、14とデクリメントする動作がそれに相当する。
【0036】
以上の動作により求まる制限回数キュー部20の先頭タスクの制限回数を制限時間に換算した結果(REG3)と、制限時間キュー部10の先頭タスクの制限時間が選択部40へ出力され、選択部40においてこれらの制限時間の大小判定を行い、小さい値を持つ方の先頭タスクのタスクIDをディスパッチ部50に出力し、ディスパッチ部50でそのタスクIDのタスクをディスパッチすることでそのタスクがCPUで実行されることになる。図4のタイミングチャートにおいては、制限時間キュー部10の先頭タスクの制限時間が7の時に、制限回数キュー部20の先頭タスクの制限時間(REG3)の値が制限時間キュー部10の制限時間より小さくなる為、選択部40が出力するタスクIDが2から1へと変化する(時刻t3参照)。これによりディスパッチ部50によりタスク2からタスク1へのディスパッチ処理が実施される。このようなディスパッチが起きたのは、イベント入力信号の周期が時間とともに短い周期へと変化し、制限回数で示すタスク1のデッドラインの方が、制限時間で示すタスク2のデッドラインより早まったことによる。
【0037】
なお、制限回数キュー部20が複数ある場合(図1においてN>1)にも、それぞれの制限回数キュー部20は、同様に動作する。そして、選択部40は、それぞれの第1〜第N換算部30によって換算されたそれぞれの換算結果の換算時間と、制限時間キュー部10の出力する制限時間との中で、最も制限時間の短いタスクを選択し、そのタスクIDをディスパッチ部50へ出力する。したがって、もっともデッドラインに近いタスクがCPUによって実行される。
【0038】
このようにして、制限時間キュー部10と制限回数キュー部20とをそれぞれ別のキューとして備え、例えば何ミリ秒毎といった実時間で予めデッドラインが決まったタスク(タスクIDと制限時間のペア)は制限時間キュー部10に制限時間の短い順に並べる一方、デッドラインが割込みの間隔で変化するタスクについてはそれぞれのイベント毎の制限回数キュー部20を設け、それぞれの制限回数キュー部20内で制限回数の短い順にタスク(タスクIDと制限回数のペア)を並べる。そして、制限回数キュー部20の先頭タスクの制限回数を換算部30で制限時間に換算して、選択部40はこの換算結果の制限時間群と制限時間キュー部10の先頭タスクの制限時間との中で最も制限時間が少ないタスクのタスクIDをディスパッチ部50へ出力し、ディスパッチ部50がそのタスクIDのタスクをディスパッチする。
【0039】
よって、従来のようにキューが1本で制限回数を毎度制限時間に変換してキュー内のタスク(タスクIDと制限時間のペア)の並べ替えをし、そのキューの先頭タスクをディスパッチする方式に比べて処理時間がかからず、効率よくスケジューリングを行うことができる。
[第2実施例]
第2実施例は、第1実施例の構成のうち換算部30の構成を図3に示した構成から図5に示す構成に代えたものである。図5の換算部30は請求項9に記載の換算部に相当する。
【0040】
第1実施例と同様にして、制限時間キュー部10及び制限回数キュー部20の状態が図2に示す状態であるものとして、図5の換算部30を用いた場合の動作を図6のタイミングチャートに示して説明する。
図5に示すREG1は、図3に示すREG1と同様の動作となる。
【0041】
REG2はSelector2の出力が入力される。Selector2は制御信号であるイベント入力信号が0の場合はREG2の値をインクリメントした値を、1の場合は1を出力する。これによりREG2は基本周期信号の立ち上がり時に、イベント入力信号が1の場合は、値を1にプリセットし、1の場合は自身の値をインクリメントする。図6のタイミングチャートにおいては1回目のイベント入力信号が1の際に、基本周期信号の立ち上がりに同期して1にリセットされ(図6のt1参照)、その後、基本周期信号の立ち上がりに同期して、2、3、4とインクリメントする動作がそれに相当する。
【0042】
REG3はSelector3の出力が入力される。Selector3は制御信号であるイベント入力信号が1の場合はREG2の値とREG1からデクリメントした値を乗算した結果を、0の場合はREG3をデクリメントした値を出力する。これによりREG3は基本周期信号の立ち上がり時に、イベント入力信号が1の場合は、乗算結果(Mulの出力)をプリセットし、0の場合はデクリメント動作を行う。図6のタイミングチャートにおいて、2回目のイベント入力信号が1の際に、基本周期信号の立ち上がりに同期して、REG1が保持する値5からデクリメントした値「4」とREG2で保持する値「4」を乗算した値「16」をプリセットし(図6のt2参照)、その後、基本周期信号の立ち上がりに同期して、15、14とデクリメントする動作がそれに相当する。図3、図5においてREG3の導出過程は異なるものの、図4、図6の両タイミングチャートにおいてREG3の保持する値はまったく同じものとなり、その結果ディスパッチ部により同じタイミングでタスクID=2からタスクID=1へのディスパッチ処理が実施される(図6のt3参照)。
[第3実施例]
図7及び図8は、コンピュータによって実行されるタスクスケジューリング処理を示すフローチャートである。図7におけるSTEP1、図8におけるSTEP6は特許請求の範囲に記載の制限時間制御ステップに相当し、STEP2、STEP7は制限回数ステップに相当する。また、STEP3は換算ステップに相当し、STEP4は選択ステップに相当する。そして、STEP5はディスパッチステップに相当する。
【0043】
以下、図7及び図8のフローチャートを参照して処理のながれについて説明する。最初にフローチャート中に用いる変数について説明する。
図7においてTMQ[t]は制限時間キューを表わし、構成要素としてタスクID:TMQ[t].idに、制限時間をTMQ[t].timeを持つ。なおTMQ[0]が0番目の制限時間キュー、すなわち制限時間キューの先頭を表わす。一方、EVQ[t]は制限回数キューを表わし、構成要素としてタスクID:EVQ[t].id、制限回数:EVQ[t].priodを持つ。EVQ[0]が0番目の制限時間キュー、すなわち制限時間キューの先頭を表わす。
【0044】
EVQ.tmpは制限回数キューの先頭タスクの制限回数を制限時間に換算する際に一時的に値を格納する変数である。また、EVQ.timeは制限回数キューの先頭タスクの制限回数を制限時間に換算した結果が代入される変数である。
【0045】
RUN_TSKは現在、CPUにて実行されているタスクのタスクIDが代入される変数であり、TMP_TSKはディスパッチ有無の判定の際に用いる変数である。
また基本周期信号としてはタイマー割込みを、イベント入力信号としてはイベント割込みを想定する。
【0046】
新しいタスクをキューに追加する場合やキューからタスクを削除する場合、図8に示すようする。すなわち、制限時間キューに対してタスクの追加、削除が起きた場合には、STEP6において各タスクの持つ制限時間に基づいてタスクの並び替えを行い、先頭タスクに最も制限時間の短いタスクを持ってきて、以後、制限時間の短い順に整列する。また制限回数キューに対してタスクの追加、削除が起きた場合には、STEP7において各タスクの持つ制限回数に基づいてタスクの並び替えを行い、先頭タスクに最も制限回数の短いタスクを持ってきて、以後、制限回数の少ない順に整列する。
【0047】
一方、割込みが発生すると図7の処理を実行する。はじめに割込みの要因がタイマ割込みか否かを判定し(S100)、タイマ割込みの場合にはSTEP1の処理を実行する(S110へ移行する)。
STEP1において、タイマー割込みにより制限時間キュー上のすべてのタスクの制限時間をデクリメントする。すなわち、はじめにキューの位置を示す値tを0とし(S110)、t番目の制限時間キューであるTMQ[t]に待ち要素があるか否かを判定して(S120)、待ち要素がある場合には(S120:Y)、そのt番目の制限時間キューのタスクの制限時間をデクリメントし(TMQ[t].time−−)、待ち要素の有無を判定する位置を次の位置へ変更し(t++)、S120へ戻る。このようにして待ち要素が無くなるまで、各構成要素の制限時間をデクリメントする。そして、待ち要素が無くなると(S120:N)、STEP3のS140へ移行する。
【0048】
S140では、制限回数キューの先頭EVQ[0]に待ち要素があるか否かを判定し、待ち要素がある場合には(S140:Y)、現在のEVQ.tmpの値に、制限回数キューの先頭タスクの制限回数から1引いた値であるEVQ[0].priod−1を加え、制限回数の換算結果であるEVQ.timeをディクリメントする。一方制限回数キューの先頭EVQ[0]に待ち要素がない場合には(S140:N)この処理を終了する。
【0049】
このようにして、割込み要因がタイマ割込みの場合には(S100:Y)、制限時間キューの待ち要素の制限時間をデクリメントし、制限回数キューの換算結果をディクリメントし、制限回数を制限時間に換算するための累積加算(EVQ.tmp+=(EVQ[0].priod−1)を行う。
【0050】
一方、割込み要因がイベント割込みの場合には(S100:N,S160:Y)、STEP2(S170)からの処理を行う。
STEP2では、イベント割込みにより制限回数キュー上のすべてのタスクの制限回数をデクリメントする。すなわち、STEP1と同様に、はじめにキューの位置を示す値tを0とし(S170)、t番目の制限回数キューであるEVQ[t]に待ち要素があるか否かを判定して(S180)、待ち要素がある場合には(S180:Y)、そのt番目の制限回数キューのタスクの制限回数をデクリメントし(EVQ[t].priod−−)、待ち要素の有無を判定する位置を次の位置へ変更し(t++)、S180へ戻る。このようにして待ち要素が無くなるまで、各構成要素の制限回数をデクリメントする。そして、待ち要素が無くなると(S120:N)、STEP3のS200へ移行する。
【0051】
S200では、制限回数キューの先頭EVQ[0]に待ち要素があるか否かを判定し、待ち要素がある場合には(S200:Y)、制限回数キューの先頭タスクの制限回数の制限時間への換算結果であるEVQ.timeにEVQ.tmpの値を代入し、EVQ.tmpをリセットする(EVQ.tmp=0)(S210)。
【0052】
続いてSTEP4では、RUN_TSKをTMP_TSKに待避し(S220)、制限時間キューの先頭タスクの制限時間TMQ[0].timeと制限回数キューの先頭タスクの制限回数を制限時間に換算したEVQ.timeを比較し(S230)、制限時間キューの先頭タスクの制限時間が制限回数キューの先頭タスクの制限回数を換算した制限時間より小さい(TMQ[0].time <EVQ.time)場合は(S230:Y)、制限時間キューの先頭タスクのタスクIDをRUN_TSKに代入し(RUN_TSK=TMQ[0].id)(S240)、そうでない場合は(S230:N)、制限回数キューの先頭タスクのタスクIDをRUN_TSKに代入する(RUN_TSK=EVQ[0].id)(S250)。
【0053】
続くSTEP5では、TMP_TSKとRUN_TSKが異なるか否かを判定し(S260)、TMP_TSKとRUN_TSKが異なる場合は(S260:Y)、現在CPUにて実行しているタスクと異なるタスクをCPUで実行する必要がある為、タスクIDがTMP_TSKのタスクからタスクIDがRUN_TSKのタスクへのディスパッチ処理を実行する(S270)。
【0054】
このように、STEP3の処理によって、制限回数キューの先頭タスクの制限回数を制限時間に換算し、その換算結果の制限時間と制限時間キューの先頭の制限時間を比較することで、タスクスケジューリングを行う。したがって、スケジューリングのコストを減らすことができる。
【0055】
なお、本実施例においてSTEP3のS150の処理が請求項16に記載の加算ステップに相当する。
[第4実施例]
第3実施例における図7のSTEP3の換算処理に代えて、図9に示すSTEP3の処理を行うように構成することもできる。すなわち、図7のS150に代えて、図9のS155を行い、図7のS210に代えて、図9のS215を行う。その他の処理は、第3実施例と同様であるので、S155及びS215の処理について説明する。
【0056】
STEP3において、タイマー割込みが起き(S100:Y)、制限回数キューにタスクが存在する場合に(S140:Y)、EVQ.tmpをインクリメントし、換算結果EVQ.timeをデクリメントする。また、イベント割込みが起き(S100:Y,S160:Y)、制限回数キューにタスクが存在する場合は(S200:Y)、制限回数キューの先頭タスクの制限回数から1減じた値(EVQ[0].priod−1)にEVQ.tmpを乗じた値をEVQ.timeに代入し、EVQ.tmpを0にリセットする(S215)。
【0057】
このようにして、制限回数キューの先頭タスクの制限回数を制限時間に換算してもよい。本実施例においてSTEP3のS215の処理が請求項15に記載の乗算ステップに相当する。
[第5実施例]
第1実施例から第4実施例では、制限回数キュー部の先頭タスクを換算部で制限時間に換算することで、デッドラインの最も短いタスクを選択しているが、逆に、制限時間を制限回数に換算した上ですることでデッドラインの最も短いタスクを選択するようにしてもよい。
【0058】
すなわち、制限回数の最小周期と制限時間の最小周期(基本周期)を比較して小さい方の値に変換すればよいので、制限回数の方が制限時間より小さい周期の場合にはこのような構成になる。
例えば、第1イベント入力信号の制限回数で換算する場合には、図10に示すように、制限時間キュー部10の先頭の制限時間を第1換算部30において第1イベント入力信号の制限回数で換算する一方、図示しない第2制限回数キュー部20〜第N制限回数キュー部20までの制限回数を第1イベント入力信号の制限回数で換算する。そして、これら換算部30からの出力と第1制限回数キュー部の先頭の制限回数との中で最も制限回数が少ないタスクのタスクIDを選択部40で選択し、ディスパッチ部50へ出力する。したがって、最もデッドラインに近いタスクが実行されることになる。
[第6実施例]
第1〜第4実施例の構成において、換算部あるいは換算ステップは、制限回数と制限時間の関係をルックアップテーブルにしておいて、制限回数をインデックスとして制限時間を求めることもできる。第5実施例においても同様にルックアップテーブルを用いて変換してもよい。
[第7実施例]
第1実施例〜第6実施例に記載の構成は、例えばエンジンの電子制御装置(ECU)におけるタスクスケジューリング装置として用いることができる。例えば、基本周期が1msのECUにおける制御用タスクとして、制限時間が21msのエンジンの水温検知タスクと、制限時間が19msの吸気管の圧力検知タスクと、制限回数が2回でエンジン1回転毎にかかる割込みに基づく処理タスクがある場合に、例えばエンジンの回転数が6000rpmの場合には、換算係数は10msとなる。この場合、換算後の制限時間は10ms×2=20msとなり、制限時間が19msの吸気管の圧力検知タスクがディスパッチされることになる。しかし、エンジンの回転数の変化に応じて、これらの優先順位は変化する。この例のように、タスクの優先順位がクロスするオーダーのデッドラインを持つタスクを持つ場合に特に有効に機能する。
【図面の簡単な説明】
【図1】タスクスケジューリング装置の構成を示すブロック図である。
【図2】第1実施例の制限時間及び制限回数の例を示す図である。
【図3】第1実施例の制限回数キュー部と換算部の構成を示す説明図である。
【図4】第1実施例の制限回数キュー部・換算部・選択部の動作を示す説明図である。
【図5】第2実施例の換算部の構成を示す図である。
【図6】第2実施例の制限回数キュー部・換算部・選択部の動作を示す説明図である。
【図7】第3実施例のタスクスケジューリング処理における割込み時の処理を示すフローチャートである。
【図8】第3実施例のタスクスケジューリング処理におけるタスク状態変化時の処理を示すフローチャートである。
【図9】第4実施例のタスクスケジューリング処理を示すフローチャートである。
【図10】第5実施例のタスクスケジューリング装置の構成を示すブロック図である。
【符号の説明】
100…タスクスケジューリング装置
10…制限時間キュー部
20…制限回数キュー部
30…換算部
40…選択部
50…ディスパッチ部
Claims (16)
- デッドラインの表現単位が異なるタスクをスケジューリングするタスクスケジューリング装置であって、
前記デッドラインの表現単位別にタスクを管理し、
前記デッドラインの表現単位別に管理された各タスク群において、それぞれのタスク群中で最もデッドラインの近いタスクを抽出し、
該抽出されたタスクのうち基準となる表現単位以外のタスクのデッドラインを前記基準となる表現単位にそれぞれ換算して該換算されたデッドラインと前記基準となる表現単位のデッドラインとの中で最もデッドラインの近いタスクをディスパッチすること
を特徴とするタスクスケジューリング装置。 - 請求項1に記載のタスクスケジューリング装置において、
前記デッドラインの表現単位が異なるタスクとして、デッドラインが絶対時間により決まるタスクとデッドラインがイベントの発生回数により決まるタスクとを管理すること
を特徴とするタスクスケジューリング装置。 - 請求項2に記載のタスクスケジューリング装置において、
複数の種類のイベントが存在し、各種類のイベントは、他の種類のイベントと重なることなく、1または複数の前記デッドラインがイベントの発生回数により決まるタスクに対応しており、該タスクのデッドラインは、対応する種類のイベントの発生回数により決まり、
前記デッドラインが絶対時間により決まるタスクの表現単位を、前記基準となる表現単位とし、
前記デッドラインがイベントの発生回数により決まるタスク群に関しては、イベントの種類別にタスクを管理し、
イベントの種類別に管理された各タスク群において、それぞれのタスク群中で最もデッドラインに近いタスクを抽出し、
該抽出されたタスクのデッドラインを前記基準となる表現単位にそれぞれ換算して該換算されたデッドラインと前記基準となる表現単位のデッドラインとの中で最もデッドラインの近いタスクをディスパッチすること
を特徴とするタスクスケジューリング装置。 - 請求項1〜3のいずれかに記載のタスクスケジューリング装置において、
タスクの管理は、それぞれの前記タスク群別に設けたキューで行い、前記キューはそれぞれデッドラインの近いタスクの順にタスクを整列して格納し、
それぞれの前記タスク群中で最もデッドラインの近いタスクとして、それぞれの前記キューの先頭のタスクを用いること
を特徴とするタスクスケジューリング装置。 - 実行可能状態のタスクの内、最も短い制限時間を持つタスクを優先的に実行する時限優先スケジューリングを行うタスクスケジューリング装置であって、
デッドラインが絶対時間により決まるタスクを制限時間が短い順に並べ、実行順序を管理する制限時間キュー部と、
イベント入力の種類毎に備えられ、デッドラインが当該イベント入力の発生回数により決まるタスクを制限回数が少ない順に並べ、実行順序を管理する制限回数キュー部と、
前記制限回数キュー部の先頭タスクが持つ制限回数を制限時間に換算する換算部と、
前記換算部により得た換算結果の制限時間と、制限時間キュー部の先頭タスクが持つ制限時間を比較し、制限時間が最も短いタスクを次の実行タスクとして選択する選択部と、
前記選択部が選択したタスクが、現在実行しているタスクと異なる場合にタスクを切替えるディスパッチ部とを備えること
を特徴とするタスクスケジューリング装置。 - 請求項5に記載のタスクスケジューリング装置において、
前記制限時間キュー部は、
システムの時間管理に必要な基本周期信号に同期して、前記制限時間キュー部の各タスクの制限時間をデクリメントするデクリメント部と、
新たに前記制限時間キュー部にタスクを追加する場合に、追加するタスクに課された制限時間を、前記制限時間キュー部に並ぶ他のタスクの制限時間と比較し、比較結果に従って前記制限時間キュー部の各タスクを制限時間の短い順に再整列する並び替え部とを備えること
を特徴とするタスクスケジューリング装置。 - 請求項5または6に記載のタスクスケジューリング装置において、
前記制限回数キュー部は、
対象イベントの入力が起こる度に、イベント回数キュー部の各タスクの制限回数をデクリメントするデクリメント部と、
新たに前記制限回数キュー部にタスクを追加する場合に、追加するタスクに課された制限回数を、当該制限回数キュー部に並ぶ他のタスクの制限回数と比較し、比較結果に従って当該制限回数キュー部の各タスクを制限回数の少ない順に再整列する並び替え部とを備えること
を特徴とするタスクスケジューリング装置。 - 請求項5〜7のいずれかに記載のタスクスケジューリング装置において、
前記換算部は、
イベント入力の周期を基本周期信号の入力回数により求めるイベント周期測定部と、
前記制限回数キュー部の先頭タスクが持つ制限回数に、前記イベント割込み周期測定部が求めたイベント入力の周期を乗じる乗算部を備えること
を特徴とするタスクスケジューリング装置。 - 請求項5〜8のいずれかに記載のタスクスケジューリング装置において、
前記換算部は、あるイベントが入力されてから、次に同じイベントが入力されるまでの間、基本周期信号に同期して前記制限回数キュー部の先頭タスクが持つ制限回数分を累積加算する加算部を備えること
を特徴とするタスクスケジューリング装置。 - 請求項9に記載のタスクスケジューリング装置において、
前記選択部は、前記制限回数キュー部に待ちタスクが存在しない場合は、前記累積加算を行わず、前記制限時間キュー部の先頭タスクを優先的に実行させること
を特徴とするタスクスケジューリング装置。 - 実行可能状態のタスクの内、最も短い制限時間を持つタスクを優先的に実行する時限優先スケジューリングを行うタスクスケジューリング方法であって、
デッドラインが絶対時間により決まるタスクを制限時間が短い順に制限時間キュー部に並べ、実行順序を管理する制限時間管理ステップと、
イベント入力の種類毎に備えられ、デッドラインが当該イベント入力の発生回数により決まるタスクを制限回数が少ない順に制限回数キュー部に並べ、実行順序を管理する制限回数管理ステップと、
前記制限回数キュー部の先頭タスクが持つ制限回数を制限時間に換算する換算ステップと、
前記換算ステップにより得た換算結果の制限時間と、制限時間管理ステップにより得た先頭タスクが持つ制限時間を比較し、制限時間が最も短いタスクを次の実行タスクとして選択する選択ステップと、
前記選択ステップにより選択したタスクが、現在実行しているタスクと異なる場合にタスクを切替えるディスパッチステップとを備えること
を特徴とするタスクスケジューリング方法。 - 請求項11に記載のタスクスケジューリング方法において、
前記制限時間管理ステップは、
システムの時間管理に必要な基本周期信号に同期して、前記制限時間キュー部の各タスクの制限時間をデクリメントするデクリメントステップと、
新たに前記制限時間キュー部にタスクを追加する場合に、追加するタスクに課された制限時間を、前記制限時間キュー部に並ぶ他のタスクの制限時間と比較し、比較結果に従って前記制限時間キュー部の各タスク制限時間の短い順に再整列する並び替えステップとを備えること
を特徴とするタスクスケジューリング方法。 - 請求項11または12に記載のタスクスケジューリング方法において、
前記制限回数制御ステップは、
対象イベントの入力が起こる度に、イベント回数キュー部の各タスクの制限回数をデクリメントするデクリメントステップと、
新たに前記制限回数キュー部にタスクを追加する場合に、追加するタスクに課された制限回数を、当該制限回数キュー部に並ぶ他のタスクの制限回数と比較し、比較結果に従って当該制限回数キュー部の各タスクを制限回数の少ない順に再整列する並び替えステップとを備えること
を特徴とするタスクスケジューリング方法。 - 請求項11〜13のいずれかに記載のタスクスケジューリング方法において、
前記換算ステップは、
イベント入力の周期を基本周期信号の入力回数により求めるイベント周期測定ステップと、
前記制限回数管理ステップにより得た先頭タスクが持つ制限回数に、前記イベント周期測ステップにより求めたイベント入力の周期を乗じる乗算ステップを備えること
を特徴とするタスクスケジューリング方法。 - 請求項11〜14のいずれかに記載のタスクスケジューリング方法において、
前記換算ステップは、あるイベントが入力されてから、次に同じイベントが入力されるまでの間、基本周期信号に同期して前記制限回数ステップにより得た先頭タスクが持つ制限回数分を累積加算する加算ステップを備えること
を特徴とするタスクスケジューリング方法。 - 請求項15に記載のタスクスケジューリング方法において、
前記選択ステップは、前記制限回数制御ステップの対象となるタスクが存在しない場合は、前記累積加算を行わず、前記制限時間制御ステップにより得られた先頭タスクを優先的に実行させること
を特徴とするタスクスケジューリング方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001172731A JP4449255B2 (ja) | 2001-06-07 | 2001-06-07 | タスクスケジューリング装置及びタスクスケジューリング方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001172731A JP4449255B2 (ja) | 2001-06-07 | 2001-06-07 | タスクスケジューリング装置及びタスクスケジューリング方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002366373A JP2002366373A (ja) | 2002-12-20 |
JP4449255B2 true JP4449255B2 (ja) | 2010-04-14 |
Family
ID=19014301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001172731A Expired - Fee Related JP4449255B2 (ja) | 2001-06-07 | 2001-06-07 | タスクスケジューリング装置及びタスクスケジューリング方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4449255B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9250967B2 (en) * | 2004-08-23 | 2016-02-02 | Palo Alto Research Center Incorporated | Model-based planning with multi-capacity resources |
US7420115B2 (en) | 2004-12-28 | 2008-09-02 | Yamaha Corporation | Memory access controller for musical sound generating system |
US7912623B2 (en) | 2007-09-25 | 2011-03-22 | Denso Corporation | Engine control system designed to manage schedule of engine control tasks |
JP4544284B2 (ja) * | 2007-09-25 | 2010-09-15 | 株式会社デンソー | エンジン制御装置 |
CN111597016B (zh) * | 2020-04-08 | 2023-02-14 | 延锋伟世通电子科技(上海)有限公司 | 一种系统任务的时间保护方法、系统、存储介质及终端 |
-
2001
- 2001-06-07 JP JP2001172731A patent/JP4449255B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002366373A (ja) | 2002-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6542921B1 (en) | Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor | |
Schranzhofer et al. | Timing analysis for TDMA arbitration in resource sharing systems | |
US20080104610A1 (en) | Hardware threads processor core utilization | |
Liu et al. | Supporting soft real-time DAG-based systems on multiprocessors with no utilization loss | |
US10271326B2 (en) | Scheduling function calls | |
Tang et al. | Combining hard periodic and soft aperiodic real-time task scheduling on heterogeneous compute resources | |
JP4449255B2 (ja) | タスクスケジューリング装置及びタスクスケジューリング方法 | |
JP2020135214A (ja) | タスク管理装置 | |
Abdelzaher et al. | A synthetic utilization bound for aperiodic tasks with resource requirements | |
Henderson et al. | Improving the accuracy of scheduling analysis applied to distributed systems computing minimal response times and reducing jitter | |
US7293004B1 (en) | Method for tuning state-based scheduling policies | |
Marinho et al. | Job phasing aware preemption deferral | |
CN108845870A (zh) | 一种基于pWCET整形的概率性实时任务调度方法 | |
JP7435182B2 (ja) | 電子制御装置 | |
WO2002099639A1 (en) | Method and apparatus to use task priority to scale processor performance | |
WO2019159310A1 (ja) | 電子制御装置 | |
CN114936076B (zh) | 一种面向混合任务集的实时调度方法、装置和计算机设备 | |
Xu | A method for handling process overruns and underruns in real-time embedded systems | |
Sundharam et al. | An optimizing framework for real-time scheduling | |
Xu | Efficiently handling process overruns and underruns on multiprocessors in real-time embedded systems | |
Sommer et al. | Admissibility Tests for Interrupted Earliest Deadline First Scheduling with Priority Inheritance | |
CN113495781A (zh) | 任务调度方法、装置、设备及可读存储介质 | |
Wainer | Implementing Real-Time Scheduling in a Time-Sharing Operating System | |
JP2004171142A (ja) | リアルタイムタスク制御装置、リアルタイムタスク制御方法、プログラム | |
Goh et al. | Reducing response-time bounds via global fixed preemption point edf-like scheduling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070730 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090417 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090609 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090806 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091006 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091207 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100105 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100118 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130205 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |