(57)【特許請求の範囲】
【請求項１】
処理完了までの時間制約がある第１の処理グループと処理完了までの時間制約がない第２の処理グループとを含んだリアルタイムＯＳにおいて、
前記第１の処理グループと前記第２の処理グループのそれぞれの処理開始から処理完了までの処理時間を算出する第１のステップと、
前記第１の処理グループの制約時間と処理時間との差分時間を算出する第２のステップと、
前記差分時間から第２の処理グループの処理可能値の初期値を設定する第３のステップと、
リアルタイムＯＳ処理時に前記処理可能値を更新する第４のステップと、
リアルタイムＯＳ処理時に前記処理可能値を判定して判定結果が処理可能を示す場合に、前記第１の処理グループが制約時間内に完了すべき処理を実行中に前記第２の処理グループを実行可能状態とする第５のステップとを有するリアルタイムＯＳにおける処理時間配分方法。
【請求項２】
前記第１のステップにおいて、前記第１の処理グループと前記第２の処理グループのそれぞれの処理開始から処理完了までの処理時間の最大値を算出し、
前記第２のステップにおいて、前記第１の処理グループの制約時間と処理時間最大値との差分時間を算出する請求項１に記載のリアルタイムＯＳにおける処理時間配分方法。
【請求項３】
前記第５のステップの判定は、リアルタイムＯＳ処理時に前記第２の処理グループの処理可能値と処理時間最大値とを比較して、前記処理可能値の方が大きい場合に前記第２の処理グループが実行可能状態と判定する請求項２に記載のリアルタイムＯＳにおける処理時間配分方法。
【請求項４】
処理完了までの時間制約がある第１の処理グループと処理完了までの時間制約がない第２の処理グループとを含んだリアルタイムＯＳにおいて、
前記第１の処理グループと前記第２の処理グループのそれぞれの処理開始から処理完了までの処理時間を算出する第１のステップと、
前記第１の処理グループの制約時間と処理時間との差分時間を算出する第２のステップと、
前記差分時間から前記第２の処理グループの処理可能回数を算出して、この処理可能回数を前記第２の処理グループの処理可能値の初期値として、初期値を設定する第３のステップと、
リアルタイムＯＳ処理時に前記処理可能値を更新する第４のステップと、
リアルタイムＯＳ処理時に前記処理可能値を判定して判定結果が処理可能を示す場合に、前記第１の処理グループが制約時間内に完了すべき処理を実行中に前記第２の処理グループを実行可能状態とする第５のステップとを有するリアルタイムＯＳにおける処理時間配分方法。
【請求項５】
前記第５のステップにおいて、前記処理可能値の値から前記第２の処理グループが実行可能状態ではなくなった場合に、前記処理可能値の算出方法を変更する請求項１から請求項３までのいずれかに記載のリアルタイムＯＳにおける処理時間配分方法。
【請求項６】
前記リアルタイムＯＳ処理時とは、前記第２の処理グループの処理が終了した後に行われる前記第１の処理グループへのコンテキスト変更処理時である請求項１から請求項５までのいずれかに記載のリアルタイムＯＳにおける処理時間配分方法。
【請求項７】
前記リアルタイムＯＳ処理時とは、前記第１の処理グループの処理中にサービスコール発行等によりＯＳに処理を移した時である請求項１から請求項５までのいずれかに記載のリアルタイムＯＳにおける処理時間配分方法。
【請求項８】
前記第４のステップにおいて、前記第２の処理グループの処理開始から処理終了までの実際の処理時間の計測手段を有し、計測された実際の処理時間から前記処理可能値を更新する請求項３に記載のリアルタイムＯＳにおける処理時間配分方法。
【請求項９】
前記第４のステップにおいて、前記第１の処理グループの処理開始からサービスコール発行等によりＯＳに処理を移すポイントまでの第１の処理グループの処理最大値を算出し、前記第１の処理グループの処理開始からサービスコール発行等によりＯＳに処理を移すポイントまでの実際の処理時間の計測手段を有し、前記第１の処理グループ処理最大値と、前記ＯＳに処理を移すポイントまでの実際の処理時間から前記処理可能値を更新する請求項３に記載のリアルタイムＯＳにおける処理時間配分方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リアルタイムＯＳにおける処理時間配分方法にかかわり、特には、処理完了までの時間制約がある第１の処理グループと処理完了までの時間制約がない第２の処理グループとを含んだリアルタイムＯＳの場合に、システム全体の処理効率を改善するための技術に関する。
【背景技術】
【０００２】
組み込みシステムとは、いろいろな機械や機器に組み込まれてその制御を行うコンピュータシステムのことであり、最近は適用分野が急速に広がっている。また、技術の進歩に合わせてソフトウェアの大規模化・複雑化が進んでおり、リアルタイムＯＳを用いることが不可欠となっている。リアルタイムＯＳの重要な指標として、リアルタイム性の保証が重要なテーマの一つとなる。
【０００３】
一般的にリアルタイム性とは、一定時間内にある処理を完了しなければならないという制約を満たすことを保証することである。リアルタイム性が求められる処理には、開始された処理が予測可能な時間内に終了することが要件となる。この時間のことを特に制約時間（デッドライン）といい、リアルタイムＯＳにおいては重要な指標である。
【０００４】
図８は、あるリアルタイムシステムにおける処理の一例を示す。図８のシステムは、タスクＴ１、タスクＴ２からなる、処理完了までの時間制約がある第１の処理グループＡと、割込みＩ１からなる、処理完了までの時間制約がない第２の処理グループＢが、リアルタイムＯＳ上で処理されるシステムである。
【０００５】
このシステムにおいては、従来、時間制約がない第２の処理グループＢの優先度を下げることにより、時間制約がある第１の処理グループＡのリアルタイム性を保証していた。しかしこの場合、ＣＰＵが有効な処理を行っていないアイドルタスクの実行時間が多く発生してしまい、処理効率が悪いという課題があった。図８において、第２の処理グループＢは、第１の処理グループＡの処理が完了した時刻Ｔ１以降、時刻Ｔ６なでの間のみ動作することが許可される。そのため、アイドルタスクがＴ１−Ｔ２，Ｔ３−Ｔ４，Ｔ５−Ｔ６の期間の間動作することになり、処理効率が悪いと考えられる。
【０００６】
このような課題を解決する従来技術として、制約時間と実際の実行時間の判定を行い、実際の実行時間が制約時間を超えた場合には異常状態として検知することを行っている（特許文献１参照）。
【特許文献１】特開２００４−１７１５８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、処理完了までの時間制約がある第１の処理グループＡと処理完了までの時間制約がない第２の処理グループＢを含んだシステムにおいて、従来の技術の場合には、第１の処理グループＡの処理が制約時間内に終了するかどうか判定することしかできず、第２の処理グループＢの処理効率を向上することは保証できないという課題がある。つまり、第２の処理グループＢの処理時間を効率良く配分しながら第１の処理グループＡの制約時間を保証する、ということができない。
【０００８】
したがって、本発明の目的は、時間制約のある処理を制約時間内に完了することを保証しながら、時間制約のない処理を効率良く処理する方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明によるリアルタイムＯＳにおける処理時間配分方法は、
処理完了までの時間制約がある第１の処理グループと処理完了までの時間制約がない第２の処理グループとを含んだリアルタイムＯＳにおいて、
前記第１の処理グループと前記第２の処理グループのそれぞれの処理開始から処理完了までの処理時間を算出する第１のステップと、
前記第１の処理グループの制約時間と処理時間との差分時間を算出する第２のステップと、
前記差分時間から第２の処理グループの処理可能値の初期値を設定する第３のステップと、
リアルタイムＯＳ処理時に前記処理可能値を更新する第４のステップと、
リアルタイムＯＳ処理時に前記処理可能値を判定して判定結果が処理可能を示す場合に、前記第１の処理グループが制約時間内に完了すべき処理を実行中に前記第２の処理グループを実行可能状態とする第５のステップとを有するものである。
【００１０】
上記において、前記第１のステップでは、前記第１の処理グループと前記第２の処理グループのそれぞれの処理開始から処理完了までの処理時間の最大値を算出し、前記第２のステップでは、前記第１の処理グループの制約時間と処理時間最大値との差分時間を算出することが好ましい。
【００１１】
また、上記において、前記第５のステップの判定は、リアルタイムＯＳ処理時に前記第２の処理グループの処理可能値と処理時間最大値とを比較して、前記処理可能値の方が大きい場合に前記第２の処理グループが実行可能状態と判定するものとするのが好ましい。
【００１２】
上記の処理時間配分方法において、第２の処理グループの処理の実行の都度に第２の処理グループの処理可能値を更新し、この処理可能値に基づいて次の第２の処理グループの処理の実行が可能か否かの判定を行うので、きめの細かい判定が可能となる。その結果、時間制約のある第１の処理グループの制約時間を保証しつつ、時間制約がない第２の処理グループの処理を無駄無くＣＰＵに割り当てることが可能となり、システム全体としての処理効率を改善することができる。
【００１３】
また、処理完了までの時間制約がある第１の処理グループと処理完了までの時間制約がない第２の処理グループとを含んだリアルタイムＯＳにおいて、
前記第１の処理グループと前記第２の処理グループのそれぞれの処理開始から処理完了までの処理時間を算出する第１のステップと、
前記第１の処理グループの制約時間と処理時間との差分時間を算出する第２のステップと、
前記差分時間から前記第２の処理グループの処理可能回数を算出して、この処理可能回数を前記第２の処理グループの処理可能値の初期値として、初期値を設定する第３のステップと、
リアルタイムＯＳ処理時に前記処理可能値を更新する第４のステップと、
リアルタイムＯＳ処理時に前記処理可能値を判定して判定結果が処理可能を示す場合に、前記第１の処理グループが制約時間内に完了すべき処理を実行中に前記第２の処理グループを実行可能状態とする第５のステップとを有するという態様もある。
【００１４】
この場合、処理可能回数を判定基準とするので、第１の処理グループの処理開始からの割込みまでの処理時間や第２の処理グループの処理時間を計数する必要がなく、より簡易な制御が可能となる。
【００１５】
また、上記において、前記第５のステップにおいて、前記処理可能値の値から前記第２の処理グループが実行可能状態ではなくなった場合に、前記処理可能値の算出方法を変更するという態様もある。すなわち、第２の処理グループの処理の実行ができるだけ可能となるように、処理可能値の算出方法を変更することにより、よりきめの細かい制御を実現するものである。
【００１６】
なお、上記において、前記リアルタイムＯＳ処理時とは、前記第２の処理グループの処理が終了した後に行われる前記第１の処理グループへのコンテキスト変更処理時としてよい。あるいは、前記リアルタイムＯＳ処理時とは、前記第１の処理グループの処理中にサービスコール発行等によりＯＳに処理を移した時であってもよい。
【００１７】
また、上記において、前記第４のステップでは、前記第２の処理グループの処理開始から処理終了までの実際の処理時間の計測手段を有し、計測された実際の処理時間から前記処理可能値を更新することが好ましい。これによって、よりきめの細かい制御が可能となる。
【００１８】
また、上記において、前記第４のステップでは、前記第１の処理グループの処理開始からサービスコール発行等によりＯＳに処理を移すポイントまでの第１の処理グループの処理最大値を算出し、前記第１の処理グループの処理開始からサービスコール発行等によりＯＳに処理を移すポイントまでの実際の処理時間の計測手段を有し、前記第１の処理グループ処理最大値と、前記ＯＳに処理を移すポイントまでの実際の処理時間から前記処理可能値を更新するという態様も好ましい。これによって、さらにきめの細かい制御が可能となる。
【発明の効果】
【００１９】
本発明によれば、時間制約のある第１の処理グループの制約時間を保証しつつ、時間制約がない第２の処理グループの処理を無駄無くＣＰＵに割り当てることが可能となり、システム全体としての処理効率を改善することが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明にかかわるリアルタイムＯＳにおける処理時間配分方法の実施の形態について図面を参照しながら詳細に説明する。なお、実施の形態１〜３のいずれのリアルタイムＯＳにおける処理時間配分方法も、図７に示す第１のステップＳ１から第５のステップＳ５までの５つのステップを有しているものとする。
【００２１】
≪実施の形態１≫
図１は本発明の実施の形態１のリアルタイムＯＳにおける処理時間配分方法のシステム構成を示している。本構成においては、処理完了までの時間制約がある第１の処理グループＡと、処理完了までの時間制約がない第２の処理グループＢとがリアルタイムＯＳ１０上で動作しているシステムであるとする。
【００２２】
第１の処理グループＡは、その処理完了までの制約時間Ａｒと、第１の処理グループＡの処理開始から処理完了までの全処理時間最大値Ａｍと、第１の処理グループＡの処理開始からの処理時間ＴＡと、第１の処理グループＡの処理開始からサービスコール発行等によりＯＳに処理を移すポイントまでの第１の処理グループＡの処理時間の最大値である一部処理時間最大値Ａｎを管理する。また、第２の処理グループＢは、その処理可能値Ｂｖと、第２の処理グループＢの全処理時間最大値Ｂｍと、第２の処理グループＢの処理開始からの処理時間ＴＢを管理する。
【００２３】
リアルタイムＯＳ１０は、少なくともコンテキスト切替部１０ａ、割り込み管理部１０ｂ、サービスコール１０ｃを含み、特定のサービスコールの発行や割り込みによって第１の処理グループＡと第２の処理グループＢとを切り替えるものとする。
【００２４】
図２は、本発明の実施の形態１における第１の処理グループＡと第２の処理グループＢの処理の流れを簡単に示したタイミングチャートである。ここで、第１の処理グループＡは２つのタスク（タスクＴ１、タスクＴ２）からなり、第２の処理グループＢは１つの割込み（割込みＩ１）からなる。ここで、第１の処理グループＡの処理完了までの制約時間Ａｒを６０秒（ｔ１３）とし、また、第２の処理グループＢは７秒毎に起動要求を発生するものとする。つまり、割込みＩ１の要求は７秒間隔で発生する。
【００２５】
まず、ステップＳ１において、第１の処理グループＡと第２の処理グループＢの処理開始から処理完了までの全処理時間最大値Ａｍ，Ｂｍを理論上の値や計測データなどから求める。ここで、本実施の形態では、第１の処理グループＡの全処理時間最大値Ａｍが４６秒、第２の処理グループＢの全処理時間最大値Ｂｍが３秒と求められたとする。また、第１の処理グループＡの一部処理時間最大値Ａｎについても同様に、理論上の値や計測データなどから求める。ここで、本実施の形態では、第１の処理グループＡでは時刻ｔ３と時刻ｔ１０でサービスコールが発行され、ＯＳに処理を移すとし、時刻ｔ３までの一部処理時間最大値Ａｎは１３秒、時刻ｔ１０までの一部処理時間最大値Ａｎは４０秒と求められたとする。
【００２６】
次に、ステップＳ２において、第１の処理グループＡの制約時間Ａｒと全処理時間最大値Ａｍの差分時間（Ａｒ−Ａｍ）を算出し、ステップＳ３において、第２の処理グループＢの処理可能値Ｂｖに設定する。この例では、第２の処理グループＢの処理可能値Ｂｖとして、Ｂｖ＝Ａｒ−Ａｍ＝６０秒−４６秒＝１４秒が設定される。
【００２７】
処理可能値Ｂｖの設定後、時刻ｔ０より処理を開始する。ここでは、ステップＳ４における処理可能値Ｂｖの更新は、第２の処理グループＢの処理が終了した後に行われる第１の処理グループＡへのコンテキスト切替処理時と、第１の処理グループＡの処理中にサービスコール発行等によりＯＳに処理を移した時に行うものとする。時刻ｔ２，ｔ３，ｔ５，ｔ７，ｔ９，ｔ１０，ｔ１２がそれに当たり、処理可能値Ｂｖを更新するタイミングである。
【００２８】
ステップＳ５において、時刻ｔ０では処理可能値Ｂｖは１４秒であり、第２の処理グループＢの全処理時間最大値Ｂｍの３秒よりも大きいため、第２の処理グループＢは割込み許可状態とする。
【００２９】
時刻ｔ１で第２の処理グループＢの割込み要求が発生すると、第２の処理グループＢの処理が実行される。このとき、第２の処理グループＢの処理が開始される際には、第１の処理グループＡの処理時間ＴＡの計測タイマを一時停止させ、また、第２の処理グループＢの処理時間ＴＢの計測タイマを動作させる。
【００３０】
第２の処理グループＢの処理完了後、時刻ｔ２では、第２の処理グループＢの計測タイマから第２の処理グループＢの処理時間ＴＢを算出する。ここで、第２の処理グループＢの処理時間ＴＢが３秒であった場合は、ステップＳ４において、処理可能値Ｂｖの値を３秒だけ減らして１１秒に更新し、ステップＳ５において、第２の処理グループＢの全処理時間最大値Ｂｍと処理可能値Ｂｖを比較する。ここでは、第２の処理グループＢの全処理時間最大値Ｂｍの３秒に比べて処理可能値Ｂｖの１１秒の方が大きいため、第２の処理グループＢを割込み許可状態として第１の処理グループＡに処理を移す。また、時刻ｔ２では第１の処理グループＡの処理時間ＴＡの計測タイマの一時停止を解除する。
【００３１】
次に、時刻ｔ３において第１の処理グループＡからサービスコールが発行される。サービスコール発行時には、第１の処理グループＡの計測タイマから、第１の処理グループＡが処理開始して（時刻ｔ０）からサービスコールが発行される（時刻ｔ３）までの処理時間ＴＡを算出する。ここで、第１の処理グループＡが処理開始してからサービスコールが発行されるまでの処理時間ＴＡが１３秒であったとすると、時刻ｔ３までの一部処理時間最大値Ａｎが１３秒であり、処理時間ＴＡと一部処理時間最大値Ａｎが同じであるため、処理可能値Ｂｖは１１秒のまま更新しない。
【００３２】
時刻ｔ４，ｔ６，ｔ８では、時刻ｔ１での処理と同様に、第１の処理グループＡの処理時間ＴＡの計測タイマを一時停止させ、また、第２の処理グループＢの処理時間ＴＢの計測タイマを動作させ、時刻ｔ５，ｔ７，ｔ９では、時刻ｔ２での処理と同様に、第２の処理グループＢの計測タイマから処理時間ＴＢを算出し、処理可能値Ｂｖを更新し、更新された処理可能値Ｂｖと全処理時間最大値Ｂｍを比較して、第２の処理グループＢを処理可能状態とするかどうか判定して第１の処理グループＡに処理を移す。この間、処理可能値Ｂｖは逐次に更新されて、１１秒→８秒→５秒となる（３秒ずつ減算）。
【００３３】
時刻ｔ９において、第２の処理グループＢの処理可能値Ｂｖが２秒となり、第２の処理グループＢは処理不可能状態となったとする。処理可能値Ｂｖの２秒が全処理時間最大値Ｂｍの３秒を下回るからである。
【００３４】
その後、時刻ｔ１０において、第１の処理グループＡからサービスコールが発行されると、第１の処理グループＡの計測タイマにおいて、第１の処理グループＡが処理開始して（時刻ｔ０）からサービスコールが発行される（時刻ｔ１０）までの処理時間ＴＡを算出する。ここで、第１の処理グループＡが処理開始してからサービスコールが発行されるまでの処理時間ＴＡが３８秒であったとする。時刻ｔ１０までの一部処理時間最大値Ａｎが４０秒であり、処理時間ＴＡが一部処理時間最大値Ａｎよりも２秒短くなっているため、余裕が生じている。そこで、処理可能値Ｂｖにおいて、前述の２秒に余裕の２秒を足して、４秒に更新する。このとき、更新された処理可能値Ｂｖの４秒は第２の処理グループＢの全処理時間最大値Ｂｍ（３秒）よりも大きいため、第２の処理グループＢを割込み許可状態とする。この処理不可能状態から割込み許可状態への切り替えがシステム状態変更である、このシステム状態変更を行うことで、時刻ｔ１１において第２の処理グループＢの処理が許可され、実行される。
【００３５】
第２の処理グループＢの処理実行後、時刻ｔ１２では、第２の処理グループＢの計測タイマから第２の処理グループＢの処理時間ＴＢを算出し、第２の処理グループＢの処理時間ＴＢが２秒であった場合は、ステップＳ４において処理可能値Ｂｖの値を２秒だけ減らして２秒に更新し、ステップＳ５において、第２の処理グループＢの全処理時間最大値Ｂｍと処理可能値Ｂｖを比較する。ここで、第２の処理グループＢの全処理時間最大値Ｂｍの３秒に比べて処理可能値Ｂｖの２秒の方が小さいため、第２の処理グループＢを割込み許可状態とはせずに、割込み禁止状態として第１の処理グループＡに処理を移す。
【００３６】
本実施の形態によれば、第１の処理グループＡの制約時間Ａｒと全処理時間最大値Ａｍから第２の処理グループＢの処理可能値Ｂｖを“時間”として設定し（Ｂｖ＝Ａｒ−Ａｍ）、処理可能値Ｂｖを更新しながら、その都度、処理可能値Ｂｖと第２の処理グループＢの全処理時間最大値Ｂｍと比較することで、第１の処理グループＡの制約時間Ａｒ内に第１の処理グループＡの処理が完了することを保証しながら、第２の処理グループＢを割込み許可状態とすることができる。
【００３７】
≪実施の形態２≫
上記の実施の形態１では、第２の処理グループの処理可能値Ｂｖとして、第１の処理グループＡの制約時間Ａｒと全処理時間最大値Ａｍの差分時間（Ａｒ−Ａｍ）を設定した。これに対して、本発明の実施の形態２は、差分時間（Ａｒ−Ａｍ）から算出した“処理可能回数”を第２の処理グループＢの処理可能値Ｂｃとするものである。
【００３８】
図３は本発明の実施の形態２のリアルタイムＯＳにおける処理時間配分方法のシステム構成を示している。本構成においては、処理完了までの時間制約がある第１の処理グループＡと、処理完了までの時間制約がない第２の処理グループＢとがリアルタイムＯＳ１０上で動作しているシステムであるとする。
【００３９】
第１の処理グループＡは、その処理完了までの制約時間Ａｒと、第１の処理グループＡの全処理時間最大値Ａｍを管理する。また、第２の処理グループＢは、その処理可能値Ｂｃと、第２の処理グループＢの全処理時間最大値Ｂｍを管理する。
【００４０】
リアルタイムＯＳ１０は、少なくともコンテキスト切替部１０ａ、割り込み管理部１０ｂ、サービスコール１０ｃを含み、特定のサービスコールの発行や割り込みによって第１の処理グループＡと第２の処理グループＢとを切り替えるものとする。
【００４１】
図４は、本発明の実施の形態２における第１の処理グループＡと第２の処理グループＢの処理の流れを簡単に示したタイミングチャートである。ここで、第１の処理グループＡは２つのタスク（タスクＴ１、タスクＴ２）からなり、第２の処理グループＢは１つの割込み（割込みＩ１）からなる。ここで、第１の処理グループＡの処理完了までの制約時間Ａｒを６０秒とし、また、第２の処理グループＢは７秒毎に割込み要求を発生するものとする。
【００４２】
まず、ステップＳ１において、第１の処理グループＡと第２の処理グループＢの処理開始から処理完了までの処理時間の最大値を理論上の値や計測データなどから求める。ここで、本実施の形態では、第１の処理グループＡの全処理時間最大値Ａｍが４６秒、第２の処理グループＢの全処理時間最大値Ｂｍが３秒と求められたとする。
【００４３】
次に、ステップＳ２において、第１の処理グループＡの制約時間Ａｒと全処理時間最大値Ａｍの差分時間（Ａｒ−Ａｍ）を算出し、ステップＳ３において、差分時間（Ａｒ−Ａｍ）から、第２の処理グループＢの処理可能値Ｂｃを算出する。第２の処理グループＢの処理可能値Ｂｃは、差分時間（Ａｒ−Ａｍ）と第２の処理グループＢの全処理時間最大値Ｂｍの除算によって求められる。ここでの例では、第２の処理グループＢの処理可能値Ｂｃとして、（Ａｒ−Ａｍ）÷Ｂｍ＝（６０秒−４６秒）／３秒＝４余り２となり、商である４は処理可能回数であり、これを処理可能値Ｂｃに設定する。
【００４４】
処理可能値Ｂｃの設定後、時刻ｔ０より処理を開始する。ここでは例として、ステップＳ４における処理可能値Ｂｃの更新は、第２の処理グループＢの処理が終了した後に行われる第１の処理グループＡへのコンテキスト切替処理時に行うものとする。時刻ｔ２，ｔ５，ｔ７，ｔ９がコンテキスト切替処理時であり、処理可能値Ｂｃを更新するタイミングである。
【００４５】
ステップＳ５において、時刻ｔ０では処理可能値Ｂｃは４であり、１以上であるため、第２の処理グループＢは割込み許可状態とする。
【００４６】
時刻ｔ１で第２の処理グループＢの割込み要求が発生すると、第２の処理グループＢの処理が実行される。第２の処理グループＢの処理実行後、時刻ｔ２では、第２の処理グループＢの処理が１回行われたので、ステップＳ４において、処理可能値Ｂｃの値を１減らして３に更新し、ステップＳ５において、この時点ではまだ処理可能値は０ではないので、第２の処理グループＢを割込み許可状態として第１の処理グループＡに処理を移す。
【００４７】
同様に時刻ｔ４，ｔ６で第２の処理グループＢの割込み要求が発生し、時刻ｔ５，ｔ７で処理可能値Ｂｃの値を更新し、それぞれ処理可能値Ｂｃが０かどうか比較して、０にはなっていないので、第２の処理グループＢを割込み許可状態として第１の処理グループＡに処理を移す。
【００４８】
時刻ｔ８で第２の処理グループＢの割込み要求が発生し、第２の処理グループＢの処理が実行されると、時刻ｔ９では処理可能値Ｂｖの値を１減らして０に更新する。このとき、処理可能値Ｂｃの値が０になるため、第２の処理グループＢを割込み許可状態とはせず、第２の処理グループＢを割込み禁止状態として第１の処理グループＡに処理を移す。
【００４９】
本実施の形態によれば、第１の処理グループＡの制約時間Ａｒと全処理時間最大値Ａｍ、第２の処理グループＢの全処理時間最大値Ｂｍから、あらかじめ第２の処理グループＢの処理可能値Ｂｃを“処理可能回数”として算出することで、第１の処理グループＡの制約時間Ａｒ内に第１の処理グループＡの処理が完了することを保証しながら、第２の処理グループＢを割込み許可状態とすることができる。
【００５０】
≪実施の形態３≫
上記の処理可能回数を処理可能値とする実施の形態２の場合、システムによっては、例えばキャッシュシステム等の場合は、処理実行時間は全処理時間最大値よりも短くなることがある。つまり、あらかじめ算出された処理可能値Ｂｃの回数だけ第２の処理グループＢを実行した後に再度第２の処理グループＢを割込み許可状態としても、第１の処理グループＡの制約時間Ａｒを保証できる場合がある。処理可能回数を判定基準とするからである。具体的には、（Ａｒ−Ａｍ）÷Ｂｍとしたときに、余りが生じている可能性があるからである。
【００５１】
そこで、本発明の実施の形態３においては、処理可能値Ｂｃが０となった後に再度第２の処理グループＢを割込み許可状態とすることが可能かどうか判定し、可能であれば再度割込み許可状態とする。
【００５２】
図５は本発明の実施の形態３のリアルタイムＯＳにおける処理時間配分方法のシステム構成を示している。本構成においては、処理完了までの時間制約がある第１の処理グループＡと、処理完了までの時間制約がない第２の処理グループＢとがリアルタイムＯＳ１０上で動作しているシステムであるとする。
【００５３】
第１の処理グループＡは、その制約時間Ａｒと第１の処理グループＡの全処理時間最大値Ａｍ、また、第１の処理グループＡの処理中に発行される各サービスコールにおいて、第１の処理グループＡの処理開始からの処理時間ＴＡと、第１の処理グループＡのサービスコール発行から第１の処理グループＡの処理完了までの残処理時間最大値Ａｚを管理する。処理時間ＴＡは、タイマリソースを用いること等により計測する。また第２の処理グループＢは、その処理可能値Ｂｃと第２の処理グループＢの全処理時間最大値Ｂｍを管理する。
【００５４】
リアルタイムＯＳは、少なくともコンテキスト切替部１０ａ、割り込み管理部１０ｂ、サービスコール１０ｃを含み、特定のサービスコールの発行や割り込みによって、第１の処理グループＡと第２の処理グループＢとを切り替えるものとする。
【００５５】
図６は、本発明の実施の形態３における第１の処理グループＡと第２の処理グループＢの処理の流れを簡単に示したタイミングチャートである。ここで、第１の処理グループＡは２つのタスク（タスクＴ１、タスクＴ２）からなり、第２の処理グループＢは１つの割込み（割込みＩ１）からなる。ここで、第１の処理グループＡの処理完了までの制約時間Ａｒを６０秒とし、また第２の処理グループＢは７秒毎に割込み要求を発生するものとする。
【００５６】
まず、ステップＳ１において、第１の処理グループＡと第２の処理グループＢの処理開始から処理完了までの全処理時間最大値と、サービスコール発行から第１の処理グループＡの処理完了までの残処理時間最大値Ａｚを理論上の値や計測データなどから求める。ここで、本実施の形態では、第１の処理グループＡの全処理時間最大値Ａｍが４６秒、第２の処理グループＢの全処理時間最大値Ｂｍが３秒、また、時刻ｔ３における残処理時間最大値Ａｚが３３秒、時刻ｔ１０における残処理時間最大値Ａｚが６秒と求められたとする。
【００５７】
次に、ステップＳ２において、第１の処理グループＡの制約時間Ａｒと全処理時間最大値Ａｍの差分時間（Ａｒ−Ａｍ）を算出し、ステップＳ３において差分時間（Ａｒ−Ａｍ）から、第２の処理グループＢの処理可能値Ｂｃを算出する。第２の処理グループＢの処理可能値Ｂｃは、差分時間（Ａｒ−Ａｍ）と第２の処理グループＢの全処理時間最大値Ｂｍの除算によって求められる。本実施の形態の場合、（差分時間＝１４）÷（全処理時間最大値Ｂｍ＝３）＝４余り２となり、商である４を処理可能値Ｂｃに設定する。
【００５８】
処理可能値Ｂｃの設定後、時刻ｔ０より処理を開始する。ここでは、処理可能値Ｂｃが１以上である場合はステップＳ４における処理可能値Ｂｃの更新は、第２の処理グループＢの処理が終了した後に行われる第１の処理グループＡへのコンテキスト切替処理時に行うものとする。時刻ｔ２，ｔ５，ｔ７，ｔ９，ｔ１２はコンテキスト切替処理時であり、処理可能値Ｂｃを更新するタイミングである。また、処理可能値Ｂｃが０の場合には、ステップＳ４における処理可能値Ｂｃの更新は、第１の処理グループＡの処理中にサービスコール発行等によりＯＳに処理を移した時に行うものとする。時刻ｔ３，ｔ１０はＯＳ処理時であり、処理可能値Ｂｃを更新するタイミングである。
【００５９】
ステップＳ５において、時刻ｔ０では処理可能値Ｂｃは４であるため、第２の処理グループＢは割込み許可状態とする。時刻ｔ０において、第１の処理グループＡの処理が開始される際には、第１の処理グループＡの処理時間ＴＡの計測タイマを動作させる。
【００６０】
時刻ｔ１で第２の処理グループＢの割込み要求が発生すると、第２の処理グループＢの処理が実行される。第２の処理グループＢの処理実行後、時刻ｔ２では第２の処理グループＢの処理が１回行われたので、ステップＳ４において処理可能値Ｂｃの値を１減らして３に更新し、ステップＳ５において、この時点ではまだ処理可能値は０ではないので、第２の処理グループＢを割込み許可状態として第１の処理グループＡに処理を移す。
【００６１】
時刻ｔ３において、サービスコールが発行されたとき、処理可能値Ｂｃは１以上であるため、処理可能値Ｂｃの更新は行わない。
【００６２】
時刻ｔ４、時刻ｔ６で第２の処理グループＢの割込み要求が発生したときは、それぞれ時刻ｔ５，ｔ７で処理可能値Ｂｃの値を更新し、それぞれ処理可能値Ｂｃが０かどうか比較して、０にはなっていないので、第２の処理グループＢを割込み許可状態として第１の処理グループＡに処理を移す。
【００６３】
時刻ｔ８で第２の処理グループＢの割込み要求が発生し、第２の処理グループＢの処理が実行されると時刻ｔ９では処理可能値Ｂｃの値を１減らして０に更新する。このとき処理可能値Ｂｃの値が０になるため、第２の処理グループＢを割込み許可状態とはせず、第２の処理グループＢを割込み禁止状態として第１の処理グループＡに処理を移す。
【００６４】
その後、第１の処理グループＡの処理中に、時刻ｔ１０でサービスコールが発行されたとする。このとき、処理可能値Ｂｃは０であるため、処理可能値Ｂｃの更新を行う。まず処理時間ＴＡと制約時間Ａｒを比較し、制約時間までの残りの時間を算出する。ここでは、時刻ｔ１０においてサービスコールが発行されたときの処理時間ＴＡは５０秒だったとする。このとき、残処理時間最大値Ａｚは６秒であり、制約時間Ａｒは６０秒であるため、（制約時間Ａｒ）−（処理時間ＴＡ）−（残処理時間最大値Ａｚ）＝４秒となり、４秒余る計算となる。第２の処理グループＢの全処理時間最大値Ｂｍは３秒であるため、第２の処理グループＢは再度挿入可能であることが分かるため、割込み禁止状態から割込み許可状態へシステム状態変更を行う。
【００６５】
システム状態変更を行うことで、時刻ｔ１１において第２の処理グループＢの処理が実行される。第２の処理グループＢの処理実行後、時刻ｔ１２では第２の処理グループＢを割込み許可状態とはせず、第２の処理グループＢを割込み禁止状態として第１の処理グループＡに処理を移す。
【００６６】
本実施の形態によれば、処理可能回数を処理可能値Ｂｃとする場合の判定基準誤差を解消し、処理完了までの時間制約がない第２の処理グループＢの処理の可能性を拡大できるので、よりきめの細かい制御が可能となる。
【産業上の利用可能性】
【００６７】
本発明のリアルタイムＯＳにおける処理時間配分方法は、処理完了までの時間制約がある第１の処理グループと処理完了までの時間制約がない第２の処理グループとを含んだリアルタイムＯＳにおいて、時間制約のある第１の処理グループの制約時間を保証しつつ、時間制約がない第２の処理グループの処理を無駄無くＣＰＵに割り当てることが可能となり、システム全体の処理効率を改善するための技術等として有用である。
【図面の簡単な説明】
【００６８】
【図１】本発明の実施の形態１のリアルタイムＯＳにおける処理時間配分方法のシステム構成を示す図
【図２】本発明の実施の形態１における処理の流れを示すタイミングチャート
【図３】本発明の実施の形態２のリアルタイムＯＳにおける処理時間配分方法のシステム構成を示す図
【図４】本発明の実施の形態２における処理の流れを示すタイミングチャート
【図５】本発明の実施の形態３のリアルタイムＯＳにおける処理時間配分方法のシステム構成を示す図
【図６】本発明の実施の形態３における処理の流れを示すタイミングチャート
【図７】本発明の実施の形態１〜３のリアルタイムＯＳにおける処理時間配分方法の処理手順のステップを示すフローチャート
【図８】従来の技術におけるリアルタイムＯＳにおける処理時間配分方法の処理の流れを示すタイミングチャート
【符号の説明】
【００６９】
Ａ  処理完了までの時間制約がある第１の処理グループ
Ｂ  処理完了までの時間制約がない第２の処理グループ
Ａｒ  処理完了までの時間制約がある第１の処理グループの制約時間
Ａｍ  第１の処理グループの全処理時間最大値
Ａｎ  第１の処理グループの一部処理時間最大値
Ａｚ  第１の処理グループの残処理時間最大値
Ｂｖ，Ｂｃ  第２の処理グループの処理可能値
Ｂｍ  第２の処理グループの全処理時間最大値
ＴＡ  第１の処理グループの処理時間
ＴＢ  第２の処理グループの処理時間
１０  リアルタイムＯＳ
１０ａ  コンテキスト切替部
１０ｂ  割り込み管理部
１０ｃ  サービスコール
【図１】
0004707603.tif 000002
【図２】
0004707603.tif 000003
【図３】
0004707603.tif 000004
【図４】
0004707603.tif 000005
【図５】
0004707603.tif 000006
【図６】
0004707603.tif 000007
【図７】
0004707603.tif 000008
【図８】
0004707603.tif 000009