JP5423635B2 - スケジューリング方法,スケジューリングプログラム,スケジューリング装置 - Google Patents

スケジューリング方法,スケジューリングプログラム,スケジューリング装置 Download PDF

Info

Publication number
JP5423635B2
JP5423635B2 JP2010224215A JP2010224215A JP5423635B2 JP 5423635 B2 JP5423635 B2 JP 5423635B2 JP 2010224215 A JP2010224215 A JP 2010224215A JP 2010224215 A JP2010224215 A JP 2010224215A JP 5423635 B2 JP5423635 B2 JP 5423635B2
Authority
JP
Japan
Prior art keywords
task
time
execution right
scheduling
guarantee
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010224215A
Other languages
English (en)
Other versions
JP2011198346A (ja
Inventor
尊裕 司代
岩井  明史
洋介 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP2010224215A priority Critical patent/JP5423635B2/ja
Priority to US12/927,142 priority patent/US8595746B2/en
Priority to DE102010043569A priority patent/DE102010043569A1/de
Publication of JP2011198346A publication Critical patent/JP2011198346A/ja
Application granted granted Critical
Publication of JP5423635B2 publication Critical patent/JP5423635B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、タスクのスケジューリング方法等に関する。
仮想化したコンピュータ上でOSやアプリケーション等を動作させる仮想化技術が知られている。この仮想化技術を適用し、既存の装置を制御するコンピュータを仮想化すると共に、仮想化されたコンピュータ上で該装置の制御に用いられていたプログラムを動作させることで、該装置を容易に再現することができる。さらに、仮想化技術により、複数の既存の装置について、それぞれ、該装置を再現するプログラムである仮想マシン(仮想計算機とも記載)を作成すると共に、これらの仮想マシンを1台の装置で稼動させることで、複数の既存の装置を1台に統合することが可能となる。
また、複数の既存の装置を1台に統合すると同時に、該装置とは異なる新たな機能を追加するということも想定される。このような場合には、該機能を実現するための専用アプリケーションを新たに設け、仮想マシンと専用アプリケーションをタスクとしてスケジューリングを行い、これらを並行して稼動させることが考えられる。
このように、仮想マシンや専用アプリケーションをタスクとしてスケジューリングを行う場合には、各タスクの動作時間を適切に割り当てる必要がある。例えば、車両の制御を行う仮想マシンや専用アプリケーションがタスクとなっている場合等には、該タスクのリアルタイム性を確保する必要があり、そのためには、該タスクに対し一定期間につき割り当てられる動作時間を保証する必要がある。
ここで、特許文献1には、各仮想計算機のタスク及び割込みハンドラに統一的に優先度を付与し、割込みが発生した際には、動作中の仮想計算機のタスクの優先度と発生した割込みに対応する割込みハンドラの優先度とを比較し、該割込みハンドラを実行するか否かを判定する仮想計算機制御装置について記載されている。
特開2008−234116号公報
特許文献1に記載の仮想計算機制御装置によれば、優先度の高い仮想計算機の稼動中に、優先度の低い仮想計算機に対応する割込みハンドラが実行されてしまうことを防ぐことができ、優先度の高い仮想計算機を滞りなく稼動させることができる。しかしながら、各タスクの優先度を設定したとしても、各仮想計算機に対し一定期間につき割り当てられる動作時間を保証することはできず、これらの仮想計算機のリアルタイム性が確保されるとは限らない。
本願発明は上記課題に鑑みてなされたものであり、スケジューリングの対象となるタスクのうち、特定のタスクについてはリアルタイム性を確保することができるスケジューリング方法を提供することを目的とする。
上記課題に鑑みてなされた請求項1に記載の発明は、周期的に到来するタイミングを生成して基準サイクルとし、該基準サイクルの1周期であるタイムスライスにおいて、複数のタスクに順次実行権を付与する装置におけるスケジューリング方法に関するものである。このスケジューリング方法では、それぞれのタスクには稼働時間が設定されており、タスクとして、それぞれのタイムスライスで稼働時間にわたり必ず実行権が付与される時間保証タスクと、それぞれのタイムスライスで稼働時間にわたり実行権が付与されるとは限らない非時間保証タスクとが存在し、それぞれの時間保証タスクに設定されている稼働時間の総和は、タイムスライスよりも小さい。また、時間保証タスクには、実行権を付与する優先度である第一優先度が設定されていると共に、非時間保証タスクには、実行権を付与する優先度である第二優先度が設定されている。
そして、このスケジューリング方法は、タスクに実行権を付与した時間が稼働時間に達すると、該タスクから実行権を剥奪すると共に、最後に到来した基準サイクルから始まるタイムスライスである現タイムスライスにおける該タスクの動作が完了したものとする完了ステップと、基準サイクルの到来時、或いはタスクの動作完了時に、現タイムスライスにおいて動作が完了していない時間保証タスクが存在する場合には、該時間保証タスクのうち第一優先度が最大のものを特定すると共に、該時間保証タスクが存在しない場合には、現タイムスライスにて動作が完了していない非時間保証タスクのうち、第二優先度が最大のものを特定する特定処理を行う特定ステップと、特定ステップにて特定されたタスクに実行権を付与する付与ステップと、を有することを特徴とする。
また、時間保証タスクには、該時間保証タスクにより実現される機能を正常に稼動させるうえで許容される最長の動作周期である最長動作周期と、ぞれぞれの最長動作周期において、機能に稼動させるうえで最低限必要となる実行権の付与時間である必要動作時間とが個別に設定されている。
そして、スケジューリング方法は、スケジューリングの対象となる時間保証タスクの最長動作周期のうちの最短の最長動作周期を、タイムスライスとして設定するタイムスライス設定ステップと、スケジューリングの対象となるそれぞれの時間保証タスクについて、該時間保証タスクに設定された必要動作時間を、該時間保証タスクに設定された最長動作周期で除算した値を算出し、さらに、該値にタイムスライスを乗算した値を最短動作時間として算出し、それぞれの時間保証タスクについて、該時間保証タスクの最短動作時間以上の時間を稼働時間として設定する稼働時間設定ステップと、さらに有する。
また、稼働時間設定ステップでは、全ての時間保証タスクの稼働時間の総和がタイムスライスを越えない範囲で、それぞれの時間保証タスクの稼働時間を設定すること、を特徴とする。
そして、スケジューリング方法は、スケジューリングの対象となっているタスクを、スケジューリングの対象から削除する削除ステップと、スケジューリングの対象となっていないタスクを、スケジューリングの対象として新たに追加する追加ステップと、をさらに有し、タイムスライス設定ステップと、稼働時間設定ステップとは、定期的なタイミングで実施されること、を特徴とする。
なお、タスクとは、ある装置にて実現される機能を再現するためのプログラムである仮想マシンとして構成されていても良いし、ある機能を実現するための1または複数の処理単位からなるアプリケーションとして構成されていても良い。
こうすることにより、時間保証タスクについては、各タイムスライスにおいて必ず稼働時間にわたり動作させることができ、一定周期あたりの動作時間を保証することができる。また、非時間保証タスクについては、全ての時間保証タスクの動作が完了した後、次の基準サイクルが到来するまでの期間に順次実行権が付与される。したがって、請求項1に記載のスケジューリング方法によれば、時間保証タスクと非時間保証タスクとを並行して動作させつつ、時間保証タスクについてのリアルタイム性を確保することができる。
なお、特定ステップは、必ずしも動作中のタスクから実行権が剥奪された後に行われる必要は無いということを念のため付言しておく。
ところで、時間保証タスクに関しては、正常な動作を保証するうえで許容される最長の動作周期と、正常な動作を保証するうえで必要となる、各動作周期における最短の動作時間とを定めることができる。そして、仮に、最長の動作周期が1ms,各動作周期における最短の動作時間が0.2msとして設定されている時間保証タスク1と、最長の動作周期が4ms,各動作周期における最短の動作時間が2msとして設定されている時間保証タスク2のスケジューリングを行うとする。このとき、時間保証タスク2の動作には少なくとも2msを要するため、時間保証タスク1を1ms周期で動作させることができなくなり、時間保証タスク1の正常な動作を保証できなくなってしまう。
これに対し、請求項1に記載のスケジューリング方法では、最長動作周期以下の時間であるタイムスライスを周期として各時間保証タスクが動作するため、各時間保証タスクが動作する間隔が最長動作周期よりも長い時間にわたって空いてしまうことを防ぐことができる。また、各時間保証タスクにつき、必要動作時間を最長動作周期で除算した値にタイムスライスを乗算した値である最短動作時間が算出され、各タイムスライスでは、少なくとも該最短動作時間にわたって各時間保証タスクが動作する。このため、タイムスライスより長い時間を最長動作周期とする時間保証タスクにおいても、最長動作周期につき、少なくとも必要動作時間分の動作時間を確保することが可能となる。したがって、時間保証タスクを正常な状態で並行して動作させることができる。
また、請求項1に記載のスケジューリング方法では、スケジューリングの対象となるタスクの追加或いは削除が行われた場合であっても、タイムスライスや、スケジューリングの対象となる各時間保証タスクの稼働時間を適切なものに更新することができる。
ところで、動作中のタスクにて何らかの条件が成立した場合には、現タイムスライスにて、これ以上、該タスクの動作を継続する必要が無くなるといった場合が想定される。
そこで、請求項2に記載のスケジューリング方法では、タスクは、該タスクに対し予め定められた放棄条件が成立すると、付与されている実行権を自発的に放棄し、タスクが実行権を自発的に放棄すると、現タイムスライスにおいて、該タスクの動作が完了したものとする放棄ステップをさらに有する。
こうすることにより、実行権が付与されているタスクが現タイムスライスにおいてこれ以上動作を継続する必要が無くなった場合には、該タスクの動作を終了し、該タスクの動作時間を他のタスクの動作時間として割り当てることができる。したがって、タイムスライスをより有効に活用してタスクを動作させることができる。
また、実行権が付与されているタスクは、何らかの条件の成立により処理を中断し、イベントの発生を待ち始めるといった場合が想定される。
そこで、請求項3に記載のスケジューリング方法では、タスクは、該タスクに対し予め定められたイベント待ち条件が成立すると、付与されている実行権を自発的に手放すと共に、該タスクに対し予め定められたイベントの発生を待ち、実行権が付与されているタスクがイベントの発生を待ち始めると、該タスクを実行権の付与の対象から除外して待機中とする除外ステップと、イベントが発生すると、待機中のタスクを実行権の付与の対象として復帰させる復帰ステップと、をさらに有する。そして、特定ステップにおいて、待機中でないタスクを対象として、特定処理を行い、 さらに、除外ステップにてタスクが実行権の付与の対象から除外された時に、特定処理を行う。
こうすることにより、タスクが動作を中断しイベントの発生を待ち始めた場合には、イベントが発生するまで該タスクを待機させ、該タスクの動作時間を他のタスクの動作時間として割り当てることができる。したがって、各タイムスライスをより有効に活用してタスクを動作させることができる。
また、請求項4では、特定ステップにおいて、さらに、復帰ステップにて待機中のタスクが実行権の付与の対象として復帰させられた時に特定処理を行い、特定ステップにより、復帰ステップにて実行権を付与する対象として復帰させられたタスクが特定されると、実行権が付与されているタスクから実行権を剥奪する剥奪ステップをさらに有することを特徴とする。
こうすることにより、待機中のタスクに対応するイベントが発生した際に、該タスクよりも優先度の低いタスクに実行権が付与されている場合には、動作中のタスク(実行権が付与されているタスク)に替えて、待機中のタスクを動作させることができる。したがって、発生したイベント応じた処理が実行されるまでの応答時間を短縮することが可能となる。
なお、いずれかのタスクに実行権が付与されている時に、待機中のタスクが実行権の付与の対象として復帰させられる場合が想定され、このとき、動作中のタスクは、当然、現タイムスライスにおける動作が未完了である。このような場合には、特定ステップにおける特定処理では、動作中のタスクも含む実行が未完了のタスクのうち、最も優先度の高いものが特定されるということを念のため付言しておく。
また、既に述べたように、非時間保証タスクは、時間保証タスクの動作が終了した後次の基準サイクルが到来するまでの期間に実行されるため、各タイムスライスにつき必ず動作時間が割り当てられるとは限らない。
そこで、請求項5に記載のスケジューリング方法は、それぞれの非時間保証タスクについて、現タイムスライスにて該非時間保証タスクが完了したか否かに応じて、該非時間保証タスクに設定されている第二優先度を更新する更新ステップをさらに有する。
こうすることにより、非時間保証タスクに稼働時間にわたり実行権が付与された場合には、第二優先度を下げて次以降のタイムスライスにおいて実行権が付与され難くすると共に、非時間保証タスクが稼働時間にわたり実行権が付与されなかった場合には、第二優先度を上げて次以降のタイムスライスにおいて実行権が付与され易くすることができる。したがって、複数のタイムスライスにわたる期間において、各非時間保証タスクの動作時間の配分をコントロールすることが可能となる。
また、第二優先度は、次のようにして算出されても良い。
すなわち、請求項6に記載されているように、それぞれの非時間保証タスクに設定されている第二優先度は、実行権を付与する優先度を示す固定値である固定優先度と、該非時間保証タスクが、それぞれのタイムスライスにおいて動作が完了しなかった度合いを示す休止度とに基づき算出され、更新ステップにおいて、それぞれの非時間保証タスクについて、現タイムスライスにて該非時間保証タスクの動作が完了したか否かに応じて、該非時間保証タスクに設定されている第二優先度に係る休止度を更新することにより、該第二優先度を更新しても良い。
こうすることにより、各非時間保証タスクの性質に応じて定められた固有の優先度を考慮して、複数のタイムスライスにわたる期間における各非時間保証タスクの動作時間の配分をコントロールすることができる。
また、スケジューリングの対象となる時間保証タスクの数が増えすぎると、タイムスライス中に全ての時間保証タスクを稼働時間にわたり動作させることができなくなってしまい、時間保証タスクのリアルタイム性が損なわれてしまう。
そこで、請求項のスケジューリング方法は、新たな時間保証タスクをスケジューリングの対象として追加する際に、該時間保証タスクの最長動作周期及び最短動作時間と、スケジューリングの対象となっている時間保証タスクの最長動作周期及び最短動作時間とに基づき、新たな時間保証タスクをスケジューリングの対象として追加可能か否かを判定する判定ステップをさらに有し、追加ステップにおいて、判定ステップにて肯定判定が得られた場合に、新たな時間保証タスクをスケジューリングの対象として追加する。
こうすることにより、タイムスライスにおいて、スケジューリングの対象として追加する新たな時間保証タスクと、既にスケジューリングの対象となっている時間保証タスクとを稼働時間にわたり動作させることができる場合に限り、新たな時間保証タスクを追加することができる。このため、新たな時間保証タスクの追加により、時間保証タスクのリアルタイム性が損なわれてしまうことを防ぐことができる。
また、タスクが稼働時間にわたって動作している最中にタイムスライスや稼働時間等の更新がなされてしまうと、タスクの稼働時間を適切に確保できなくなってしまうおそれがある。
そこで、請求項のスケジューリング方法は、タイムスライス設定ステップと稼働時間設定ステップとは、基準サイクルに係るタイミングが到来した際に実施される。
こうすることにより、各タスクの動作が一巡した時点でタイムスライスや各タスクの稼働時間を設定することができ、タスクの動作時間を適切に確保することが可能となる。
また、既に述べたように、タスクは、ある機能を実現するための1または複数の処理単位からなるアプリケーションとして構成されていても良い。
また、請求項に記載されているように、タスクのうちの少なくともいずれか一つは、ある装置において実現される機能を再現するためのプログラムである仮想マシンとして構成されていても良い。
こうすることにより、例えば、仮想化技術を用いて複数の装置を1台に統合する場合等において、特定の仮想マシンについてはリアルタイム性を保証することが可能となる。
以上、請求項1〜に記載されているスケジューリング方法について述べたが、このスケジューリング方法をコンピュータで実現させるための仮想マシン制御プログラムとして市場に流通させても良い(請求項10)。また、このスケジューリング方法を実現するためのスケジューリング装置として市場に流通させても良い(請求項11)。このような場合であっても、上述したスケジューリング方法と同様の効果を得ることができる。
ところで、車載装置のような一瞬でも時間要件が満たされなかった場合には致命的なダメージを受けるおそれがあるハードリアルタイムシステムにおいて、仮想マシン等として構成されたタスクのスケジューリングを行う場合について考える。このような場合、各タスクには、正常な動作を保証するうえで許容される最長の動作周期と、正常な動作を保証するうえで必要となる、各動作周期における最短の動作時間とを定めることができる。
そして、仮に、最長の動作周期が1ms,各動作周期における最短の動作時間が0.2msであるタスク1と、最長の動作周期が4ms,各動作周期における最短の動作時間が2msであるタスク2のスケジューリングを行うとする。このとき、タスク2の動作には少なくとも2msを要するため、タスク1を1ms周期で動作させることができなくなり、タスク1の正常な動作を保証できなくなってしまう。
そこで、タスクのスケジューリングに際して、周期的に到来するタイミングを生成して基準サイクルとし、該基準サイクルの1周期であるタイムスライスを分割してスケジューリングの対象となる複数のタスクに対し稼働時間として割り当て、各タイムスライスにつき、割り当てられた稼働時間にわたってスケジューリングの対象となるそれぞれのタスクを動作させる装置において、次のような方法でスケジューリングを行っても良い。
すなわち、タスクには、機能を正常な状態で再現する場合において許容される最長の動作周期である最長動作周期と、ぞれぞれの最長動作周期において、機能を正常な状態で再現するために最低限必要となる動作時間である必要動作時間とが設定されていても良い。
そして、このスケジューリングの方法は、スケジューリングの対象となる複数のタスクの最長動作周期のうちの最短の最長動作周期を、タイムスライスとして設定するタイムスライス設定ステップと、スケジューリングの対象となるそれぞれのタスクについて、該タスクに設定された必要動作時間を、該タスクに設定された最長動作周期で除算した値を算出し、さらに、該値にタイムスライスを乗算した値を最短動作時間として算出し、該最短動作時間以上の時間を稼働時間として設定する稼働時間設定ステップと、を有していても良い。
また、稼働時間設定ステップでは、稼働時間の総和がタイムスライスを超えない範囲で、各タスクの稼働時間を設定しても良い。
なお、タスクとは、上述した仮想マシンであっても良いし、所定の機能を実現するためのアプリケーションであっても良い。
こうすることにより、最長動作周期以下の時間であるタイムスライスを周期として各タスクが動作するため、各タスクが動作する間隔が最長動作周期よりも長い時間にわたって空いてしまうことを防ぐことができる。また、各タスクにつき、必要動作時間を最長動作周期で除算した値にタイムスライスを乗算した値である最短動作時間が算出され、各タイムスライスでは、少なくとも該最短動作時間にわたって各タスクが動作する。このため、タイムスライスより長い時間を最長動作周期とするタスクにおいても、最長動作周期につき、少なくとも必要動作時間分の動作時間を確保することが可能となる。したがって、複数のタスクを正常な状態で並行して動作させることができる。
ところで、仮に、スケジューリングの対象となる各タスクの稼働時間を最短動作時間として設定した場合には、各タイムスライスにおいて、いずれのタスクも実行されない空白期間が発生してしまうおそれがある。
そこで、上述のスケジューリング方法は、スケジューリングの対象となるタスクに設定されている最長動作周期の総和を最長動作周期総和時間とし、それぞれのタスクについて、該タスクに設定されている最長動作周期を最長動作周期総和時間で除算した値を算出し、さらに、該値にタイムスライスを乗算した値を仮稼働時間として算出する仮稼働時間算出ステップをさらに有していても良い。
そして、仮稼働時間が最短動作時間を下回るタスクを時間不足タスク、仮稼働時間が最短動作時間を上回るタスクを時間余剰タスクとし、さらに、時間不足タスクについて、仮稼働時間と最短動作時間との差分を不足時間とすると共に、時間余剰タスクについて、仮稼働時間と最短動作時間との差分を余剰時間としても良い。
また、稼働時間設定ステップは、いずれか一つの時間不足タスクに対応する、1または複数の時間余剰タスクを設定するタスク設定手順と、タスク設定手順に係る時間不足タスクについて、不足時間以上の時間を加算時間として設定する加算時間設定手順と、タスク設定手順にて設定された時間余剰タスクについて、それぞれ、余剰時間以下の時間である減算時間を、その総和が、タスク設定手順に係る時間不足タスクにおける加算時間となるように設定する減算時間設定手順と、を有していても良い。
さらに、稼働時間設定ステップにおいて、設定手順は、全ての時間不足タスクについて実施され、全ての時間不足タスクについて、それぞれ、仮稼働時間に加算時間を加算した時間を稼働時間とすると共に、全ての時間余剰タスクについて、それぞれ、仮稼働時間から減算時間を減算した時間を稼働時間としても良い。
このように、最長動作周期を最長動作周期総和時間で除算した値にタイムスライスを乗算した時間を各タスクの仮稼働時間とすることにより、余り時間を生じさせること無くタイムスライスを分割して各タスクに割り振ることができる。そして、仮稼働時間が最短動作時間を上回るタスクから仮稼働時間が最短動作時間を下回るタスクに仮稼働時間を分けることにより、各タスクに最短動作時間以上の時間が割り当てられる。このため、空白期間を生じさせること無く、タイムスライスを各タスクの動作時間として割り振ることができ、より効率良くタスクを稼動させることができる。
また、スケジューリングの対象となるタスクが動的に追加或いは削除される場合が想定されるが、そのような場合を想定して以下のように構成されていても良い。
すなわち、上述のスケジューリング方法は、スケジューリングの対象となっているタスクを、該対象から削除する削除ステップと、スケジューリングの対象となっていないタスクを、該対象として新たに追加する追加ステップと、をさらに有し、タイムスライス設定ステップと、稼働時間設定ステップとは、定期的なタイミングで実施されてもよい。
こうすることにより、スケジューリングの対象となるタスクの追加或いは削除が行われた場合であっても、タイムスライスや、スケジューリングの対象となる各タスクの稼働時間を適切なものに更新することができる。
また、スケジューリングの対象となるタスクの数が増えすぎてしまうと、タイムスライス中に全てのタスクを稼働時間にわたり動作させることができなくなってしまい、各タスクを正常な状態で稼動させることができなくなってしまう。
そこで、上述のスケジューリング方法では、新たなタスクをスケジューリングの対象として追加する際に、該タスクの最長動作周期及び最短動作時間と、スケジューリングの対象となっているタスクの最長動作周期及び最短動作時間とに基づき、新たなタスクをスケジューリングの対象として追加可能か否かを判定する判定ステップをさらに有し、追加ステップでは、判定ステップにて肯定判定が得られた場合に、新たなタスクをスケジューリングの対象として追加する。
こうすることにより、タイムスライスにおいて、スケジューリングの対象として追加する新たなタスクと、既にスケジューリングの対象となっているタスクとを稼働時間にわたり動作させることができる場合に限り、新たなタスクを追加することができる。このため、新たなタスクの追加により、タスクの正常な動作が損なわれてしまうことを防ぐことができる。
また、タスクが稼働時間にわたって動作している最中にタイムスライスや稼働時間等の更新がなされてしまうと、タスクの動作時間を適切に確保できなくなってしまうおそれがある。
そこで、上述のスケジューリング方法において、設定ステップは、基準サイクルに係るタイミングが到来した際に実施されても良い。
こうすることにより、各タスクの動作が一巡した時点でタイムスライスや各タスクの稼働時間を設定することができ、タスクの動作時間を適切に確保することが可能となる。
また、タスクにはリアルタイム性が要求されることが想定される。
そこで、上述のスケジューリング方法において、スケジューリングの対象となるタスクのうちの少なくともいずれか一つは、リアルタイム性が要求されるものであり、該タスクにおいて、最長動作周期とは、リアルタイム性を確保するうえで許容される最長の動作周期であり、必要動作時間とは、ぞれぞれの最長動作周期において、リアルタイム性を確保するために最低限必要となる動作時間であっても良い。
こうすることにより、複数のタスクを、リアルタイム性が保持された状態で並行して動作させることができる。
なお、上述のスケジューリング方法をコンピュータで実現させるためのスケジューリングプログラムや、該方法を実現する装置としてとして市場に流通させても良い。このような場合であっても、上述したスケジューリング方法と同様の効果を得ることができる。
第一実施形態の車載装置と制御プログラムの構成を示すブロック図と、仮想マシンとして構成されたAタスクの構成を示すブロック図である。 外部サーバからタスクをダウンロードしてスケジューリングの対象として追加する際の様子を示す説明図である。 タスク管理テーブルを示す表である。 実行タスク特定処理についてのフローチャートである。 実行完了処理,放棄処理,イベント待ち処理,イベント発生処理についてのフローチャートである。 TS経過処理についてのフローチャートである。 スケジューラ初期化処理についてのフローチャートである。 タスク追加処理,タスク削除処理,定期見直し処理についてのフローチャートである。 A〜Eタスクの動作時間を示すタイミングチャートである。 タスク管理テーブルを示す表である。 A〜Eタスクの動作時間を示すタイミングチャートである。 A〜Eタスクの動作時間を示すタイミングチャートである。 タスク管理テーブルを示す表である。 タスクの追加や削除が行われた際の、タスク管理テーブルを示す表と、A〜Eタスクの動作時間を示すタイミングチャートである。 第二実施形態の車載装置と制御プログラムの構成を示すブロック図と、タスク管理テーブルを示す表である。 スケジューラ初期化処理についてのフローチャートである。 1TS内動作時間設定処理についてのフローチャートである。 タスク追加処理についてのフローチャートである。
以下、本発明の実施形態について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
[第一実施形態]
[構成の説明]
第一実施形態の車載装置は、自車両と先行車両との距離を監視し、先行車両との車間距離が狭まった場合には、車速を低下させて車間距離を確保するACC(Adaptive Cruise Control)機能と、自車両が走行中に道路の車線からはみだしそうになった場合に、ドライバへの警告や、ステアリング操作の補助を行うLKA(Lane Keeping Assist)機能と、カメラやレーダ等により自車両周辺を監視し、自車両周辺の障害物を検知してドライバに報知する周辺監視機能と、自車両の現在位置の報知や目的地までの経路案内を行うカーナビ機能と、音楽コンテンツや映像コンテンツの再生や、各種放送の視聴を行うためのオーディオ機能とを有している。
図1には、CPU110や物理デバイス120等を備える第一実施形態の車載装置100と、車載装置100に搭載され、CPU110により実行される制御プログラム1との構成を示すブロック図が記載されている。なお、制御プログラム1は、物理デバイス120における、フラッシュメモリ等の記憶保持動作が不要なデバイスから構成された記憶部(図示なし)に記憶されている。
制御プログラム1は、ACC機能を実現するためのAタスク10と、LKA機能を実現するためのBタスク20と、周辺監視機能を実現するためのCタスク30と、カーナビ機能を実現するためのDタスク40と、オーディオ機能を実現するためのEタスク50とを有していると共に、A〜Eタスク10〜50を稼動させる制御管理部60を有している。
ここで、A〜Eタスク10〜50は、所定の装置において実現される機能の全部または一部を再現するためのプログラムである仮想マシンとして構成されていても良い。図1(b)には、一例として、仮想マシンとして構成されたAタスク10の構成を示すブロック図が記載されている。
Aタスク10は、再現する機能に係る装置にて稼動していたプログラムをバイナリコードの状態で移植したものであるAPL11,OS12等と、APL11,OS12等をエミュレートするプログラムであり、いわゆる仮想化されたハードウェアに相当する仮想デバイス13,仮想CPU14を有している。
また、OS12は、APL11を構成する第一スレッド11a,第二スレッド11b等のスケジューリングを行う周知のOSである。
また、仮想CPU14は、APL11,OS12等のバイナリコードを解析し、これらの稼動させるプログラムである。
また、仮想デバイス13は、APL11,OS12等と、車載装置100の物理デバイス120との間のI/Fとなるプログラムであり、APL11,OS12等は、仮想デバイス13にアクセスすることで物理デバイス120を制御する。
なお、A〜Eタスク10〜50は必ずしも仮想マシンである必要は無く、対応する機能を実現するための単一の処理単位からなるプログラム、或いは複数の処理単位(つまり、複数のスレッド)からなるプログラムとして構成されていても良い。
また、本実施形態では、A〜Cタスク10〜30は、外部からの入力に対する応答時間が一定の範囲内となるリアルタイム性が要求されるタスクであり、仮にこれらのタスクが仮想マシンとして構成されている場合には、該仮想マシンにおけるOSは、リアルタイムOSとして構成されている。
次に、制御管理部60について説明する。
制御管理部60は、A〜Eタスク10〜50に対し順次実行権を付与し、これらのタスクのスケジューリングを行うスケジューリング部61と、タスク(タスクが仮想マシンとして構成されている場合であれば該タスクの仮想デバイス)からの指示に応じて物理デバイス120を制御すると共に、物理デバイス120からの信号をタスク(或いは該タスクの仮想デバイス)に通知するデバイス制御部62と、を有している。
そして、スケジューリング部61は、タスクから実行権を放棄した旨等の通知を受け付けるタスク状態受付部61aと、タスク状態受付部61aが受け付けた通知等に基づきタスクの動作状態を設定すると共に、各タスクに対し実行権を付与するスケジューラ設定部61bと、実行権が付与されているタスクを動作させるスケジューラ実行部61cと、スケジューリングの対象となるタスクの追加や削除を行うタスク追加・削除受付部61dとを有する。
なお、上述した構成の仮想マシンとして構成されたタスクに実行権が付与された場合には、仮想マシンでは、OSによるスレッドのスケジューリングが行われ、スレッドが並行して稼動される。また、複数のスレッドから構成されているタスクに実行権が付与された場合においても、該タスクでは、同様にしてOSによる該スレッドのスケジューリングが行われる。
[動作の説明]
次に、第一実施形態の制御プログラム1の動作について説明する。
(1)概要について
(a)スケジューリングの概要について
まず、スケジューリング部61にて行われる各タスクのスケジューリングの概要について説明する。
スケジューリング部61のスケジューラ設定部61bは、周期的に到来するタイミングを生成して基準サイクルとし、該基準サイクルの1周期であるタイムスライス(TS(Time Sliceの略)とも記載)においてA〜Eタスクに順次実行権を付与することで、これらのタスクを並行して動作させる。
また、既に述べたように、A〜Cタスクにはリアルタイム性が要求されており、これらのタスクについては、所定周期につき一定の動作時間を付与することを保証する必要がある。このため、スケジューラ設定部61bは、A〜Cタスクに応じて適切なTSを設定し(詳細については後述する)、各TSにおいて、A〜Cタスクに対し、リアルタイム性を確保するために必要な時間にわたって順次実行権を付与する。なお、これらのタスクがリアルタイム性を確保するために各TSにおいて必要となる動作時間を、1TS内動作時間と称する。また、リアルタイム性が要求されるタスクに対してのスケジューリングを、Definite Scheduling(DSとも記載)と称する。
また、DSの対象であるA〜Cタスクの1TS内動作時間の総和はTSよりも小さい値となっており、これらのタスクに対し1TS内動作時間にわたり実行権が付与された後、次のTSが開始されるまでには空き時間が生じる。そこで、スケジューラ設定部61bは、この空き時間を利用してD,Eタスクに実行権を付与する。このようにして行うD,Eタスクに対してのスケジューリングを、Time Share Scheduling(TSSとも記載)と称する。なお、TSSの対象となるD,Eタスクについても、TSにおいて実行権が付与される時間が定められており、この時間も1TS内動作時間と称する。しかしながら、DS終了後の空き時間がどの程度の長さとなるかは保証されておらず、TSSの対象となるタスクは、各TSにおいて必ず1TS内動作時間にわたり実行権が付与されるとは限らない。
(b)タスクについて
次に、タスクの挙動や動作状態について説明する。
スケジューラ設定部61bによりタスクに実行権が付与されると、スケジューラ実行部61cにより該タスクの動作が開始される。このとき、実行中のタスクは、予め定められた放棄条件が成立した場合には自発的に実行権を放棄する。なお、放棄条件とは、例えば、物理デバイス120から動作中のタスクに特定の信号が入力される等といったものでも良い。ここで、仮にこのタスクが仮想マシンである場合には、該仮想マシンの仮想デバイスが、デバイス制御部62を経由して物理デバイス120から特定の信号を受け取ることで、該タスクへの特定の信号の入力が検知される。
また、このほかにも、動作中のタスクは、予め定められたイベント待ち条件が成立することにより自発的に実行権を放棄し、予め定められたイベントの発生を待ち始める。なお、イベント待ち条件やイベントとは、物理デバイス120から動作中のタスクに特定の信号が入力される等といったものでも良いし、他のタスクから特定の指示がなされる等といったものであっても良い。
また、タスクの動作状態として、TSにおいて1TS内動作時間にわたり実行権が付与されていない実行可能状態と、実行権が付与されている実行中状態と、TSにおいて1TS内動作時間にわたり実行権が付与され、該TSにおける動作が完了した実行完了状態と、イベントの発生を待つイベント待ち状態とが設けられている。なお、タスクが一旦実行完了状態となると、スケジューラ設定部61bは、同一のTSにおいて該タスクに再び実行権を付与することはない。また、スケジューラ設定部61bは、イベント待ち状態であるタスクには実行権を付与しない。
(c)TSの設定について
次に、TSの設定等について説明する。
図2に記載されているように、車載装置100は、図示しない携帯電話等を介して外部サーバ150と無線通信を行い、外部サーバ150から新たなタスクをダウンロードして記憶部に記憶させると共に、ダウンロードしたタスクを、スケジューリングの対象に追加することができる。また、ユーザからの指示に応じて、記憶部に記憶されているタスクをスケジューリングの対象として新たに追加することや、スケジューリングの対象となっているタスクを対象から削除することができる。そして、スケジューリングの対象となるタスクの追加或いは削除が行われた場合には、TSや、DSの対象のタスクの1TS内動作時間が設定される。
また、リアルタイム性が要求されるタスク(DSの対象となるタスク)には、該タスクのリアルタイム性を確保し、該タスクの機能を正常に稼動させるうえで許容される最長の動作周期である最長動作周期と、該タスクのリアルタイム性の確保、及び、該タスクの機能の正常な稼動のため最低限必要となる最長動作周期毎の動作時間である必要動作時間とが定められている。
ここで、周辺監視機能を実現する仮想マシンであるAタスクを例に挙げて説明する。Aタスクでは、カメラやレーダ等から収集した情報を解析して自車両周辺の障害物の有無を判定しているが、この判定処理の時間が不十分である場合、障害物の検知が遅れる、或いは検知ができないという可能性がある。このことを考慮し、Aタスクを構成する仮想マシンにより再現される周辺監視装置を用いて判定処理を確実に実行するために必要な時間を測定し、測定した時間と、該周辺監視装置と車載装置100の動作クロックの比等に基づき、必要動作時間を算出することが考えられる。
また、これ以外にも、最長動作周期や必要動作時間は、例えば、タスクに対してのエミュレーションやシミュレーションの結果に基づき定義されても良いし、タスクのアルゴリズム等に基づき定義されても良い。
そして、スケジューラ設定部61bは、タスクの追加や削除が行われると、リアルタイム性が要求されるタスクの最長動作周期のうち最短のものをTSとして設定する。さらに、スケジューラ設定部61bは、リアルタイム性が要求されるタスクの最長動作周期と必要動作時間とに基づき、該タスクの1TS内動作時間を設定する(詳細については後述する)。
(2)タスク管理テーブルについて
次に、A〜Eタスクの1TS内動作時間等を示すタスク管理テーブルについて説明する。図3には、タスク管理テーブルの一例が記載されている。なお、このタスク管理テーブルは、スケジューリング部61のスケジューラ設定部61bが有している。
このタスク管理テーブルは、タスクの名称を示す項目である「名称」と、スケジューリングの態様(DSの対象か、或いはTSSの対象か)を示す項目である「タイプ」と、1TS内動作時間を示す項目である「1TS内動作時間」と、タスクの動作状態を示す項目である「動作状態」を有する。
また、DSの対象となるタスク(リアルタイム性が要求されるタスク)に対応する項目として、最長動作周期を示す項目である「最長動作周期」と、必要動作時間を示す項目である「必要動作時間」と、DSにおける実行権を付与する優先順位を示す「DS優先度」を有する。なお、詳細については後述するが、この「DS優先度」は、DSの対象となるタスクの最長動作周期等に基づき設定される。また、「DS優先度」は、値が小さいほど優先順位が高くなる。
また、TSSの対象となるタスクに対応する項目として、TSSにおける実行権を付与する優先順位を示す「TSS優先度」と、TSS優先度を算出するために用いられる値であり、TSSにおける実行権を付与する優先順位の固定値を示す「TSS固定優先度」と、TSS優先度を算出するために用いられる値であり、TSSの対象となるタスクが各TSにおいて実行完了状態とならなかった度合いを示す「TSS休止度」を有する。
なお、「TSS優先度」と「TSS固定優先度」は、値が大きいほど優先順位が高くなり、「TSS優先度」は、「TSS固定優先度」と「TSS休止度」の和により求められる。また、詳細については後述するが、各TSにおいて、TSSの対象のタスクが1TS内動作時間にわたり動作した場合には、該タスクの「TSS休止度」は減少し、1TS内動作時間にわたり動作しなかった場合には、該タスクの「TSS休止度」は増加する。このため、各TSにつき、TSSの対象のタスクが1TS内動作時間にわたり動作すると、「TSS優先度」が減少して優先順位が下がり、該タスクが1TS内動作時間にわたり動作しないと、「TSS優先度」が増加して優先順位が上がるのである。
(3)実行タスク特定処理について
次に、実行権を付与するタスクを定めるサブルーチンである実行タスク特定処理について、図4に記載のフローチャートを用いて説明する。本処理はスケジューリング部61にて行われる処理であり、基準サイクルが到来した際(つまり、新たなTSが開始された際)や、タスクが実行完了状態やイベント待ち状態となった際等にコールされる。なお、以後、スケジューリング部61を構成する各部位にてどのような処理が行われるかという観点で説明を行うが、これらの処理は、車載装置100のCPU110が、プログラムである上記部位を実行することにより実現されるということを、念のため付言しておく。
S205では、スケジューリング部61のスケジューラ設定部61bにてタスク管理テーブルが参照され、実行可能状態であるタスクの有無が判定される。そして、実行可能状態であるタスクが存在する場合には(S205:Yes)、S210に処理が移行され、実行可能状態であるタスクが存在しない場合には(S205:No)、本処理は終了する。
S210では、スケジューラ設定部61bによりタスク管理テーブルが参照され、DSの対象となっているタスクに、実行中状態或いは実行可能状態であるものが存在するか判定される。そして、肯定判定の場合には(S210:Yes)、S215に処理が移行され、否定判定の場合には(S210:No)、S220に処理が移行される。
S215では、スケジューラ設定部61bによりタスク管理テーブルが参照され、実行中状態或いは実行可能状態であるDSの対象のタスクのうち、優先順位が最も高い(つまり、「DS優先度」が示す値が最も小さい)タスクが特定される。そして、S230に処理が移行される。
S220では、スケジューラ設定部61bによりタスク管理テーブルが参照され、TSSの対象となっているタスクに、実行中状態或いは実行可能状態であるものが存在するか判定される。そして、肯定判定の場合には(S220:Yes)、S225に処理が移行され、否定判定の場合には(S220:No)、S230に処理が移行される。
S225では、スケジューラ設定部61bによりタスク管理テーブルが参照され、実行中状態或いは実行可能状態であるTSSの対象のタスクのうち、優先順位が最も高い(つまり、「TSS優先度」が示す値が最も大きい)タスクが特定される。そして、S230に処理が移行される。
S230では、スケジューラ設定部61bによりタスク管理テーブルが参照され、S215或いはS225にて特定されたタスクが実行中状態であるか否かが判定される。そして、肯定判定の場合(S230:Yes)は本処理が終了し、否定判定の場合には(S230:No)、S235に処理が移行される。
S235では、スケジューラ設定部61bによりタスク管理テーブルが参照され、実行中状態であるタスクの有無について判定される。そして、実行中状態であるタスクが有る場合には(S235:Yes)、S240に処理が移行され、実行中状態であるタスクが無い場合には(S235:No)、S245に処理が移行される。
S240では、スケジューラ設定部61bにより、実行中状態であるタスクから実行権が剥奪され、該タスクの動作が終了する。また、スケジューラ設定部61bにより、タスク管理テーブルにおける該タスクについての「動作状態」が実行可能状態に更新される。そして、S245に処理が移行される。
S245では、スケジューラ設定部61bにより、S215或いはS225にて特定されたタスクに対し実行権が付与され、以後、スケジューラ実行部61cにより、該タスクの動作が開始される。また、スケジューラ設定部61bにより、タスク管理テーブルにおける該タスクについての「動作状態」が実行中状態に更新される。そして、本処理は終了する。
(4)実行完了処理について
次に、TSにおける動作時間が1TS内動作時間に達したタスクから実行権を剥奪すると共に、他のタスクに対し新たに実行権を付与する実行完了処理について、図5(a)のフローチャートを用いて説明する。なお、本処理は、各TSにおけるタスクの動作時間が1TS内動作時間に達した際に実行される処理である。
S305では、スケジューラ設定部61bにより、実行権が付与されているタスクから実行権が剥奪され、該タスクの動作が終了する。そして、スケジューラ設定部61bにより、タスク管理テーブルにおける該タスクについての「動作状態」が実行完了状態に更新され、S310に処理が移行される。
S310では、実行タスク特定処理がコールされ、実行可能状態のタスクに対し新たに実行権が付与される。そして、実行タスク特定処理が終了すると、本処理は終了する。
(5)放棄処理について
次に、タスクが実行権を自発的に放棄した際に他のタスクに対し新たに実行権を付与する放棄処理について、図5(b)のフローチャートを用いて説明する。なお、本処理は、実行中状態のタスクにて放棄条件が成立し、スケジューリング部61のタスク状態受付部61aが、該タスクから、自発的に実行権を放棄した旨の通知を受け取った際に実行される処理である。
S315では、スケジューラ設定部61bにより、実行権を放棄したタスクについてのタスク管理テーブルにおける「動作状態」が実行完了状態に更新される。そして、S320に処理が移行される。
S320では、実行タスク特定処理がコールされ、実行可能状態のタスクに対し新たに実行権が付与される。そして、実行タスク特定処理が終了すると、本処理は終了する。
(6)イベント待ち処理について
次に、イベントの発生を待ち始めたタスクを実行権の付与の対象から除外すると共に、他のタスクに対し新たに実行権を付与するイベント待ち処理について、図5(c)のフローチャートを用いて説明する。なお、本処理は、実行中のタスクにてイベント待ち条件が成立し、タスク状態受付部61aが、該タスクから、イベントの発生を待ち始めた旨の通知を受け取った際に実行される処理である。
S325では、スケジューラ設定部61bにより、実行権を放棄しイベントの発生を持ち始めたタスクについてのタスク管理テーブルにおける「動作状態」がイベント待ち状態に更新される。そして、S330に処理が移行される。
S330では、実行タスク特定処理がコールされ、実行可能状態のタスクに対し新たに実行権が付与される。そして、実行タスク特定処理が終了すると、本処理は終了する。
(7)イベント発生処理について
次に、予め定められたイベントが発生した際に、該イベントの発生を待つタスクを実行権の付与の対象として復帰させる処理であるイベント発生処理について、図5(d)のフローチャートを用いて説明する。なお、本処理は、イベント待ち状態であるタスクに対応するイベントが発生したことが検知された際に実行される処理である。
S335では、スケジューラ設定部61bにより、発生したイベントを待つタスクについてのタスク管理テーブルにおける「動作状態」が実行可能状態に更新される。そして、S340に処理が移行される。
S340では、実行タスク特定処理がコールされ、実行中状態のタスクの動作がそのまま継続されるか、或いは、イベントの発生により実行可能となったタスクに新たに実行権が付与される。そして、実行タスク特定処理が終了すると、本処理は終了する。
(8)TS経過処理について
次に、新たなTSが開始された際に実行権が付与されているタスクから実行権を剥奪すると共に、DSの対象のタスクに対し新たに実行権を付与するTS経過処理について、図6のフローチャートを用いて説明する。本処理は、新たなTSが開始された際に実行される処理である。
S405では、スケジューラ設定部61bによりタスク管理テーブルが参照され、TSSの対象のタスクの有無が判定される。TSSの対象となるタスクが有る場合には(S405:Yes)、S410に処理が移行され、TSSの対象となるタスクが無い場合には(S405:No)、S450に処理が移行される。
S410では、スケジューラ設定部61bによりタスク管理テーブルが参照され、タスク管理テーブルに登録されているTSSの対象のタスクのうち、最も先頭側に登録されているタスクが選択される。そして、選択されたタスクの「動作状態」が実行完了状態であるか否かが判定され、肯定判定が得られた場合には(S410:Yes)、S415に処理が移行され、否定判定が得られた場合には(S410:No)、S420に処理が移行される。
S415では、スケジューラ設定部61bにより、選択中のタスクについてのタスク管理テーブルにおける「TSS休止度」が減少される。具体的には、以下の式により新たなTSS休止度が算出され、タスク管理テーブルの「TSS休止度」に設定される。
新たなTSS休止度=更新前のTSS休止度×(9/10)
TSS休止度が更新されると、S435に処理が移行される。
S420では、スケジューラ設定部61bによりタスク管理テーブルが参照され、選択中のTSSの対象のタスクの「動作状態」が、実行中状態或いは実行可能状態であるか否かが判定される。そして、肯定判定の場合は(S420:Yes)、S425に処理が移行され、否定判定の場合は(S420:No)、S440に処理が移行される。
S425では、TSSの対象のタスクが実行中状態であるならば、スケジューラ設定部61bにより該タスクの実行権が剥奪され、該タスクの動作が終了する。また、このとき、スケジューラ設定部61bによりタスク管理テーブルがアクセスされ、選択中のTSSの対象のタスクの「動作状態」が実行完了状態に設定される。そして、S430に処理が移行される。
S430では、スケジューラ設定部61bにより、選択中のタスクについてのタスク管理テーブルにおける「TSS休止度」が増加される。具体的には、以下の式により新たなTSS休止度が算出され、タスク管理テーブルの「TSS休止度」に設定される。
新たなTSS休止度=更新前のTSS休止度×(9/10)+5
TSS休止度が更新されると、S435に処理が移行される。
S435では、スケジューラ設定部61bにより、選択中のタスクについてのタスク管理テーブルにおける「TSS優先度」が更新される。具体的には、該タスクの「TSS固定優先度」が示す値と「TSS休止度」が示す値との和が算出され、「TSS優先度」に設定される。そして、S440に処理が移行される。
S440では、スケジューラ設定部61bにより、「TSS優先度」の更新が完了していないTSSの対象のタスクの有無が判定される。そして、「TSS優先度」の更新が完了していないTSSの対象のタスクが有ると判定された場合には(S440:Yes)、該タスクのうち、タスク管理テーブルの最も先頭側に登録されているタスクが新たに選択され、S410に処理が移行される。また、上記タスクが無いと判定された場合には(S440:No)、S445に処理が移行される。
S445では、スケジューラ設定部61bにより、イベント待ち状態でないタスクについてのタスク管理テーブルにおける「動作状態」が実行可能状態に設定される。そして、S450に処理が移行される。
S450では、実行タスク特定処理がコールされ、DSの対象のタスクのうち、DS優先度が最も高いタスクに実行権が付与される。そして、実行タスク特定処理が終了すると、本処理は終了する。
(9)スケジューラ初期化処理について
次に、TSや、タスク管理テーブルの「1TS内動作時間」等を設定する処理であるスケジューラ初期化処理について、図7に記載のフローチャートを用いて説明する。本処理は、制御プログラム1が起動された場合や、動作させるタスクの追加或いは削除が行われた場合に、スケジューラ設定部61bにて実行される処理である。
なお、制御プログラム1の起動時に本処理が実行される場合には、タスク管理テーブルは、スケジューリングの対象となるタスクのレコードが登録された状態となっており、これらのレコードは、「名称」,「タイプ」が設定されている。また、DSの対象のタスクに対応するレコードについては、「最長動作周期」,「必要動作時間」が設定されており、TSSの対象となるタスクに対応するレコードについては、「TSS優先度」,「TSS固定優先度」,「TSS休止度」が設定されている。
S505では、スケジューラ設定部61bは、タスク管理テーブルを参照し、DSの対象のタスクに対応する「最長動作周期」のうち最も短いものを特定してこれをTSとして設定し、S510に処理を移行する。
S510では、スケジューラ設定部61bは、以下のようにして、タスク管理テーブルに登録されている各タスクの1TS内動作時間を算出する。
すなわち、DSの対象のタスクについては、
1TS内動作時間=(必要動作時間/最長動作時間)×TS
という式を用いて、1TS内動作時間を算出する。なお、(必要動作時間/最長動作時間)×TSに対し所定のマージンを加えた値を1TS内動作時間としても良い。
また、TSSの対象の各タスクについては、一律に所定の固定時間(例えば、0.1ms)を1TS内動作時間としても良い。また、TSSの対象の各タスクに個別に設定された固定時間を1TS内動作時間としても良く、このような場合であれば、該タスクを構成するバイナリデータに基づき該固定時間を特定しても良い。
そして、各タスクについての1TS内動作時間をタスク管理テーブルの「1TS内動作時間」に設定し、S515に処理を移行する。
S515では、スケジューラ設定部61bは、DSの対象のタスクに関して、タスク管理テーブルの「DS優先度」を設定する。具体的には、以下のルールに従い「DS優先度」が設定される。
(a)DSの対象のタスクのうち、最長動作周期が短いタスクから順に高い優先度を設定する。
(b)最長動作周期が同じ場合は、必要動作時間が長いタスクから順に高い優先度を設定する。
(c)最長動作周期,必要動作時間が同一である場合には、タスク管理テーブルにおける先頭側のレコードに対応するタスクから順に高い優先度を設定する。
「DS優先度」の設定が終了すると、S520に処理を移行する。
S520では、スケジューラ設定部61bは、スケジューラ初期化フラグをOFFし、本処理を終了する。
(10)タスク追加処理について
次に、スケジューリングの対象となるタスクを新たに追加する処理であるタスク追加処理について、図8(a)に記載のフローチャートを用いて説明する。本処理は、例えば、ユーザから車載装置100の記憶部に保存されていたタスクの追加が要求された場合や、既に述べたように新たなタスクがダウンロードされた際等に、タスク追加・削除受付部61dにて実行される処理である。
S605では、タスク追加・削除受付部61dは、追加されるタスクがDSの対象のタスクかどうかを判定し、肯定判定の場合には(S605:Yes)、S610に処理を移行し、否定判定の場合には(S605:No)、S615に処理を移行する。
S610では、タスク追加・削除受付部61dは、新たなDSの対象のタスクの追加が可能であるか否かを判定し、肯定判定である場合には(S610:Yes)、S615に処理を移行し、否定判定である場合には(S610:No)、S625に処理を移行する。
具体的には、新たなDSの対象のタスクを追加した場合の、各TSにおけるDSに要する時間の割合に基づき、該タスクの追加の可否について判定する。すなわち、タスク管理テーブルを参照し、現状のDSの対象の各タスクの「最長動作周期」,「必要動作時間」を特定すると共に、新たなDSの対象のタスクを構成するバイナリデータに基づき、該タスクの「最長動作周期」,「必要動作時間」を特定する。そして、これらのタスクについて、それぞれ、必要動作時間を最長動作周期で除算した値を算出し、これらの値の総和が所定値(例えば1)未満である場合には、タスクの追加が可能と判定すると共に、該総和が所定値以上である場合には、タスクの追加が不可能と判定しても良い。
S615では、タスク追加・削除受付部61dは、新たに追加するタスクに対応するレコードをタスク管理テーブルの最後尾に追加すると共に、該レコードに対応する各項目を設定し、S620に処理を移行する。
具体的には、該タスクを構成するバイナリデータに基づき、該タスクの名称とスケジューリングの態様(DSの対象か、或いはTSSの対象か)を特定し、追加したレコードの「名称」,「タイプ」に設定する。そして、該タスクがDSの対象である場合には、該バイナリデータに基づき最長動作周期,必要動作時間を特定し、追加したレコードの「最長動作周期」,「必要動作時間」を設定する。一方、該タスクがTSSの対象である場合には、該バイナリデータに基づきTSS固定優先度を特定し、これを追加したレコードの「TSS固定優先度」に設定する。また、該レコードの「TSS休止度」に“0”を設定すると共に、「TSS優先度」に「TSS固定優先度」の値を設定する。
S620では、タスク追加・削除受付部61dは、スケジューラ初期化フラグをONし、本処理を終了する。
タスクの追加が不可能である場合に移行するS625では、タスク追加・削除受付部61dは、図示しない表示装置等を介してタスクの追加が不可能である旨を報知し、本処理を終了する。
(11)タスク削除処理について
次に、タスクをスケジューリングの対象から削除する処理であるタスク削除処理について、図8(b)に記載のフローチャートを用いて説明する。本処理は、例えば、ユーザの操作や外部からの信号等に応じて、タスク追加・削除受付部61dにて実行される処理である。
S640では、タスク追加・削除受付部61dは、スケジューリングの対象から削除するタスクに対応するレコードをタスク管理テーブルから削除し、S645に処理を移行する。
S645では、タスク追加・削除受付部61dは、スケジューラ初期化フラグをONし、本処理を終了する。
(12)定期見直し処理について
次に、タスク管理テーブルの設定を見直す処理である定期見直し処理について、図8(c)に記載のフローチャートを用いて説明する。本処理は、基準サイクルに係るタイミングが到来した際に、スケジューラ設定部61bにて実行される処理である。
S660では、スケジューラ設定部61bは、スケジューラ初期化フラグがONになっているか判定する。そして、肯定判定の場合は(S660:Yes)、S665に処理を移行し、否定判定の場合は(S660:No)、本処理を終了する。
S665は、スケジューラ設定部61bは、スケジューラ初期化処理をサブルーチンとしてコールする。そして、スケジューラ初期化処理が終了した後に、本処理を終了する。
[具体例について]
次に、スケジューリング部61によるA〜Eタスクのスケジューリングの具体例について説明する。
(1)イベント待ち状態に遷移した場合の具体例
まず、Bタスクがイベント待ち状態に遷移した後から、イベントの発生により実行権を付与されるまでのA〜Eタスクの動作について、図9に記載のタイミングチャートと、図10(a)〜(d)に記載のタスク管理テーブルを用いて説明する。なお、TSは1msに設定されているものとする。
図10のタスク管理テーブルに記載されているように、A〜Eタスクの1TS内動作時間は、0.1ms,0.3ms,0.2ms,0.2ms,0.1msに設定されており、その総和がTS(1ms)未満となっている。このため、A〜Eタスクは、各TSにつき、1TS内動作時間にわたり動作する。また、図10(a)のタスク管理テーブルが示すように、最初のTSである第1周期の開始時点では、A〜CタスクのDS優先度は、1,2,3に設定されており、D,EタスクのTSS優先度は、20,0となっている。このため、第1周期では、各タスクは、A〜Eタスクの順番で、1TS内動作時間にわたり動作する(図9参照)。
続いて第2周期では、Bタスクは、実行権が付与された後0.2msが経過した時点でイベント待ち条件が成立したため実行権を放棄し、イベント待ち状態に遷移する。また、これと同時に、Cタスクの動作が開始される(図9参照)。図10(b)には、Bタスクがイベント待ち状態に遷移した直後のタスク管理テーブルが記載されている。
続いて第3周期では、イベント待ち状態であるBタスクには実行権が付与されず、Aタスク,C〜Eタスクは、該順番で1TS内動作時間にわたり動作する(図9参照)。なお、図10(c)には、第3周期開始時点におけるタスク管理テーブルが記載されている。
続いて第4周期では、Cタスクの動作中に、Bタスクが発生を待っているイベントが発生する(図9参照)。このとき、CタスクからBタスクに実行権が移行され、Bタスクが実行中状態に遷移すると共に、Cタスクは1TS内動作時間にわたり動作していないので、実行可能状態に遷移する。図10(d)には、上記イベントが発生しBタスクの動作が開始された直後のタスク管理テーブルが記載されている。そして、Bタスクの動作時間が1TS内動作時間に達すると、Cタスクに実行権が移行し、Cタスクの動作時間がイベント発生前の動作時間と合わせて1TS内動作時間に達すると、Cタスクは実行完了状態となる。その後、Dタスク,Eタスクの順に実行権が付与される。
なお、この具体例では、Bタスクよりも優先順位の低いCタスクの動作中にイベントが発生したため、実行権がCタスクからBタスクに移行したが、Bタスクよりも優先順位の高いAタスクの実行中に上記イベントが発生した場合には、Bタスクは実行可能状態に遷移し、Aタスクの動作が完了した後に、Bタスクに実行権が付与される。
また、TSSの対象であるDタスク或いはEタスクの動作中にイベントが発生した場合にも、同様に実行権がBタスクに移行し、Bタスクの動作完了後に、イベント発生時に動作していたタスクに実行権が移行する。
(2)実行権が放棄された場合の具体例
次に、Bタスクが実行権を放棄した場合のA〜Eタスクの動作について、図11に記載のタイミングチャートを用いて説明する。なお、ここでは、A〜Eタスクは、図10(a)に記載のタスク管理テーブルに基づきスケジューリングがなされる。
第1周期にて、放棄条件の成立によりBタスクが実行権を放棄すると、実行権がBタスクからCタスクに移行し、Bタスクは、動作時間が1TS内動作時間に達していないが、実行完了状態に遷移する。そして、第2周期以降は、各タスクは、Aタスク〜Eタスクの順番で1TS内動作時間にわたり動作する。
(3)1TS内動作時間の総和がTSを超える場合の具体例
次に、A〜Eタスクの1TS内動作時間の総和がTSを越える場合のA〜Eタスクの動作について、図12に記載のタイミングチャートと、図13(a)〜(d)に記載のタスク管理テーブルを用いて説明する。
図13のタスク管理テーブルに記載されているように、A〜Eタスクの1TS内動作時間は、0.2ms,0.3ms,0.3ms,0.2ms,0.1msに設定されていると共に、TSが1msに設定されており、1TS内動作時間の総和がTSを越えている。このため、TSSの対象であるD,Eタスクは、DS終了から次のTSが到来するまでの空き時間である0.2ms間にスケジューリングが行われるため、各TSにて必ず1TS内動作時間にわたり動作するとは限らない。
まず、第1周期に関して説明する。図13(a)に記載のタスク管理テーブルが示すように、第1周期開始時点では、D,Eタスクの「TSS優先度」は“20”,“0”に設定されている。このため、DSの対象であるA〜Cタスクの実行完了後、Dタスクが1TS内動作時間にわたり実行され、Eタスクには実行権が付与されない(図12参照)。
その結果、第2周期開始時点では、図13(b)のタスク管理テーブルが示すように、Eタスクの「TSS休止度」は“5”に増加し、「TSS優先度」が“5”となる。一方、第1周期にて1TS内動作時間にわたり実行されたDタスクの「TSS休止度」は“0”のままであり、Dタスクの「TSS優先度」は“20”のままである。このため、DタスクはEタスクより優先順位が高く、第2周期においても、Dタスクには1TS内動作時間にわたり実行権が付与されるが、Eタスクには実行権が付与されない(図12参照)。
そして、以後、Eタスクの「TSS優先度」がDタスクの「TSS優先度」を越えるまでEタスクは動作せず、第2周期以降のTSの開始時点では、Eタスクの「TSS優先度」は、“10”,“14”,“18”,“21”と増加し、第6周期の開始時点で20を越える。一方、Dタスクの「TSS優先度」は、第2周期以降も“20”のまま変わらない。このため、図13(c)に記載されているように、Eタスクは、第6周期の開始時点において初めてEタスクの「TSS優先度」がDタスクの「TSS優先度」を越え、第6周期では、Eタスクが1TS内動作時間にわたり動作した後にDタスクが動作する。
そして、第7周期の開始時点では、図13(d)に記載されているように、Dタスクの「TSS優先度」は“25”に増加すると共に、Eタスクの「TSS優先度」は“19”に減少する。このため、第7周期では、Dタスクは1TS内動作時間にわたり実行権が付与されるが、Eタスクには実行権が付与されない。
以後、新たなTSが到来する度にD,Eタスクの「TSS優先度」が増加或いは減少し、各TSにおけるTSSにおいて、これらのタスクのうち、「TSS優先度」が示す値が大きいタスクから順に実行権が付与される。
(4)タスクの追加,削除にいて
次に、スケジューリングの対象となるタスクの追加や削除が行われた場合における、各タスクの実行タイミングについて、図14を用いて説明する。
当初、B〜Eタスクがスケジューリングの対象となっており、タスク管理テーブルにはB〜Eタスクが登録されているとする(図14(a−1)参照)。このとき、TSはBタスクの最長動作周期である2msとして設定され、B〜Eタスクの「1TS内動作時間」は、“0.6ms”,“0.4ms”,“0.2ms”,“0.1ms”に設定されている。そして、図14(b)のタイミングチャートの第一サイクル,第二サイクルにおけるタイミングで、B〜Eタスクが実行される。
ここで、第二サイクルにおいてDSの対象のタスクであるAタスクの追加要求が発生し、タスク追加処理が実行され、Aタスクに対応するレコードがタスク管理テーブルの最後尾に追加されたとする。そうすると、第二サイクルが終了した際にスケジューラ初期化処理が実行され、タスク管理テーブルが図14(a−2)に記載されているように更新される。このとき、TSがAタスクの最長動作周期である1msとして設定され、B〜Eタスク,Aタスクの「1TS内動作時間」は、“0.3ms”,“0.2ms”,“0.2ms”,“0.1ms”,“0.1ms”に設定され、B,C,Aタスクの「DS優先度」は、“2”,“3”,“1”に設定される。そして、図14(b)のタイミングチャートの第三,第四サイクルにおけるタイミングで、A〜Eタスクが動作する。
また、第四サイクルにおいて、Aタスクの削除要求が発生し、タスク削除処理が実行されるとする。そうすると、第四サイクルが終了した際にスケジューラ初期化処理が実行され、Aタスクに対応するレコードがタスク管理テーブルから削除されて、タスク管理テーブルが、再び、図14(a−1)に記載されているように更新される(このとき、TSは、Bタスクの最長動作周期である2msとして設定される)。そして、図14(b)のタイミングチャートの第五サイクルにおけるタイミングで、B〜Eタスクが動作する。
[効果]
第一実施形態の制御プログラム1における制御管理部60のスケジューリング部61によれば、DSの対象となるA〜Cタスクについては、各TSにおいて必ず1TS内動作時間にわたり動作させることができ、一定周期あたりの動作時間を保証することができる。また、TSSの対象となるD,Eタスクについては、A〜Cタスクの動作が全て完了した後、次の基準サイクルが到来するまでの期間に順次実行権が付与される。したがって、A〜Eタスクを並行して動作させつつ、A〜Cタスクについてのリアルタイム性を確保することができる。
[第二実施形態]
[構成の説明]
次に、第二実施形態の車載装置について説明する。
第二実施形態の車載装置は、第一実施形態と同様のACC機能と、LKA機能と、周辺監視機能とを有している。図15には、第一実施形態と同様に構成された第二実施形態の車載装置800の構成と、該車載装置800に搭載され、CPU810により実行される制御プログラム700の構成を示すブロック図が記載されている。なお、制御プログラム700は、物理デバイス820における、フラッシュメモリ等の記憶保持動作が不要なデバイスから構成された記憶部(図示なし)に記憶されている。
制御プログラム700は、第一実施形態と同様のAタスク710,Bタスク720,Cタスク730を有していると共に、A〜Cタスク710〜730を稼動させる制御管理部740を有している。なお、A〜Cタスク710〜730は、第一実施形態と同様に、仮想マシンとして構成されていても良いし、対応する機能を実現するための単一の、或いは複数の処理単位(つまり、複数のスレッド)からなるプログラムとして構成されていても良い。
また、制御管理部740は、A〜Cタスク710〜730に対し順次実行権を付与し、これらのタスクのスケジューリングを行うスケジューリング部741と、第一実施形態と同様に構成されたデバイス制御部742と、を有している。
また、スケジューリング部741は、スケジューリングの対象となるタスクの追加や削除を行うタスク追加・削除受付部741aと、各タスクに対し実行権を付与するスケジューラ設定部741bと、実行権が付与されているタスクを動作させるスケジューラ実行部741cと、を有する。
なお、上述した構成の仮想マシンとして構成されたタスクに実行権が付与された場合には、仮想マシンでは、OSによるスレッドのスケジューリングが行われ、スレッドが並行して稼動される。また、複数のスレッドから構成されているタスクに実行権が付与された場合においても、該タスクでは、同様にしてOSによる該スレッドのスケジューリングが行われる。
[動作の説明]
(1)概要について
スケジューリング部741のスケジューラ設定部741bは、周期的に到来するタイミングを生成して基準サイクルとすると共に、後述するタスク管理テーブルに基づき、該基準サイクルの1周期であるTSにおいて、A〜Cタスク710〜730に順次実行権を付与することで、これらのタスクを並行して動作させる。
(2)タスク管理テーブルについて
次に、上述のタスク管理テーブルについて説明する。図15(b)には、タスク管理テーブルの一例が記載されている。このタスク管理テーブルは、スケジューリング部741のスケジューラ設定部741bが有している。
このタスク管理テーブルは、第一実施形態のタスク管理テーブルと同様に、タスクの名称を示す項目である「名称」と、第一実施形態と同様の最長動作周期,必要動作時間,1TS内動作時間を示す項目である「最長動作周期」,「必要動作時間」,「1TS内動作時間」を有する。また、これらに加え、各タスクに実行権を付与する優先順位を示す項目である「優先度」を有する。
(3)スケジューリングについて
次に、タスク管理テーブルに登録されているタスクのスケジューリングについて説明する。
スケジューラ設定部741bは、タスク管理テーブルに登録されているタスクの最長動作周期のうち最短のものをTSとして設定すると共に、各タスクについて、最長動作時間及び必要動作時間に基づき1TS内動作時間を算出し(詳細は後述する)、タスク管理テーブルに設定する。そして、スケジューラ設定部741bは、各TSにおいて、タスク管理テーブルに基づき、優先度の高いタスクから順に各タスクの1TS内動作時間にわたり実行権を付与することで、各タスクのスケジューリングを行うのである。
(4)スケジューラ初期化処理について
次に、TSや、各タスクに実行権を割り当てる際に用いられるタスク管理テーブルの「1TS内動作時間」等を設定する処理であるスケジューラ初期化処理について、図16に記載のフローチャートを用いて説明する。本処理は、制御プログラム700が起動された場合や、スケジューリングの対象となるタスクの追加或いは削除が行われた場合に、スケジューラ設定部741bにて実行される処理である。
なお、制御プログラム700の起動時に本処理が実行される場合には、タスク管理テーブルは、スケジューリングの対象となるタスクのレコードが登録された状態となっており、これらのレコードは、「名称」,「最長動作周期」,「必要動作時間」が設定されている。
S905では、スケジューラ設定部741bは、タスク管理テーブルを参照し、最も短い「最長動作周期」をTSとして設定し、S910に処理を移行する。
S910では、スケジューラ設定部741bは、サブルーチンである1TS内動作時間設定処理をコールし、タスク管理テーブルに登録されている各タスクの1TS内動作時間を算出する。そして、S915に処理を移行する。
S915では、スケジューラ設定部741bは、タスク管理テーブルの「優先度」を設定する。具体的には、以下のルールに従い「優先度」が設定される。
(a)最長動作周期が短いタスクから順に高い優先度を設定する。
(b)最長動作周期が同じ場合は、必要動作時間が長いタスクから順に高い優先度を設定する。
(c)最長動作周期,必要動作時間が同一である場合には、タスク管理テーブルにおける先頭側のレコードに対応するタスクから順に高い優先度を設定する。
「優先度」の設定が終了すると、S920に処理を移行する。
S920では、スケジューラ設定部741bは、スケジューラ初期化フラグをOFFし、本処理を終了する。
(5)1TS内動作時間設定処理について
次に、各タスクの1TS内動作時間を設定するサブルーチンである1TS内動作時間処理について、図17に記載のフローチャートを用いて説明する。
S1005では、スケジューラ設定部741bは、以下の式を用いて、タスク管理テーブルに登録されている各タスクの最短動作時間を算出する。
最短動作時間=(必要動作時間/最長動作時間)×TS
また、タスク管理テーブルに登録されている各タスクについて、以下の式を用いて仮動作時間を算出する。
仮動作時間=(最長動作周期/タスク管理テーブルに登録されているタスクの最長動作周期の総和)×TS
なお、このとき、例えば、TSの数十分の1程度の時間をマージンとして設定し、最長動作周期を、上記最長動作周期の総和にマージンを加えた時間で除算しても良い。
そして、S1010に処理を移行する。
S1010では、スケジューラ設定部741bは、仮動作時間が最短動作時間を下回るタスクを時間不足タスクとし、タスク管理テーブルに登録されている時間不足タスクのうち、対応するレコードが最も先頭側に配置された時間不足タスクを特定する。そして、この時間不足タスクについて、仮動作時間と最短動作時間との差分である不足時間を算出し、S1015に処理を移行する。
S1015では、スケジューラ設定部741bは、S1010において時間不足タスクを特定できたか否かを判定する。そして、肯定判定が得られた場合(S1015:Yes)にはS1020に、否定判定が得られた場合(S1015:No)にはS1050に処理を移行する。
S1020では、スケジューラ設定部741bは、仮動作時間が最短動作時間を上回るタスクを時間余剰タスクとし、タスク管理テーブルに登録されている時間余剰タスクのうち、対応するレコードが最も先頭側に配置された時間余剰タスクを特定すると共に、この時間余剰タスクについて、仮動作時間と最短動作時間との差分である余剰時間を算出する。そして、S1025に処理を移行する。
S1025では、スケジューラ設定部741bは、S1010にて特定した時間不足タスクの不足時間の長さと、S1020にて特定した時間余剰タスクの余剰時間の長さとを比較する。そして、余剰時間が不足時間以上である場合には(S1025:Yes)、S1030に処理を移行し、余剰時間が不足時間未満である場合には(S1025:No)、S1040に処理を移行する。
S1030では、スケジューラ設定部741bは、S1010にて特定した時間不足タスクについて、不足時間を補正時間とし、仮動作時間に補正時間を加算した時間を、新たに仮動作時間として設定する。なお、このとき、S1020にて特定した時間余剰タスクの余剰時間が不足時間を上回っている場合であれば、不足時間以上、且つ、余剰時間以下の時間を補正時間としても良い。そして、S1035に処理を移行する。
S1035では、スケジューラ設定部741bは、S1020にて特定した時間余剰タスクについて、仮動作時間からS1030にて設定した補正時間を減算した時間を新たに仮動作時間とし、S1010に処理を移行する。
S1040では、スケジューラ設定部741bは、S1020にて特定した時間余剰タスクの余剰時間を補正時間とし、S1010にて特定した時間不足タスクについて、仮動作時間に補正時間を加算した時間を、新たに仮動作時間として設定する。そして、S1045に処理を移行する。
S1045では、スケジューラ設定部741bは、S1020にて特定した時間余剰タスクについて、仮動作時間からS1040にて設定した補正時間を減算した時間を新たに仮動作時間とし、S1020に処理を移行する。
S1015において時間不足タスクを特定できなかった場合に移行するS1050では、スケジューラ設定部741bは、タスク管理テーブルに登録されている全てのタスクについて、仮動作時間を1TS内動作時間とし、タスク管理テーブルの「1TS内動作時間」を設定する。そして、本処理を終了する。
(5)タスク追加処理について
次に、スケジューリングの対象となるタスクを新たに追加する処理であるタスク追加処理について、図18に記載のフローチャートを用いて説明する。本処理は、例えば、ユーザから車載装置100の記憶部に保存されていたタスクの追加が要求された場合や、第一実施形態で述べたように新たなタスクがダウンロードされた際等に、タスク追加・削除受付部741aにて実行される処理である。
S1105では、タスク追加・削除受付部741aは、新たなタスクの追加が可能かどうかを判定し、肯定判定の場合には(S1105:Yes)、S1110に処理を移行すると共に、否定判定の場合には(S1105:No)、S1120に処理を移行する。
具体的には、タスク管理テーブルを参照し、各タスクの「最長動作周期」,「必要動作時間」を特定すると共に、必要動作時間を最長動作周期で除算した値を算出し、さらにこの値の総和を算出する。そして、該総和が1以下である場合にはタスクの追加が可能と判定すると共に、該総和が1より大きい場合には、タスクの追加が不可能と判定する。
S1110では、タスク追加・削除受付部741aは、新たに追加するタスクに対応するレコードをタスク管理テーブルの最後尾に追加すると共に、該レコードに対応する各項目を設定し、S1115に処理を移行する。
すなわち、該タスクを構成するバイナリデータに基づき、該タスクの名称を特定し、追加したレコードの「名称」に設定する。そして、該バイナリデータに基づき最長動作周期,必要動作時間を特定し、追加したレコードの「最長動作周期」,「必要動作時間」を設定する。
S1115では、タスク追加・削除受付部741aは、スケジューラ初期化フラグをONし、本処理を終了する。
タスクの追加が不可能である場合に移行するS1120では、タスク追加・削除受付部741aは、図示しない表示装置等を介してタスクの追加が不可能である旨を報知し、本処理を終了する。
(6)タスク削除処理,定期見直し処理について
第二実施形態では、例えば、ユーザの操作や外部からの信号等に応じて、タスク追加・削除受付部741aにより、第一実施形態と同様のタスク削除処理が行われる。また、基準サイクルに係るタイミングが到来した際に、スケジューラ設定部741bにより、第一実施形態と同様の定期見直し処理が行われる。なお、タスク削除処理,定期見直し処理の内容については、説明を省略する。
[効果]
第二実施形態の制御プログラム700における制御管理部740のスケジューリング部741では、最長動作周期を最長動作周期総和時間で除算した値にTSを乗算した時間を各タスクの仮動作時間とするため、余り時間を生じさせること無くTSを分割して各タスクに割り振ることができる。そして、仮動作時間が最短動作時間を上回るタスクから仮動作時間が最短動作時間を下回るタスクに仮動作時間を分けることにより、各タスクに最短動作時間以上の時間が割り当てられる。このため、いずれのタスクも実行されない空白期間を生じさせること無く、TSを各タスクの動作時間として割り振ることができ、より効率良くタスクを稼動させることができる。
[他の実施形態]
(1)第一実施形態のTSSでは、DSの終了後からTSの終了までの期間に、TSSの対象の各タスクに1回ずつ実行権が付与されるが、該期間においてこれらのタスクに対し繰り返し実行権を付与し、TSが終了するまでTSSの対象のタスクを常時動作させても良い。こうすることにより、各TSにおいていずれのタスクも動作していない空白期間が生じてしまうことを防ぐことができ、より効率良くタスクを動作させることができる。
(2)また、第一,第二実施形態では、仮想マシンにおけるOSやタスクは、再現する機能に係る他の装置にて稼動していたプログラムをバイナリコードの状態で移植したものとなっている。しかしながら、これに限定されるわけではなく、例えば、上記OS等は、他の装置にて稼動していたプログラムをソースコードの状態で移植したものに基づき生成されたものであっても良い。このような場合であっても、同様の効果を得ることができる。
(3)第二実施形態では、必要動作時間と最長動作周期の総和とを用いて算出された仮動作時間に基づき1TS内動作時間を設定することにより、各TSにおいて、いずれのタスクも動作していない空白期間が生じてしまうことを防いでいる。
しかしながら、スケジューラ設定部741bは、以下の(a)〜(c)のステップに記載されているようにして1TS内動作時間を設定しても良い。
(a)タスク管理テーブルに登録されているタスクの最短動作時間を算出する。
(b)各タスクの最短動作時間の総和とTSとの差分である余り時間を算出する。なお、このとき、例えば、TSの数十分の1程度の時間をマージンとして設定し、各タスクの最短動作時間の総和とTSとの差分からマージンを減じた時間を、余り時間としても良い。
(c)余り時間を、例えば、タスク管理テーブルに登録されているタスクの数で均等に分割し、各タスクについて、分割した時間と最短動作時間とを加算した時間を1TS内動作時間として設定する。
なお、余り時間を分割する割合を、例えば、各タスクの優先度に応じて設定し、優先度の高いタスクにより多くの時間が割り当てられるようにしても良い。また、例えば、タスク管理テーブルに登録されているタスクのうち、優先度が最も高いタスクに余り時間を全て割り当てても良い。
このような構成を有する場合であっても、各TSを有効に活用し、効率良くタスクを動作させることができる。
(4)また、第一実施形態では、TSSの対象のタスクが1TS内動作時間にわたり動作したか否かに応じてTSS休止度が変更され、TSS固定優先度とTSS休止度との和によりTSS優先度が算出されるが、TSS優先度の算出方法は、これに限定されることは無い。例えば、TSS休止度を更新するのではなく、TSSの対象のタスクが1TS内動作時間にわたり動作したか否かに応じてTSS優先度を増加或いは減少させても良い。このような場合であっても、同様の効果を得ることができる。
[特許請求の範囲との対応]
上記実施形態の説明で用いた用語と、特許請求の範囲の記載に用いた用語との対応を示す。
1TS内動作時間が稼働時間に、DSの対象のタスクが時間保証タスクに、TSSの対象のタスクが非時間保証タスクに、DS優先度が第一優先度に、TSS優先度が第二優先度に相当する。
また、実行タスク特定処理のS215及びS225が特定処理,特定ステップに、S245が付与ステップに、S240が剥奪ステップに相当する。
実行完了処理のS305が完了ステップに、放棄処理のS315が放棄ステップに、イベント待ち処理のS325が除外ステップに、イベント発生処理のS335が復帰ステップに相当する。
また、TS経過処理のS415,S430,S435が更新ステップに相当する。
また、スケジューラ初期化処理のS505がタイムスライス設定ステップに、S510が稼働時間設定ステップに相当する。
また、タスク追加処理のS610が判定ステップに、S615が追加ステップに相当する。
また、タスク削除処理のS640が削除ステップに相当する。
1…制御プログラム、10…Aタスク、11…APL、11a…第一スレッド、11b…第二スレッド、12…OS、13…仮想デバイス、14…仮想CPU、20…Bタスク、30…Cタスク、40…Dタスク、50…Eタスク、60…制御管理部、61…スケジューリング部、61a…タスク状態受付部、61b…スケジューラ設定部、61c…スケジューラ実行部、61d…タスク追加・削除受付部、62…デバイス制御部、100…車載装置、110…CPU、120…物理デバイス、150…外部サーバ、700…制御プログラム、710…Aタスク、720…Bタスク、730…Cタスク、740…制御管理部、741…スケジューリング部、741a…タスク追加・削除受付部、741b…スケジューラ設定部、741c…スケジューラ実行部、742…デバイス制御部、800…車載装置、810…CPU、820…物理デバイス。

Claims (11)

  1. 周期的に到来するタイミングを生成して基準サイクルとし、該基準サイクルの1周期であるタイムスライスにおいて、複数のタスクに順次実行権を付与する装置におけるスケジューリング方法であって、
    それぞれの前記タスクには稼働時間が設定されており、前記タスクとして、それぞれの前記タイムスライスで前記稼働時間にわたり必ず前記実行権が付与される時間保証タスクと、それぞれの前記タイムスライスで前記稼働時間にわたり前記実行権が付与されるとは限らない非時間保証タスクとが存在し、それぞれの前記時間保証タスクに設定されている前記稼働時間の総和は、前記タイムスライスよりも小さく、
    前記時間保証タスクには、前記実行権を付与する優先度である第一優先度が設定されていると共に、前記非時間保証タスクには、前記実行権を付与する優先度である第二優先度が設定されており、
    前記タスクに前記実行権を付与した時間が前記稼働時間に達すると、該タスクから前記実行権を剥奪すると共に、最後に到来した前記基準サイクルから始まる前記タイムスライスである現タイムスライスにおける該タスクの動作が完了したものとする完了ステップと、
    前記基準サイクルの到来時、或いは前記タスクの動作完了時に、前記現タイムスライスにおいて動作が完了していない前記時間保証タスクが存在する場合には、該時間保証タスクのうち前記第一優先度が最大のものを特定すると共に、該時間保証タスクが存在しない場合には、前記現タイムスライスにて動作が完了していない前記非時間保証タスクのうち、前記第二優先度が最大のものを特定する特定処理を行う特定ステップと、
    前記特定ステップにて特定された前記タスクに前記実行権を付与する付与ステップと、
    を有し、
    前記時間保証タスクには、該時間保証タスクにより実現される機能を正常に稼動させるうえで許容される最長の動作周期である最長動作周期と、ぞれぞれの前記最長動作周期において、前記機能に稼動させるうえで最低限必要となる前記実行権の付与時間である必要動作時間とが個別に設定されており、
    前記スケジューリング方法は、
    スケジューリングの対象となる前記時間保証タスクの前記最長動作周期のうちの最短の前記最長動作周期を、前記タイムスライスとして設定するタイムスライス設定ステップと、
    スケジューリングの対象となるそれぞれの前記時間保証タスクについて、該時間保証タスクに設定された前記必要動作時間を、該時間保証タスクに設定された前記最長動作周期で除算した値を算出し、さらに、該値に前記タイムスライスを乗算した値を最短動作時間として算出し、それぞれの前記時間保証タスクについて、該時間保証タスクの前記最短動作時間以上の時間を前記稼働時間として設定する稼働時間設定ステップと、
    さらに有し、
    前記稼働時間設定ステップでは、全ての前記時間保証タスクの前記稼働時間の総和が前記タイムスライスを越えない範囲で、それぞれの前記時間保証タスクの前記稼働時間を設定すること、
    を特徴とし、
    前記スケジューリング方法は、
    スケジューリングの対象となっている前記タスクを、スケジューリングの対象から削除する削除ステップと、
    スケジューリングの対象となっていない前記タスクを、スケジューリングの対象として新たに追加する追加ステップと、
    をさらに有し、
    前記タイムスライス設定ステップと、前記稼働時間設定ステップとは、定期的なタイミングで実施されること、
    を特徴とするスケジューリング方法。
  2. 請求項1に記載のスケジューリング方法において、
    前記タスクは、該タスクに対し予め定められた放棄条件が成立すると、付与されている前記実行権を自発的に放棄し、
    前記タスクが前記実行権を自発的に放棄すると、前記現タイムスライスにおいて、該タスクの動作が完了したものとする放棄ステップをさらに有すること、
    を特徴とするスケジューリング方法。
  3. 請求項1または請求項2に記載のスケジューリング方法において、
    前記タスクは、該タスクに対し予め定められたイベント待ち条件が成立すると、付与されている前記実行権を自発的に手放すと共に、該タスクに対し予め定められたイベントの発生を待ち、
    前記実行権が付与されている前記タスクが前記イベントの発生を待ち始めると、該タスクを前記実行権の付与の対象から除外して待機中とする除外ステップと、
    前記イベントが発生すると、待機中の前記タスクを前記実行権の付与の対象として復帰させる復帰ステップと、
    をさらに有し、
    前記特定ステップにおいて、
    待機中でない前記タスクを対象として、前記特定処理を行い、
    さらに、前記除外ステップにて前記タスクが前記実行権の付与の対象から除外された時に、前記特定処理を行うこと、
    を特徴とするスケジューリング方法。
  4. 請求項3に記載のスケジューリング方法において、
    前記特定ステップにおいて、さらに、前記復帰ステップにて待機中の前記タスクが前記実行権の付与の対象として復帰させられた時に前記特定処理を行い、
    前記特定ステップにより、前記復帰ステップにて前記実行権を付与する対象として復帰させられた前記タスクが特定されると、前記実行権が付与されている前記タスクから前記実行権を剥奪する剥奪ステップをさらに有すること、
    を特徴とするスケジューリング方法。
  5. 請求項1から請求項4のうちのいずれか1項に記載のスケジューリング方法において、
    それぞれの前記非時間保証タスクについて、前記現タイムスライスにて該非時間保証タスクが完了したか否かに応じて、該非時間保証タスクに設定されている前記第二優先度を更新する更新ステップをさらに有すること、
    を特徴とするスケジューリング方法。
  6. 請求項5に記載のスケジューリング方法において、
    それぞれの前記非時間保証タスクに設定されている前記第二優先度は、前記実行権を付与する優先度を示す固定値である固定優先度と、該非時間保証タスクが、それぞれの前記タイムスライスにおいて動作が完了しなかった度合いを示す休止度とに基づき算出され、
    前記更新ステップにおいて、それぞれの前記非時間保証タスクについて、前記現タイムスライスにて該非時間保証タスクの動作が完了したか否かに応じて、該非時間保証タスクに設定されている前記第二優先度に係る前記休止度を更新することにより、該第二優先度を更新すること、
    を特徴とするスケジューリング方法。
  7. 請求項1から請求項6のうちのいずれか1項に記載のスケジューリング方法において、
    新たな前記時間保証タスクをスケジューリングの対象として追加する際に、該時間保証タスクの前記最長動作周期及び前記最短動作時間と、スケジューリングの対象となっている前記時間保証タスクの前記最長動作周期及び前記最短動作時間とに基づき、新たな前記時間保証タスクをスケジューリングの対象として追加可能か否かを判定する判定ステップをさらに有し、
    前記追加ステップにおいて、前記判定ステップにて肯定判定が得られた場合に、該判定に係る新たな前記時間保証タスクをスケジューリングの対象として追加すること、
    を特徴とするスケジューリング方法。
  8. 請求項1から請求項7のうちのいずれか1項に記載のスケジューリング方法において、
    前記タイムスライス設定ステップと前記稼働時間設定ステップとは、前記基準サイクルに係る前記タイミングが到来した際に実施されること、
    を特徴とするスケジューリング方法。
  9. 請求項1から請求項のうちのいずれか1項に記載のスケジューリング方法において、
    前記タスクのうちの少なくともいずれか一つは、ある装置において実現される機能を再現するためのプログラムである仮想マシンであること、
    を特徴とするスケジューリング方法。
  10. 周期的に到来するタイミングを生成して基準サイクルとし、該基準サイクルの1周期であるタイムスライスにおいて、複数のタスクに順次実行権を付与するスケジューリングプログラムであって、
    それぞれの前記タスクには稼働時間が設定されており、前記タスクとして、それぞれの前記タイムスライスで前記稼働時間にわたり必ず前記実行権が付与される時間保証タスクと、それぞれの前記タイムスライスで前記稼働時間にわたり前記実行権が付与されるとは限らない非時間保証タスクとが存在し、それぞれの前記時間保証タスクに設定されている前記稼働時間の総和は、前記タイムスライスよりも小さく、
    前記時間保証タスクには、前記実行権を付与する優先度である第一優先度が設定されていると共に、前記非時間保証タスクには、前記実行権を付与する優先度である第二優先度が設定されており、
    前記タスクに前記実行権を付与した時間が前記稼働時間に達すると、該タスクから前記実行権を剥奪すると共に、最後に到来した前記基準サイクルから始まる前記タイムスライスである現タイムスライスにおける該タスクの動作が完了したものとする完了ステップと、
    前記基準サイクルの到来時、或いは前記タスクの動作完了時に、前記現タイムスライスにおいて動作が完了していない前記時間保証タスクが存在する場合には、該時間保証タスクのうち前記第一優先度が最大のものを特定すると共に、該時間保証タスクが存在しない場合には、前記現タイムスライスにて動作が完了していない前記非時間保証タスクのうち、前記第二優先度が最大のものを特定する特定処理を行う特定ステップと、
    前記特定ステップにて特定された前記タスクに前記実行権を付与する付与ステップと、
    をコンピュータに実行させ
    前記時間保証タスクには、該時間保証タスクにより実現される機能を正常に稼動させるうえで許容される最長の動作周期である最長動作周期と、ぞれぞれの前記最長動作周期において、前記機能に稼動させるうえで最低限必要となる前記実行権の付与時間である必要動作時間とが個別に設定されており、
    前記スケジューリングプログラムは、
    スケジューリングの対象となる前記時間保証タスクの前記最長動作周期のうちの最短の前記最長動作周期を、前記タイムスライスとして設定するタイムスライス設定ステップと、
    スケジューリングの対象となるそれぞれの前記時間保証タスクについて、該時間保証タスクに設定された前記必要動作時間を、該時間保証タスクに設定された前記最長動作周期で除算した値を算出し、さらに、該値に前記タイムスライスを乗算した値を最短動作時間として算出し、それぞれの前記時間保証タスクについて、該時間保証タスクの前記最短動作時間以上の時間を前記稼働時間として設定する稼働時間設定ステップと、
    をさらにコンピュータに実行させ、
    前記稼働時間設定ステップでは、全ての前記時間保証タスクの前記稼働時間の総和が前記タイムスライスを越えない範囲で、それぞれの前記時間保証タスクの前記稼働時間を設定すること、
    を特徴とし、
    前記スケジューリングプログラムは、
    スケジューリングの対象となっている前記タスクを、スケジューリングの対象から削除する削除ステップと、
    スケジューリングの対象となっていない前記タスクを、スケジューリングの対象として新たに追加する追加ステップと、
    をさらにコンピュータに実行させ、
    前記タイムスライス設定ステップと、前記稼働時間設定ステップとは、定期的なタイミングで実施されること、
    を特徴とするスケジューリングプログラム。
  11. 周期的に到来するタイミングを生成して基準サイクルとし、該基準サイクルの1周期であるタイムスライスにおいて、複数のタスクに順次実行権を付与するスケジューリング装置であって、
    それぞれの前記タスクには稼働時間が設定されており、前記タスクとして、それぞれの前記タイムスライスで前記稼働時間にわたり必ず前記実行権が付与される時間保証タスクと、それぞれの前記タイムスライスで前記稼働時間にわたり前記実行権が付与されるとは
    限らない非時間保証タスクとが存在し、それぞれの前記時間保証タスクに設定されている前記稼働時間の総和は、前記タイムスライスよりも小さく、
    前記時間保証タスクには、前記実行権を付与する優先度である第一優先度が設定されていると共に、前記非時間保証タスクには、前記実行権を付与する優先度である第二優先度が設定されており、
    前記タスクに前記実行権を付与した時間が前記稼働時間に達すると、該タスクから前記実行権を剥奪すると共に、最後に到来した前記基準サイクルから始まる前記タイムスライスである現タイムスライスにおける該タスクの動作が完了したものとする完了ステップと、
    前記基準サイクルの到来時、或いは前記タスクの動作完了時に、前記現タイムスライスにおいて動作が完了していない前記時間保証タスクが存在する場合には、該時間保証タスクのうち前記第一優先度が最大のものを特定すると共に、該時間保証タスクが存在しない場合には、前記現タイムスライスにて動作が完了していない前記非時間保証タスクのうち、前記第二優先度が最大のものを特定する特定処理を行う特定ステップと、
    前記特定ステップにて特定された前記タスクに前記実行権を付与する付与ステップと、
    を実行し、
    前記時間保証タスクには、該時間保証タスクにより実現される機能を正常に稼動させるうえで許容される最長の動作周期である最長動作周期と、ぞれぞれの前記最長動作周期において、前記機能に稼動させるうえで最低限必要となる前記実行権の付与時間である必要動作時間とが個別に設定されており、
    前記スケジューリング装置は、
    スケジューリングの対象となる前記時間保証タスクの前記最長動作周期のうちの最短の前記最長動作周期を、前記タイムスライスとして設定するタイムスライス設定ステップと、
    スケジューリングの対象となるそれぞれの前記時間保証タスクについて、該時間保証タスクに設定された前記必要動作時間を、該時間保証タスクに設定された前記最長動作周期で除算した値を算出し、さらに、該値に前記タイムスライスを乗算した値を最短動作時間として算出し、それぞれの前記時間保証タスクについて、該時間保証タスクの前記最短動作時間以上の時間を前記稼働時間として設定する稼働時間設定ステップと、
    さらに実行し、
    前記稼働時間設定ステップでは、全ての前記時間保証タスクの前記稼働時間の総和が前記タイムスライスを越えない範囲で、それぞれの前記時間保証タスクの前記稼働時間を設定すること、
    を特徴とし、
    前記スケジューリング装置は、
    スケジューリングの対象となっている前記タスクを、スケジューリングの対象から削除する削除ステップと、
    スケジューリングの対象となっていない前記タスクを、スケジューリングの対象として新たに追加する追加ステップと、
    をさらに実行し、
    前記タイムスライス設定ステップと、前記稼働時間設定ステップとは、定期的なタイミングで実施されること、
    を特徴とするスケジューリング装置。
JP2010224215A 2009-11-09 2010-10-01 スケジューリング方法,スケジューリングプログラム,スケジューリング装置 Active JP5423635B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010224215A JP5423635B2 (ja) 2009-11-09 2010-10-01 スケジューリング方法,スケジューリングプログラム,スケジューリング装置
US12/927,142 US8595746B2 (en) 2009-11-09 2010-11-08 Method and apparatus for scheduling tasks to control hardware devices
DE102010043569A DE102010043569A1 (de) 2009-11-09 2010-11-08 Verfahren und Vorrichtung zum Planen von Aufgaben zur Steuerung von Hardwareeinrichtungen

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2009256467 2009-11-09
JP2009256467 2009-11-09
JP2010042655 2010-02-26
JP2010042655 2010-02-26
JP2010224215A JP5423635B2 (ja) 2009-11-09 2010-10-01 スケジューリング方法,スケジューリングプログラム,スケジューリング装置

Publications (2)

Publication Number Publication Date
JP2011198346A JP2011198346A (ja) 2011-10-06
JP5423635B2 true JP5423635B2 (ja) 2014-02-19

Family

ID=43902237

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010224215A Active JP5423635B2 (ja) 2009-11-09 2010-10-01 スケジューリング方法,スケジューリングプログラム,スケジューリング装置

Country Status (3)

Country Link
US (1) US8595746B2 (ja)
JP (1) JP5423635B2 (ja)
DE (1) DE102010043569A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5099188B2 (ja) * 2010-08-18 2012-12-12 コニカミノルタビジネステクノロジーズ株式会社 処理順決定装置、処理順決定方法および処理順決定プログラム
KR20120067825A (ko) * 2010-12-16 2012-06-26 한국전자통신연구원 임베디드 리눅스를 위한 적응형 프로세스 스케쥴링 방법
US8863136B2 (en) * 2011-05-19 2014-10-14 International Business Machines Corporation Lock control in multiple processor systems
JP5696603B2 (ja) * 2011-06-29 2015-04-08 富士通株式会社 計算機システム、計算機システムの電力制御方法およびプログラム
JP2014006788A (ja) * 2012-06-26 2014-01-16 Azbil Corp 情報処理装置およびプログラム実行方法
JP2015210688A (ja) * 2014-04-28 2015-11-24 株式会社日立製作所 サーバ仮想化システム
JP6214469B2 (ja) * 2014-05-26 2017-10-18 日立オートモティブシステムズ株式会社 車両制御装置
KR101621280B1 (ko) 2015-02-02 2016-05-17 서울대학교산학협력단 최악 응답 시간 분석 방법 및 컴퓨터 프로그램
JP6615726B2 (ja) 2016-09-16 2019-12-04 株式会社東芝 情報処理装置、情報処理方法及びプログラム
JP6803709B2 (ja) * 2016-09-21 2020-12-23 日立オートモティブシステムズ株式会社 車両制御装置および車両制御システム
JP6927089B2 (ja) * 2018-03-05 2021-08-25 オムロン株式会社 制御装置、システムプログラム、制御方法
JP7331774B2 (ja) * 2020-05-12 2023-08-23 株式会社デンソー 電子制御装置
CN112959926B (zh) * 2021-03-05 2022-11-29 广西双英集团股份有限公司 一种面向动态多任务汽车座舱平台的时分控制方法
JP2023104533A (ja) * 2022-01-18 2023-07-28 株式会社オートネットワーク技術研究所 車載制御装置、制御方法及びコンピュータプログラム
JP2023104586A (ja) * 2022-01-18 2023-07-28 株式会社オートネットワーク技術研究所 車載制御装置、制御方法及びコンピュータプログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590323A (en) * 1994-05-13 1996-12-31 Lucent Technologies Inc. Optimal parallel processor architecture for real time multitasking
JP3543441B2 (ja) 1995-09-19 2004-07-14 株式会社日立製作所 大域的なリソースキャッピング方法
JPH10161890A (ja) * 1996-11-27 1998-06-19 Mitsubishi Electric Corp スケジューラ
JP2001202258A (ja) * 2000-01-20 2001-07-27 Yaskawa Electric Corp リアルタイム処理装置
US6757897B1 (en) * 2000-02-29 2004-06-29 Cisco Technology, Inc. Apparatus and methods for scheduling and performing tasks
US6964049B2 (en) * 2001-07-18 2005-11-08 Smartmatic Corporation Smart internetworking operating system for low computational power microprocessors
US7075422B2 (en) * 2003-12-24 2006-07-11 Nattel Group, Inc. Method for intelligent crescendo system
JP2008234116A (ja) 2007-03-19 2008-10-02 Matsushita Electric Ind Co Ltd 仮想計算機制御装置
JP2008276666A (ja) * 2007-05-07 2008-11-13 Sony Corp 情報処理装置および方法、並びにプログラム
JP2009110404A (ja) 2007-10-31 2009-05-21 Toshiba Corp 仮想計算機システム及び同システムにおけるゲストosスケジューリング方法
JP4985662B2 (ja) 2009-01-22 2012-07-25 株式会社デンソー プログラム、及び制御装置

Also Published As

Publication number Publication date
US20110113431A1 (en) 2011-05-12
US8595746B2 (en) 2013-11-26
JP2011198346A (ja) 2011-10-06
DE102010043569A1 (de) 2011-05-26

Similar Documents

Publication Publication Date Title
JP5423635B2 (ja) スケジューリング方法,スケジューリングプログラム,スケジューリング装置
KR102424030B1 (ko) 리소스 관리 방법 및 단말 장치
EP3008594B1 (en) Assigning and scheduling threads for multiple prioritized queues
US10908954B2 (en) Quality of service classes
EP3917180B1 (en) Resource scheduling method and apparatus, electronic device, and storage medium
JP6383518B2 (ja) 仮想マシンモニター及び仮想マシンモニターのスケジューリング方法
US8607239B2 (en) Lock mechanism to reduce waiting of threads to access a shared resource by selectively granting access to a thread before an enqueued highest priority thread
MX2013013951A (es) Notificaciones de aplicacion.
EP2254049A2 (en) Job scheduling apparatus and job scheduling method
KR20070083460A (ko) 다중 커널을 동시에 실행하는 방법 및 시스템
CN107391279B (zh) 一种消息队列容器创建方法、装置及消息队列容器
CN111782295B (zh) 一种应用程序的运行方法、装置、电子设备及存储介质
CN112199170A (zh) 实时操作***的定时处理方法、装置、设备及存储介质
CN111897637A (zh) 作业调度方法、装置、主机及存储介质
CN114327894A (zh) 资源分配方法、装置、电子设备及存储介质
US7797473B2 (en) System for executing system management interrupts and methods thereof
CN113032119A (zh) 一种任务调度方法、装置、存储介质及电子设备
JP2007280253A (ja) 情報処理装置及び情報処理方法
JP4112511B2 (ja) タスク管理プログラムおよびタスク管理装置
JP2020024636A (ja) スケジューリング装置、スケジューリングシステム、スケジューリング方法及びプログラム
CN112269658B (zh) 一种复合资源申请方法、***及电子设备和存储介质
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム
JP2006004092A (ja) コンピュータシステム
JP2015185003A (ja) スケジューラ装置及びそのスケジューリング方法、演算処理システム、並びにコンピュータ・プログラム
Lee et al. Interrupt handler migration and direct interrupt scheduling for rapid scheduling of interrupt-driven tasks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130912

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131029

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131111

R151 Written notification of patent or utility model registration

Ref document number: 5423635

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250