(57)【要約】【課題】本発明は、情報処理装置に係り、実行優先度の高いタスクの実行処理にあまり影響を与えることなく、実行優先度の低いタスクが長期間に亘って実行されないのを防ぐことにある。【解決手段】複数のタスクをそれぞれ実行するタスク実行手段と、各タスクそれぞれに付与されている実行の優先度を示す情報を格納するタスク管理テーブルと、複数のタスクの実行タイミングが重なる場合に、該複数のタスクそれぞれの優先度に従って該複数のタスクのうちからタスク実行手段により実行すべきタスクを決定する実行タスク決定手段と、タスクごとに実行の処理抜け度合いを算出する処理抜け算出手段と、処理抜け算出手段の算出結果に基づいて、実行タスク決定手段に実行タスクを決定させるうえで用いる優先度をタスク管理テーブルに格納されているものから変更する優先度変更手段と、を設ける。【選択図】図１
2013088937.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクをそれぞれ実行するタスク実行手段と、
各タスクそれぞれに付与されている実行の優先度を示す情報を格納するタスク管理テーブルと、
複数のタスクの実行タイミングが重なる場合に、該複数のタスクそれぞれの前記優先度に従って該複数のタスクのうちから前記タスク実行手段により実行すべき実行タスクを決定する実行タスク決定手段と、
タスクごとに実行の処理抜け度合いを算出する処理抜け算出手段と、
前記処理抜け算出手段の算出結果に基づいて、前記実行タスク決定手段に実行タスクを決定させるうえで用いる前記優先度を前記タスク管理テーブルに格納されているものから変更する優先度変更手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記タスク管理テーブルは、タスクごとに、前記優先度を示す情報、及び、前記処理抜け度合いに許容される許容度合いを示す情報を格納すると共に、
前記優先度変更手段は、前記処理抜け算出手段により算出される前記処理抜け度合いが前記タスク管理テーブルに格納されている前記許容度合いを超える緊急実行要タスクが存在する場合に、前記実行タスク決定手段に実行タスクを決定させるうえで用いる該緊急実行要タスクの前記優先度を上げる優先度アップ手段を有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記優先度アップ手段は、前記実行タスク決定手段に実行タスクを決定させるうえで用いる前記緊急実行要タスクの前記優先度を一時的に上げることを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記優先度変更手段は、前記緊急実行要タスクが存在する場合に、前記実行タスク決定手段に実行タスクを決定させるうえで用いる該緊急実行要タスク以外の少なくとも一つのタスクの前記優先度を下げる優先度ダウン手段を有することを特徴とする請求項２又は３記載の情報処理装置。
【請求項５】
前記優先度ダウン手段は、前記実行タスク決定手段に実行タスクを決定させるうえで用いる前記緊急実行要タスク以外の少なくとも一つのタスクの前記優先度を一時的に下げることを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記処理抜け算出手段は、所定期間内における実行指示回数に対して処理抜けが生じた回数の比率を前記処理抜け度合いとして算出することを特徴とする請求項１乃至５の何れか一項記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に係り、特に、複数のタスクの実行タイミングが重なる場合に、それら複数のタスクそれぞれに付与されている実行の優先度に従ってそれら複数のタスクのうちから実行すべきタスクを決定して優先度の高いタスクを実行する情報処理装置に関する。
【背景技術】
【０００２】
従来、周期的に実行されるタスクごとに実行の優先度を設定しておき、複数のタスクが実行待ち状態にあるときに各タスクの実行優先度に従って実行すべきタスクを決定する情報処理装置が知られている（例えば、特許文献１参照）。この情報処理装置においては、複数のタスクが実行待ち状態にあるとき、それら実行待ち状態にあるタスクが実行優先度の高いものから順に並べられて、先頭のタスクから順に実行処理が行われる。
【０００３】
また、上記の情報処理装置においては、複数のタスクが実行待ち状態にあるとき、それら実行待ち状態にあるタスクごとに実行待ち時間がカウントされ、あるタスクについて実行待ち時間が所定待ち時間に達すると、その実行待ち時間が所定時間に達したタスクの実行優先度がより高い値に変更される。このため、実行優先度の低いタスクであっても、タスクが実行されない期間が長期間に亘るのを防止することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−１４８５１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、上記した特許文献１記載の装置では、実行待ち状態にあるタスクの実行待ち時間が所定時間に達した場合に常にその実行優先度が高くされるので、元々実行優先度が低く設定されているタスクがあっても、その低優先度のタスクについて実行の処理抜けが生ずるのを防止することはできるが、一方、元々実行優先度が高く設定されているタスクを実行する機会が失われてそのタスクの実行が遅延するなどの不都合が生ずるおそれがある。
【０００６】
本発明は、上述の点に鑑みてなされたものであり、実行優先度の高いタスクの実行処理にあまり影響を与えることなく、実行優先度の低いタスクが長期間に亘って実行されないのを防ぐことが可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的は、複数のタスクをそれぞれ実行するタスク実行手段と、各タスクそれぞれに付与されている実行の優先度を示す情報を格納するタスク管理テーブルと、複数のタスクの実行タイミングが重なる場合に、該複数のタスクそれぞれの前記優先度に従って該複数のタスクのうちから前記タスク実行手段により実行すべき実行タスクを決定する実行タスク決定手段と、タスクごとに実行の処理抜け度合いを算出する処理抜け算出手段と、前記処理抜け算出手段の算出結果に基づいて、前記実行タスク決定手段に実行タスクを決定させるうえで用いる前記優先度を前記タスク管理テーブルに格納されているものから変更する優先度変更手段と、を備える情報処理装置により達成される。
【発明の効果】
【０００８】
本発明によれば、実行優先度の高いタスクの実行処理にあまり影響を与えることなく、実行優先度の低いタスクが長期間に亘って実行されないのを防ぐことができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施例である情報処理装置の構成図である。
【図２】本実施例の情報処理装置において用いられるタスクごとの優先度及び処理抜け許容率を表した図である。
【図３】本実施例の情報処理装置においてタスクの優先度及び処理抜け許容率を設定すべク実行される制御ルーチンの一例のフローチャートである。
【図４】本実施例の情報処理装置においてタスク優先度を変更するか否かを決定するうえで実行される制御ルーチンの一例のフローチャートである。
【図５】本実施例の情報処理装置においてタスク優先度を変更する際に実行される制御ルーチンの一例のフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を用いて、本発明に係る情報処理装置の具体的な実施の形態について説明する。
【００１１】
図１は、本発明の一実施例である情報処理装置１０の構成図を示す。図２は、本実施例の情報処理装置１０において用いられるタスクごとの優先度及び処理抜け許容率を表した図を示す。また、図３は、本実施例の情報処理装置１０においてタスクの優先度及び処理抜け許容率を設定すべク実行される制御ルーチンの一例のフローチャートを示す。
【００１２】
本実施例の情報処理装置１０は、例えば、車両に搭載されるプロセッサシステムなどであって、エンジン制御などに用いられるマイクロコンピュータを主体に構成された電子制御ユニット（ＥＣＵ）である。情報処理装置１０は、複数のタスク（例えば、タスクＡ〜タスクＥ）を制御するものである。尚、これら制御対象の複数のタスクには、周期的（一定時間ごと）に実行されるタスクや例えばエンジン一回転ごとに実行されるタスクなどが含まれる。
【００１３】
図１に示す如く、情報処理装置１０は、全体制御部１２と、タスク管理部１４と、処理抜け率算出部１６と、タスク優先度変更部１８と、タスク実行部２０と、優先度設定部２２と、タスク管理テーブル２４と、を備えている。
【００１４】
タスク管理テーブル２４には、タスクごとに、他のタスクとの相対的な関係での実行の優先順位（例えば、１０段階でどの程度優先して実行するのかを表す度合い；以下、優先度と称す。）を示す情報、及び、実行指示に対して実際には実行しない処理抜けを許容する度合い（例えば、１０回の実行指示に対して処理抜けを許容する回数の比率や所定期間中における実行指示に対して処理抜けを許容する回数の比率など；以下、処理抜け許容率と称す。）を示す情報が格納されている。例えば、タスクＡ〜タスクＥについてそれぞれ、優先度及び処理抜け許容率が図２に示す如き数値となって情報格納されている。尚、本実施例では、優先度の数値が高いほど優先順位が高いものとする。
【００１５】
優先度設定部２２は、各タスクの優先度及び処理抜け許容率それぞれを設定する部位である。優先度設定部２２において設定された優先度及び処理抜け許容率はそれぞれ、タスク管理テーブル２４に格納される。この優先度設定部２２における設定は、利用者操作により実現される。例えば、タスクの優先度又は処理抜け許容率の設定時、図３に示す如く、まずタスク管理テーブル２４からそのタスクについて現時点で格納されている優先度又は処理抜け許容率のデータが読み出され（ステップ１００）、利用者操作によりタスク管理テーブル２４に格納すべき優先度又は処理抜け許容率の追加・変更が行われ（ステップ１０２）、そして、その追加・変更後の優先度又は処理抜け許容率のデータがタスク管理テーブル２４に書き込まれる（ステップ１０４）。
【００１６】
タスク実行部２０は、全体制御部１２からタスクの実行指令がなされた場合にそのタスクを実行する部位である。タスク管理部１４は、タスクの実行状態（例えば、本来の実行開始時期が到来して実行指示がなされた実行可能な全タスクについての実行待ち順序や実行待ち時間など）を管理する部位である。例えば、複数のタスクの実行タイミングが重なる場合に、それら実行可能な全タスクの実行待ち順序を定め或いは実行待ち時間を計測する。尚、タスク管理部１４は、実行可能なタスクが実行待ち状態にあるときにそのタスクと同じタスクの実行開始時期が到来してそのタスクが実行待ち状態となった場合には、最初のタスクの実行指示に対しては実行を行わない処理抜けを行って、後の実行指示に対するタスクのみ実行待ち状態とする。
【００１７】
全体制御部１２は、各タスクの状態変化の検出及びタスクスイッチ（実行するタスクの切り替え）等のタスク制御を行う部位である。全体制御部１２は、主に、タスク管理部１４で管理されるタスクの実行状態に基づいてタスク実行部２０に実行させる実行タスクを決定する。具体的には、複数のタスクの実行タイミングが重なる場合に、各タスクの優先度に従ってその複数のタスクのうちからタスク実行部２０に実行させる実行タスクを決定する。そして、そのタスク実行部２０に対してタスクの実行を指令すると共に、また、タスク実行部２０でのタスクの実行終了後に次の実行タスクの上記した決定処理及び実行指令処理を繰り返し行う。
【００１８】
処理抜け率算出部１６は、タスク管理部１４でタスクの実行状態を管理するうえで、各タスクの実行指示に対して実際には実行を行わなかった処理抜けが生じた度合い（例えば、１０回の実行指示に対して処理抜けが生じた回数の比率や所定期間中の実行指示に対して処理抜けが生じた回数の比率など；以下、実処理抜け率と称す。）を算出する部位である。また、タスク優先度変更部１８は、処理抜け率算出部１６での実処理抜け率の算出結果に基づいて、実行可能なタスクの実行順序を定めるうえで用いるタスクの優先度を変更する部位である。タスク管理部１４は、後に詳述する如く、タスク優先度変更部１８での処理結果に基づいて実行可能なタスクの実行順序の設定を含むタスク実行管理を行う。
【００１９】
次に、図４及び図５を参照して、本実施例の情報処理装置１０における実行可能なタスクの実行順序を設定するうえで用いるタスクの優先度を変更する手法を説明する。図４は、本実施例の情報処理装置１０においてタスク優先度を変更するか否かを決定するうえで実行される制御ルーチンの一例のフローチャートを示す。また、図５は、本実施例の情報処理装置１０においてタスク優先度を変更する際に実行される制御ルーチンの一例のフローチャートを示す。
【００２０】
本実施例の情報処理装置１０において、処理抜け率算出部１６は、まず、タスク（特に、実行指示がなされた実行可能なタスク）の優先度及び処理抜け許容率を示すデータをタスク管理テーブル２４から読み出す処理を行う（ステップ１２０）と共に、タスク（特に、実行指示がなされた実行可能なタスク）の実処理抜け率をこの処理時点までのタスク実行結果に基づいて算出する処理を行う（ステップ１２２）。
【００２１】
次に、処理抜け率算出部１６は、タスクごとに実処理抜け率が処理抜け許容率を超えているか否かを判別する（ステップ１２４）。その判別の結果、実行可能なタスクのすべてが、実処理抜け率が処理抜け許容率以下であるタスクであるときは、実行可能な全タスクについて処理抜けが許容される頻度に至るまでは生じていないとして、以後何ら処理を進めることなく今回の処理を終了する。一方、実行可能なタスクのうち実処理抜け率が処理抜け許容率を超えているタスク（以下、緊急実行要タスクと称す。）が存在するときは、その緊急実行要タスクの処理抜けが許容される頻度を超えて生じているとして、次に、その緊急実行要タスクを優先的に実行させるべく、その緊急実行要タスクの優先度を上げる処理を含む実行可能なタスクの優先度を変更させる処理を行う（ステップ１２６）。この具体的な処理としては、タスク優先度変更部１８に対して実行可能なタスクの実行順序を定めるうえで用いるタスク優先度を変更するように指令する。
【００２２】
タスク優先度変更部１８は、処理抜け率算出部１６から実行可能なタスクの実行順序を定めるうえで用いるタスク優先度を変更するような指令を受けると、まず、その緊急実行要タスク以外のタスク（特に、実行指示がなされた実行可能なタスク）の実処理抜け率をこの処理時点までのタスク実行結果に基づいて算出する処理を行う（ステップ１４０）。そして、上記のタスクの実処理抜け率を算出すると、次に、その算出結果に基づいて、緊急実行要タスクの優先度を上げると同時に実行可能な全タスクのうちから優先度を下げるべきタスク（以下、優先度低下タスクと称す）を決定する処理を行う（ステップ１４２）。
【００２３】
上記のステップ１４２における具体的な処理としては、実行可能な全タスクについての実処理抜け率の算出結果とタスク管理テーブル２４に格納されている処理抜け許容率との比較結果に基づいて、実行可能な全タスクをタスク管理テーブル２４に格納されている優先度の低い順に並べ替えたうえで、その優先度の低いタスクから順番に未だ処理抜けが許容されているタスクを探し出す。そして、最初に探し出されたタスク（すなわち、実行可能な全タスクであってかつ未だ処理抜けが許容されているタスクの中でもっとも優先度の低いタスク（但し、緊急実行要タスクの優先度よりも高い優先度を有するタスクであることが望ましい。））を、優先度を下げるべき優先度低下タスクに決定する。
【００２４】
タスク優先度変更部１８は、上記の如く実行可能な全タスクのうちから優先度低下タスクを決定すると、優先度を上げるべき緊急実行要タスク及び優先度を下げるべき優先度低下タスクの各情報をタスク管理部１４へ通知する処理を行う（ステップ１４４）。タスク管理部１４は、タスク優先度変更部１８から上記の優先度変更に関する通知を受けると、優先度を上げるべき緊急実行要タスクの優先度をタスク管理テーブル２４に格納されているものから上げ、かつ、優先度を下げるべき優先度低下タスクの優先度をタスク管理テーブル２４に格納されているものから下げたうえで、その変更後の優先度に従って実行可能な全タスクについての実行待ち順序を決定する。尚、優先度の変更量は、所定量（例えば２段階）だけ行われることとすればよく、また、優先度が変更されてから緊急実行要タスクが実行されるまでの間で所定時間ごとに所定量ずつ（例えば１段階ずつ）タスク優先度の変更を行うこととしてもよい。
【００２５】
全体制御部１２は、上記の如くタスク優先度変更部１８でタスク優先度が変更された後、タスク管理部１４でのタスクの実行状態に基づいてタスク実行部２０に実行させるタスクを決定し、そのタスク実行部２０に対してタスクの実行を指令する。
【００２６】
このように本実施例の情報処理装置１０においては、各タスク（特に、実行指示がなされた実行可能なタスク）の実処理抜け率を算出した結果として、その実処理抜け率がタスク管理テーブル２４に格納されている処理抜け許容率を超えている緊急実行要タスクが存在する場合に、実行可能なタスクの実行順序を定めるうえで用いるその緊急実行要タスクの優先度を上げると共に、優先度低下タスクの優先度を下げることができる。
【００２７】
かかる優先度の変更がなされると、実行可能な全タスクのうち緊急実行要タスクの実行待ち順序が従前のものよりも優先的なものとなるので、全体制御部１２がタスク実行部２０に実行させるタスクとしてその緊急実行要タスクを選択し易くなり、その緊急実行要タスクがタスク実行部２０において実行され易くなる。この点、緊急実行要タスクの優先度が元々低い数値に設定されている場合にも、その緊急実行要タスクの実行が処理抜け許容率を超えて行われなかったときに、その緊急実行要タスクの優先度が高い数値に変更されることとなるので、その優先度の低い緊急実行要タスクの処理抜けが処理抜け許容率を超えて頻発するのは防止される。
【００２８】
また、上記の如く緊急実行要タスクの優先度が上げられるのと同時に優先度低下タスクの優先度が下げられるが、この優先度低下タスクは、実行可能な全タスクであってかつ未だ処理抜けが許容されているタスクの中でもっとも優先度の低いタスクである。この点、元々優先度の高いタスクの実行が、上記したタスクの優先度変更に起因してひいては緊急実行要タスクの実行に起因して妨げられるのは抑制される。尚、優先度低下タスクとして設定されるタスクは、未だ処理抜けが許容されているタスクであるので、上記したタスクの優先度変更に起因してひいては緊急実行要タスクの実行に起因してその優先度低下タスクの実行が妨げられたとしても、その優先度低下タスクの少なくとも一度の処理抜けは許容され、大きな不都合は生じない。
【００２９】
従って、本実施例の情報処理装置１０によれば、実行優先度の高いタスクの実行処理にあまり影響を与えることなく、実行優先度の低いタスクが長期間に亘って実行されないのを防ぐこと、すなわち、実行優先度の低いタスクがある期間内に一度も実行されないのを防ぐことができる。
【００３０】
例えば、車両エンジンを制御するためのソフトウェアは、周期的に実行処理するイベントやエンジン一回転ごとに実行処理するイベントが多数存在するが、これらイベントのタスクには、優先度の高いものから低いものまである。かかるソフトウェア処理が行われる場合、特にエンジン回転数が高くなるほどイベント発生機会が多くなるので、タスクの実行抜けが発生する確率が高くなる。
【００３１】
これに対して、本実施例の情報処理装置１０がそのソフトウェア処理を行う場合、エンジンの高回転に伴ってイベント発生機会が多くなっても、優先度の低い緊急実行要タスクの優先度を上げることで、その緊急実行要タスクの処理抜けを許容範囲内に抑えることが可能であるので、実行優先度の低いタスクが長期間に亘って実行されないのを防ぐことができる。
【００３２】
尚、上記の実施例においては、タスク実行部２０が特許請求の範囲に記載した「タスク実行手段」に、全体制御部１２が複数のタスクの実行タイミングが重なる場合に優先度に従って実行タスクを決定することが特許請求の範囲に記載した「実行タスク決定手段」に、処理抜け率算出部１６が特許請求の範囲に記載した「処理抜け算出手段」に、タスク管理部１４が緊急実行要タスクの優先度を上げることが特許請求の範囲に記載した「優先度変更手段」及び「優先度アップ手段」に、タスク管理部１４が優先度低下タスクの優先度を下げることが特許請求の範囲に記載した「優先度変更手段」及び「優先度ダウン手段」に、それぞれ相当している。
【００３３】
ところで、上記の実施例においては、実処理抜け率がタスク管理テーブル２４に格納されている処理抜け許容率を超えている緊急実行要タスクが存在する場合に、実行可能なタスクの実行順序を定めるうえで用いるその緊急実行要タスクの優先度が上げられかつ優先度低下タスクの優先度が下げられるが、それら緊急実行要タスク及び優先度低下タスクの優先度の変更を一時的なものとし、所定時間経過後に、実行可能なタスクの実行順序を定めるうえで用いるそれらのタスクの優先度をタスク管理テーブル２４に格納されている通常どおりのものに戻すこととしてもよい。尚、この場合、優先度変更後の継続時間は、緊急実行要タスクの実行がその緊急実行要タスクと同じタスクが実行指示されて実行待ちとなるまでに少なくとも１回は確保される時間であればよい。
【００３４】
かかる変形例の制御によれば、緊急実行要タスクの優先度の上昇及び優先度低下タスクの優先度の低下がそれぞれ一時的なものに限定されるので、元々優先度の低い緊急実行要タスクの実行が頻発するのを回避しつつ、優先度低下タスクの不実行が長期間に亘って継続するのを抑制することが可能となる。
【符号の説明】
【００３５】
１０  情報処理装置
１２  全体制御部
１４  タスク管理部
１６  処理抜け率算出部
１８  タスク優先度変更部
２０  タスク実行部
２２  優先度設定部
２４  タスク管理テーブル
【図１】
2013088937.tif 000003
【図２】
2013088937.tif 000004
【図３】
2013088937.tif 000005
【図４】
2013088937.tif 000006
【図５】
2013088937.tif 000007