(57)【特許請求の範囲】
【請求項１】
複数のタスクのそれぞれに設定された優先度に基づいて、実行するタスクを決定するタスク管理手段（１２）と、
前記タスク管理手段が決定する前記タスクを実行するタスク処理手段（１４、Ｓ４００〜Ｓ４０８、Ｓ４１０〜Ｓ４２６、Ｓ４３０〜Ｓ４４０）と、
を備える電子制御装置（１０）であって、
前記タスク処理手段は、
前記複数のタスクとして、処理抜けが許容されない抜け不可タスク（Ｓ４００〜Ｓ４０８）と、前記抜け不可タスクよりも優先度が低く処理抜けが許容される抜け許容タスク（Ｓ４３０〜Ｓ４４０）と、起床されるタイムスライスにおいて、前記抜け許容タスク毎に、デッドラインまでの残り時間を処理を完了するために必要とされる最長処理期間で除算して、前記デッドラインまでに処理抜けを許容できる余裕度を算出し、前記余裕度が最低の前記抜け許容タスクの優先度を現在の優先度よりも高くするスケジュールタスク（Ｓ４１０〜Ｓ４２６）と、を実行する、
ことを特徴とする電子制御装置。
【請求項２】
請求項１に記載の電子制御装置であって、
前記スケジュールタスクの優先度は、前記抜け許容タスクよりも高く前記抜け不可タスクよりも低い、
ことを特徴とする電子制御装置。
【請求項３】
複数のタスクのそれぞれに設定された優先度に基づいて、実行するタスクを決定するタスク管理手段（１２）と、
前記タスク管理手段が決定する前記タスクを実行するタスク処理手段（１４、Ｓ４００〜Ｓ４０８、Ｓ４１０〜Ｓ４２６、Ｓ４３０〜Ｓ４４０）と、
を備える電子制御装置（１０）であって、
前記タスク処理手段は、
前記複数のタスクとして、処理抜けが許容されない抜け不可タスク（Ｓ４００〜Ｓ４０８）と、前記抜け不可タスクよりも優先度が低く処理抜けが許容される抜け許容タスク（Ｓ４３０〜Ｓ４４０）と、起床されるタイムスライスにおいて、前記抜け許容タスク毎にデッドラインまでに処理抜けを許容できる余裕度を算出し、前記余裕度が最低の前記抜け許容タスクの優先度を現在の優先度よりも高くし、優先度が前記抜け許容タスクよりも高く前記抜け不可タスクよりも低いスケジュールタスク（Ｓ４１０〜Ｓ４２６）と、を実行する、
ことを特徴とする電子制御装置。
【請求項４】
請求項１または２に記載の電子制御装置であって、
車両に搭載され、
前記最長処理期間は所定のエンジン回転数の範囲毎に設定されている、
ことを特徴とする電子制御装置。
【請求項５】
請求項１から４のいずれか一項に記載の電子制御装置であって、
前記スケジュールタスク（Ｓ４１８）は、前記起床されるタイムスライスにおいて、前記余裕度が最低の前記抜け許容タスクの優先度を前記抜け許容タスクの中で最高順位にする、
ことを特徴とする電子制御装置。
【請求項６】
請求項１または２または４のいずれか一項を引用する請求項５に記載の電子制御装置であって、
前記抜け許容タスク（Ｓ４３２〜Ｓ４３６）は、自身の前記優先度が前記最高順位のときにおいて、処理を実行した期間と処理の実行を待ち合わせた期間との積算値が現在の前記最長処理期間よりも長い場合、前記積算値で前記最長処理期間を更新する、
ことを特徴とする電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスクの実行を管理する技術に関する。
【背景技術】
【０００２】
リアルタイムＯＳでは、複数のタスクのそれぞれに設定された優先度に基づいて、タスクの実行をスケジューリングしている。この方式では、優先度の高いタスクの実行が優先されるので、処理負荷が高くなると優先度の低いタスクに実行機会が与えられず、処理抜けが生じることがある。
【０００３】
優先度の低いタスクの場合、ある程度の処理抜けは許容されるものの、処理が連続して抜ける回数に制限が設定されていたり、起床してから処理を完了するまでの期間が設定されていたりする。したがって、優先度の低いタスクであっても、設定されたデッドラインまでに処理を完了することが求められる。
【０００４】
タスクの処理抜け回数をカウントし、処理抜け回数に基づいて優先度を高く設定する技術が知られている。
しかし、タスクによってはデッドラインまでの期間の長さが異なることがあるので、処理抜け回数に基づいて優先度を適切に設定することは困難である。例えば、処理抜け回数が多くてもデッドラインまでの期間が長いタスクよりも、処理抜け回数が少なくてもデッドラインまでの期間が短いタスクの実行を優先した方がよい場合もある。
【０００５】
また、ＯＳのスケジューラによるタスクスケジューリング方式を修正して優先度の低いタスクの処理抜けを管理することも考えられる。しかし、ＯＳを修正することは困難である。
【０００６】
特許文献１には、ＯＳのスケジューラとは別にスケジュールタスクを生成し、このスケジュールタスクを優先度の最も高いタスクに設定してスケジュールタスクに他のタスクの優先度を変更する機能を持たせる技術が開示されている。例えば、スケジュールタスクは、タスク情報テーブル中の起動タイミング等のタスク情報に基づいて実行タスクを決定し、ＯＳのスケジューラが実行タスクを実行するように実行タスクの優先度を他のタスクよりも高く設定する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−１５７７３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に開示されている技術は、タスクの起動タイミング等に基づいて実行タスクを決定するものであって、タスクの処理抜けを管理するものではない。
本発明は上記問題を解決するためになされたものであり、タスクの処理抜けを容易かつ適切に管理する技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の電子制御装置は、タスク管理手段と、タスク処理手段と、を備える。タスク管理手段は、複数のタスクの実行を各タスクの優先度に基づいてスケジューリングする。タスク処理手段は、タスク管理手段によるスケジューリングに基づいてタスクを実行する。
【００１０】
タスク処理手段は、複数のタスクとして、タスク抜けが許容されない抜け不可タスクと、抜け不可タスクよりも優先度が低く実行抜けが許容される抜け許容タスクと、抜け許容タスク毎にデッドラインまでに処理抜けを許容できる余裕度を算出し、余裕度が最低の抜け許容タスクの優先度を現在の優先度よりも高くするスケジュールタスクと、を実行する。
【００１１】
この構成によれば、ＯＳのスケジューラとは別のスケジュールタスクにより、デッドラインまでに処理抜けを許容できる余裕度を算出し、余裕度が最低の抜け許容タスクの優先度を現在よりも高くする。ＯＳのスケジューラは、設定された優先度に基づいて実行するタスクを決定する。これにより、予め設定された優先度が低い抜け許容タスクであっても、余裕度が最低になると優先度が高く設定されるので、実行頻度が上昇する。
【００１２】
その結果、ＯＳのスケジューリング方式を修正することなく、抜け許容タスクの処理抜けを容易かつ適切に管理できる。
尚、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１３】
【図１】本実施形態による車載電子制御装置を示すブロック図。
【図２】抜け許容タスクを起床する起床タスクの起床処理を示すフローチャート。
【図３】スケジュールタスクのスケジュール処理を示すフローチャート。
【図４】抜け許容タスクの実行処理を示すフローチャート。
【図５】タスクの実行状態の推移を示すスケジュールチャート。
【図６】抜け許容タスクのデッドラインと最長処理期間とを示す図。
【図７】比較例によるタスクの実行状態の推移を示すスケジュールチャート。
【発明を実施するための形態】
【００１４】
以下、本発明が適用された実施形態を図に基づいて説明する。
［１．構成］
図１に示す電子制御装置（Electronic Control Unit：ＥＣＵ）１０は車両に搭載されており、タスク管理部１２と、タスク処理部１４と、優先度テーブル２０と、を備える。ＥＣＵ１０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、フラッシュメモリ等を備えるマイクロコンピュータを搭載している。
【００１５】
ＥＣＵ１０は、ＲＯＭまたはフラッシュメモリに記憶された処理プログラムをＣＰＵが実行することにより、タスク管理部１２およびタスク処理部１４として機能し、車両制御を実行する複数のタスクをスケジューリングして実行する。車両制御を実行する複数のタスクには、所定時間間隔で起床される定時タスクと、エンジンの回転角度に同期して起床される角度同期タスクとがある。
【００１６】
定時タスクは、例えば、エンジン負荷率の算出タスク、車両に搭載されている各種アクチュエータをデューティ制御するときのデューティ算出タスクである。角度同期タスクは、例えば、点火時期の制御タスク、燃料噴射の制御タスクなど、エンジン制御を実行するタスクである。
【００１７】
タスク管理部１２は、リアルタイムＯＳ（ＲＴＯＳ）に基づいて、車両制御を実行する複数のタスクのそれぞれに設定された優先度に基づいて実行するタスクを決定する。各タスクには、優先度が予め設定されている。タスク処理部１４は、タスク管理部１２が決定するタスクを実行する。
【００１８】
優先度テーブル２０には、複数のタスクの優先度がそれぞれ登録されている。図１では、優先度テーブル２０の上に行くほどタスクの優先度が高くなっている。複数のタスクのうち、処理の抜けが許容されない抜け不可タスクの優先度は、処理の抜けが許容される抜け許容タスクの優先度よりも高く設定されている。図１では、抜け許容タスクとして、Ａタスク、Ｂタスク、Ｃタスクが優先度テーブル２０に登録されている。
【００１９】
優先度テーブル２０は例えばＲＡＭで構成されている。複数のタスクの優先度は予め設定されており、ＲＯＭ等の不揮発性記憶装置に記憶されている。そして、ＥＣＵ１０が起動するときに、ＲＯＭ等の不揮発性記憶装置に記憶されている複数のタスクの優先度が、優先度テーブル２０としてＲＡＭに格納される。
【００２０】
スケジュールタスクは、抜け許容タスクの優先度を調整するタスクである。スケジュールタスクの優先度は、抜け不可タスクよりも低く、抜け許容タスクよりも高く設定されている。
【００２１】
［２．処理］
（１）起床処理について図２に基づいて説明する。図２の起床処理は、抜け許容タスクの起床タイミングにおいて、抜け不可タスクに属する起床タスクが実行することもあるし、起床割り込みが実行することある。以下、説明上、起床タスクが抜け許容タスクを起床するものとして説明する。
【００２２】
起床タスクは、抜け許容タスクを起床する前処理を実行し（Ｓ４００）、今回の起床タイミングで起床する抜け許容タスクを起床させる（Ｓ４０２）。起床タスクは、抜け許容タスクを起床させたときの起床時刻を記憶する（Ｓ４０４）。そして、起床タスクは、スケジュールタスクを起床させ（Ｓ４０６）、起床処理の後処理を実行する（Ｓ４０８）。スケジュールタスクと抜け許容タスクとの処理については後述する。
【００２３】
Ａタスクは８ｍｓ毎に起床される定時タスクである。Ｂタスクは３０°ＣＡ毎に起床される角度同期タスクであり、Ｃタスクは９０°ＣＡ毎に起床される角度同期タスクである。
【００２４】
図５はエンジン回転数（ＮＥ）が２５００ｒｐｍのときのスケジュールチャートを示しており、タイムスライス（以下、ＴＳとも言う。）の間隔は１ｍｓである。ＮＥ＝２５００ｒｐｍのとき、３０°ＣＡ毎に起床されるＢタスクは２ｍｓ毎に起床され、９０°ＣＡ毎に起床されるＣタスクは６ｍｓ毎に起床される。
【００２５】
図５において、「実」に続く数字は何番目の実行であるかを表わしている。Ａタスクは１ｍｓのタイムスライスで３回処理を実行すると処理を完了する。Ｂタスクは１ｍｓのタイムスライスで２回処理を実行すると処理を完了する。Ｃタスクは１ｍｓのタイムスライスで１回処理を実行すると処理を完了する。
【００２６】
図５の抜け不可タスクの欄において、斜線箇所は抜け不可タスクが実行されていることを示している。抜け不可タスクに属する起床タスクの実行時間は短いので、抜け不可タスクの欄の斜線箇所ではない空白箇所において、起床タスクが抜け許容タスクの起床処理を実行し、さらにスケジュールタスクまたは抜け許容タスクが処理を実行することもある。
【００２７】
（２）スケジュールタスクが実行するスケジュール処理について、図３に基づいて説明する。スケジュールタスクは、図２のＳ４０６および後述する図４のＳ４４０で起床される。
【００２８】
Ｓ４１０において、スケジュールタスクは、スケジュールタスクの優先度を抜け許容タスクよりも高くする。これは、後述する図４のＳ４３８において、スケジュールタスクよりも優先度を高くした抜け許容タスクが、図３のスケジュール処理の途中で起床されて実行されないようにするためである。
【００２９】
次に、スケジュールタスクは、スケジュールタスクが起床されるタイムスライスにおいて、起床している各抜け許容タスクのデッドラインまでの期間を算出する（Ｓ４１２）。図５において、「ＤＬ」はデッドラインのタイムスライスを表している。また、タスク処理期間の欄において、「○」はデッドラインまでに処理が正常に完了したことを表している。
【００３０】
図６に示すように、抜け許容タスクであるＡタスク、Ｂタスク、Ｃタスクには、それぞれ処理を完了させるデッドラインが設定されている。デッドラインには、タスクが連続して処理の実行が抜けることを不可とする期限と、タスクが１回目に起床されてから連続して処理が実行されないことを不可とする未処理期間の期限とがある。
【００３１】
Ａタスクは２回連続、Ｂタスクは５回連続、Ｃタスクは３回連続して処理が抜けることを不可とされている。また、Ｂタスク、Ｃタスクには５００ｍｓ、１０００ｍｓの未処理期間が設定されている。Ａタスクには未処理期間は設定されていない。
【００３２】
連続処理抜け回数および未処理期間で設定されるデッドラインのうち早い方のタイミングがデッドラインとして採用される。図５はＮＥ＝２５００ｒｐｍのときのスケジュールチャートを示しているので、連続処理抜け回数で設定されるデッドラインの方が未処理期間で設定されるデッドラインよりもタイミングが早い。
【００３３】
例えば、図５のＴＳ１において、起床タスク以外の抜け不可タスクが実行されないので、起床タスクによりＴＳ１が起床タイミングであるＡタスクが１回目に起床され、図２のＳ４０６でスケジュールタスクが起床される。スケジュールタスクの方がＡタスクよりも優先度が高いので、スケジュールタスクが処理を実行する。
【００３４】
スケジュールタスクは、Ａタスクが１回目に起床された時刻、ならびにＡタスクが２回連続して処理の抜けを不可とされていることに基づき、ＴＳ１６をＡタスクのデッドライン（ＤＬ）に設定する。
【００３５】
尚、各タスクが１回目に起床された時刻は、図２のＳ４０４で記憶される。また、図５において、「起１」は各タスクの１回目の起床であることを表わしている。
ＴＳ１において、スケジュールタスクは、Ａタスクについて、ＴＳ１からデッドラインであるＴＳ１６までの期間をデッドライン期間として算出する。この場合、Ａタスクのデッドライン期間は１５ｍｓである。
【００３６】
ＴＳ１において、Ｂタスク、Ｃタスクはまだ起床されていないので、スケジュールタスクは、Ｂタスク、Ｃタスクのデッドライン期間を算出しない。したがって、後述する余裕度について、Ｂタスク、Ｃタスクの値は不定である。図５の余裕度の欄において、「−」が不定であることを表わしている。
【００３７】
一方、スケジュールタスクが処理を実行するＴＳ５において、Ａタスク、Ｂタスク、Ｃタスクはすべて起床しているので、スケジュールタスクは、Ａタスク、Ｂタスク、Ｃタスクのデッドライン期間を算出する。ＴＳ５において、Ａタスクのデッドライン期間は１１ｍｓである。
【００３８】
Ｂタスクのデッドラインは、１回目の起床がＴＳ２であり、Ｂタスクが５回連続の処理抜けが不可とされていることに基づき、ＴＳ１１である。したがって、ＴＳ５において、Ｂタスクのデッドライン期間は６ｍｓである。
【００３９】
Ｃタスクのデッドラインは、１回目の起床がＴＳ２であり、Ｃタスクが３回連続の処理抜けが不可とされていることに基づき、ＴＳ１９である。したがって、ＴＳ５において、Ｃタスクのデッドライン期間は１４ｍｓである。
【００４０】
Ｓ４１４において、スケジュールタスクは、各タスクの余裕度を算出する。余裕度は次式（１）から算出される。
余裕度＝デッドライン期間／最長処理期間    ・・・（１）
式（１）において、最長処理期間は各タスクが処理を完了するために必要とされる期間を表わしている。最長処理期間は、所定のエンジン回転数の範囲毎に抜け許容タスク毎に予め設定されている。図６から、ＮＥ＝２５００ｒｐｍにおいて、Ａタスク、Ｂタスク、Ｃタスクの最長処理期間はそれぞれ９ｍｓ、６ｍｓ、４ｍｓである。エンジン回転数が上昇するにしたがい、最長処理期間は長くなる傾向にある。
【００４１】
また、ＴＳ５において、前述したように、Ａタスク、Ｂタスク、Ｃタスクのデッドライン期間はそれぞれ１１ｍｓ、６ｍｓ、１４ｍｓである。
したがって、ＴＳ５におけるＡタスク、Ｂタスク、Ｃタスクの余裕度は、それぞれ式(１)から、１．２２、１．００、３．５０である。余裕度が高いほどデッドラインまでに処理の抜けを許容できる程度が高いことを表わし、余裕度が低いほどデッドラインまでに処理の抜けを許容できる程度が低いことを表わしている。
【００４２】
Ｓ４１６において、スケシュールタスクは、余裕度が所定値以下のタスクが存在するか否かを判定する。例えば、所定値として２が設定されている。余裕度が所定値以下のタスクが存在する場合（Ｓ４１６：Ｙｅｓ）、スケジュールタスクは、現在の抜け許容タスクの優先度を調整し（Ｓ４１８）、Ｓ４２２に処理を移行する。本実施形態では、余裕度が最低の抜け許容タスクの優先度を抜け許容タスクの中で最高順位に設定して優先度を調整する。
【００４３】
例えば、ＴＳ５において、Ａタスク、Ｂタスク、Ｃタスクの余裕度は、前述したようにそれぞれ１．２２、１．００、３．５０であり、余裕度が２以下のタスクが存在する。この場合、スケジュールタスクは、余裕度が最低のＢタスクの優先度をＡタスクよりも上の最高順位に設定する。
【００４４】
余裕度が所定値以下のタスクが存在しない場合（Ｓ４１６：Ｎｏ）、スケジュールタスクは、現在の抜け許容タスクの優先度を、元のＡタスク、Ｂタスク、Ｃタスクの順番に戻し（Ｓ４２０）、Ｓ４２２に処理を移行する。
【００４５】
Ｓ４２２において、スケジュールタスクは、優先度が切り替えられたか否か、つまり余裕度が最低の抜け許容タスクの優先度が最高順位に設定されたか否かを判定する。優先度が切り替えられていない場合（Ｓ４２２：Ｎｏ）、スケジュールタスクは本処理を終了する。
【００４６】
優先度が切り替えられた場合（Ｓ４２２：Ｙｅｓ）、スケジュールタスクは、切り替え前に優先度が最高順位だったタスクの処理期間を積算し（Ｓ４２４）、優先度の切り替え時刻を記憶する（Ｓ４２６）。
【００４７】
Ｓ４２４で積算するタスク処理期間は、抜け許容タスクの優先度が抜け許容タスクの中で最高順位の状態において、実際に処理を実行した期間と、実行を待ち合わせた期間との積算値である。優先度が最高順位ではない期間は、該当する抜け許容タスクのタスク処理期間として積算しない。
【００４８】
例えば、ＴＳ５において、Ｂタスクの優先度をＡタスクよりも上の最上位に切り替えたので、スケジュールタスクは、優先度の切り替え前に優先度が最高順位だったＡタスクのタスク処理期間を積算する。この場合、Ａタスクのタスク処理期間の積算はＴＳ１〜ＴＳ４までの４ｍｓである。そして、切り替え時刻はＴＳ５である。
【００４９】
（３）抜け許容タスクの実行処理について、図４に基づいて説明する。抜け許容タスクは図２のＳ４０２で起床されており、優先度が最上位の場合、抜け不可タスクが実行されていないタイムスライスで実行される。スケジュールタスクがスケジュール処理に要する時間は短いので、図５に示すように、スケジュールタスクが実行されるタイムスライスでも抜け許容タスクは実行される。
【００５０】
Ｓ４３０において、抜け許容タスクは車両制御のための通常処理を実行する。通常処理を実行中に今回のタイムスライスの時間が経過し、次のタイムスライスが抜け不可タスクの実行タイミングであれば、抜け許容タスクは通常処理の途中で実行を中断する。
【００５１】
例えば、図５のＴＳ５において、スケジュールタスクにより優先度が最高順位に設定されたＢタスクは１回目の処理を実行する。次のＴＳ６では、抜け不可タスクが実行されるので、Ｂタスクの処理は中断される。
【００５２】
Ｓ４３０の通常処理が終了すると、抜け許容タスクは、タスク処理期間の積算値を算出して確定させる（Ｓ４３２）。
例えば、ＴＳ１をスケジュールタスクによるスケジュール処理の開始タイミングとして、ＴＳ１では優先度はＡタスク、Ｂタスク、Ｃタスクの順番である。図５において、Ａタスクは、最高順位の状態でＴＳ１、ＴＳ１３、ＴＳ１４で処理を実行し、ＴＳ２〜ＴＳ４とＴＳ１１、ＴＳ１２とで実行を待ち合わせている。
【００５３】
ＴＳ５〜ＴＳ１０の間は、Ａタスクの優先度は最高順位ではないので、タスク処理期間に積算されない。したがって、Ａタスクの処理が完了したＴＳ１４において、Ａタスクのタスク処理期間の積算値は８ｍｓである。
【００５４】
また、Ｂタスクは、ＴＳ５で優先度が最高順位になってから、ＴＳ５、ＴＳ１０で処理を実行し、ＴＳ６〜ＴＳ９で実行を待ち合わせている。したがって、Ｂタスクの処理が完了したＴＳ１０において、Ｂタスクのタスク処理期間の積算値は６ｍｓである。
【００５５】
また、Ｃタスクは、ＴＳ１４の終了時に優先度が最高順位になってから、ＴＳ１７で処理を実行し、ＴＳ１５、ＴＳ１６で実行を待ち合わせている。したがって、Ｃタスクの処理が完了したＴＳ１７において、Ｃタスクのタスク処理期間の積算値は３ｍｓである。
【００５６】
Ｓ４３４において、抜け許容タスクは、タスク処理期間の積算値が、現在のエンジン回転数の範囲で設定されている最長処理期間を超えているか否かを判定する。タスク処理期間の積算値が現在の最長処理期間を超えていない場合（Ｓ４３４：Ｎｏ）、抜け許容タスクはＳ４３８に処理を移行する。
【００５７】
タスク処理期間の積算値が現在の最長処理期間を超えている場合（Ｓ４３４：Ｙｅｓ）、抜け許容タスクは、現在のエンジン回転数の範囲で設定されている最長処理期間を今回のタスク処理期間で更新し（Ｓ４３６）、Ｓ４３８に処理を移行する。図５の例では、Ａタスク、Ｂタスク、Ｃタスクのいずれの最長処理期間も更新されない。
【００５８】
Ｓ４３８において、抜け許容タスクは、自身の優先度をスケジュールタスクよりも高く、抜け不可タスクよりも低い優先度に設定する。そして、スケジュールタスクを起床させる（Ｓ４４０）。
【００５９】
Ｓ４３８で抜け許容タスクが自身の優先度をスケジュールタスクよりも高く、抜け不可タスクよりも低い優先度に設定するので、Ｓ４４０でスケジュールタスクを起床させても、スケジュールタスクは、少なくとも図４に示す実行処理を抜け許容タスクが終了するまで実行されない。
【００６０】
また、抜け許容タスクが自身の優先度をスケジュールタスクより高く設定しても、処理が完了し、まだ次の起床タイミングになっていないので、この抜け許容タスクは実行されない。
【００６１】
例えば、図５のＴＳ１０でＢタスクが処理を完了すると、Ｓ４４０で起床されたスケジュールタスクが、ＴＳ１０において図３のスケジュール処理を実行する。この場合、Ｂタスクは処理を完了しており優先度がスケジュールタスクよりも高くなっているが、Ｂタスクは次の１回目の起床タイミングになっていないので、Ｂタスクは実行されない。また、Ｂタスクは起床されていないので、Ｂタスクのデッドライン期間および余裕度は不定である。
【００６２】
この場合、スケジュールタスクは、Ｂタスクを除くＡタスク、Ｃタスクのデッドライン期間を算出し（Ｓ４１２）、Ａタスク、Ｃタスクの余裕度を算出する（Ｓ４１４）。スケジュールタスクは、ＴＳ１０でＢタスクが処理を完了した次のＴＳ１１からデッドラインまでの期間をＡタスク、Ｃタスクのデッドライン期間とし、このデッドライン期間から余裕度を算出する。
【００６３】
この場合、Ａタスク、Ｃタスクのデッドライン期間はそれぞれ５ｍｓ、８ｍｓになり、Ａタスク、Ｃタスクの余裕度はそれぞれ０．５６、２．００なる。
すると、余裕度が所定値として２以下のタスクが存在するので（Ｓ４１６：Ｙｅｓ）、スケジュールタスクは、Ｂタスクを除き余裕度が最低のＡタスクの優先度を最高順位に設定する（Ｓ４１８）。これにより、ＴＳ１１、ＴＳ１２においてＡタスクの実行が待ち合わされ、ＴＳ１３、ＴＳ１４でＡタスクが実行される。
【００６４】
図５のＴＳ１４でＡタスクが処理を完了する場合も、Ｓ４４０で起床されたスケジュールタスクが、ＴＳ１４において図３のスケジュール処理を実行することにより、ＢタスクとＣタスクとの余裕度を算出する。ＢタスクとＣタスクとの余裕度は同じ１．００になる。
【００６５】
この場合、ＢタスクとＣタスクとのいずれの優先度を最高順位にしてもよい。図５では、例えば、まだ処理が実行されていないＣタスクの優先度を最高順位にしている。これにより、ＴＳ１５、ＴＳ１６においてＣタスクの実行が待ち合わされ、ＴＳ１７でＣスクが実行される。
【００６６】
本実施形態に対し、図７に示す比較例では、余裕度に基づいて優先度を調整せず、固定の優先度に基づいて抜け許容タスクの実行をスケジューリングする。その結果、優先度が最高順位のＡタスクは、デッドラインまでに処理を完了できる。
【００６７】
一方、Ａタスクよりも優先度の低いＢタスクはＡタスクの処理が完了してから、Ｂタスクよりも優先度の低いＣタスクはＢタスクの処理が完了してから実行されるので、デッドラインまでに処理を完了できない。図７において、「×」は今回のデッドラインまでに処理は完了したが、前回までのデッドラインにおいて処理が完了しなかったことを表している。
【００６８】
［３．効果］
以上説明した上記実施形態では、以下の効果を得ることができる。
（１）デッドラインまでに処理抜けが許容される余裕度に基づいて、余裕度が最低の抜け許容タスクの優先度を抜け許容タスクの中で最高順位に容易に設定できる。これにより、予め設定された優先度が低い抜け許容タスクであっても、余裕度が最低になると優先度が高く設定されるので、実行頻度が上昇する。その結果、ＯＳのスケジューリング方式を修正することなく、抜け許容タスクの処理抜けを容易かつ適切に管理できる。
【００６９】
（２）余裕度に基づいて抜け許容タスクの中で優先度が最高順位の抜け許容タスが切り替わる。これにより、常に優先度が最低の抜け許容タスクの処理が最初にデッドラインを越えるのではなく、予め設定された優先度に関わらず、抜け許容タスクの処理がデッドラインを越える可能性を均等化することができる。
【００７０】
（３）前述したように、エンジン回転数の上昇にしたがって、抜け許容タスクが処理を完了するために必要な最長処理期間は長く設定されている。つまり、エンジン回転数の上昇にしたがって、抜け許容タスクの処理がデッドラインを越える可能性は高くなる。
【００７１】
ここで、効果（２）で述べたように、常に優先度が最低の抜け許容タスクの処理が最初にデッドラインを越えるのではなく、抜け許容タスクの処理がデッドラインを越える可能性が均等化される。これにより、エンジン制御において、抜け許容タスクの処理がデッドラインを越えるエンジン回転数を、優先度を調整しない方式よりも上昇させることができる。
【００７２】
［４．他の実施形態］
（１）上記実施形態では、車両制御を実行する車載の電子制御装置に本発明を適用したが、本発明を適用する技術分野は車両制御に限るものではない。
【００７３】
（２）余裕度が最低の抜け許容タスクの優先度を抜け許容タスクの中で最高順位にするのではなく、現在の優先度よりも高くするのであれば最高順位にならなくてもよい。
（３）余裕度を算出するための最長処理期間を、抜け許容タスクが１回目に起床されてからデッドラインまでの期間としてもよい。
【００７４】
（４）上記実施形態における一つの構成要素が有する機能を複数の構成要素として分散させたり、複数の構成要素が有する機能を一つの構成要素に統合させたりしてもよい。また、上記実施形態の構成の少なくとも一部を、同様の機能を有する公知の構成に置き換えてもよい。また、上記実施形態の構成の一部を、課題を解決できる限りにおいて省略してもよい。尚、特許請求の範囲に記載した文言のみによって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。
【００７５】
（５）上述したＥＣＵ１０の他、当該ＥＣＵ１０を構成要素とする電子制御システム、当該ＥＣＵ１０としてコンピュータを機能させるためのタスク管理プログラム、このタスク管理プログラムを記録した記録媒体、タスク管理方法など、種々の形態で本発明を実現することもできる。
【符号の説明】
【００７６】
１０：ＥＣＵ（電子制御装置）、１２：タスク管理部（タスク管理手段）、１４：タスク処理部（タスク処理手段）、２０：優先度テーブル
【図１】
0006365367.tif 000002
【図２】
0006365367.tif 000003
【図３】
0006365367.tif 000004
【図４】
0006365367.tif 000005
【図５】
0006365367.tif 000006
【図６】
0006365367.tif 000007
【図７】
0006365367.tif 000008