(57)【要約】【課題】  リアルタイムタスクが待たされることなく非リアルタイムタスクをプリエンプトできるリアルタイム制御方式を提供することを目的とする。【解決手段】  リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおいて、非リアルタイムタスクを実行中にリアルタイムタスク起床割込みが入るとこれを処理し（ステップ１０１）、続いて非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定し（ステップ１０２）、プリエンプト禁止区間を実行中と判定すると、非リアルタイムタスクがプリエンプト禁止区間で行った処理を破棄し、リアルタイムタスクにプリエンプトさせる（ステップ１０４）。プリエンプトされた非リアルタイムタスクは、ステップ１０５にて再び実行権を得たときは、ステップ１０７にてプリエンプト禁止区間の先頭から処理をやり直す。【選択図】      図１
2005190238.tif 000002
【特許請求の範囲】
【請求項１】
リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、
実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定するステップと、
プリエンプト禁止区間を実行中と判定すると、プリエンプト禁止区間でリアルタイムタスクによってプリエンプトされたことを記録するフラグをセットするステップと、
リアルタイムタスクが、実行をプリエンプトするステップと、
前記リアルタイムタスクが終了すると、前記プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、
前記フラグがセットされているか否かを判定するステップと、
前記フラグがセットされていると判定すると、前記非リアルタイムタスクの処理を前記プリエンプト禁止区間の先頭から再開するステップと、
前記フラグがセットされていない判定すると、前記非リアルタイムタスクの処理をプリエンプトされた箇所から再開するステップと
を備えたことを特徴とするリアルタイム制御方式。
【請求項２】
リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
プリエンプト禁止区間処理として、
実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、
実行タスクが非リアルタイムタスクと判定すると、プリエンプト禁止区間処理において保護しているリソース状態を保存するステップ
を備え、
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、
実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定するステップと、
プリエンプト禁止区間を実行中と判定すると、プリエンプト禁止区間でリアルタイムタスクによってプリエンプトされたことを記録するフラグをセットし、前記保存しているリソース状態を復元するステップと、
リアルタイムタスクが、実行をプリエンプトするステップと、
前記リアルタイムタスクが終了すると、前記プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、
前記フラグがセットされているか否かを判定するステップと、
前記フラグがセットされていると判定すると、前記非リアルタイムタスクの処理を前記プリエンプト禁止区間の先頭から再開するステップと、
前記フラグがセットされていないと判定すると、前記非リアルタイムタスクの処理をプリエンプトされた箇所から再開するステップと
を備えたことを特徴とするリアルタイム制御方式。
【請求項３】
プリエンプト禁止区間の処理として、
実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、
実行タスクが非リアルタイムタスクと判定すると、プリエンプト禁止区間の処理が残り少なくなったか否かを判定するステップと、
プリエンプト禁止区間の処理が残り少なくなったと判定すると、リアルタイムタスクのプリエンプトを禁止にするステップ
を備えたことを特徴とする請求項１または請求項２に記載のリアルタイム制御方式。
【請求項４】
リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
プリエンプト禁止区間処理として、
実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、
実行タスクがリアルタイムタスクと判定すると、第１のリソースを割り当てるステップと、
実行タスクが非リアルタイムタスクと判定すると、第２のリソースを割り当てるステップ
を備え、
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、
リアルタイムタスクが、実行をプリエンプトするステップと、
前記リアルタイムタスクが終了すると、プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、
前記非リアルタイムタスクがプリエンプトされた箇所から、前記割り当てられた第２のリソースを使用して実行を再開するステップと
を備えたことを特徴とするリアルタイム制御方式。
【請求項５】
リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
実行可能なタスクを管理するランキューの処理で、タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、
タスクがリアルタイムタスクと判定すると、第１のランキューを使用するステップと、
タスクが非リアルタイムタスクと判定すると、第２のランキューを使用するステップと、
第２のランキューを使用中に、リアルタイムタスク起床要求割込みを処理するステップと、
リアルタイムタスクが、実行をプリエンプトするステップと、
前記リアルタイムタスクが終了したら、プリエンプトされた処理を再開するステップと
を備えたことを特徴とするリアルタイム制御方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組込みシステムや機器に内蔵されるオペレーティングシステムのリアルタイム制御方式に関するものである。
【背景技術】
【０００２】
計算機のＯＳ（オペレーティングシステム）は、パソコンなどのリアルタイム性を重視していないＯＳ（以下汎用ＯＳと呼ぶ）と自動車や家電製品などの組込みシステムに搭載されるリアルタイム性を重視しているリアルタイムＯＳに大別される。しかし、組込みシステムの分野においてもソフトウェア規模が増大し、Linuxなどの汎用ＯＳがそのソフトウェア資産を利用するために、組込みシステムに使われつつある。このような組込みシステムにおいては、リアルタイム性を必要としない処理とリアルタイム性を必要とする処理が混在する。そのため、リアルタイム性を必要とする処理がリアルタイム性を必要としない処理によって、遅延させられることの影響をなるべく少なくすることが必要である。
【０００３】
従来の汎用ＯＳでは、長い割込み禁止区間が存在したり、タスクがシステムコール実行中に他のタスクがプリエンプトすることを禁止したりしている。このようなＯＳでは、リアルタイム処理開始が、割込み禁止区間を終了するまで待たされたり、システムコール処理終了まで待たされたりする。長い割込み禁止区間に対応するには例えば、割込み禁止区間であってもリアルタイム処理の割込みは受け付けるようにする方法がある（例えば、特許文献１参照）。また、タスクのプリエンプト禁止区間を縮小するために、システムコール実行中でも他のタスクがプリエンプトできるようにしたプリエンプトカーネルがある（例えば、非特許文献１参照）。
【特許文献１】特開平１１−９６０２２号公報
【非特許文献１】進藤智則、伊藤大貴  ”次世代Linuxは我らの手で”  日経エレクトロニクス2003.6.23 P.118-P.119
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のプリエンプトカーネルでは、システムコール実行中でも他のタスクがプリエンプトできるものの、依然プリエンプトできないプリエンプト禁止区間は存在する。プリエンプト禁止区間が長ければ、リアルタイムタスクがプリエンプトできずに、リアルタイムタスクは要求される時間内に処理を完了できないという問題が生じることがある。
【０００５】
そこで、本発明は、リアルタイムタスクが待たされることなく非リアルタイムタスクをプリエンプトできるリアルタイム制御方式を提供することを目的としたものである。
【課題を解決するための手段】
【０００６】
前述した目的を達成するために、本発明のうち請求項１に記載のリアルタイム制御方式は、リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定するステップと、プリエンプト禁止区間を実行中と判定すると、プリエンプト禁止区間でリアルタイムタスクによってプリエンプトされたことを記録するフラグをセットするステップと、リアルタイムタスクが、実行をプリエンプトするステップと、前記リアルタイムタスクが終了すると、前記プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、前記フラグがセットされているか否かを判定するステップと、前記フラグがセットされていると判定すると、前記非リアルタイムタスクの処理を前記プリエンプト禁止区間の先頭から再開するステップと、前記フラグがセットされていない判定すると、前記非リアルタイムタスクの処理をプリエンプトされた箇所から再開するステップとを備えたことを特徴とする。
【０００７】
また請求項２記載のリアルタイム制御方式は、リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
プリエンプト禁止区間処理として、実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、実行タスクが非リアルタイムタスクと判定すると、プリエンプト禁止区間処理において保護しているリソース状態を保存するステップを備え、
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定するステップと、プリエンプト禁止区間を実行中と判定すると、プリエンプト禁止区間でリアルタイムタスクによってプリエンプトされたことを記録するフラグをセットし、前記保存しているリソース状態を復元するステップと、リアルタイムタスクが、実行をプリエンプトするステップと、前記リアルタイムタスクが終了すると、前記プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、前記フラグがセットされているか否かを判定するステップと、前記フラグがセットされていると判定すると、前記非リアルタイムタスクの処理を前記プリエンプト禁止区間の先頭から再開するステップと、前記フラグがセットされていないと判定すると、前記非リアルタイムタスクの処理をプリエンプトされた箇所から再開するステップとを備えたことを特徴とする。
【０００８】
さらに請求項３記載のリアルタイム制御方式は、請求項１または請求項２記載のリアルタイム制御方式であって、プリエンプト禁止区間の処理として、実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、実行タスクが非リアルタイムタスクと判定すると、プリエンプト禁止区間の処理が残り少なくなったか否かを判定するステップと、プリエンプト禁止区間の処理が残り少なくなったと判定すると、リアルタイムタスクのプリエンプトを禁止にするステップを備えたことを特徴とする。
【０００９】
また請求項４記載のリアルタイム制御方式は、リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
プリエンプト禁止区間処理として、実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、実行タスクがリアルタイムタスクと判定すると、第１のリソースを割り当てるステップと、実行タスクが非リアルタイムタスクと判定すると、第２のリソースを割り当てるステップを備え、
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みを処理するステップと、リアルタイムタスクが、実行をプリエンプトするステップと、前記リアルタイムタスクが終了すると、プリエンプトされた非リアルタイムタスクが実行権を再取得するステップと、前記非リアルタイムタスクがプリエンプトされた箇所から、前記割り当てられた第２のリソースを使用して実行を再開するステップとを備えたことを特徴とする。
【００１０】
さらに請求項５記載のリアルタイム制御方式は、リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステムにおけるリアルタイム制御方式において、
実行可能なタスクを管理するランキューの処理で、タスクがリアルタイムタスクか非リアルタイムタスクかを判定するステップと、タスクがリアルタイムタスクと判定すると、第１のランキューを使用するステップと、タスクが非リアルタイムタスクと判定すると、第２のランキューを使用するステップと、第２のランキューを使用中に、リアルタイムタスク起床要求割込みを処理するステップと、リアルタイムタスクが、実行をプリエンプトするステップと、前記リアルタイムタスクが終了したら、プリエンプトされた処理を再開するステップとを備えたことを特徴とする。
【発明の効果】
【００１１】
本発明のリアルタイム制御方式は、上記ステップを有し、従来のプリエンプトカーネルにおいてプリエンプトが禁止された区間においてもリアルタイムタスクはプリエンプトできるので、リアルタイムタスクは他の非リアルタイムタスクの処理のために待たされることがなく、要求される時間内に処理を完了させることができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態を、図面を参照しながら説明する。
本発明のリアルタイム制御方式は、リアルタイム処理が必要なリアルタイムタスクと、リアルタイム処理が必要でない非リアルタイムタスクが混在するシステム、たとえばデジタルＴＶ，ＤＶＤプレーヤーなど映像処理や音声処理などリアルタイム性を必要とするリアルタイムタスクと、ユーザからの指示を受付けるユーザインターフェイス処理などリアルタイム性を必要としない非リアルタイムタスクが混在する家電製品等に使用されるコンピュータの制御方式であり、このようなシステムにおけるリアルタイム制御方式について以下、説明する。
［実施の形態１］
本発明の実施の形態１について、図１と図２を参照しながら説明する。図１は、非リアルタイムタスクを実行中にリアルタイムタスク起床要求割込みが発生した場合の処理手順を示すフローチャートである。
【００１３】
非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みが発生するとこのリアルタイムタスク起床要求割込みを処理し（ステップ１０１）、実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定する（ステップ１０２）。プリエンプト禁止区間は、ＯＳのリソースで排他制御が必要なものを保護するために設定されたもので、この区間を実行中は、従来実行タスクが他のタスクにプリエンプトされない。
【００１４】
実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中と判定すると、フラグをセットする（ステップ１０３）。このフラグはプリエンプト禁止区間でリアルタイムタスクによってプリエンプトされたことを記録しておき、あとで述べるステップ１０６で参照するためのものである。ステップ１０２において、プリエンプト禁止区間でないと判定すると、このフラグはセットしない。
【００１５】
ステップ１０３の終了後、または上記ステップ１０２において実行中の非リアルタイムタスクがプリエンプト禁止区間を実行中ではないと判定するとき、リアルタイムタスクが、実行をプリエンプトする（ステップ１０４）。リアルタイムタスクの実行中は、プリエンプトされた非リアルタイムタスクの実行は中断される。
【００１６】
リアルタイムタスクの実行が終了すると、プリエンプトされた非リアルタイムタスクが実行権を再取得し（ステップ１０５）。フラグがセットされているかどうか否かを判定する（ステップ１０６）。
【００１７】
フラグがセットされていると判定すると、プリエンプト禁止区間の中でリアルタイムタスクにプリエンプトされたことになるので、非リアルタイムタスクの処理をプリエンプト禁止区間の先頭から再開する（ステップ１０７）。
【００１８】
ステップ１０６において、フラグがセットされていないと判定すると、非リアルタイムタスクの処理をプリエンプトされた箇所から再開する（ステップ１０８）。
図２は、本実施の形態１の効果を示すために、リアルタイムタスク起床要求が発生したときの、従来のＯＳと本実施の形態１におけるそれぞれのタスクスイッチを示した図である。図２（ａ）は従来のＯＳのタスクスイッチを、図２（ｂ）は本実施の形態１を示している。
【００１９】
図２（ａ）で示すように従来のＯＳでは、プリエンプト禁止区間でリアルタイムタスク起床要求が発生したときに、リアルタイムタスクの起床は非リアルタイムタスクがプリエンプト禁止区間の処理を終了するまで待たされる。
【００２０】
本実施の形態１では、図２（ｂ）で示すようにリアルタイムタスク起床要求があれば直ちにリアルタイムタスクが起床される。このように、非リアルタイムタスクを実行中に、リアルタイムタスク起床要求割込みが発生し、このとき非リアルタイムタスクがプリエンプト禁止区間を実行中と判定されると、非リアルタイムタスクがプリエンプト禁止区間で行った処理は破棄され、リアルタイムタスクにプリエンプトさせ、プリエンプトされた非リアルタイムタスクは、ステップ１０５にて再び実行権を得たときは、ステップ１０７にてプリエンプト禁止区間の先頭から処理をやり直す。
【００２１】
以上のように、非リアルタイムタスクがプリエンプト禁止区間を実行中であっても、リアルタイムタスクは、非リアルタイムタスクがプリエンプト禁止区間を終了するまで待たされるということはなく、起床要求があればすぐにプリエンプトすることができ（リアルタイムタスクはいかなる場合でも非リアルタイムタスクの実行をプリエンプトすることができ）、リアルタイム性を確保することができる。
【００２２】
また非リアルタイムタスクはフラグを確認すると、プリエンプト禁止区間の先頭から処理を再開することにより、プリエンプト禁止区間開始前のリソース状態で実行されることから、リアルタイムタスクによりリソースが書き換えられている場合でも、動作を保証することができる。
［実施の形態２］
本発明の実施の形態２について、図３を参照しながら説明する。
【００２３】
図３（ａ）はタスクがプリエンプト禁止区間で実行する処理を、図３（ｂ）は非リアルタイムタスク実行中にリアルタイムタスク起床要求割込みが発生した場合の処理手順を示す。
【００２４】
図３（ａ）に示すようにプリエンプト禁止区間処理として、プリエンプト禁止区間の入り口で、実行タスクが非リアルタイムタスクか否かを判定し（ステップ３０１）、実行タスクが非リアルタイムタスクと判定すると、プリエンプト禁止区間で保護しているリソースの状態を保存する（ステップ３０２）。
【００２５】
また図３（ｂ）に示すように、非リアルタイムタスクを実行中にリアルタイムタスク要求割込みが発生するとこのリアルタイムタスク起床要求割込みを処理し（ステップ３０３）、非リアルタイムタスクがプリエンプト禁止区間を実行中が否かを判定し（ステップ３０４）、プリエンプト禁止区間を実行中と判定すると、フラグをセットし（ステップ３０５）、ステップ３０２で保存しているリソース状態を復元する（ステップ３０６）。このフラグはプリエンプト禁止区間でリアルタイムタスクによってプリエンプトされたことを記録するフラグである。ステップ３０４において、プリエンプト禁止区間を実行中ではないと判定すると、何もしない。
【００２６】
その後、リアルタイムタスクが、実行をプリエンプトする（ステップ３０７）。リアルタイムタスクの実行中は、プリエンプトされた非リアルタイムタスクの実行は中断される。リアルタイムタスクの実行が終了すると、プリエンプトされた非リアルタイムタスクは実行権を再取得（ステップ３０８）し、実行を再開する。
【００２７】
次にフラグがセットされているかどうかを判定し（ステップ３０９）、フラグがセットされていると判定すると、プリエンプト禁止区間の中でリアルタイムタスクにプリエンプトされたことになるので、非リアルタイムタスクの処理をプリエンプト禁止区間の先頭から再開する（ステップ３１０）。フラグがセットされていないと判定すると、非リアルタイムタスクの処理をプリエンプトされた場所から再開する（ステップ３１１）。
【００２８】
この実施の形態２と上記実施の形態１との相違は、ステップ３０２でプリエンプト禁止区間開始時のリソース状態を保存していることと、ステップ３０６でリソース状態を復元していることである。リソースをプリエンプト禁止区間中に非リアルタイムタスクによって書き換える場合、書き換え途中でリアルタイムタスクがプリエンプトして同じリソースをアクセスした場合に動作が保証できない。そのために、リアルタイムタスクがアクセスしても動作に問題が生じないようにするために、ステップ３０６でプリエンプト禁止区間の開始時のリソース状態に復元している。非リアルタイムタスクがプリエンプト禁止区間を終了した後に、リアルタイムタスクの起床要求があった場合は、保存したリソース状態を復元する必要はない。
【００２９】
以上のように、リアルタイムタスクはいかなる場合でも非リアルタイムタスクの実行をプリエンプトすることができるとともに、非リアルタイムタスクがプリエンプト禁止区間で保護しているリソースを変更したとしても、プリエンプト禁止区間中にプリエンプトしたリアルタイムタスクはシステムに支障をきたすことなく、そのリソースを使用することができ、動作を保証することができる。
【００３０】
なお、非リアルタイムタスクがプリエンプト禁止区間でリソース状態を変更せずに参照するだけであれば、実施の形態１でよい。
［実施の形態３］
本発明の実施の形態３について、図４を参照しながら説明する。
【００３１】
図４（ａ）は、リアルタイムタスク起床要求がない場合の非リアルタイムタスクの実行を示している。太線はプリエンプト禁止区間を示す。図４（ｂ）は実施の形態１または２において、処理内容の同じ非リアルタイムタスクで、プリエンプト禁止区間でリアルタイムタスク起床要求が発生した場合の実行の様子を示す。プリエンプト禁止区間の処理が残りわずかであっても、リアルタイムタスク起床要求があればただちにリアルタイムタスクがプリエンプトし、非リアルタイムタスクは実行権を再取得後、最初から処理をやり直している。
【００３２】
図４（ｃ）は実施の形態３において、処理内容の同じ非リアルタイムタスクで、プリエンプト禁止区間でリアルタイムタスク起床要求が発生した場合の実行の様子を示す。プリエンプト禁止区間中で、プリエンプト禁止区間の処理が残り少なくなった箇所に、リアルタイムタスクへのプリエンプトを禁止する手段を設けている。具体的にはプリエンプト禁止のフラグをセットすることで対応する。
【００３３】
このプリエンプト禁止区間の処理途中で、リアルタイムタスクのプリエンプトを禁止にするプリエンプト禁止フラグのセットのステップは、たとえば図５に示すように、上記実施の形態２のステップ３０２に続いて実行される。
【００３４】
すなわち、プリエンプト禁止区間の処理として、ステップ３０１において実行タスクを非リアルタイムタスクと判定し、ステップ３０２においてプリエンプト禁止区間で保護しているリソースの状態を保存すると、プリエンプト禁止区間の処理が残り少なくなったか否かを判定し（ステップ４０１）、プリエンプト禁止区間の処理が残り少なくはないと判定すると終了し、残り少なくなったと判定すると、リアルタイムタスクのプリエンプトを禁止にするプリエンプト禁止フラグをセットする（ステップ４０２）。
【００３５】
このプリエンプト禁止フラグがセットされたあとでは、リアルタイムタスク起床要求が発生してもプリエンプト禁止区間の処理が終了するまで、リアルタイムタスクのプリエンプトを待たせる。すなわち、ステップ３０４において非リアルタイムタスクがプリエンプト禁止区間を実行中か否かを判定し、プリエンプト禁止区間と判定すると、プリエンプト禁止フラグがセットされているか否かを判定し（ステップ４０３）、プリエンプト禁止フラグがセットされている判定すると、非リアルタイムタスクの処理をそのまま実行し（ステップ４０４）、終了する。
【００３６】
プリエンプト禁止区間が残りわずかな場合は、実施の形態２におけるリソース状態の復元を行う方が時間を要したり、待ち時間がリアルタイムタスクの処理に影響を及ぼさなかったりすることがある。この場合においては、非リアルタイムタスクにプリエンプト禁止区間の最後まで実行させたほうが、プリエンプト禁止区間全体の処理をやり直す必要がなくなり、システム全体の性能を向上させることができる。
【００３７】
以上のように、非リアルタイムタスクがプリエンプト禁止区間実行中で、プリエンプト禁止区間の処理が残り少なくなっている状態で、リアルタイムタスク起床要求が発生した場合、プリエンプト禁止とし、非リアルタイムタスクにプリエンプト禁止区間の最後まで実行させることにより、システム全体の性能を向上させることができる。
【００３８】
なお、実施の形態１では、リソース状態の保存処理を実行しないので、プリエンプト禁止区間の処理として、図５においてステップ３０２が削除されたフローチャートが実行され、図１のフローチャートでは、ステップ１０２とステップ１０３との間で、上記ステップ４０３とステップ４０４が実行される。
［実施の形態４］
本発明の実施の形態４について、図６を参照しながら説明する。
【００３９】
図６（ａ）はタスクがプリエンプト禁止区間で実行する処理を、図６（ｂ）は非リアルタイムタスク実行中にリアルタイムタスク起床要求割込みが発生した場合の処理手順を示す。
【００４０】
図６（ａ）に示すようにプリエンプト禁止区間の処理として、プリエンプト禁止区間の入り口では、実行タスクがリアルタイムタスクか非リアルタイムタスクかを判定し（ステップ５０１）、実行タスクがリアルタイムタスクと判定すると、第１のリソースを割当て（ステップ５０２）、実行タスクが非リアルタイムタスクと判定すると、第２のリソースを割り当てる（ステップ５０３）。
【００４１】
また図６（ｂ）に示すように、非リアルタイムタスクを実行中にリアルタイムタスクの起床要求割込みが発生するとこのリアルタイムタスク起床要求割込みを処理し（ステップ５０４）、リアルタイムタスクが、実行をプリエンプトする（ステップ５０５）。リアルタイムタスクの実行中は、プリエンプトされた非リアルタイムタスクの実行は中断される。
【００４２】
リアルタイムタスクの実行が終了すると、非リアルタイムタスクは実行権を再取得し（ステップ５０６）、プリエンプトされた箇所から、割り当てられた第２のリソースを使用して処理を再開する（ステップ５０７）。
【００４３】
このように、リアルタイムタスクはいかなる場合でも非リアルタイムタスクの実行をプリエンプトすることができるとともに、プリエンプト禁止区間で保護するリソースを二重化してリアルタイムタスク用と非リアルタイムタスク用に分けて割り当てることにより、非リアルタイムタスクがプリエンプト禁止区間を実行中にリアルタイムタスクが実行をプリエンプトしてもリソースの競合を避けることができ、リアルタイムタスクおよび非リアルタイムタスクの動作を保証することができる。
［実施の形態５］
本発明の実施の形態５について、図７を参照しながら説明する。
【００４４】
図７（ａ）は実行可能なタスクを管理するランキューの処理を、図７（ｂ）は第２のランキュー処理中にリアルタイムタスク起床要求割込みが発生した場合の処理手順を示す。
図７（ａ）に示すように、ランキュー処理で、タスクがリアルタイムタスクか非リアルタイムタスクかを判定し（ステップ６０１）、タスクがリアルタイムタスクと判定すると、第１のランキューを使用し（ステップ６０２）、タスクが非リアルタイムタスクと判定すると、第２のランキューを使用する（ステップ６０３）。
【００４５】
図７（ｂ）に示すように、第２のランキュー処理中に、リアルタイムタスクの起床要求割込みが発生するとこのリアルタイムタスク起床要求割込みを処理し（ステップ６０４）、リアルタイムタスクが、実行をプリエンプトする（ステップ６０５）。リアルタイムタスクの実行中は、第２のランキューの実行は中断される。リアルタイムタスクの実行が終了すると、プリエンプトされた箇所から第２のランキュー処理を再開する（ステップ６０６）。
【００４６】
このように、ランキューをリアルタイムタスク用と非リアルタイムタスク用に分けることで、非リアルタイムタスクが第２のランキューを実行中にリアルタイムタスクが実行をプリエンプトしてもシステムに支障が生じることを避けることができる。
【産業上の利用可能性】
【００４７】
本発明にかかるリアルタイム制御方式は、リアルタイムタスクはいかなる場合でも非リアルタイムタスクの実行をプリエンプトすることができ、リアルタイム処理が必要な家電製品の制御と、ユーザインタフェース処理などを行う非リアルタイム処理が混在するネットワーク家電向けのシステムとして有用である。
【図面の簡単な説明】
【００４８】
【図１】本発明の実施の形態１におけるリアルタイム制御方式を説明するフローチャートである。
【図２】同リアルタイム制御方式の効果を説明するための図である。
【図３】本発明の実施の形態２におけるリアルタイム制御方式を説明するフローチャートである。
【図４】本発明の実施の形態３を説明するための図である。
【図５】本発明の実施の形態３におけるリアルタイム制御方式を説明するフローチャートである。
【図６】本発明の実施の形態４におけるリアルタイム制御方式を説明するフローチャートである。
【図７】本発明の実施の形態５におけるリアルタイム制御方式を説明するフローチャートである。
【図１】
2005190238.tif 000003
【図２】
2005190238.tif 000004
【図３】
2005190238.tif 000005
【図４】
2005190238.tif 000006
【図５】
2005190238.tif 000007
【図６】
2005190238.tif 000008
【図７】
2005190238.tif 000009