(57)【要約】【課題】タスクの残時間を正確に算出することが可能な制御装置及び該制御装置におけるタスク残時間算出方法を提供する。【解決手段】タスクＡ、タスクＢは夫々、通過ポイントを通過した場合に残時間算出部へ通知を行なう。残時間算出部は、タスクの完了までの最長残時間（最初はタスク開始から完了までの最長残時間）から通過ポイントまでの最長時間を減算し、減算結果でタスク完了までの最長残時間を更新する。時点（ア）では、タスクＡの開始から完了までの最長時間「９」に対し、通過ポイントａ１〜ａ４夫々までの最長時間「１．５」、「２．０」、「２．０」、「１．５」が減算され、最長残時間は「２」に更新される。【選択図】図５
2013196149.tif 000002
【特許請求の範囲】
【請求項１】
各々複数の手順からなるタスクを各実行する複数の実行手段と、該複数の実行手段による前記タスクの実行開始／中断／再開／中止を制御し、複数のタスクを切り替えて実行させる制御手段と、各タスクが完了するまでの残時間を算出するタスク残時間算出手段とを備える制御装置において、
前記実行手段は夫々、実行中のタスクに含まれる複数の特定の手順を実行する都度、前記残時間算出手段へ通知する手段を備え、
前記残時間算出手段は、前記実行手段から通知を受ける都度、
タスク完了までに要する最長残時間から、前記通知された特定の手順までに要する最長時間を減算する減算手段と、
該減算手段による減算結果によりタスク完了までの最長残時間を更新する更新手段と
を備えることを特徴とする制御装置。
【請求項２】
前記減算手段は、
前の特定の手順又はタスク開始から、前記通知された特定の手順までに要する最長時間を特定する特定手段を備え、
該特定手段が特定した最長時間を、タスク完了までの最長残時間から減算するようにしてあること
を特徴とする請求項１に記載の制御装置。
【請求項３】
前の特定の手順が実行された時点又はタスク開始からの実行時間を計測する計測手段を更に備え、
前記減算手段は、
前記特定の手順までに要する最長時間と、前記計測手段が計測した実行時間とを、タスク完了までの最長残時間から減算するようにしてあること
を特徴とする請求項１又は２に記載の制御装置。
【請求項４】
各タスクについて、タスク開始から完了までに要する最長時間、及び特定の手順間の区間最長時間を夫々記憶したテーブルを更に備え、
前記減算手段は、前記テーブルに基づき最長時間を特定又は減算するようにしてあること
を特徴とする請求項２又は３に記載の制御装置。
【請求項５】
各々複数の手順からなるタスクを各実行する複数の実行手段と、該複数の実行手段による前記タスクの実行開始／中断／再開／実行停止を制御し、複数のタスクを切り替えて同時並行的に実行させる制御手段とを備える制御装置にて、該制御装置が更に備える残時間算出手段が、各タスクが完了するまでの残時間を算出するタスク残時間算出方法において、
前記実行手段は夫々、実行中のタスクに含まれる複数の特定の手順を実行する都度、前記残時間算出手段へ通知し、
前記残時間算出手段は、前記実行手段から通知を受ける都度、
タスク完了までの最長残時間から、前記通知された特定の手順までに要する最長時間を減算し、
減算結果によりタスク完了までの最長残時間を更新する
ことを特徴とするタスク残時間算出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクを同時並行的に実行するに際し、各タスクを所定の時間内に完了できるか否かを判断して品質を維持するＱｏＳ（Quality Of Service）制御を行なう制御装置に関する。特に、同時並行的に実行される各タスクの残時間を正確に算出することが可能な制御装置及び該制御装置におけるタスク残時間算出方法に関する。
【背景技術】
【０００２】
リアルタイムマルチタスクオペレーティングシステムにおけるリアルタイム制御では、複数のタスクを相互に切り替えながら同時並行的に実行し、タスクがデッドラインまでに処理を完了できないことが予想される場合に処理内容又は処理の品質を低下させるなどのＱｏＳ制御を行なう（特許文献１等）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平８−２７２６２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
タスクがデッドラインまでに処理を完了できるか否かの判定には、無駄なＱｏＳ制御を実行させないためにも高精度なものが求められる。従来の判定方法は一般的に、各タスクを完了させるまでに必要な全体の所要時間を記憶しておき、各タスクの実行時間を計測し、所要時間から、計測した実行時間を減算した残時間に基づいて残りの処理量を算出する方法が用いられている。
【０００５】
図９は、従来の残りの処理量の算出方法の概要を示す説明図である。図９では、タスクＡ及びタスクＢが同時並行的に切り替えられて実行されることが示されている。なお図９は、横軸に時間の経過を示し、横軸上の１目盛を単位時間１とする。ここで、単位時間７が経過した時点（ア）にて、タスクＡの残りの処理量を従来の方法で算出する例を説明する。タスクＡの最長所要時間は「９」である。時点（ア）までにタスクＡが実行された単位時間は「４」である。タスクＡが処理量「９」を完了するには、実際には、図９に示すように断続的であっても、合計で単位時間５あればよい。仮にタスクＡにおける時間に対する処理量を均等とした場合、既に実行した処理量は、全体の処理量「９」／実際の単位時間「５」に、既に実行された単位時間は「４」をかければよく、「７．２」である。したがって、残りの処理量は全体の処理量「９」から実行済みの処理量「７．２」を減算した「１．８」となる。しかしながら、従来の最長所要時間から実行時間を減算して残時間とし、残りの必要処理量を算出する方法では、残りの必要処理時間は「５」＝（最長所要時間「９」−実行時間「４」）となる。上述したように、既に８割程度処理を終えて残りの処理量は「１．８」であり、タスクＡはデッドラインまでの処理の完了に影響しないはずであるにも拘わらず、時点（ア）から最長「５」単位時間かかる可能性があるとして、ＱｏＳ制御が実行され、それまでの処理が無駄になる可能性がある。
【０００６】
本発明は斯かる事情に鑑みてなされたものであり、タスクの残時間を正確に算出することが可能な制御装置及び該制御装置におけるタスク残時間算出方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る制御装置は、各々複数の手順からなるタスクを各実行する複数の実行手段と、該複数の実行手段による前記タスクの実行開始／中断／再開／中止を制御し、複数のタスクを切り替えて実行させる制御手段と、各タスクが完了するまでの残時間を算出するタスク残時間算出手段とを備える制御装置において、前記実行手段は夫々、実行中のタスクに含まれる複数の特定の手順を実行する都度、前記残時間算出手段へ通知する手段を備え、前記残時間算出手段は、前記実行手段から通知を受ける都度、タスク完了までに要する最長残時間から、前記通知された特定の手順までに要する最長時間を減算する減算手段と、該減算手段による減算結果によりタスク完了までの最長残時間を更新する更新手段とを備えることを特徴とする。
【０００８】
本発明に係る制御装置は、前記減算手段は、前の特定の手順又はタスク開始から、前記通知された特定の手順までに要する最長時間を特定する特定手段を備え、該特定手段が特定した最長時間を、タスク完了までの最長残時間から減算するようにしてあることを特徴とする。
【０００９】
本発明に係る制御装置は、前の特定の手順が実行された時点又はタスク開始からの実行時間を計測する計測手段を更に備え、前記減算手段は、前記特定の手順までに要する最長時間と、前記計測手段が計測した実行時間とを、タスク完了までの最長残時間から減算するようにしてあることを特徴とする。
【００１０】
本発明に係る制御装置は、各タスクについて、タスク開始から完了までに要する最長時間、及び特定の手順間の区間最長時間を夫々記憶したテーブルを更に備え、前記減算手段は、前記テーブルに基づき最長時間を特定又は減算するようにしてあることを特徴とする。
【００１１】
本発明に係るタスク残時間算出方法は、各々複数の手順からなるタスクを各実行する複数の実行手段と、該複数の実行手段による前記タスクの実行開始／中断／再開／実行停止を制御し、複数のタスクを切り替えて同時並行的に実行させる制御手段とを備える制御装置にて、該制御装置が更に備える残時間算出手段が、各タスクが完了するまでの残時間を算出するタスク残時間算出方法において、前記実行手段は夫々、実行中のタスクに含まれる複数の特定の手順を実行する都度、前記残時間算出手段へ通知し、前記残時間算出手段は、前記実行手段から通知を受ける都度、タスク完了までの最長残時間から、前記通知された特定の手順までに要する最長時間を減算し、減算結果によりタスク完了までの最長残時間を更新することを特徴とする。
【００１２】
本発明では、実行中のタスクに含まれている複数の特定手順間の最長時間が用いられる。タスク中の特定手順が実行される都度、タスクを完了するまでに要する最長残時間から、各特定手順を実行するまでの最長時間が減算されて最長残時間が更新される。タスク中のいずれの手順までが実行されたかを精度よく見積もることが可能となる。
【００１３】
本発明では、タスク中の特定手順が実行される都度に、タスク開始からタスク完了までの最長時間から、タスク開始から通知された特定手順までの最長時間（区間最長時間の合計）を減算してもよい。タスク中の特定手順が実行される都度に、タスク完了までの最長残時間を、前回算出した最長残時間から、前回通知された特定手順から今回通知された特定手順までの区間最長時間を減算することによって更新するようにしてもよい。後者の場合、通知される都度にタスク開始から各特定手順までの最長時間を算出する前者の場合よりも、前回減算結果から区間最長時間を減算する単純な工程で残時間の最長時間を算出することが可能である。
なお、タスク実行手段からの通知に係る特定の手順を、分岐処理の前後などのように、最長時間と実際に実行される時間との差異が比較的大きくなる手順とすることにより、最長残時間の算出精度がより高まる。
【００１４】
本発明では、タスクの開始又は特定の手順などの区切りとは異なるタイミングでタスクが切り替えられた場合であっても、直近の区切り（タスクの開始時点又は特定の手順の実行時時点）からの実行時間が計測され、タスク全体を完了するまでに要する最長残時間から、直近の区切りまでに要する最長時間と、計測された実行時間とが減算され、最長残時間はより精度良く算出される。なお、実行時間とは単純な経過時間とは異なり、割込があった時間等を除いて当該タスクを実行している時間とすることが好ましい。割込がされている間の時間をも含められる経過時間を用いる場合よりも精度が高まる。
【００１５】
本発明では、タスク全体が完了するまでに要する最長残時間、及び各特定手順間の区間最長時間がテーブル化され、最長残時間を算出する際にはテーブルが参照される。テーブル化しておくことにより処理が単純化され、迅速化を図ることが可能である。
【発明の効果】
【００１６】
本発明による場合、タスク中のいずれの手順までが実行されたかを見積もることが可能であるから、計測した実行時間と実際に実行された処理量との乖離を少なくすることができ、残時間を高精度に算出することができる。
【図面の簡単な説明】
【００１７】
【図１】本実施の形態における制御装置の構成を示すブロック図である。
【図２】ＲＯＭに記憶されている時間テーブルの内容例を示す説明図である。
【図３】実施の形態１におけるＣＰＵによるタスクＡの処理手順の一例を示すフローチャートである。
【図４】実施の形態１におけるＣＰＵの残時間算出部による処理手順の一例を示すフローチャートである。
【図５】実施の形態１における残時間算出過程を説明するための説明図である。
【図６】実施の形態２における制御装置の構成を示すブロック図である。
【図７】実施の形態２におけるＣＰＵの残時間算出部による処理手順の一例を示すフローチャートである。
【図８】実施の形態２における残時間算出過程を説明するための説明図である。
【図９】従来の残りの処理量の算出方法の概要を示す説明図である。
【発明を実施するための形態】
【００１８】
以下、本発明をその実施の形態を示す図面に基づいて具体的に説明する。
なお、以下の実施の形態では本発明を、リアルタイム制御をマルチタスクオペレーティングシステム上で実行する制御装置に適用した場合の例を挙げて説明する。
【００１９】
（実施の形態１）
図１は、実施の形態１における制御装置１の構成を示すブロック図である。制御装置１は、ＣＰＵ（Central Processing Unit ）１０と、ＲＯＭ（Read Only Memory）１１とを含む。
【００２０】
ＣＰＵ１０は、ＲＯＭ１１に記憶してあるマルチタスクリアルタイムオペレーティングシステムのプログラム、タスク切替制御に係るプログラム、及び、各タスクに対応するプログラム等を含むプログラム群１３を読み出して実行する。これによりＣＰＵ１０は、マルチタスクリアルタイムオペレーティングシステム１００、タスク切替制御部１０１、並びに、複数のタスクＡ１０２ａ、タスクＢ１０２ｂ、及びタスクＣ１０２ｃとしての機能を発揮する。
【００２１】
ＲＯＭ１１には、ＣＰＵ１０が処理を行なうために参照する情報を記憶してある。ＲＯＭ１１は、機能的にＲＯＭであって、ハードウェアとしてはフラッシュメモリ等の書き換え可能なメモリを用いてもよい。ＲＯＭ１１には、時間テーブル１２及び上述のプログラム群１３が予め記憶してある。
【００２２】
このように構成される制御装置１では、ＣＰＵ１０がマルチタスクリアルタイムオペレーティングシステム１００上で、複数のタスクＡ１０２ａ，タスクＢ１０２ｂ，タスクＣ１０２ｃを同時並行的に実施させるに際し、タスク切替制御部１０１によりタスクを順次切り替えながら実行する制御が行なわれる。
【００２３】
なお、実施の形態１における複数のタスクＡ１０２ａ，タスクＢ１０２ｂ，タスクＣ１０２ｃは夫々、実行するタスク内に通過ポイントが設けられており、通過ポイントを通過した場合にタスク切替制御部１０１へイベント通知を行なうように構成されている。
【００２４】
タスク切替制御部１０１は、実行中及び今後実行される複数のタスクＡ１０２ａ，タスクＢ１０２ｂ，タスクＣ１０２ｃのいずれかへＱｏＳ制御を実行するＱｏＳ制御部１４、及び、時間テーブル１２を参照して各タスクＡ１０２ａ，タスクＢ１０２ｂ，タスクＣ１０２ｃの残時間を算出する残時間算出部１５の機能を有する。
【００２５】
ＱｏＳ制御部１４は、残時間算出部１５が算出した残時間に基づき、各タスクがデッドライン内に終了できるか否かを判断し、終了できないと判断した場合に、該当するタスクの処理内容の変更を指示したり、又は処理の品質の低減を指示したりする。当該指示に基づきタスク切替制御部１０１が各タスクＡ１０２ａ，タスクＢ１０２ｂ，タスクＣ１０２ｃの実行制御を行なう。
【００２６】
残時間算出部１５は、各タスクＡ１０２ａ，タスクＢ１０２ｂ，タスクＣ１０２ｃからの通知を受けて各タスクの通過ポイントと把握し、当該通過ポイントに基づき、後述するように時間テーブル１２を参照して残時間を算出する。
【００２７】
図２は、ＲＯＭ１１に記憶されている時間テーブル１２の内容例を示す説明図である。図２の内容例に示すように時間テーブル１２は、タスクＡ１０２ａのタスク全体を完了するまでの最長時間と、タスクＡ１０２ａ内に挿入されている複数の通過ポイント間の処理を完了するまでの各区間最長時間とを含む。
【００２８】
図２の例では、タスクＡ１０２ａには通過ポイントａ１〜ａ４が設けられている。タスクＡ１０２ａが実行されてから通過ポイントａ１を通過するまでに要する時間の最長時間は「１．５」と記憶されている。また、通過ポイントａ１を通過してから通過ポイントａ２を通過するまでに要する時間の最長時間は「２」と記憶されている。同様に通過ポイントａ２を通過してから通過ポイントａ３を通過するまでに要する時間の最長時間は「２」と記憶されている。通過ポイントａ３を通過してから通過ポイントａ４を通過するまでに要する時間の最長時間は「１．５」と記憶され、通過ポイントａ４を通過してからタスクが完了するまでに要する時間の最長時間は「２」と記憶されている。そして、タスクＡ１０２ａ全体について開始時点からタスクが完了するまでに要する時間の最長時間は「９」と記憶されている。
【００２９】
なお、時間テーブル１２に記憶されている通過ポイントａ１〜ａ４は、分岐処理の前後などのように、最長時間と実際に実行される時間との差異が比較的大きくなる可能性があるポイントとすることが好ましい。これにより、最長残時間の算出精度がより高まる。
【００３０】
図３は、実施の形態１におけるＣＰＵ１０によるタスクＡ１０２ａの処理手順の一例を示すフローチャートである。タスクＢ１０２ｂ及びタスクＣ１０２ｃについても同様であるから、詳細な説明を省略する。
【００３１】
ＣＰＵ１０は、タスクＡ１０２ａに関し、通過ポイントａ１までの処理を実行し（ステップＳ１１）、通過ポイントａ１を通過したことを登録すべくイベント通知する（ステップＳ１２）。ＣＰＵ１０は、通過ポイントａ２までの処理を実行し（ステップＳ１３）、通過ポイントａ２を通過したことを登録すべくイベント通知する（ステップＳ１４）。そしてＣＰＵ１０は、通過ポイントａ３までの処理を実行し（ステップＳ１５）、通過ポイントａ３を通過したことを登録すべくイベント通知する（ステップＳ１６）。ＣＰＵ１０は、通過ポイントａ４までの処理を実行し（ステップＳ１７）、通過ポイントａ４を通過したことを登録すべくイベント通知する（ステップＳ１８）。そしてＣＰＵ１０は、タスクが完了するまで処理を実行し（ステップＳ１９）、処理を終了する。
【００３２】
次に、残時間算出部１５による処理について説明する。図４は、実施の形態１におけるＣＰＵ１０の残時間算出部１５による処理手順の一例を示すフローチャートである。なお以下に示す処理手順は、１のタスクＡ１０２ａからのイベント通知がされた場合に実行される。他のタスクＢ１０２ｂ及びタスクＣ１０２ｃについての残時間も夫々同様に算出される。
【００３３】
残時間算出部１５は、タスクＡ１０２ａからイベント通知を受けた場合、通知された通過ポイントを特定する（ステップＳ２０１）。残時間算出部１５は、１つ目の通過ポイントであるか否かを判断する（ステップＳ２０２）。残時間算出部１５は、１つ目の通過ポイントであると判断した場合（Ｓ２０２：ＹＥＳ）、タスク開始から特定した通過ポイントまでの最長時間を、時間テーブル１２を参照して特定し（ステップＳ２０３）、また、タスク開始からタスク完了までの全体の最長時間を時間テーブル１２から特定する（ステップＳ２０４）。
【００３４】
残時間算出部１５は、ステップＳ２０４で特定した最長時間から、ステップＳ２０３で特定した区間最長時間を減算し（ステップＳ２０５）、減算結果を残時間の最長時間とし（ステップＳ２０６）、ＣＰＵ１０内蔵のＲＡＭ等に一時的に記憶し（ステップＳ２０７）、処理を終了する。
【００３５】
残時間算出部１５は、タスクＡ１０２ａから２回目以降のイベント通知を受け付け、ステップ２０１にて特定した通過ポイントが２つ目以降であると判断した場合（Ｓ２０２：ＮＯ）、１つ前の通過ポイントから、ステップＳ２０１にて特定した通過ポイントまでの最長時間を、時間テーブル１２を参照して特定する（ステップＳ２０８）。残時間算出部１５は、ＲＡＭに一時的に記憶してある残時間の最長時間からステップＳ２０８で特定した最長時間を減算し（ステップＳ２０９）、減算結果で残時間の最長時間を更新し（ステップＳ２１０）、処理を終了する。
【００３６】
なお残時間の算出方法は図４の方法に限らない。残時間算出部１５は、通過ポイントの通過が通知される都度、残時間算出部１５は、タスク開始から、特定した通過ポイントまでの各区間最長時間を加算し、タスク開始から完了までの全体に要する最長時間から加算結果を減算し、残時間を算出するようにしてもよい。
【００３７】
上述の処理が行なわれた後、タスク切替制御部１０１では、残時間算出部１５によって算出された残時間と、デッドラインまでに実行可能な処理量（処理時間）とを比較する。タスク切替制御部１０１は、実行可能な処理量の方が大きい場合はそのまま各タスクＡ１０２ａ、タスクＢ１０２ｂ、及びタスクＣ１０２ｃによる処理を続行させる。タスク切替制御部１０１は、実行可能な処理量（処理時間）が残時間以下である場合、タスクを中断させてＱｏＳ制御部１４による処理など、タスクの切替制御を実行する。
【００３８】
このように構成される制御装置１にて、残時間算出部１５により残時間が算出される過程を、具体例を用いて説明する。図５は、実施の形態１における残時間算出過程を説明するための説明図である。図５では、タスクＡ１０２ａ及びタスクＢ１０２ｂが同時並行的に切り替えられて実行されることが示されている。なお図５は、横軸に時間の経過を示し、横軸上の１目盛を単位時間１とする。ここで、単位時間７が経過した時点（ア）にて、タスクＡ１０２ａの残時間を算出した場合の例を説明する。
【００３９】
時点（ア）にて、通過ポイントａ４の通過のイベント通知がされるが、それまでに、通過ポイントａ１〜ａ３までの通過がイベント通知されている。ＣＰＵ１０は残時間算出部１５として、通過ポイントａ１のイベント通知がされた際に、タスクＡ１０２ａ全体を完了させるまでの最長時間「９」から、タスク開始から通過ポイントａ１までの区間最長時間「１．５」を減算し、残時間を「７．５」と算出している。その後、通過ポイントａ２についてのイベント通知がされた際に、残時間「７．５」から、通過ポイントａ１から通過ポイントａ２までの区間最長時間「２」を減算して残時間を「５．５」と算出し、通過ポイントａ３についてのイベント通知がされた際に、残時間「５．５」から通過ポイントａ２から通過ポイントａ３までの区間最長時間「２」を減算して残時間を「３．５」と算出している。そして、通過ポイントａ４の通過のイベント通知がされた時点（ア）にて、残時間「３．５」から通過ポイントａ３から通過ポイントａ４までの区間最長時間「１．５」を減算し、残時間を「２」と算出する。
【００４０】
図５に示した残時間の算出例を、図９に示した従来の残りの処理量の算出方法の例と比較した場合、図５に示した例では、８割程度処理が完了している状態に対応した残時間（全体「９」に対して残り「２」）を算出することができている。したがって、無駄なＱｏＳ制御が行なわれることを防ぐことができる。
【００４１】
（実施の形態２）
実施の形態２では、通過ポイント以外でタスクが中断された場合を考慮し、残時間を正確に算出する。
【００４２】
図６は、実施の形態２における制御装置１の構成を示すブロック図である。実施の形態１における制御装置１の構成は、タイマを備えている点以外は、実施の形態１における制御装置１の構成と同様である。したがって、共通する構成には同一の符号を付し、詳細な説明を省略する。
【００４３】
タイマ１６は、所定の周波数で計数する。ＣＰＵ１０はタイマ１６から随時、計数結果を取得することができる。ＣＰＵ１０は、取得した計数結果の差分等により時間を測定することが可能である。
【００４４】
タイマ１６を用いた残時間の算出方法について説明する。
図７は、実施の形態２におけるＣＰＵ１０の残時間算出部１５による処理手順の一例を示すフローチャートである。以下に示す処理手順は、残時間算出部１５がタスクＡ１０２ａ、タスクＢ１０２ｂ、及びタスクＣ１０２ｃ毎に、タスクが開始されるとタスク毎に夫々実行される。以下、タスクＡ１０２ａに対して実行される処理手順について説明する。
【００４５】
残時間算出部１５は、タスクＡ１０２ａが開始されると実行時間の計測を開始する（ステップＳ３０１）。残時間算出部１５は、残時間の最長時間を、タスク開始からタスク完了までの全体の最長時間とし（ステップＳ３０２）、ＣＰＵ内蔵のＲＡＭ等に一時的に記憶する（ステップＳ３０３）。
【００４６】
残時間算出部１５は、タスクＡ１０２ａから通過ポイントに係るイベント通知を受けたか否かを判断する（ステップＳ３０４）。残時間算出部１５は、通過ポイントに係るイベント通知を受けていないと判断した場合（Ｓ３０４：ＮＯ）、割込などによってタスクＡ１０２ａが中断されたか否かを判断する（ステップＳ３０５）。
【００４７】
残時間算出部１５は、タスクＡ１０２ａが中断されたと判断された場合（Ｓ３０５：ＹＥＳ）、実行時間の計測を中断し（ステップＳ３０６）、それまでの実行時間を取得する（ステップＳ３０７）。具体的には、残時間算出部１５は、ステップＳ３０１及びステップＳ３０６の時点でタイマ１６から計数を取得し、差分を算出して実行時間とする。残時間算出部１５は、取得した実行時間を、一時的に記憶してある残時間の最長時間から減算する（ステップＳ３０８）。残時間算出部１５は、一時記憶している残時間の最長時間を減算結果で更新し（ステップＳ３０９）、処理をステップＳ３０４へ戻してタスクＡ１０２ａが再開されるまで待機する。
【００４８】
残時間算出部１５は、ステップＳ３０５にてタスクＡ１０２ａが中断されたのではないと判断した場合（Ｓ３０５：ＮＯ）、タスクＡ１０２ａが再開されたか否かを判断する（ステップＳ３１０）。残時間算出部１５は、タスクＡ１０２ａが再開されたと判断した場合（Ｓ３１０：ＹＥＳ）、実行時間の計測を再開する（ステップＳ３１１）。ステップＳ３１１は具体的には、残時間算出部１５は、タスクＡ１０２ａが再開された時点でタイマ１６から計数を取得し、後に用いる。残時間算出部１５は、実行時間の計測を開始後、実行時間を取得し（Ｓ３０７）、取得した実行時間を、一時的に記憶してある残時間の最長時間から減算し（Ｓ３０８）、一時記憶している残時間の最長時間を減算結果で更新し（Ｓ３０９）、処理をステップＳ３０４へ戻してタスクＡ１０２ａが再開されるまで待機する。ステップＳ３０７では、タスクＡ１０２ａが中断されるまでに計測していた実行時間を用いる。
【００４９】
残時間算出部１５は、ステップＳ３１０にてタスクＡ１０２ａが再開されていないと判断した場合（Ｓ３１０：ＮＯ）、処理をステップＳ３０４へ戻し、タスクＡ１０２ａからの通知を受けるか、又は割込がされるまで待機する。
【００５０】
残時間算出部１５は、ステップＳ３０４にてタスクＡ１０２ａから通過ポイントに係るイベント通知を受けたと判断した場合（Ｓ３０４：ＹＥＳ）、実行時間の計測をリセットする（ステップＳ３１２）。具体的には残時間算出部１５は、Ｓ３０３、Ｓ３０６又はＳ３１１等にてタイマ１６から取得した計数を破棄する。
【００５１】
次に残時間算出部１５は、タスク開始からステップＳ３０４にて受けたイベント通知に係る通過ポイントまでの最長時間を、時間テーブル１２を参照して積算する（ステップＳ３１３）。
【００５２】
残時間算出部１５は、積算して得られた最長時間を、タスク開始から完了までの最長時間から減算し（ステップＳ３１４）、減算結果で残時間の最長時間を更新する（ステップＳ３１５）。
【００５３】
残時間算出部１５は、タスクＡ１０２ａが完了したか否かを判断し（ステップＳ３１６）。未完了であると判断した場合（Ｓ３１６：ＮＯ）、残時間算出部１５は、処理をステップＳ３０４へ戻し、タスクＡ１０２ａからの通知を受けるか、又は割込がされるまで待機する。
【００５４】
残時間算出部１５は、タスクＡ１０２ａが完了したと判断した場合（Ｓ３１６：ＹＥＳ）、実行時間の計測を終了し（ステップＳ３１７）、処理を終了する。
【００５５】
このように、通過ポイントに係るイベント通知がされるまでに割込により中断又は再開がされた場合、実行時間を計測しておくことにより、通過ポイント間での残時間をより精度良く求めることが可能となる。
【００５６】
図８は、実施の形態２における残時間算出過程を説明するための説明図である。図８では、タスクＡ１０２ａが実行されている間に、通過ポイント以外の箇所で処理の中断／再開が開始されている場合の例を示している。なお図８は、横軸に時間の経過を示し、横軸上の１目盛を単位時間１とする。ここで、各時点（イ）〜（オ）にて、タスクＡ１０２ａの残時間を算出した場合の例を説明する。
【００５７】
時点（イ）にて、通過ポイントａ１の通過のイベント通知がされる。この時点でＣＰＵ１０は残時間算出部１５としての機能により、タスク開始からの通過ポイントａ１までの区間最長時間「１．５」を特定する（Ｓ３１３）。残時間算出部１５は、残時間の最長時間＝タスク全体の最長時間「９」から「１．５」を減算し（Ｓ３１４）、残時間の最長時間を「７．５」に更新する（Ｓ３１５）。このとき残時間算出部１５は、実行時間の計測をリセットしている（Ｓ３１２）から、実行時間の計測開始時点は通過ポイントａ１通過時点である。
【００５８】
時点（ウ）では、タスクＡ１０２ａが割込により中断されている。残時間算出部１５は、実行時間の計測を中断し（Ｓ３０６）、それまでの実行時間、即ち通過ポイントａ１から割込があった時点までの時間「Ｔ１」を取得する（Ｓ３０７）。残時間算出部１５は、残時間の最長時間「７．５」から「Ｔ１」を減算し（Ｓ３０８）、減算結果にて残時間の最長時間を更新する（Ｓ３０９）。
【００５９】
時点（エ）では、タスクＡ１０２ａが再開される。残時間算出部１５は、実行時間の計測を開始する（Ｓ３１１）。残時間算出部１５、それまでの実行時間、即ち通過ポイントａ１から、割込期間を除いた時間「Ｔ１」を取得する（Ｓ３０７）。残時間の最長時間は時点（ウ）と変わらない。割込により中断されている期間が実行時間に含まれないので、正確に残時間を算出することが可能である。
【００６０】
時点（オ）では、通過ポイントａ２の通過のイベント通知がされる。この時点でＣＰＵ１０は残時間算出部１５としての機能により、タスク開始から通過ポイントａ２までの区間最長時間「１．５」及び「２」を積算する（Ｓ３１３）。残時間算出部１５は、残時間の最長時間＝タスク全体の最長時間「９」から積算結果「３．５」を減算し（Ｓ３１４）、残時間の最長時間を「５．５」に更新する（Ｓ３１５）。
【００６１】
このように、割込があった場合などにタスクＡ１０２ａが中断されたときには、中断されている間、実行時間の計測が中断されるから、「実際に実行していた時間」を用いて残時間を算出することができ、高精度に残時間を算出し、無断なＱｏＳ制御が行なわれることを防ぐことができる。
【００６２】
なお、上述のように開示された本実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００６３】
１０１  タスク切替制御部
１０２ａ  タスクＡ
１０２ｂ  タスクＢ
１０２ｃ  タスクＣ
１２  時間テーブル
１５  残時間算出部
１６  タイマ
【図１】
2013196149.tif 000003
【図２】
2013196149.tif 000004
【図３】
2013196149.tif 000005
【図４】
2013196149.tif 000006
【図５】
2013196149.tif 000007
【図６】
2013196149.tif 000008
【図７】
2013196149.tif 000009
【図８】
2013196149.tif 000010
【図９】
2013196149.tif 000011