JP2005190238A - リアルタイム制御方式 - Google Patents
リアルタイム制御方式 Download PDFInfo
- Publication number
- JP2005190238A JP2005190238A JP2003431841A JP2003431841A JP2005190238A JP 2005190238 A JP2005190238 A JP 2005190238A JP 2003431841 A JP2003431841 A JP 2003431841A JP 2003431841 A JP2003431841 A JP 2003431841A JP 2005190238 A JP2005190238 A JP 2005190238A
- Authority
- JP
- Japan
- Prior art keywords
- real
- time
- task
- time task
- processing
- 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.)
- Pending
Links
Images
Abstract
【課題】 リアルタイムタスクが待たされることなく非リアルタイムタスクをプリエンプトできるリアルタイム制御方式を提供することを目的とする。
【解決手段】 リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおいて、非リアルタイムタスクを実行中にリアルタイムタスク起床割込みが入るとこれを処理し(ステップ101)、続いて非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定し(ステップ102)、プリエンプト禁止区間を実行中と判定すると、非リアルタイムタスクがプリエンプト禁止区間で行った処理を破棄し、リアルタイムタスクにプリエンプトさせる(ステップ104)。プリエンプトされた非リアルタイムタスクは、ステップ105にて再び実行権を得たときは、ステップ107にてプリエンプト禁止区間の先頭から処理をやり直す。
【選択図】 図1
【解決手段】 リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおいて、非リアルタイムタスクを実行中にリアルタイムタスク起床割込みが入るとこれを処理し(ステップ101)、続いて非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定し(ステップ102)、プリエンプト禁止区間を実行中と判定すると、非リアルタイムタスクがプリエンプト禁止区間で行った処理を破棄し、リアルタイムタスクにプリエンプトさせる(ステップ104)。プリエンプトされた非リアルタイムタスクは、ステップ105にて再び実行権を得たときは、ステップ107にてプリエンプト禁止区間の先頭から処理をやり直す。
【選択図】 図1
Description
本発明は、組込みシステムや機器に内蔵されるオペレーティングシステムのリアルタイム制御方式に関するものである。
計算機のOS(オペレーティングシステム)は、パソコンなどのリアルタイム性を重視していないOS(以下汎用OSと呼ぶ)と自動車や家電製品などの組込みシステムに搭載されるリアルタイム性を重視しているリアルタイムOSに大別される。しかし、組込みシステムの分野においてもソフトウェア規模が増大し、Linuxなどの汎用OSがそのソフトウェア資産を利用するために、組込みシステムに使われつつある。このような組込みシステムにおいては、リアルタイム性を必要としない処理とリアルタイム性を必要とする処理が混在する。そのため、リアルタイム性を必要とする処理がリアルタイム性を必要としない処理によって、遅延させられることの影響をなるべく少なくすることが必要である。
従来の汎用OSでは、長い割込み禁止区間が存在したり、タスクがシステムコール実行中に他のタスクがプリエンプトすることを禁止したりしている。このようなOSでは、リアルタイム処理開始が、割込み禁止区間を終了するまで待たされたり、システムコール処理終了まで待たされたりする。長い割込み禁止区間に対応するには例えば、割込み禁止区間であってもリアルタイム処理の割込みは受け付けるようにする方法がある(例えば、特許文献1参照)。また、タスクのプリエンプト禁止区間を縮小するために、システムコール実行中でも他のタスクがプリエンプトできるようにしたプリエンプトカーネルがある(例えば、非特許文献1参照)。
特開平11−96022号公報
進藤智則、伊藤大貴 "次世代Linuxは我らの手で" 日経エレクトロニクス2003.6.23 P.118-P.119
しかしながら、上述のプリエンプトカーネルでは、システムコール実行中でも他のタスクがプリエンプトできるものの、依然プリエンプトできないプリエンプト禁止区間は存在する。プリエンプト禁止区間が長ければ、リアルタイムタスクがプリエンプトできずに、リアルタイムタスクは要求される時間内に処理を完了できないという問題が生じることがある。
そこで、本発明は、リアルタイムタスクが待たされることなく非リアルタイムタスクをプリエンプトできるリアルタイム制御方式を提供することを目的としたものである。
前述した目的を達成するために、本発明のうち請求項1に記載のリアルタイム制御方式は、リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定するステップと、プリエンプト禁止区間を実行中と判定すると、プリエンプト禁止区間でリアルタイムタスクによってプリエンプトされたことを記録するフラグをセットするステップと、リアルタイムタスクが、実行をプリエンプトするステップと、前記リアルタイムタスクが終了すると、前記プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、前記フラグがセットされているか否かを判定するステップと、前記フラグがセットされていると判定すると、前記非リアルタイムタスクの処理を前記プリエンプト禁止区間の先頭から再開するステップと、前記フラグがセットされていない判定すると、前記非リアルタイムタスクの処理をプリエンプトされた箇所から再開するステップとを備えたことを特徴とする。
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定するステップと、プリエンプト禁止区間を実行中と判定すると、プリエンプト禁止区間でリアルタイムタスクによってプリエンプトされたことを記録するフラグをセットするステップと、リアルタイムタスクが、実行をプリエンプトするステップと、前記リアルタイムタスクが終了すると、前記プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、前記フラグがセットされているか否かを判定するステップと、前記フラグがセットされていると判定すると、前記非リアルタイムタスクの処理を前記プリエンプト禁止区間の先頭から再開するステップと、前記フラグがセットされていない判定すると、前記非リアルタイムタスクの処理をプリエンプトされた箇所から再開するステップとを備えたことを特徴とする。
また請求項2記載のリアルタイム制御方式は、リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
プリエンプト禁止区間処理として、実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、実行タスクが非リアルタイムタスクと判定すると、プリエンプト禁止区間処理において保護しているリソース状態を保存するステップを備え、
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定するステップと、プリエンプト禁止区間を実行中と判定すると、プリエンプト禁止区間でリアルタイムタスクによってプリエンプトされたことを記録するフラグをセットし、前記保存しているリソース状態を復元するステップと、リアルタイムタスクが、実行をプリエンプトするステップと、前記リアルタイムタスクが終了すると、前記プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、前記フラグがセットされているか否かを判定するステップと、前記フラグがセットされていると判定すると、前記非リアルタイムタスクの処理を前記プリエンプト禁止区間の先頭から再開するステップと、前記フラグがセットされていないと判定すると、前記非リアルタイムタスクの処理をプリエンプトされた箇所から再開するステップとを備えたことを特徴とする。
プリエンプト禁止区間処理として、実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、実行タスクが非リアルタイムタスクと判定すると、プリエンプト禁止区間処理において保護しているリソース状態を保存するステップを備え、
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定するステップと、プリエンプト禁止区間を実行中と判定すると、プリエンプト禁止区間でリアルタイムタスクによってプリエンプトされたことを記録するフラグをセットし、前記保存しているリソース状態を復元するステップと、リアルタイムタスクが、実行をプリエンプトするステップと、前記リアルタイムタスクが終了すると、前記プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、前記フラグがセットされているか否かを判定するステップと、前記フラグがセットされていると判定すると、前記非リアルタイムタスクの処理を前記プリエンプト禁止区間の先頭から再開するステップと、前記フラグがセットされていないと判定すると、前記非リアルタイムタスクの処理をプリエンプトされた箇所から再開するステップとを備えたことを特徴とする。
さらに請求項3記載のリアルタイム制御方式は、請求項1または請求項2記載のリアルタイム制御方式であって、プリエンプト禁止区間の処理として、実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、実行タスクが非リアルタイムタスクと判定すると、プリエンプト禁止区間の処理が残り少なくなったか否かを判定するステップと、プリエンプト禁止区間の処理が残り少なくなったと判定すると、リアルタイムタスクのプリエンプトを禁止にするステップを備えたことを特徴とする。
また請求項4記載のリアルタイム制御方式は、リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
プリエンプト禁止区間処理として、実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、実行タスクがリアルタイムタスクと判定すると、第1のリソースを割り当てるステップと、実行タスクが非リアルタイムタスクと判定すると、第2のリソースを割り当てるステップを備え、
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、リアルタイムタスクが、実行をプリエンプトするステップと、前記リアルタイムタスクが終了すると、プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、前記非リアルタイムタスクがプリエンプトされた箇所から、前記割り当てられた第2のリソースを使用して実行を再開するステップとを備えたことを特徴とする。
プリエンプト禁止区間処理として、実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、実行タスクがリアルタイムタスクと判定すると、第1のリソースを割り当てるステップと、実行タスクが非リアルタイムタスクと判定すると、第2のリソースを割り当てるステップを備え、
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、リアルタイムタスクが、実行をプリエンプトするステップと、前記リアルタイムタスクが終了すると、プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、前記非リアルタイムタスクがプリエンプトされた箇所から、前記割り当てられた第2のリソースを使用して実行を再開するステップとを備えたことを特徴とする。
さらに請求項5記載のリアルタイム制御方式は、リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
実行可能なタスクを管理するランキューの処理で、タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、タスクがリアルタイムタスクと判定すると、第1のランキューを使用するステップと、タスクが非リアルタイムタスクと判定すると、第2のランキューを使用するステップと、第2のランキューを使用中に、リアルタイムタスク起床要求割込みを処理するステップと、リアルタイムタスクが、実行をプリエンプトするステップと、前記リアルタイムタスクが終了したら、プリエンプトされた処理を再開するステップとを備えたことを特徴とする。
実行可能なタスクを管理するランキューの処理で、タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、タスクがリアルタイムタスクと判定すると、第1のランキューを使用するステップと、タスクが非リアルタイムタスクと判定すると、第2のランキューを使用するステップと、第2のランキューを使用中に、リアルタイムタスク起床要求割込みを処理するステップと、リアルタイムタスクが、実行をプリエンプトするステップと、前記リアルタイムタスクが終了したら、プリエンプトされた処理を再開するステップとを備えたことを特徴とする。
本発明のリアルタイム制御方式は、上記ステップを有し、従来のプリエンプトカーネルにおいてプリエンプトが禁止された区間においてもリアルタイムタスクはプリエンプトできるので、リアルタイムタスクは他の非リアルタイムタスクの処理のために待たされることがなく、要求される時間内に処理を完了させることができる。
以下、本発明の実施の形態を、図面を参照しながら説明する。
本発明のリアルタイム制御方式は、リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステム、たとえばデジタルTV,DVDプレーヤーなど映像処理や音声処理などリアルタイム性を必要とするリアルタイムタスクと、ユーザからの指示を受付けるユーザインターフェイス処理などリアルタイム性を必要としない非リアルタイムタスクが混在する家電製品等に使用されるコンピュータの制御方式であり、このようなシステムにおけるリアルタイム制御方式について以下、説明する。
[実施の形態1]
本発明の実施の形態1について、図1と図2を参照しながら説明する。図1は、非リアルタイムタスクを実行中にリアルタイムタスク起床要求割込みが発生した場合の処理手順を示すフローチャートである。
本発明のリアルタイム制御方式は、リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステム、たとえばデジタルTV,DVDプレーヤーなど映像処理や音声処理などリアルタイム性を必要とするリアルタイムタスクと、ユーザからの指示を受付けるユーザインターフェイス処理などリアルタイム性を必要としない非リアルタイムタスクが混在する家電製品等に使用されるコンピュータの制御方式であり、このようなシステムにおけるリアルタイム制御方式について以下、説明する。
[実施の形態1]
本発明の実施の形態1について、図1と図2を参照しながら説明する。図1は、非リアルタイムタスクを実行中にリアルタイムタスク起床要求割込みが発生した場合の処理手順を示すフローチャートである。
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みが発生するとこのリアルタイムタスク起床要求割込みを処理し(ステップ101)、実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定する(ステップ102)。プリエンプト禁止区間は、OSのリソースで排他制御が必要なものを保護するために設定されたもので、この区間を実行中は、従来実行タスクが他のタスクにプリエンプトされない。
実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中と判定すると、フラグをセットする(ステップ103)。このフラグはプリエンプト禁止区間でリアルタイムタスクによってプリエンプトされたことを記録しておき、あとで述べるステップ106で参照するためのものである。ステップ102において、プリエンプト禁止区間でないと判定すると、このフラグはセットしない。
ステップ103の終了後、または上記ステップ102において実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中ではないと判定するとき、リアルタイムタスクが、実行をプリエンプトする(ステップ104)。リアルタイムタスクの実行中は、プリエンプトされた非リアルタイムタスクの実行は中断される。
リアルタイムタスクの実行が終了すると、プリエンプトされた非リアルタイムタスクが実行権を再取得し(ステップ105)。フラグがセットされているかどうか否かを判定する(ステップ106)。
フラグがセットされていると判定すると、プリエンプト禁止区間の中でリアルタイムタスクにプリエンプトされたことになるので、非リアルタイムタスクの処理をプリエンプト禁止区間の先頭から再開する(ステップ107)。
ステップ106において、フラグがセットされていないと判定すると、非リアルタイムタスクの処理をプリエンプトされた箇所から再開する(ステップ108)。
図2は、本実施の形態1の効果を示すために、リアルタイムタスク起床要求が発生したときの、従来のOSと本実施の形態1におけるそれぞれのタスクスイッチを示した図である。図2(a)は従来のOSのタスクスイッチを、図2(b)は本実施の形態1を示している。
図2は、本実施の形態1の効果を示すために、リアルタイムタスク起床要求が発生したときの、従来のOSと本実施の形態1におけるそれぞれのタスクスイッチを示した図である。図2(a)は従来のOSのタスクスイッチを、図2(b)は本実施の形態1を示している。
図2(a)で示すように従来のOSでは、プリエンプト禁止区間でリアルタイムタスク起床要求が発生したときに、リアルタイムタスクの起床は非リアルタイムタスクがプリエンプト禁止区間の処理を終了するまで待たされる。
本実施の形態1では、図2(b)で示すようにリアルタイムタスク起床要求があれば直ちにリアルタイムタスクが起床される。このように、非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みが発生し、このとき非リアルタイムタスクがプリエンプト禁止区間を実行中と判定されると、非リアルタイムタスクがプリエンプト禁止区間で行った処理は破棄され、リアルタイムタスクにプリエンプトさせ、プリエンプトされた非リアルタイムタスクは、ステップ105にて再び実行権を得たときは、ステップ107にてプリエンプト禁止区間の先頭から処理をやり直す。
以上のように、非リアルタイムタスクがプリエンプト禁止区間を実行中であっても、リアルタイムタスクは、非リアルタイムタスクがプリエンプト禁止区間を終了するまで待たされるということはなく、起床要求があればすぐにプリエンプトすることができ(リアルタイムタスクはいかなる場合でも非リアルタイムタスクの実行をプリエンプトすることができ)、リアルタイム性を確保することができる。
また非リアルタイムタスクはフラグを確認すると、プリエンプト禁止区間の先頭から処理を再開することにより、プリエンプト禁止区間開始前のリソース状態で実行されることから、リアルタイムタスクによりリソースが書き換えられている場合でも、動作を保証することができる。
[実施の形態2]
本発明の実施の形態2について、図3を参照しながら説明する。
[実施の形態2]
本発明の実施の形態2について、図3を参照しながら説明する。
図3(a)はタスクがプリエンプト禁止区間で実行する処理を、図3(b)は非リアルタイムタスク実行中にリアルタイムタスク起床要求割込みが発生した場合の処理手順を示す。
図3(a)に示すようにプリエンプト禁止区間処理として、プリエンプト禁止区間の入り口で、実行タスクが非リアルタイムタスクか否かを判定し(ステップ301)、実行タスクが非リアルタイムタスクと判定すると、プリエンプト禁止区間で保護しているリソースの状態を保存する(ステップ302)。
また図3(b)に示すように、非リアルタイムタスクを実行中にリアルタイムタスク要求割込みが発生するとこのリアルタイムタスク起床要求割込みを処理し(ステップ303)、非リアルタイムタスクがプリエンプト禁止区間を実行中が否かを判定し(ステップ304)、プリエンプト禁止区間を実行中と判定すると、フラグをセットし(ステップ305)、ステップ302で保存しているリソース状態を復元する(ステップ306)。このフラグはプリエンプト禁止区間でリアルタイムタスクによってプリエンプトされたことを記録するフラグである。ステップ304において、プリエンプト禁止区間を実行中ではないと判定すると、何もしない。
その後、リアルタイムタスクが、実行をプリエンプトする(ステップ307)。リアルタイムタスクの実行中は、プリエンプトされた非リアルタイムタスクの実行は中断される。リアルタイムタスクの実行が終了すると、プリエンプトされた非リアルタイムタスクは実行権を再取得(ステップ308)し、実行を再開する。
次にフラグがセットされているかどうかを判定し(ステップ309)、フラグがセットされていると判定すると、プリエンプト禁止区間の中でリアルタイムタスクにプリエンプトされたことになるので、非リアルタイムタスクの処理をプリエンプト禁止区間の先頭から再開する(ステップ310)。フラグがセットされていないと判定すると、非リアルタイムタスクの処理をプリエンプトされた場所から再開する(ステップ311)。
この実施の形態2と上記実施の形態1との相違は、ステップ302でプリエンプト禁止区間開始時のリソース状態を保存していることと、ステップ306でリソース状態を復元していることである。リソースをプリエンプト禁止区間中に非リアルタイムタスクによって書き換える場合、書き換え途中でリアルタイムタスクがプリエンプトして同じリソースをアクセスした場合に動作が保証できない。そのために、リアルタイムタスクがアクセスしても動作に問題が生じないようにするために、ステップ306でプリエンプト禁止区間の開始時のリソース状態に復元している。非リアルタイムタスクがプリエンプト禁止区間を終了した後に、リアルタイムタスクの起床要求があった場合は、保存したリソース状態を復元する必要はない。
以上のように、リアルタイムタスクはいかなる場合でも非リアルタイムタスクの実行をプリエンプトすることができるとともに、非リアルタイムタスクがプリエンプト禁止区間で保護しているリソースを変更したとしても、プリエンプト禁止区間中にプリエンプトしたリアルタイムタスクはシステムに支障をきたすことなく、そのリソースを使用することができ、動作を保証することができる。
なお、非リアルタイムタスクがプリエンプト禁止区間でリソース状態を変更せずに参照するだけであれば、実施の形態1でよい。
[実施の形態3]
本発明の実施の形態3について、図4を参照しながら説明する。
[実施の形態3]
本発明の実施の形態3について、図4を参照しながら説明する。
図4(a)は、リアルタイムタスク起床要求がない場合の非リアルタイムタスクの実行を示している。太線はプリエンプト禁止区間を示す。図4(b)は実施の形態1または2において、処理内容の同じ非リアルタイムタスクで、プリエンプト禁止区間でリアルタイムタスク起床要求が発生した場合の実行の様子を示す。プリエンプト禁止区間の処理が残りわずかであっても、リアルタイムタスク起床要求があればただちにリアルタイムタスクがプリエンプトし、非リアルタイムタスクは実行権を再取得後、最初から処理をやり直している。
図4(c)は実施の形態3において、処理内容の同じ非リアルタイムタスクで、プリエンプト禁止区間でリアルタイムタスク起床要求が発生した場合の実行の様子を示す。プリエンプト禁止区間中で、プリエンプト禁止区間の処理が残り少なくなった箇所に、リアルタイムタスクへのプリエンプトを禁止する手段を設けている。具体的にはプリエンプト禁止のフラグをセットすることで対応する。
このプリエンプト禁止区間の処理途中で、リアルタイムタスクのプリエンプトを禁止にするプリエンプト禁止フラグのセットのステップは、たとえば図5に示すように、上記実施の形態2のステップ302に続いて実行される。
すなわち、プリエンプト禁止区間の処理として、ステップ301において実行タスクを非リアルタイムタスクと判定し、ステップ302においてプリエンプト禁止区間で保護しているリソースの状態を保存すると、プリエンプト禁止区間の処理が残り少なくなったか否かを判定し(ステップ401)、プリエンプト禁止区間の処理が残り少なくはないと判定すると終了し、残り少なくなったと判定すると、リアルタイムタスクのプリエンプトを禁止にするプリエンプト禁止フラグをセットする(ステップ402)。
このプリエンプト禁止フラグがセットされたあとでは、リアルタイムタスク起床要求が発生してもプリエンプト禁止区間の処理が終了するまで、リアルタイムタスクのプリエンプトを待たせる。すなわち、ステップ304において非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定し、プリエンプト禁止区間と判定すると、プリエンプト禁止フラグがセットされているか否かを判定し(ステップ403)、プリエンプト禁止フラグがセットされている判定すると、非リアルタイムタスクの処理をそのまま実行し(ステップ404)、終了する。
プリエンプト禁止区間が残りわずかな場合は、実施の形態2におけるリソース状態の復元を行う方が時間を要したり、待ち時間がリアルタイムタスクの処理に影響を及ぼさなかったりすることがある。この場合においては、非リアルタイムタスクにプリエンプト禁止区間の最後まで実行させたほうが、プリエンプト禁止区間全体の処理をやり直す必要がなくなり、システム全体の性能を向上させることができる。
以上のように、非リアルタイムタスクがプリエンプト禁止区間実行中で、プリエンプト禁止区間の処理が残り少なくなっている状態で、リアルタイムタスク起床要求が発生した場合、プリエンプト禁止とし、非リアルタイムタスクにプリエンプト禁止区間の最後まで実行させることにより、システム全体の性能を向上させることができる。
なお、実施の形態1では、リソース状態の保存処理を実行しないので、プリエンプト禁止区間の処理として、図5においてステップ302が削除されたフローチャートが実行され、図1のフローチャートでは、ステップ102とステップ103との間で、上記ステップ403とステップ404が実行される。
[実施の形態4]
本発明の実施の形態4について、図6を参照しながら説明する。
[実施の形態4]
本発明の実施の形態4について、図6を参照しながら説明する。
図6(a)はタスクがプリエンプト禁止区間で実行する処理を、図6(b)は非リアルタイムタスク実行中にリアルタイムタスク起床要求割込みが発生した場合の処理手順を示す。
図6(a)に示すようにプリエンプト禁止区間の処理として、プリエンプト禁止区間の入り口では、実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定し(ステップ501)、実行タスクがリアルタイムタスクと判定すると、第1のリソースを割当て(ステップ502)、実行タスクが非リアルタイムタスクと判定すると、第2のリソースを割り当てる(ステップ503)。
また図6(b)に示すように、非リアルタイムタスクを実行中にリアルタイムタスクの起床要求割込みが発生するとこのリアルタイムタスク起床要求割込みを処理し(ステップ504)、リアルタイムタスクが、実行をプリエンプトする(ステップ505)。リアルタイムタスクの実行中は、プリエンプトされた非リアルタイムタスクの実行は中断される。
リアルタイムタスクの実行が終了すると、非リアルタイムタスクは実行権を再取得し(ステップ506)、プリエンプトされた箇所から、割り当てられた第2のリソースを使用して処理を再開する(ステップ507)。
このように、リアルタイムタスクはいかなる場合でも非リアルタイムタスクの実行をプリエンプトすることができるとともに、プリエンプト禁止区間で保護するリソースを二重化してリアルタイムタスク用と非リアルタイムタスク用に分けて割り当てることにより、非リアルタイムタスクがプリエンプト禁止区間を実行中にリアルタイムタスクが実行をプリエンプトしてもリソースの競合を避けることができ、リアルタイムタスクおよび非リアルタイムタスクの動作を保証することができる。
[実施の形態5]
本発明の実施の形態5について、図7を参照しながら説明する。
[実施の形態5]
本発明の実施の形態5について、図7を参照しながら説明する。
図7(a)は実行可能なタスクを管理するランキューの処理を、図7(b)は第2のランキュー処理中にリアルタイムタスク起床要求割込みが発生した場合の処理手順を示す。
図7(a)に示すように、ランキュー処理で、タスクがリアルタイムタスクか非リアルタイムタスクかを判定し(ステップ601)、タスクがリアルタイムタスクと判定すると、第1のランキューを使用し(ステップ602)、タスクが非リアルタイムタスクと判定すると、第2のランキューを使用する(ステップ603)。
図7(a)に示すように、ランキュー処理で、タスクがリアルタイムタスクか非リアルタイムタスクかを判定し(ステップ601)、タスクがリアルタイムタスクと判定すると、第1のランキューを使用し(ステップ602)、タスクが非リアルタイムタスクと判定すると、第2のランキューを使用する(ステップ603)。
図7(b)に示すように、第2のランキュー処理中に、リアルタイムタスクの起床要求割込みが発生するとこのリアルタイムタスク起床要求割込みを処理し(ステップ604)、リアルタイムタスクが、実行をプリエンプトする(ステップ605)。リアルタイムタスクの実行中は、第2のランキューの実行は中断される。リアルタイムタスクの実行が終了すると、プリエンプトされた箇所から第2のランキュー処理を再開する(ステップ606)。
このように、ランキューをリアルタイムタスク用と非リアルタイムタスク用に分けることで、非リアルタイムタスクが第2のランキューを実行中にリアルタイムタスクが実行をプリエンプトしてもシステムに支障が生じることを避けることができる。
本発明にかかるリアルタイム制御方式は、リアルタイムタスクはいかなる場合でも非リアルタイムタスクの実行をプリエンプトすることができ、リアルタイム処理が必要な家電製品の制御と、ユーザインタフェース処理などを行う非リアルタイム処理が混在するネットワーク家電向けのシステムとして有用である。
Claims (5)
- リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、
実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定するステップと、
プリエンプト禁止区間を実行中と判定すると、プリエンプト禁止区間でリアルタイムタスクによってプリエンプトされたことを記録するフラグをセットするステップと、
リアルタイムタスクが、実行をプリエンプトするステップと、
前記リアルタイムタスクが終了すると、前記プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、
前記フラグがセットされているか否かを判定するステップと、
前記フラグがセットされていると判定すると、前記非リアルタイムタスクの処理を前記プリエンプト禁止区間の先頭から再開するステップと、
前記フラグがセットされていない判定すると、前記非リアルタイムタスクの処理をプリエンプトされた箇所から再開するステップと
を備えたことを特徴とするリアルタイム制御方式。 - リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
プリエンプト禁止区間処理として、
実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、
実行タスクが非リアルタイムタスクと判定すると、プリエンプト禁止区間処理において保護しているリソース状態を保存するステップ
を備え、
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、
実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定するステップと、
プリエンプト禁止区間を実行中と判定すると、プリエンプト禁止区間でリアルタイムタスクによってプリエンプトされたことを記録するフラグをセットし、前記保存しているリソース状態を復元するステップと、
リアルタイムタスクが、実行をプリエンプトするステップと、
前記リアルタイムタスクが終了すると、前記プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、
前記フラグがセットされているか否かを判定するステップと、
前記フラグがセットされていると判定すると、前記非リアルタイムタスクの処理を前記プリエンプト禁止区間の先頭から再開するステップと、
前記フラグがセットされていないと判定すると、前記非リアルタイムタスクの処理をプリエンプトされた箇所から再開するステップと
を備えたことを特徴とするリアルタイム制御方式。 - プリエンプト禁止区間の処理として、
実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、
実行タスクが非リアルタイムタスクと判定すると、プリエンプト禁止区間の処理が残り少なくなったか否かを判定するステップと、
プリエンプト禁止区間の処理が残り少なくなったと判定すると、リアルタイムタスクのプリエンプトを禁止にするステップ
を備えたことを特徴とする請求項1または請求項2に記載のリアルタイム制御方式。 - リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
プリエンプト禁止区間処理として、
実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、
実行タスクがリアルタイムタスクと判定すると、第1のリソースを割り当てるステップと、
実行タスクが非リアルタイムタスクと判定すると、第2のリソースを割り当てるステップ
を備え、
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、
リアルタイムタスクが、実行をプリエンプトするステップと、
前記リアルタイムタスクが終了すると、プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、
前記非リアルタイムタスクがプリエンプトされた箇所から、前記割り当てられた第2のリソースを使用して実行を再開するステップと
を備えたことを特徴とするリアルタイム制御方式。 - リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
実行可能なタスクを管理するランキューの処理で、タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、
タスクがリアルタイムタスクと判定すると、第1のランキューを使用するステップと、
タスクが非リアルタイムタスクと判定すると、第2のランキューを使用するステップと、
第2のランキューを使用中に、リアルタイムタスク起床要求割込みを処理するステップと、
リアルタイムタスクが、実行をプリエンプトするステップと、
前記リアルタイムタスクが終了したら、プリエンプトされた処理を再開するステップと
を備えたことを特徴とするリアルタイム制御方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003431841A JP2005190238A (ja) | 2003-12-26 | 2003-12-26 | リアルタイム制御方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003431841A JP2005190238A (ja) | 2003-12-26 | 2003-12-26 | リアルタイム制御方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005190238A true JP2005190238A (ja) | 2005-07-14 |
Family
ID=34789725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003431841A Pending JP2005190238A (ja) | 2003-12-26 | 2003-12-26 | リアルタイム制御方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005190238A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008123503A (ja) * | 2006-11-14 | 2008-05-29 | Samsung Electronics Co Ltd | 不揮発性メモリで演算処理を制御する装置およびその方法 |
US20100088706A1 (en) * | 2008-10-07 | 2010-04-08 | Futurewei Technologies, Inc. | User Tolerance Based Scheduling Method for Aperiodic Real-Time Tasks |
JP2017033208A (ja) * | 2015-07-31 | 2017-02-09 | 株式会社日立超エル・エス・アイ・システムズ | 通常部の故障が***へ伝播することを防止するapi及びその処理部 |
WO2019187719A1 (ja) * | 2018-03-28 | 2019-10-03 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにプログラム |
-
2003
- 2003-12-26 JP JP2003431841A patent/JP2005190238A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008123503A (ja) * | 2006-11-14 | 2008-05-29 | Samsung Electronics Co Ltd | 不揮発性メモリで演算処理を制御する装置およびその方法 |
US20100088706A1 (en) * | 2008-10-07 | 2010-04-08 | Futurewei Technologies, Inc. | User Tolerance Based Scheduling Method for Aperiodic Real-Time Tasks |
JP2017033208A (ja) * | 2015-07-31 | 2017-02-09 | 株式会社日立超エル・エス・アイ・システムズ | 通常部の故障が***へ伝播することを防止するapi及びその処理部 |
WO2019187719A1 (ja) * | 2018-03-28 | 2019-10-03 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4170227B2 (ja) | 多重処理環境における処理の実行 | |
TWI512619B (zh) | 用於執行緒排程的方法以及系統 | |
JP4580845B2 (ja) | タスク実行装置 | |
JP2009294712A (ja) | 優先度制御装置及び優先度制御方法 | |
Lakshmanan et al. | Scheduling self-suspending real-time tasks with rate-monotonic priorities | |
JP2008047112A (ja) | エラーハンドリング及びファームウェア更新を調停するための方法及びシステム | |
JP2004362100A (ja) | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム | |
KR100959548B1 (ko) | 인터럽트 스케줄링 방법 | |
US20080295104A1 (en) | Realtime Processing Software Control Device and Method | |
JP2008108075A (ja) | タスク切替え制御方法及びコンピュータシステム | |
JP2005190238A (ja) | リアルタイム制御方式 | |
US20020124043A1 (en) | Method of and system for withdrawing budget from a blocking task | |
US8555285B2 (en) | Executing a general-purpose operating system as a task under the control of a real-time operating system | |
JP6861275B2 (ja) | 車両制御装置 | |
WO2015184902A1 (zh) | 一种智能分屏的并发处理方法及相应的智能终端 | |
JP2005149312A (ja) | タスク管理システム | |
KR101513505B1 (ko) | 프로세서 및 인터럽트 처리 방법 | |
JP2001236236A (ja) | タスク制御装置およびそのタスクスケジューリング方法 | |
CN110825501A (zh) | 处理器内核优化方法、装置和存储介质 | |
JP2597283B2 (ja) | 割込みにおけるスケジューリング方式 | |
JP2008225641A (ja) | コンピュータシステム、割り込み制御方法及びプログラム | |
KR100558769B1 (ko) | 운영 체제의 실시간성 향상을 위한 임계영역 진입 지연 방법 | |
JP4984153B2 (ja) | 実時間タスクにおけるブロック回避方法 | |
JP3043748B1 (ja) | タスクスケジュ―リング方法及び装置 | |
JP4057769B2 (ja) | 割り込み管理装置及び割り込み管理方法 |