(57)【要約】【課題】複数のＯＳにおいてタスクの最高優先度が同じ場合、いずれかのＯＳで最高優先度のタスクが実行されないことを抑制し、タスクに設定された優先度に基づき最高優先度のタスクが存在するＯＳに適切な実行時間を設定する。【解決手段】本開示の一態様は、複数のＯＳ４０、５０で実行されるタスク４２〜４６、５２、５４をスケジューリングするスケジューリング装置２であって、優先度取得部６２と時間設定部６４とスケジューリング部６６とを備える。優先度取得部は、複数のＯＳのそれぞれから実行可能なタスクの優先度を取得する。時間設定部は、２個以上のＯＳに最高優先度が同じタスクが存在する場合、最高優先度が同じタスクが存在するＯＳにおいて実行可能なタスクの優先度に基づいて、ＯＳ毎に最高優先度のタスクを実行する実行時間を設定する。スケジューリング部は、実行時間に基づいて最高優先度のタスクの実行をスケジューリングする。【選択図】図１
2019125242.tif 000002
【特許請求の範囲】
【請求項１】
複数のＯＳ（４０、５０）で実行されるタスクをスケジューリングするスケジューリング装置（２）であって、
複数のＯＳのそれぞれから実行可能なタスク（４２〜４６、５２、５４）の優先度を取得するように構成された優先度取得部（６２、Ｓ４００、Ｓ４４０、Ｓ４６０）と、
前記優先度取得部が取得する前記優先度を比較し、前記複数のＯＳのうち２個以上のＯＳに最高優先度が同じタスクが存在する場合、前記最高優先度が同じタスクが存在するＯＳにおいて実行可能なタスクの優先度に基づいて、ＯＳ毎に前記最高優先度のタスクを実行する時間の長さを表す実行時間を設定するように構成された時間設定部（６４、Ｓ４０６、Ｓ４１０、Ｓ４１２、Ｓ４２６〜Ｓ４３６）と、
前記時間設定部が設定する前記実行時間に基づいて、前記最高優先度のタスクの実行をスケジューリングするように構成されたスケジューリング部（６６、Ｓ４４２〜Ｓ４５０、Ｓ４６２〜Ｓ４７２）と、
を備えるスケジューリング装置。
【請求項２】
請求項１に記載のスケジューリング装置であって、
前記時間設定部（Ｓ４１０、Ｓ４１２）は、前記最高優先度が同じタスクが存在するＯＳにおいて実行可能なタスクの優先度の平均値に基づいて、前記実行時間を設定するように構成されている、
スケジューリング装置。
【請求項３】
請求項１または２に記載のスケジューリング装置であって、
前記時間設定部（Ｓ４１０、Ｓ４１２、Ｓ４３０）は、前記最高優先度が同じタスクが存在するＯＳにおいて実行可能なタスクの優先度に基づいてＯＳ毎に前記実行時間の係数を設定し、前記実行時間の係数から前記実行時間を設定するように構成されている、
スケジューリング装置。
【請求項４】
請求項１から３のいずれか１項に記載のスケジューリング装置であって、
前記スケジューリング部（Ｓ４５０、Ｓ４７２）は、前記最高優先度が同じタスクが存在するＯＳ毎に設定した前記実行時間がすべて終了すると、前記実行時間を再設定するように前記時間設定部に指令するように構成されている、
スケジューリング装置。
【請求項５】
請求項１から４のいずれか１項に記載のスケジューリング装置であって、
前記最高優先度が同じタスクが存在するＯＳに設定されている、各ＯＳが処理を実行するための単位時間を表す処理周期が終了するか、あるいは前記最高優先度のタスクのいずれかの実行が終了すると、前記スケジューリング部（Ｓ４４４、Ｓ４４６、Ｓ４５０、Ｓ４６６、Ｓ４６８、Ｓ４７２）は、前記実行時間を再設定して記最高優先度のタスクの実行をスケジューリングするか否かを決定するように構成されている、
スケジューリング装置。
【請求項６】
請求項５に記載のスケジューリング装置であって、
前記最高優先度のタスクのいずれかの実行が、前記実行時間のうちタスク毎に設定されたタスク時間よりも早く終了すると、前記スケジューリング部（Ｓ４６４）は、前記タスク時間よりも早くタスクが終了したＯＳの残りの前記実行時間から、早く終了した前記タスクの前記タスク時間の残り時間を減算して残りの前記実行時間を更新するように構成されている、
スケジューリング装置。
【請求項７】
複数のＯＳ（４０、５０）で実行されるタスク（４２〜４６、５２、５４）をスケジューリングするスケジューリングプログラムであって、
複数のＯＳのそれぞれから実行可能なタスク（４２〜４６、５２、５４）の優先度を取得するように構成された優先度取得部（６２、Ｓ４００、Ｓ４４０、Ｓ４６０）と、
前記優先度取得部が取得する前記優先度を比較し、前記複数のＯＳのうち２個以上のＯＳに最高優先度が同じタスクが存在する場合、前記最高優先度が同じタスクが存在するＯＳにおいて実行可能なタスクの優先度に基づいて、ＯＳ毎に前記最高優先度のタスクを実行する時間の長さを表す実行時間を設定するように構成された時間設定部（６４、Ｓ４０６、Ｓ４１０、Ｓ４１２、Ｓ４２０〜Ｓ４３６）と、
前記時間設定部が設定する前記実行時間に基づいて、前記最高優先度のタスクの実行をスケジューリングするように構成されたスケジューリング部（６６、Ｓ４４２〜Ｓ４５０、Ｓ４６２〜Ｓ４７２）と、
としてコンピュータを機能させるスケジューリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、複数のＯＳで実行されるタスクをスケジューリングする技術に関する。
【背景技術】
【０００２】
タスクの優先度に応じて複数のＯＳで実行されるタスクをスケジューリングする技術が知られている。例えば、特許文献１には、複数のＯＳにおいて優先度の基準が異なるＯＳが存在する場合、基準が異なる優先度を共通の優先度に変換し、共通化された優先度に基づいて、最高優先度のタスクを実行させるようにスケジューリングする技術が提案されている。
【０００３】
また、特許文献２には、受け付けた処理要求の処理種別に応じて、複数のＯＳのそれぞれが処理要求を実行するための負荷が設定されており、負荷の比に基づいて複数のＯＳのそれぞれがＣＰＵを使用する比率を設定している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２４２５１２号公報
【特許文献２】特開２０１３−０４１４８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の技術では、複数のＯＳとして例えば優先度の基準が異なるリアルタイムＯＳと事務処理ＯＳとにおいて共通化された優先度について、最高優先度が同じ場合、リアルタイムＯＳのタスクが優先して実行される。したがって、実行を優先されない事務処理ＯＳのタスクの最高優先度が実行を優先されるリアルタイムＯＳのタスクの最高優先度よりも高くなるまで、事務処理ＯＳの最高優先度のタスクは実行されないという課題がある。
【０００６】
また、特許文献２に記載の技術では、例えば、処理要求ＡについてＯＳ１とＯＳ２との負荷が１：１、処理要求ＢについてＯＳ２とＯＳ３との負荷が１：１の場合、処理要求Ａと処理要求Ｂとについて処理負荷をＯＳ毎に加算した１：２：１の比率でＯＳ１とＯＳ２とＯＳ３とがＣＰＵを使用する。
【０００７】
しかし、処理要求Ａにおいて比率の１が１ｍｓに対応し、処理要求Ｂにおいて比率の１が１００ｍｓに対応する場合、処理要求Ｂの比率と時間との対応関係に合わせると、１００ｍｓ：２００ｍｓ：１００ｍｓでＯＳ１とＯＳ２とＯＳ３とがＣＰＵを使用することになる。
【０００８】
この場合、ＯＳ１はＣＰＵを１ｍｓ使用して処理要求Ａの実行を終了するので、残りの９９ｍｓの間ＣＰＵはアイドル状態になり、無駄な時間が発生するという課題がある。
本開示は、複数のＯＳにおいてタスクの最高優先度が同じ場合、いずれかのＯＳで最高優先度のタスクが実行されないことを抑制し、タスクに設定された優先度に基づき最高優先度のタスクが存在するＯＳに適切な実行時間を設定する技術を提供することが望ましい。
【課題を解決するための手段】
【０００９】
本開示の一態様は、複数のＯＳ（４０、５０）で実行されるタスク（４２〜４６、５２、５４）をスケジューリングするスケジューリング装置（２）であって、優先度取得部（６２、Ｓ４００、Ｓ４４０、Ｓ４６０）と、時間設定部（６４、Ｓ４０６、Ｓ４１０、Ｓ４１２、Ｓ４２０〜Ｓ４３６）と、スケジューリング部（６６、Ｓ４４２〜Ｓ４５０、Ｓ４６２〜Ｓ４７２）と、を備える。
【００１０】
本開示の他の一態様は、複数のＯＳ（４０、５０）で実行されるタスクをスケジューリングするスケジューリングプログラムであって、優先度取得部６２、Ｓ４００、Ｓ４４０、Ｓ４６０）と、時間設定部（６４、Ｓ４０６、Ｓ４１０、Ｓ４１２、Ｓ４２０〜Ｓ４３６）と、スケジューリング部（６６、Ｓ４４２〜Ｓ４５０、Ｓ４６２〜Ｓ４７２）と、としてコンピュータを機能させる。
【００１１】
優先度取得部は、複数のＯＳのそれぞれから実行可能なタスクの優先度を取得する。時間設定部は、優先度取得部が取得する優先度を比較し、複数のＯＳのうち２個以上のＯＳに最高優先度が同じタスクが存在する場合、最高優先度が同じタスクが存在するＯＳにおいて実行可能なタスクの優先度に基づいて、ＯＳ毎に最高優先度のタスクを実行する時間の長さを表す実行時間を設定する。
【００１２】
スケジューリング部は、時間設定部が設定する実行時間に基づいて、最高優先度のタスクの実行をスケジューリングする。
このような構成によれば、ＯＳ毎に最高優先度のタスクを実行する実行時間が設定されるので、実行時間が設定されたＯＳにおいて最高優先度のタスクが実行される。したがって、いずれかのＯＳで最高優先度のタスクが実行されないことを抑制できる。
【００１３】
さらに、タスクに設定された優先度に基づき、ＯＳ毎に最高優先度のタスクを実行するための適切な実行時間を設定することができる。
なお、この欄及び特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１４】
【図１】スケジューリング装置の構成を示すブロック図。
【図２】実行時間係数の算出処理のフローチャート。
【図３】実行時間の設定処理のフローチャート。
【図４】スケジューリング処理のフローチャート。
【図５】スケジューリング処理の他のフローチャート。
【図６】スケジューリング処理の例を示すタイムチャート。
【発明を実施するための形態】
【００１５】
以下、図を参照しながら、本開示の実施形態を説明する。
［１．構成］
図１に示すスケジューリング装置２は、複数のＯＳのそれぞれで実行可能なタスクの優先度に基づいて、最高優先度のタスクが存在するＯＳに、最高優先度のタスクを実行する時間の長さを表す実行時間を設定するスケジューリングを行う。
【００１６】
スケジューリング装置２は、コア２０と、ＲＡＭ、ＲＯＭ、フラッシュメモリ等の半導体メモリ３０と、を有する周知のマイクロコンピュータを１０中心に構成される。スケジューリング装置２の各種機能は、コア２０が非遷移的実体的記録媒体に格納されたプログラムを実行することにより実現される。この例では、メモリ３０が、プログラムを格納した非遷移的実体的記録媒体に該当する。また、このプログラムが実行されることで、プログラムに対応する方法が実行される。
【００１７】
なお、スケジューリング装置２は１つのマイクロコンピュータで構成されてもよいし、複数のマイクロコンピュータで構成されてもよい。スケジューリング装置２が複数のマイクロコンピュータで構成される場合、マイクロコンピュータ毎に独立してタスクのスケジューリングが行われる。
【００１８】
メモリ３０は、ＯＳ４０、５０と、ＯＳ４０上で実行されるタスク４２〜４６と、ＯＳ５０上で実行されるタスク５２、５４と、ＯＳ４０、５０上のタスクの実行をスケジューリングするハイパーバイザ６０等のプログラムとデータとを記憶している。これらのプログラムは、コア２０により実行される。
【００１９】
ハイパーバイザ６０は、コア２０がハイパーバイザ６０を実行することで実現される機能の構成として、優先度取得部６２と時間設定部６４とスケジューリング部６６とを備える。
【００２０】
優先度取得部６２は、ＯＳ４０、５０のそれぞれからＯＳ４０、５０で実行可能なタスクの数とタスクの優先度とをあらわす優先度情報を取得する。
時間設定部６４は、優先度取得部６２がＯＳ４０、５０のそれぞれから取得するＯＳ４０、５０で実行可能なタスクの数とタスクの優先度とを表す優先度情報に基づいて、優先度を比較する。そして、時間設定部６４は、ＯＳ４０、５０において同じ最高優先度のタスクが存在する場合、ＯＳ４０、５０のそれぞれにおいて最高優先度のタスクを実行する実行時間を設定する。実行時間が設定されたＯＳだけがコア２０を使用してタスクを実行できる。実行時間の設定の詳細については後述する。
【００２１】
なお、本実施形態では、時間設定部６４が最高優先度のタスクが存在する複数のＯＳであるＯＳ４０、５０に設定する実行時間の合計を、１つのスケジューリング周期とする。
スケジューリング部６６は、時間設定部６４が設定した実行時間に基づいて、ＯＳ４０、５０のそれぞれが実行する最高優先度のタスクをスケジューリングする。スケジューリング部６６は、ＯＳ４０、５０において同じ最高優先度のタスクが存在しない場合、ＯＳ４０、５０に存在する実行可能なＯＳのうち最高優先度のタスクを実行させる。
【００２２】
［２．処理］
次に、スケジューリング装置２が実行する処理について、図２〜図５のフローチャートを用いて説明する。
（１）実行時間係数の算出処理
スケジューリング装置２が実行する実行時間係数の算出処理について、図２のフローチャートに基づいて説明する。実行時間計数は、最高優先度のタスクが複数のＯＳに存在する場合、該当する各ＯＳに実行時間を設定するための割合を表す計数である。図２の実行時間係数の算出処理は、後述する図４または図５のフローチャートにおいて、実行時間計数の算出が必要と判定されると実行される。
【００２３】
Ｓ４００において優先度取得部６２は、全ＯＳから実行可能なタスク数と、各タスクの優先度とを表す優先度情報を取得する。例えば、図１において、優先度取得部６２は、ＯＳ４０については、実行可能なタスク数が３個であり、タスク４２〜４６のそれぞれの優先度が３である優先度情報を取得する。優先度取得部６２は、ＯＳ５０については、実行可能なタスク数が２個であり、タスク５２の優先度が３であり、タスク５４の優先度が１である優先度情報を取得する。
【００２４】
Ｓ４０２において時間設定部６４は、全ＯＳで優先度の基準が同じか否かを判定する。Ｓ４０２の判定がＹｅｓである、つまり全ＯＳで優先度の基準が同じ場合、処理はＳ４０６に移行する。図１の例では、ＯＳ４０とＯＳ５０とで優先度の基準は同じである。
【００２５】
Ｓ４０２の判定がＮｏである、つまり複数のＯＳに優先度の基準が異なるＯＳが存在する場合、Ｓ４０４において時間設定部６４は、優先度の基準を統一する。例えば、時間設定部６４は、各ＯＳに応じて設定された優先度の変換テーブルに基づいて、各ＯＳの基準で設定された各ＯＳに固有の優先度を、全ＯＳで共通の基準で統一された優先度に変換し、処理をＳ４０６に移行する。
【００２６】
尚、各ＯＳが優先度の変換テーブルを記憶しており、各ＯＳが各ＯＳに固有の優先度を全ＯＳで共通の優先度に変換して時間設定部６４に通知してもよい。
Ｓ４０６において時間設定部６４は、取得した優先度を比較し、最高優先度が同じタスクが２個以上の複数のＯＳに存在するか否かを判定する。Ｓ４０６の判定がＮｏである、つまり最高優先度が同じタスクが複数のＯＳに存在しない場合、Ｓ４０８において時間設定部６４は、実行時間係数を算出せず、本処理を終了する。この場合、最高優先度のタスクが存在する１つのＯＳが実行される。
【００２７】
Ｓ４０６の判定がＹｅｓである、つまり最高優先度が同じタスクが複数のＯＳに存在する場合、Ｓ４１０において時間設定部６４は、各ＯＳに存在するタスクの優先度の平均値を算出する。図１の例では、ＯＳ４０、５０の最高優先度は同じ３であるから、Ｓ４０６の判定はＹｅｓである。そして、ＯＳ４０に存在するタスクの優先度の平均値は３であり、ＯＳ５０に存在するタスクの優先度の平均値は２である。
【００２８】
Ｓ４１２において時間設定部６４は、Ｓ４１０で算出した平均値に基づいて、最高優先度が同じタスクが存在するＯＳにおいて最高優先度のタスクを実行する実行時間を算出するための実行時間係数を算出する。
【００２９】
具体的には、時間設定部６４は、次式（１）に基づいて実行時間係数を算出する。
実行時間係数＝（各ＯＳの優先度の平均値／全ＯＳの優先度の平均値の合計）×１００
・・・（１）
図１の例では、ＯＳ４０の優先度の平均値は３であり、ＯＳ５０の優先度の平均値は２であり、全ＯＳの優先度の合計は５である。
【００３０】
したがって、ＯＳ４０の実行時間係数は、（３／５）×１００＝６０であり、ＯＳ５０の実行時間係数は、（２／５）×１００＝４０である。
（２）実行時間の設定処理
スケジューリング装置２が実行する実行時間の設定処理について、図３のフローチャートに基づいて説明する。図３の実行時間の設定処理は、図２に示す実行時間係数の算出処理の実行後に実行される。
【００３１】
Ｓ４２０において時間設定部６４は、全ＯＳの処理周期と、図２の実行時間計数の算出処理で算出または取得された実行時間係数と各ＯＳの最高優先度と最高優先度のタスク数とを取得する。ＯＳの処理周期は、各ＯＳが処理を実行するために予め設定された単位時間を表す周期を表している。例えば、図１のＯＳ４０の処理周期は１８０ｍｓ、ＯＳ５０の処理周期は４０ｍｓに設定されている。
【００３２】
Ｓ４２２とＳ４２４とは図２のＳ４０２とＳ４０４と同じ処理であるから説明を省略する。Ｓ４２６の判定がＮｏである、つまり最高優先度が同じタスクが複数のＯＳに存在しない場合、処理はＳ４３２に移行する。例えば、図１において、ＯＳ５０のタスク５２の優先度が３ではなく２の場合、ＯＳ４０とＯＳ５０とに最高優先度が同じタスクが存在しないので、Ｓ４２６の判定はＮｏになる。
【００３３】
Ｓ４２６の判定がＹｅｓである、つまり最高優先度が同じタスクが複数のＯＳに存在する場合、Ｓ４２８において時間設定部６４は、各ＯＳの処理周期が実行時間係数に基づいて算出された実行時間以下であるか否かを判定する。具体的には、時間設定部６４は、次式（２）が成立するか否かを判定する。図１の例では、ＯＳ４０とＯＳ５０とに最高優先度が３の同じタスクが存在するので、Ｓ４２６の判定はＹｅｓになる。
【００３４】
各ＯＳの処理周期≦実行時間係数×最高優先度のタスク数×単位実行時間
・・・（２）
式（２）において、単位実行時間は、例えば予め１ｍｓに設定されている。Ｓ４２８の判定がＮｏである、つまり式（２）において、各ＯＳの処理周期が式（２）の右辺よりも大きい場合、処理はＳ４３６に移行する。
【００３５】
例えば、図１のＯＳ４０について、処理周期＝１８０ｍｓ、実行時間係数＝６０、最高優先度のタスク数＝３、単位実行時間＝１ｍｓであるから、式（２）の右辺の値は、６０×３×１ｍｓ＝１８０ｍｓとなり、式（２）の左辺の処理周期と同じになるので、式（２）は成立する。
【００３６】
また、図１のＯＳ５０について、処理周期＝４０ｍｓ、実行時間係数＝４０、最高優先度のタスク数＝１、単位実行時間＝１ｍｓであるから、式（２）の右辺の値は、４０×１×１ｍｓ＝４０ｍｓとなり、式（２）の左辺の処理周期と同じになるので、式（２）は成立する。
【００３７】
Ｓ４２８の判定がＹｅｓである、つまり式（２）が成立する場合、Ｓ４３０において時間設定部６４は、式（２）の右辺である実行時間係数に基づいて算出された実行時間と、対応するＯＳの処理周期との最小公倍数を算出し、各ＯＳの実行時間として設定する。この場合、最小公倍数は厳密に算出するのではなく、例えばＯＳの処理周期が５０ｍｓ、式（２）の右辺の乗算結果が１０９ｍｓであれば、最小公倍数を１００ｍｓとし、１００ｍｓをＯＳの実行時間として設定する。
【００３８】
例えば、図１のＯＳ４０について、処理周期＝１８０ｍｓであり、式（２）の右辺の値は１８０ｍｓであるから、式（２）の右辺の値と、対応するＯＳ４０の処理周期との最小公倍数は１８０ｍｓになる。
【００３９】
また、図１のＯＳ５０について、処理周期＝４０ｍｓであり、式（２）の右辺の値は４０ｍｓであるから、式（２）の右辺の値と対応するＯＳの処理周期との最小公倍数は４０ｍｓになる。
【００４０】
Ｓ４２６の判定がＮｏである、つまり最高優先度が同じタスクが複数のＯＳに存在しない場合、Ｓ４３２において時間設定部６４は、最高優先度のタスクが存在するＯＳについて、ＯＳの処理周期が単位時間数に基づいて算出された実行時間以下であるか否かを判定する。具体的には、時間設定部６４は、次式（３）が成立するか否かを判定する。式（３）において、単位時間数は、例えば予め１００に設定されている。
【００４１】
ＯＳの処理周期≦単位時間数×最高優先度のタスク数×単位実行時間  ・・・（３）
Ｓ４３２の判定がＮｏである、つまり式（３）において、最高優先度のタスクが存在するＯＳの処理周期が式（３）の右辺よりも大きい場合、処理はＳ４３６に移行する。
【００４２】
Ｓ４３２の判定がＹｅｓである、つまり式（３）が成立する場合、Ｓ４３４において時間設定部６４は、式（３）の右辺である単位時間数に基づいて算出された実行時間と、最高優先度のタスクが存在するＯＳの処理周期との最小公倍数を算出し、最高優先度のタスクが存在するＯＳの実行時間として設定する。
【００４３】
Ｓ４２８の判定がＮｏであるか、Ｓ４３２の判定がＮｏである場合、Ｓ４３６において時間設定部６４は、最高優先度のタスクが存在するＯＳの処理周期を実行時間として設定する。
【００４４】
尚、Ｓ４３０、Ｓ４３４、Ｓ４３６において最高優先度のタスクが存在するＯＳにだけ実行時間が設定され、最高優先度のタスクが存在しない他のＯＳの実行時間には０が設定される。つまり、最高優先度のタスクが存在しない他のＯＳは、最高優先度が同じタスクが存在するまで実行されない。
【００４５】
（３）スケジューリング処理１
スケジューリング装置２が実行するスケジューリング処理１について、図４のフローチャートに基づいて説明する。図４のスケジューリング処理１は、各ＯＳの処理周期が終了したときに実行される。
【００４６】
例えば、図１の例では、ＯＳ４０であれば処理周期１８０ｍｓが経過する毎に、ＯＳ５０であれば処理周期４０ｍｓが経過する毎に図４のフローチャートは起動される。尚、後述するように実行中のタスクの処理が早く終了すると、処理周期が短縮されることがある。
【００４７】
図１の例では、ＯＳ４０の処理周期と設定される実行時間とが同じ１８０ｍｓであり、ＯＳ５０の処理周期と設定される実行時間とが同じ４０ｍｓであった。これに対し、設定される実行時間よりも処理周期が短いこともある。その場合にも、最高優先度が同じタスクが存在するＯＳについて、処理周期が経過する毎に図４のフローチャートは起動される。
【００４８】
Ｓ４４０において優先度取得部６２は、全ＯＳから実行可能なタスクの最高優先度を取得する。図３の実行時間設定処理が実行されて各ＯＳに実行時間が設定されてから、新しく実行可能なタスクが発生すると、新しく発生したタスクも含めた実行可能なタスクの最高優先度を取得する。
【００４９】
Ｓ４４２においてスケジューリング部６６は、Ｓ４４０において優先度取得部６２が全ＯＳから取得するタスクの最高優先度が、前回、時間設定部６４がＯＳの実行時間を設定してスケジューリング周期が開始されたときの最高優先度よりも高いか否かを判定する。
【００５０】
Ｓ４４２の判定がＹｅｓである、つまりＳ４４０において優先度取得部６２が全ＯＳから取得するタスクの最高優先度が、スケジューリング周期が開始されたときの最高優先度よりも高い場合、処理はＳ４５０に移行する。
【００５１】
Ｓ４４２の判定がＮｏである、つまりＳ４４０で優先度取得部６２が取得するタスクの最高優先度が、スケジューリング周期が開始されたときの最高優先度以下の場合、Ｓ４４４においてスケジューリング部６６は、実行中のＯＳに設定されている実行時間の残り時間が０であるか否かを判定する。
【００５２】
Ｓ４４４の判定がＮｏである、つまり実行中のＯＳに設定されている実行時間の残り時間が０ではない場合、本処理は終了する。この場合、実行中のＯＳは処理を継続する。
Ｓ４４４の判定がＹｅｓである、つまり実行中のＯＳに設定されている実行時間の残り時間が０の場合、Ｓ４４６においてスケジューリング部６６は、最高優先度のタスクが存在する全ＯＳの残り実行時間が０であるか否か、つまりスケジューリング周期が経過したか否かを判定する。Ｓ４４６の判定がＹｅｓである、つまり全ＯＳの残り実行時間が０の場合、処理はＳ４５０に移行する。
【００５３】
Ｓ４４６の判定がＮｏである、つまり実行中のＯＳに設定されている実行時間の残り時間は０であるが、他に実行時間が残っているＯＳが存在する場合、Ｓ４４８においてスケジューリング部６６は、実行中のＯＳから他のＯＳに切り替える。
【００５４】
スケジューリング部６６は、Ｓ４４２において、Ｓ４４０で優先度取得部６２が取得するタスクの最高優先度がスケジューリング周期が開始されたときの最高優先度よりも高いと判定するか、あるいはＳ４４６において、全ＯＳの残り実行時間が０であると判定すると、実行時間を再設定する必要があると判断する。そこで、Ｓ４５０においてスケジューリング部６６は、図２の実行時間係数の算出処理と図３の実行時間の設定処理とを実行するように時間設定部６４に指令する。
【００５５】
（４）スケジューリング処理２
スケジューリング装置２が実行するスケジューリング処理２について、図５のフローチャートに基づいて説明する。図５のスケジューリング処理２は、実行中のタスクの処理が終了したときに実行される。
【００５６】
Ｓ４６４以外のＳ４６０、Ｓ４６２、Ｓ４６６〜Ｓ４７２は、図４のＳ４４０〜Ｓ４５０の処理と実質的に同一であるから説明を省略する。
Ｓ４６２の判定がＮｏである、つまりＳ４６０において優先度取得部６２が全ＯＳから取得するタスクの最高優先度が、スケジューリング周期が開始されたときの最高優先度以下の場合、Ｓ４６４においてスケジューリング部６６は、次式（４）によりＯＳの残り実行時間を更新し、次式（５）により、処理周期の残り時間を更新する。
【００５７】
ＯＳの残り実行時間＝ＯＳの現在の残り実行時間−実行を終了したタスクに設定されたタスク時間の残り時間                                              ・・・（４）
ＯＳの処理周期の残り時間＝処理周期の現在の残り時間−実行を終了したタスクに設定されたタスク時間の残り時間                                        ・・・（５）
【００５８】
図１の例において、図６のタイムチャートが示すように、タスク４２が、ＯＳ４０に設定された実行時間のうちタスク４２に設定された実行時間であるタスク時間の６０ｍｓが経過する前に、４０ｍｓが経過したときに実行を終了すると、ＯＳ４０の現在の残り実行時間は、１８０ｍｓ−４０ｍｓ＝１４０ｍｓである。
【００５９】
そして、実行を終了したタスク４２に設定されたタスク時間の残り時間は、６０ｍｓ−４０ｍｓ＝２０ｍｓである。したがって、式（４）から、ＯＳ４０の残り実行時間は、１４０ｍｓ−２０ｍｓ＝１２０ｍｓである。尚、図６では、ＯＳ５０よりも実行時間係数の大きいＯＳ４０が先に処理されている。
【００６０】
同様に、ＯＳ４０の処理周期の残り時間は、ＯＳ４０の残り実行時間と同様に、式（５）から１４０ｍｓ−２０ｍｓ＝１２０ｍｓである。
つまり、タスク４２が設定されたタスク時間６０ｍｓよりも２０ｍｓ早く実行を終了したので、ＯＳ４０の実行時間と処理周期とは２０ｍｓ短くなり、タスク４２の実行が終了した時点で１２０ｍｓになる。したがって、ＯＳ４０については、スケジューリング周期が開始されてから１６０ｍｓ経過すると処理周期が経過するので、ハイパーバイザ６０が起動され、図４のスケジューリング処理１が実行される。
【００６１】
［３．効果］
以上説明した上記実施形態によれば、以下の効果を得ることができる。
（１）最高優先度が同じタスクが複数のＯＳに存在する場合、最高優先度が同じタスクが存在する各ＯＳに実行時間が設定され、いずれかのＯＳに設定された実行時間が経過すると、他のＯＳに処理が切り替えられる。したがって、最高優先度が同じタスクが存在する複数のＯＳのうち、特定のＯＳが常に実行されることを抑制できる。
【００６２】
これにより、最高優先度が同じタスクが存在する複数のＯＳのうち、いずれかのＯＳで最高優先度のタスクが実行されないことを抑制できる。
例えば、スケジューリング装置２が車両に搭載され、車両制御を複数のＯＳで処理する場合、最高優先度が同じ車両制御のタスクが存在する複数のＯＳのうち、いずれかのＯＳで最高優先度の車両制御のタスクが実行されないことを抑制できる。これにより、最高優先度の車両制御のタスクを極力速やかに実行できる。
【００６３】
（２）スケジューリング周期中に、スケジューリング周期が開始されたときの最高優先度よりも高い優先度のタスクが実行可能にならないかぎり、ＯＳの実行時間は再設定されない。したがって、各ＯＳにおいて、スケジューリング周期が開始されたときの最高優先度のタスクの実行は停止されずに継続される。
【００６４】
（３）最高優先度が同じタスクが複数のＯＳで存在する場合、該当するＯＳのすべての実行可能なタスクに設定された優先度の平均値に基づき、各タスクに適切な実行時間を設定できる。
【００６５】
（４）設定された実行時間よりもタスクが早く実行を終了すると、タスクに設定された実行時間の残り時間をＯＳの残り実行時間と処理周期の残り時間とから減算するので、実行が終了したタスクに設定された実行時間の残り時間でＯＳがアイドル状態になったりすることを抑制する。これにより、ＯＳに設定された実行時間を無駄なく有効に使用できる。
【００６６】
上記実施形態において、Ｓ４００、Ｓ４４０、Ｓ４６０が優先度取得部の処理に対応し、Ｓ４０６、Ｓ４１０、Ｓ４１２、Ｓ４２６〜Ｓ４３６が時間設定部の処理に対応し、Ｓ４４２〜Ｓ４５０、Ｓ４６２〜Ｓ４７２がスケジューリング部の処理に対応する。
【００６７】
［４．他の実施形態］
以上、本開示の実施形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
【００６８】
（１）上記実施形態では、最高優先度が同じタスクが存在する複数のＯＳについて、各ＯＳの全タスクの優先度の平均値に基づいて実行時間係数を算出した。これに対し、最高優先度が同じタスクが存在する複数のＯＳについて、最高優先度のタスクの数に基づいて実行時間係数を算出してもよい。
【００６９】
（２）上記実施形態では、ＯＳ５０よりも実行時間係数の大きいＯＳ４０が先に処理されている。これに対し、最高優先度が同じタスクが存在するＯＳであれば、ＯＳの処理序を実行時間係数の大きさに拘わらず適宜決定してもよい。
【００７０】
（３）上記実施形態では、マイクロコンピュータ１０のコア２０は１つであったが、コアの数は複数でもよい。
（４）上記実施形態における１つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、１つの構成要素が有する１つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、１つの構成要素によって実現したり、複数の構成要素によって実現される１つの機能を、１つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。なお、特許請求の範囲に記載した文言から特定される技術思想に含まれるあらゆる態様が本開示の実施形態である。
【００７１】
（５）上述したスケジューリング装置２の他、当該スケジューリング装置２を構成要素とするシステム、当該スケジューリング装置２としてコンピュータを機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実態的記録媒体、スケジューリング方法など、種々の形態で本開示を実現することもできる。
【符号の説明】
【００７２】
２：スケジューリング装置、６２：優先度取得部、６４：時間設定部、６６：スケジューリング部、４２〜４６、５２、５４：タスク
【図１】
2019125242.tif 000003
【図２】
2019125242.tif 000004
【図３】
2019125242.tif 000005
【図４】
2019125242.tif 000006
【図５】
2019125242.tif 000007
【図６】
2019125242.tif 000008