(57)【特許請求の範囲】
【請求項１】
ＣＰＵ時間を一定時間毎に区切ったタイムスロットを複数に分割したタイムスライスをＣＰＵ実行時間として複数のタスクのそれぞれに割り当てることにより、複数のタスクの時分割処理を可能とするオペレーティングシステムのタスクおよびリソースのスケジューリング装置であって、
実行中のタスクにおいて、共有資源へ転送すべきデータが発生した場合に、前記共有資源のアクセス権を取得する手段と、
前記共有資源へ転送すべき該データを複数のデータブロックに分割する手段と、
前記データブロックの転送完了毎に、当該タスクに割り当てられた前記ＣＰＵ実行時間の終了を通知する情報が発生したか否かを判定する手段と、
該情報が発生していない場合には、次に転送すべきデータブロックの転送処理を実行し、該情報が発生していた場合には、前記共有資源のアクセス権を返却するとともに、未転送の前記データブロックを次回の当該タスクのＣＰＵ実行時間まで保留する手段と
を有し、
前記データブロックは、当該タスクの次に実行されるタスクの実行周期の遅延の許容範囲内で転送可能なデータ量とされるタスクおよびリソースのスケジューリング装置。
【請求項２】
ＣＰＵ時間を一定時間毎に区切ったタイムスロットを複数に分割したタイムスライスをＣＰＵ実行時間として複数のタスクのそれぞれに割り当てることにより、複数のタスクの時分割処理を可能とするオペレーティングシステムのタスクおよびリソースのスケジューリング装置であって、
実行中のタスクにおいて、共有資源へ転送すべきデータが発生した場合に、前記共有資源のアクセス権を取得する手段と、
前記共有資源へ転送すべき該データを複数のデータブロックに分割する手段と、
前記データブロックの転送完了毎に、他のタスクから前記共有資源へのアクセス要求が発生したか否かを判定する手段と、
該アクセス要求が発生していない場合には、次に転送すべきデータブロックの転送処理を実行し、該アクセス要求が発生していた場合には、前記共有資源のアクセス権を返却するとともに、未転送の前記データブロックを次回の当該タスクのＣＰＵ実行時間まで保留する手段と
を有し、
前記データブロックは、全ての前記タスクの実行周期の遅延の許容範囲のうち、最も短い許容範囲内で転送可能なデータ量とされるタスクおよびリソースのスケジューリング装置。
【請求項３】
前記タイムスロットには、タスクの割り当てが行われない空き時間が含まれている請求項１または請求項２に記載のタスクおよびリソースのスケジューリング装置。
【請求項４】
請求項１から請求項３のいずれかに記載のタスクおよびリソースのスケジューリング装置を備える制御装置。
【請求項５】
ＣＰＵ時間を一定時間毎に区切ったタイムスロットを複数に分割したタイムスライスをＣＰＵ実行時間として複数のタスクのそれぞれに割り当てることにより、複数のタスクの時分割処理を可能とするオペレーティングシステムのタスクおよびリソースのスケジューリング方法であって、
コンピュータが、
実行中のタスクにおいて、共有資源へ転送すべきデータが発生した場合に、前記共有資源のアクセス権を取得するステップと、
前記共有資源へ転送すべき該データを複数のデータブロックに分割するステップと、
前記データブロックの転送完了毎に、当該タスクに割り当てられた前記ＣＰＵ実行時間の終了を通知する情報が発生したか否かを判定するステップと、
該情報が発生していない場合には、次に転送すべきデータブロックの転送処理を実行し、該情報が発生していた場合には、前記共有資源のアクセス権を返却するとともに、未転送の前記データブロックを次回の当該タスクのＣＰＵ実行時間まで保留するステップと、
を実行し、
前記データブロックが、当該タスクの次に実行されるタスクの実行周期の遅延の許容範囲内で転送可能なデータ量とされるタスクおよびリソースのスケジューリング方法。
【請求項６】
ＣＰＵ時間を一定時間毎に区切ったタイムスロットを複数に分割したタイムスライスをＣＰＵ実行時間として複数のタスクのそれぞれに割り当てることにより、複数のタスクの時分割処理を可能とするオペレーティングシステムのタスクスケジューリング方法であって、
コンピュータが、
実行中のタスクにおいて、共有資源へ転送すべきデータが発生した場合に、前記共有資源のアクセス権を取得するステップと、
前記共有資源へ転送すべき該データを複数のデータブロックに分割するステップと、
前記データブロックの転送完了毎に、他のタスクから前記共有資源へのアクセス要求が発生したか否かを判定するステップと、
該アクセス要求が発生していない場合には、次に転送すべきデータブロックの転送処理を実行し、該アクセス要求が発生していた場合には、前記共有資源のアクセス権を返却するとともに、未転送の前記データブロックを次回の当該タスクのＣＰＵ実行時間まで保留するステップと、
を実行し、
前記データブロックが、全ての前記タスクの実行周期の遅延の許容範囲のうち、最も短い許容範囲内で転送可能なデータ量とされるタスクおよびリソースのスケジューリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスクおよびリソースのスケジューリング装置及びその方法並びに制御装置に関するものである。
【背景技術】
【０００２】
従来、複数のタスクを動作させるマルチタスクの実行方法として、ラウンドロビンスケジューリングや優先度に基づくスケジューリング等が知られている（例えば、特許文献１、特許文献２参照）。
このようなマルチタスクのスケジューリング方式では、共有資源アクセスを行う際の排他制御を実現する方法として、例えば、セマフォやミューテックス等のシステムコールによって、オペレーティングシステム（ＯＳ）から共有資源へのアクセス権を取得し、該共有資源を利用した処理が終了した時点でアクセス権をＯＳに返却する方法がとられている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−２４９４６号公報
【特許文献２】特開２０００−２０３２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記方法では、実行中のタスクによる共有資源を利用した処理が終了するまで、同共有資源へのアクセスを必要とする次のタスクの実行が待たされる。したがって、例えば、大量のデータを通信するようなタスクが実行された場合には、実行中のタスクによる共有資源の占有が長期化することとなり、後続のタスクの遅延時間が大きくなってしまう。
【０００５】
また、実行中のタスクへ割り当てられるＣＰＵ実行時間の終了時において、実行中のタスクによる共有資源のアクセスを中断させ、該共有資源のアクセス権を強制的にＯＳに返却させる制御も考えられるが、途中でアクセスを中断できないような共有資源の場合には、このような対応ができず、後続のタスクの遅延時間は免れない。
【０００６】
本発明は、このような事情に鑑みてなされたものであって、タスクの実行周期の遅延を低減させることのできるタスクおよびリソースのスケジューリング装置及びその方法並びに制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明は以下の手段を採用する。
本発明は、ＣＰＵ時間を一定時間毎に区切ったタイムスロットを複数に分割したタイムスライスをＣＰＵ実行時間として複数のタスクのそれぞれに割り当てることにより、複数のタスクの時分割処理を可能とするオペレーティングシステムのタスクおよびリソースのスケジューリング装置であって、実行中のタスクにおいて、共有資源へ転送すべきデータが発生した場合に、前記共有資源のアクセス権を取得する手段と、前記共有資源へ転送すべき該データを複数のデータブロックに分割する手段と、前記データブロックの転送完了毎に、当該タスクに割り当てられた前記ＣＰＵ実行時間の終了を通知する情報が発生したか否かを判定する手段と、該情報が発生していない場合には、次に転送すべきデータブロックの転送処理を実行し、該情報が発生していた場合には、前記共有資源のアクセス権を返却するとともに、未転送の前記データブロックを次回の当該タスクのＣＰＵ実行時間まで保留する手段とを有し、前記データブロックは、当該タスクの次に実行されるタスクの実行周期の遅延の許容範囲内で転送可能なデータ量とされるタスクおよびリソースのスケジューリング装置を提供する。
【０００８】
上記構成によれば、実行中のタスクにおいて共有資源へ転送すべきデータが発生した場合には、そのデータが複数のデータブロックに分割され、該データブロック単位で転送処理が行われるとともに、各データブロックの転送完了において、当該タスクに割り当てられたＣＰＵ実行時間の終了を通知する割り込みが発生したか否かが判断される。これにより、データ転送中に次のタスクの開始時間が訪れることにより、タスクの切替が行われたとしても、今まで実行されていたタスクの共有資源の占有による次のタスクへの影響を１つのデータブロックの転送時間以下とすることができる。ここで、データブロックは、次に実行されるタスクの実行周期の遅延の許容範囲内で転送可能なデータ量とされているので、共有資源の占有に起因する次のタスクの遅延を許容範囲以下とすることができ、複数のタスクを確定的に周期動作させることが可能となる。
【０００９】
本発明は、ＣＰＵ時間を一定時間毎に区切ったタイムスロットを複数に分割したタイムスライスをＣＰＵ実行時間として複数のタスクのそれぞれに割り当てることにより、複数のタスクの時分割処理を可能とするオペレーティングシステムのタスクおよびリソースのスケジューリング装置であって、実行中のタスクにおいて、共有資源へ転送すべきデータが発生した場合に、前記共有資源のアクセス権を取得する手段と、前記共有資源へ転送すべき該データを複数のデータブロックに分割する手段と、前記データブロックの転送完了毎に、他のタスクから前記共有資源へのアクセス要求が発生したか否かを判定する手段と、該アクセス要求が発生していない場合には、次に転送すべきデータブロックの転送処理を実行し、該アクセス要求が発生していた場合には、前記共有資源のアクセス権を返却するとともに、未転送の前記データブロックを次回の当該タスクのＣＰＵ実行時間まで保留する手段とを有し、前記データブロックは、全ての前記タスクの実行周期の遅延の許容範囲のうち、最も短い許容範囲内で転送可能なデータ量とされるタスクおよびリソースのスケジューリング装置を提供する。
【００１０】
このような構成によれば、実行中のタスクにおいて共有資源へ転送すべきデータが発生した場合に、そのデータが複数のデータブロックに分割され、該データブロック単位で転送処理が行われるとともに、該データブロックの転送完了毎に、他のタスクによる共有資源へのアクセス要求が発生されたか否かが判断される。これにより、他のタスクによる共有資源へのアクセス要求がない限りは、現在アクセス権を占有しているタスクにおいて発生したデータ転送を継続して行うことが可能となる。この結果、共有資源を必要とするタスクに効率的に共有資源を利用させることが可能となる。
更に、他のタスクによるアクセス要求が発生した場合には、この他のタスクに対して速やかにアクセス権を明け渡すことが可能となる。これにより、タスクの実行周期の遅延時間を低減させることができる。この場合において、上記データブロックは、全てのタスクの実行周期の遅延の許容範囲のうち、最も短い許容範囲内で転送可能なデータ量とされているので、共有資源の占有に起因する各タスクの実行周期の遅延を許容範囲以下とすることができる。
【００１１】
上記いずれかのタスクおよびリソースのスケジューリング装置において、前記タイムスロットには、タスクの割り当てが行われない空き時間が含まれていてもよい。
【００１２】
このように、上記タイムスロットにタスクの割り当てが行われない空き時間を含ませることで、各タスクの実行遅延を該空き時間で吸収することができる。この結果、各タスクを略一定の周期で実行させることが可能となる。
【００１３】
本発明は、上記いずれかのタスクおよびリソースのスケジューリング装置を備える制御装置を提供する。
【００１４】
本発明は、ＣＰＵ時間を一定時間毎に区切ったタイムスロットを複数に分割したタイムスライスをＣＰＵ実行時間として複数のタスクのそれぞれに割り当てることにより、複数のタスクの時分割処理を可能とするオペレーティングシステムのタスクおよびリソースのスケジューリング方法であって、コンピュータが、実行中のタスクにおいて、共有資源へ転送すべきデータが発生した場合に、前記共有資源のアクセス権を取得するステップと、前記共有資源へ転送すべき該データを複数のデータブロックに分割するステップと、前記データブロックの転送完了毎に、当該タスクに割り当てられた前記ＣＰＵ実行時間の終了を通知する情報が発生したか否かを判定するステップと、該情報が発生していない場合には、次に転送すべきデータブロックの転送処理を実行し、該情報が発生していた場合には、前記共有資源のアクセス権を返却するとともに、未転送の前記データブロックを次回の当該タスクのＣＰＵ実行時間まで保留するステップとを実行し、前記データブロックが、当該タスクの次に実行されるタスクの実行周期の遅延の許容範囲内で転送可能なデータ量とされるタスクおよびリソースのスケジューリング方法を提供する。
【００１５】
本発明は、ＣＰＵ時間を一定時間毎に区切ったタイムスロットを複数に分割したタイムスライスをＣＰＵ実行時間として複数のタスクのそれぞれに割り当てることにより、複数のタスクの時分割処理を可能とするオペレーティングシステムのタスクスケジューリング方法であって、コンピュータが、実行中のタスクにおいて、共有資源へ転送すべきデータが発生した場合に、前記共有資源のアクセス権を取得するステップと、前記共有資源へ転送すべき該データを複数のデータブロックに分割するステップと、前記データブロックの転送完了毎に、他のタスクから前記共有資源へのアクセス要求が発生したか否かを判定するステップと、該アクセス要求が発生していない場合には、次に転送すべきデータブロックの転送処理を実行し、該アクセス要求が発生していた場合には、前記共有資源のアクセス権を返却するとともに、未転送の前記データブロックを次回の当該タスクのＣＰＵ実行時間まで保留するステップとを実行し、前記データブロックが、全ての前記タスクの実行周期の遅延の許容範囲のうち、最も短い許容範囲内で転送可能なデータ量とされるタスクおよびリソースのスケジューリング方法を提供する。
【発明の効果】
【００１６】
本発明によれば、複数のタスクの実行周期の遅延を低減させることができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１実施形態に係るタスクおよびリソースのスケジューリング装置が適用された制御装置のハードウェア構成を示したブロック図である。
【図２】本発明の第１実施形態に係る制御装置の機能ブロック図を示した図である。
【図３】本発明の第１実施形態に係るタスクおよびリソースのスケジューリング装置によって実施されるタスクおよびリソースのスケジューリング方法のタイミングチャートを示した図である。
【図４】本発明の第２実施形態に係るタスクおよびリソースのスケジューリング装置によって実施されるタスクおよびリソースのスケジューリング方法のタイミングチャートを示した図である。
【図５】本発明の第３実施形態に係るタイムスロットの構成を示した図である。
【発明を実施するための形態】
【００１８】
〔第１実施形態〕
以下に、本発明の第１実施形態に係るタスクおよびリソースのスケジューリング装置及びその方法並びに制御装置について図面を参照して説明する。
本発明のタスクおよびリソースのスケジューリング装置及びその方法は、情報処理装置や制御装置等に対して広く適用可能であるが、以下においては、火力発電システムの制御に利用される制御装置に適用される場合を例示して説明する。
【００１９】
図１は、本実施形態に係るタスクおよびリソースのスケジューリング装置が適用された制御装置１のハードウェア構成を示したブロック図である。図１に示すように、制御装置１は、ＣＰＵ１１、ＣＰＵ１１が実行するプログラム等を記憶するためのＲＯＭ（Read Only Memory）１２、各プログラム実行時のワーク領域として機能するＲＡＭ（Random Access Memory）１３、タイマ１４、および入出力デバイス（Ｉ／Ｏデバイス）１５を主な構成として備えている。これら各部は、バス１８を介して接続されている。
また、入出力デバイス１５を介して、制御装置１には、入力装置２や出力装置３が接続されている。
【００２０】
上記ＲＯＭ１２には、ボイラを制御するための制御アプリケーションや、タービンを制御するためのタービン制御アプリケーションなどの複数の制御アプリケーションが記録されており、これらの制御アプリケーションをＣＰＵ１１がＲＡＭ１３に読み出して実行することにより、ボイラ制御やタービン制御等が実現される。
また、ボイラ制御やタービン制御に必要となる各種データは、入力装置２から入出力デバイス１５を介して入力される。入力された各種データはそれぞれの制御アプリケーションにおいて用いられ、演算結果としての制御指令などが出力装置３へ出力される。
【００２１】
図２は、制御装置１の機能ブロック図を示した図である。図２に示すように、制御装置１は、複数のタスクＫ１〜Ｋｎ、スケジューラ部（タスクおよびリソースのスケジューリング装置）２１、タイマ部２２、ハンドラ部２３、及び入出力部２４を主な構成として備えている。
【００２２】
上記複数のタスクＫ１〜Ｋｎは、それぞれ入力部、演算部、および出力部を備えている。これらタスクは、例えば、上述したボイラを制御するための制御アプリケーションや、タービンを制御するためのタービン制御アプリケーションなどを実行する。
【００２３】
スケジューラ部２１は、オペレーティングシステム（ＯＳ）により実行される機能の一つであり、例えば、図３に示すように、ＣＰＵ時間を所定時間毎に区切ったタイムスロットを分割したタイムスライスＡ１〜ＡｎをＣＰＵ実行時間としてタスクＫ１〜Ｋｎのそれぞれに割り当てることにより、複数のタスクＫ１〜Ｋｎの時分割処理を可能とする。なお、各タイムスライスに対するタスクの割り当てについては、この例に限定されない。例えば、１つのタイムスライスに複数のタスクをグループとして割り当てることも可能である。
本実施形態において、各タイムスロットは１ｍｓｅｃに設定されており、これにより、各タスクのＣＰＵ実行時間の割り当ては１ｍｓｅｃ周期とされている。
【００２４】
タイマ部２２は、スケジューラ部２１によってセットされた時間を計時し、セットされた時間が経過したときに、ハンドラ部２３に対してその旨を通知する。ハンドラ部２３は、タイマ２２から通知を受けると、スケジューラ部２１に対して割り込みを発生させる。
これにより、図３に示したタイムスライスＡ１〜Ａｎのそれぞれの時間が終了したときに、割り込みが発生し、これを受けたスケジューラ部２１によって各タスクの切り替えが周期的に行われる。
入出力部２４は、複数のタスクによりアクセスされる共有資源である。入出力部２４の具体例としては、例えば、ＤＭＡコントローラ、ＳＤメモリカード等のメモリにデータを書き込むインターフェースなどが挙げられる。
【００２５】
次に、上記スケジューラ部２１によって実施されるタスクおよびリソースのスケジューリング方法について図２及び図３を参照して説明する。
まず、図３の時刻ｔ０において、タイムスロット＃ＮのタイムスライスＡ１の開始時期が訪れると、タスクＫ１が実行される。このタスクＫ１の実行中である時刻ｔ１において、共有資源である入出力部２４に対して転送すべきデータが発生した場合、タスクＫ１はスケジューラ部２１に対して入出力部２４へ転送すべきデータが発生したことを通知する。スケジューラ部２１は、この通知を受け付けると、入出力部２４へのアクセス権を取得する（図３の時刻ｔ１参照）。
また、スケジューラ部２１は、転送対象となるデータを取得し、このデータを複数のデータブロックに分割し、該データブロック単位によるデータ転送を開始する。
ここで、上記データブロックは、次に実行されるタスクＫ２の実行周期の遅延（レイテンシ）の許容範囲内の時間で転送可能なデータ量とされる。
【００２６】
続いて、時刻ｔ２において、ハンドラ部２３による割り込みが発生し、タスクＫ１に割り当てられたタイムスライスＡ１が終了した旨がハンドラ部２３からスケジューラ部２１に通知されると、スケジューラ部２１は、タスクＫ１の実行を中断し、タスクＫ２の実行に切り替える。これにより、時刻ｔ２においてタスクＫ２の実行が開始される。
また、スケジューラ部２１は、時刻ｔ２の時点で転送中であったデータブロックの転送処理が終了した時点で（図３の時刻ｔ３参照）、タスクＫ１が保有していたアクセス権を返却する。これにより、他のタスクによる入出力部２４のアクセス権の取得が可能な状態とされる。
【００２７】
また、スケジューラ部２１は、タスクＫ１が占有していたアクセス権を返却することに伴い、未転送となったデータブロックについては、次のタイムスロット＃Ｎ＋１におけるタスクＫ１のＣＰＵ実行時間、すなわち、タイムスライスＡ１まで保留する。
【００２８】
このように、本実施形態においては、スケジューラ部２１は、データブロックの転送が完了する毎に、当該タスクＫ１に割り当てられたタイムスライスＡ１の終了を通知する情報が発生したか否かを判定する。すなわち、ハンドラ部２３からタイムスライスＡ１の終了を通知する割り込みが発生したか否かを判定する。
この結果、ハンドラ部２３による割り込みが発生していない場合には、次に転送すべきデータブロックの転送処理が実行され、他方、ハンドラ部２３による割り込みが発生していた場合には、共有資源のアクセス権が返却されるとともに、未転送のデータブロックについては当該タスクＫ１の次のタイムスライスＡ１まで保留される。
このような処理がスケジュール部２１により実行されることにより、図３に示すようなタスクの切り替えおよびアクセス権の明け渡しが実現される。
【００２９】
次に、タスクＫ２の実行中である図３の時刻ｔ４において、入出力部２４に対して転送すべきデータが発生したことが、タスクＫ２からスケジューラ部２１に通知されると、スケジューラ部２１は、入出力部２４へのアクセス権を取得する（図３の時刻ｔ４参照）。そして、スケジューラ部２１は、転送対象となるデータを取得し、このデータを複数のデータブロックに分割し、該データブロック単位によるデータ転送を開始する。このとき、データブロックは、次に実行されるタスクＫ３の実行周期の遅延の許容範囲内の時間で転送可能なデータ量とされる。
【００３０】
スケジュール部２１は、データブロックの転送完了毎に、当該タスクＫ２に割り当てられたタイムスライスＡ２の終了を通知する情報が発生したか否かを判定する。したがって、例えば、図３の時刻ｔ５においてタイムスライスＡ２の終了を通知する割り込みが発生した場合には、転送中であるデータブロックを転送し終えた時点（時刻ｔ６参照）で、入出力部２４へのアクセス権を返却するとともに、未転送であるデータブロックについては、次のタイムスロット＃Ｎ＋１における当該タスクＫ２のＣＰＵ実行時間、すなわち、タイムスライスＡ２まで保留する。
【００３１】
そして、同様の手順に従って、タスクＫ３以降のタスクが実行され、タスクＫｎのＣＰＵ実行時間であるタイムスライスＡｎが終了すると、新たなタイムスロット＃Ｎ＋１が訪れ、時刻ｔ７において、タスクＫ１が実行される。タスクＫ１では、タイムスロット＃ＮのタイムスライスＡ１で保留されていたデータの転送処理が再開される。すなわち、時刻ｔ７において、タスクＫ１による入出力部２４のアクセス権が取得され、データブロック単位でのデータ転送が再開される。そして、タスクＫ１の実行中である時刻ｔ８において、全てのデータの転送が終了すると、タスクＫ１は入出力部２４のアクセス権を返却し、後続の処理を実行する。
【００３２】
そして、時刻ｔ９においてタイムスライスＡ１の終了を通知する割り込みが発生すると、スケジューラ部２１は実行するタスクをタスクＫ１からタスクＫ２に切り替える。これにより、タスクＫ１と同様に、タスクＫ２においてタイムスロット＃Ｎで保留されていたデータブロックの転送処理が再開される。
【００３３】
以上説明してきたように、本実施形態に係るタスクおよびリソースのスケジューリング装置及びその方法並びに制御装置によれば、実行中のタスクにおいて共有資源へ転送すべきデータが発生した場合には、そのデータが複数のデータブロックに分割され、該データブロック単位で転送処理が行われるとともに、各データブロックの転送完了において、当該タスクに割り当てられたＣＰＵ実行時間（タイムスライス）の終了を通知する割り込みが発生したか否かが判断される。これにより、データ転送中に次のタスクの開始時間が訪れることにより、タスクの切替が行われたとしても、今まで実行されていたタスクの共有資源の占有による次のタスクへの影響を１つのデータブロックの転送時間以下とすることができる。ここで、データブロックは、次に実行されるタスクの遅延許容範囲内で転送可能なデータ量とされているので、共有資源の占有に起因する次のタスクの遅延を許容範囲以下とすることができ、複数のタスクを確定的に周期動作させることが可能となる。更に、各タスクを確定的に周期動作させることにより、アプリケーションの制御周期の遅延も低減することが可能となる。
【００３４】
〔第２実施形態〕
次に、本発明の第２実施形態に係るタスクおよびリソースのスケジューリング装置及びその方法並びに制御装置について図４を参照して説明する。
上述した第１実施形態においては、タスクの切り替えの割り込みが発生したか否かにより、共有資源のアクセス権を返却するか否かを決定していたが、本実施形態は、他のタスクによる同共有資源へのアクセス要求があるか否かにより、共有資源のアクセス権を返却するか否かを決定する。
以下、上記第１実施形態と共有する点については説明を省略し、異なる点について主に説明する。
【００３５】
図４は、本実施形態に係るタスクおよびリソースのスケジューリング装置によって実施されるタスクスケジューリング方法のタイミングチャートを示した図である。
まず、上記第１実施形態と同様に、図４の時刻ｔ０において、タイムスロット＃ＮのタイムスライスＡ１の開始時期が訪れると、タスクＫ１が実行される。続いて、時刻ｔ１において共有資源である入出力部２４に対して転送すべきデータが発生すると、スケジューラ部２１により入出力部２４のアクセス権が取得され、データブロック単位での転送処理が開始される。
【００３６】
続いて、図４の時刻ｔ２において、ハンドラ部２３による割り込みが発生し、タスクＫ１に割り当てられたタイムスライスＡ１が終了した旨がハンドラ部２３からスケジューラ部２１に通知されると、スケジューラ部２１は、タスクＫ１の実行を中断し、タスクＫ２の実行に切り替える。これにより、図４の時刻ｔ２においてタスクＫ２の実行が開始される。一方、このようなタスクの切り替えが行われても、タスクＫ２から入出力部２４へのアクセス要求が発生しない限り、タスクＫ１が入出力部２４のアクセス権を保有する。この結果、タスクＫ１で発生したデータの転送処理が継続して実行される。
【００３７】
続いて、図４の時刻ｔ３において、タスクＫ２からの入出力部２４へのアクセス要求が発生すると、スケジュール部２１は、現在転送中のデータブロックの転送が終了した時点（図４の時刻ｔ４参照）で、タスクＫ１が保有していたアクセス権を返却し、タスクＫ２にアクセス権を渡す。また、タスクＫ１による残りの転送データについては、次のタイムスロット＃Ｎ＋１におけるタスクＫ１のＣＰＵ実行時間、すなわち、タイムスライスＡ１まで保留する。
【００３８】
すなわち、本実施形態によれば、データブロックの転送が完了する毎に、他のタスクによる入出力部２４へのアクセス要求が発生したか否かが判定され、アクセス要求が発生していない場合には、入出力部２４へのデータ転送処理が継続して行われ、他のタスクによるアクセス要求が発生していた場合には、入出力部２４へのアクセス権を返却して、アクセス要求を行った他のタスクにアクセス権を渡すという処理がスケジューラ部２１にて行われる。
そして、このようにしてアクセス権を取得したタスクＫ２では、入出力部２４へのデータブロック単位のデータ転送が同様に開始される。
【００３９】
以上、説明したように、本実施形態に係るタスクおよびリソースのスケジューリング装置及びその方法並びに制御装置によれば、実行中のタスクにおいて共有資源へ転送すべきデータが発生した場合に、そのデータが複数のデータブロックに分割され、該データブロック単位で転送処理が行われるとともに、該データブロックの転送完了毎に、他のタスクによる共有資源へのアクセス要求が発生されたか否かが判断される。これにより、他のタスクによる共有資源へのアクセス要求がない限りは、現在アクセス権を占有しているタスクにおいて発生したデータ転送を継続して行うことが可能となる。この結果、共有資源を必要とするタスクに効率的に共有資源を利用させることが可能となる。
【００４０】
更に、本実施形態によれば、他のタスクによるアクセス要求が発生した場合には、この他のタスクに対して速やかにアクセス権を明け渡すことが可能となる。これにより、タスクの実行周期の遅延時間を低減させることができる。この場合において、上記データブロックは、全てのタスクＫ１〜Ｋｎの実行周期の遅延の許容範囲のうち、最も短い許容範囲内で転送可能なデータ量とされているので、共有資源の占有に起因する各タスクの遅延を許容範囲以下とすることができる。
【００４１】
〔第３実施形態〕
次に、本発明の第３実施形態に係るタスクおよびリソースのスケジューリング装置及びその方法並びに制御装置について図５を参照して説明する。
上述した第１実施形態または第２実施形態においては、タイムスロットをＮ分割してＮ個のタイムスライスＡ１〜Ａｎを生成し、各タイムスライスＡ１〜Ａｎを各タスクＫ１〜Ｋｎにそれぞれ割り当てていたが、本実施形態では、図５に示すように、タスクの割り当てが行われない空き時間Ｇが各タイムスロットに含まれている点で上述した各実施形態と異なる。
【００４２】
例えば、本実施形態においては、タスクＫ１〜Ｋｎに割り当てる各タイムスライスの時間が予め定められており、タイムスロットの周期ΔＴはタスクＫ１〜Ｋｎに割り当てられる各タイムスライスＡ１〜Ａｎの合計時間よりも長めに設定されている。これにより、各タイムスロットには必ずタスクが割り当てられない時間帯Ｇが存在することとなる。また、このとき、タスクが割り当てられない時間帯Ｇは、上述した１つのデータブロックを転送する時間に比べて十分長い時間となるように設定されている。
【００４３】
ここで、タスクが割り当てられない時間帯Ｇは、以下のように設定される。
例えば、各タイムスロットにおいて、全てのタスクＫ１〜Ｋｎに割り当てられたタイムスライスＡ１〜Ａｎが終了した時点で、次のタイムスロットが開始されるまでの時間ΔＴｇがスケジューラ部２１で算出され、この時間ΔＴｇが時間帯Ｇとしてタイマ部２２にセットされる。これにより、時間ΔＴｇが経過した時点で、タイマ部２２からハンドラ部２３にその旨が通知され、ハンドラ部２３による割り込み処理が発生することにより、次のタイムスロットが開始される。
【００４４】
ここで、上記時間帯Ｇは、各タイムスロットにおいて全てのタスクが終了した後に設定されるので、各タスクの実行遅延の状態に応じて調整されることとなる。すなわち、そのタイムスロットにおけるタスクの実行遅延量が大きければ時間帯Ｇは短く調整され、実行遅延量が小さければ時間帯Ｇは長く調整される。
【００４５】
このように、各タイムスロットにタスクが割り当てられない時間帯Ｇを含ませることで、各タスクの実行遅延を該時間帯Ｇで吸収することができ、各タイムスロットを確実に一定周期とすることができる。
【符号の説明】
【００４６】
１  制御装置
２  入力装置
３  出力装置
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  タイマ
１５  入出力デバイス
２１  スケジューラ部
２２  タイマ部
２３  ハンドラ部
２４  入出力部
Ｋ１〜Ｋｎ  タスク
Ａ１〜Ａｎ  タイムスライス
【図１】
0005726006.tif 000002
【図２】
0005726006.tif 000003
【図３】
0005726006.tif 000004
【図４】
0005726006.tif 000005
【図５】
0005726006.tif 000006