(57)【要約】    【課題】    複数のＣＰＵを有する組込みシステムにおいて、各ＣＰＵにタスクを適切に動的分散すると共に、優先度の高いタスクを迅速に処理することができるようにする。    【解決手段】    組込みシステムＡは、複数のＣＰＵＢ…Ｂと記憶装置Ｃとを有し、実行すべきタスクＦの優先度よりも優先度が低いタスクＦ…Ｆが実行中であるときは、実行中の全タスクＦ…Ｆのタスク実行権を解放させて全ＣＰＵＢ…Ｂを一時タスク非実行状態とさせるタスク実行権解放手段Ｍと、タスク実行権解放手段Ｍでタスク非実行状態とされた各ＣＰＵＢ…Ｂに、複数のレディキューＤ…Ｄに格納されたタスク管理情報格納領域情報Ｊ…Ｊに係るタスクＦ…Ｆのうちの、優先度の高いレディキューＤ…Ｄに格納されたタスク情報格納領域情報Ｊ…Ｊに係るタスクＦ…Ｆを、レディキューＤ…Ｄの先頭側から順に割り当てるタスク割り当て手段Ｏとを有する。    【選択図】    図１
2005327007.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵと、該複数のＣＰＵで共用の第１、第２、第３記憶装置とを有する組込みコンピュータを制御するプログラムであって、コンピュータを、上記第１記憶装置上に、上記各ＣＰＵで共用とされて異なる優先度が設定された複数のレディキューを作成するレディキュー作成手段、上記第２記憶装置に記憶されている複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定するタスク優先度設定手段、上記第３記憶装置上に、上記複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成するタスク管理情報作成手段、該タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第３記憶装置上における格納領域の情報を、上記レディキュー作成手段で作成された複数のレディキューのうちの、上記タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納するタスク管理情報格納領域情報格納手段、上記複数のＣＰＵで実行中のタスクのうちのいずれかのタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除するタスク管理情報格納領域情報削除手段、上記タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中の全タスクのタスク実行権を解放させて全ＣＰＵを一時タスク非実行状態とさせるタスク実行権解放手段、該タスク実行権解放手段で全タスクのタスク実行権が解放されるときに、この解放される各タスクの状態を当該各タスクのタスク管理情報に記録するタスク実行権解放時状態記録手段、上記タスク実行権解放手段でタスク非実行状態とされた各ＣＰＵに、上記複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューに格納されたタスク情報格納領域情報に係るタスクを、該レディキューの先頭側から順に割り当てるタスク割り当て手段、該タスク割り当て手段でタスクを割り当てたＣＰＵに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させるタスク実行手段として機能させることを特徴とする組込みコンピュータ制御プログラム。
【請求項２】
コンピュータをタスク実行権解放手段として機能させるときに、タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるとき、または実行が終了したタスクに係るタスク管理情報格納領域情報がタスク管理情報格納領域情報削除手段によってレディキューから削除されるときに、実行中の全タスクのタスク実行権を解放させて全ＣＰＵを一時タスク非実行状態とさせることを特徴とする請求項１に記載の組込みコンピュータ制御プログラム。
【請求項３】
複数のＣＰＵのうちに特定の機能を有する特定ＣＰＵが備えられている場合において、コンピュータをレディキュー作成手段として機能させるときに、上記特定ＣＰＵに関連付けた特定のレディキューを作成するように機能させ、タスク管理情報格納領域情報格納手段として機能させるときに、上記特定の機能を利用する特定タスクのタスク管理情報格納領域情報については上記特定のレディキューに格納するように機能させ、タスク割り当て手段として機能させるときに、特定のレディキューに接続された特定タスクを、該特定ＣＰＵに割り当てるように機能させることを特徴とする請求項１または請求項２に記載の組込みコンピュータ制御プログラム。
【請求項４】
複数のＣＰＵ及び第１、第２、第３記憶装置に加え、外部割り込み処理機能を有する専用ＣＰＵ及び第４、第５、第６記憶装置が備えられた組込みコンピュータにおいて、コンピュータにおける上記複数のＣＰＵ及び第１、第２、第３記憶装置を含む第１の部分を請求項１から請求項３のいずれかに記載の各手段として機能させる第１の制御部と、専用ＣＰＵ及び第４、第５、第６記憶装置を含む第２の部分を、第１の複数のタスクの実行制御に係る要求を第１の制御部に対して行う第２の複数のタスクを制御する手段として機能させる第２の制御部とからなり、第２の制御部は、コンピュータの第２の部分を、上記第４記憶装置上に専用ＣＰＵで共用とされて異なる優先度が設定された第２の複数のレディキューを作成する第２レディキュー作成手段、上記第５記憶装置に記憶されている、第１の複数のタスクを実行制御する第２の複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定する第２タスク優先度設定手段、上記第６記憶装置上に、上記第２の複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成する第２タスク管理情報作成手段、該第２タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第６記憶装置上における格納領域の情報を、上記第２レディキュー作成手段で作成された第２の複数のレディキューのうちの、上記第２タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納する第２タスク管理情報格納領域情報格納手段、上記専用ＣＰＵで実行中のタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除する第２タスク管理情報格納領域情報削除手段、上記第２タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中のタスクのタスク実行権を解放させてＣＰＵを一時タスク非実行状態とさせる第２タスク実行権解放手段、該第２タスク実行権解放手段でタスクの実行権が解放されるときに、この解放されるタスクの状態を当該タスクのタスク管理情報に記録する第２タスク実行権解放時状態記録手段、上記第２タスク実行権解放手段でタスク非実行状態とされたＣＰＵに、上記第２の複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューの先頭に格納されたタスク情報格納領域情報に係るタスクを割り当てる第２タスク割り当て手段、該第２タスク割り当て手段でタスクを割り当てたＣＰＵに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させる第２タスク実行手段として機能させることを特徴とする請求項１から請求項３のいずれかに記載の組込みコンピュータ制御プログラム。
【請求項５】
請求項１から請求項４のいずれかに記載の組込みコンピュータ制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項６】
複数のＣＰＵと、該複数のＣＰＵで共用の第１、第２、第３記憶装置と、上記第１記憶装置上に、上記各ＣＰＵで共用とされて異なる優先度が設定された複数のレディキューを作成するレディキュー作成手段と、上記第２記憶装置に記憶されている複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定するタスク優先度設定手段と、上記第３記憶装置上に、上記複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成するタスク管理情報作成手段と、該タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第３記憶装置上における格納領域の情報を、上記レディキュー作成手段で作成された複数のレディキューのうちの、上記タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納するタスク管理情報格納領域情報格納手段と、上記複数のＣＰＵで実行中のタスクのうちのいずれかタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除するタスク管理情報格納領域情報削除手段と、上記タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中の全タスクの実行権を解放させて全ＣＰＵを一時タスク非実行状態とさせるタスク実行権解放手段と、該タスク実行権解放手段で全タスクの実行権が解放されるときに、この解放される各タスクの状態を当該各タスクのタスク管理情報に記録するタスク実行権解放時状態記録手段と、上記タスク実行権解放手段でタスク非実行状態とされた各ＣＰＵに、上記複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューに格納されたタスク情報格納領域情報に係るタスクを、該レディキューの先頭側から順に割り当てるタスク割り当て手段と、該タスク割り当て手段でタスクを割り当てたＣＰＵに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させるタスク実行手段とを有することを特徴とする組込みシステム。
【請求項７】
タスク実行権解放手段は、タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるとき、または実行が終了したタスクに係るタスク管理情報格納領域情報がタスク管理情報格納領域情報削除手段によってレディキューから削除されるときに、実行中の全タスクのタスク実行権を解放させて全ＣＰＵを一時タスク非実行状態とさせることを特徴とする請求項６に記載の組込みシステム。
【請求項８】
複数のＣＰＵのうちに特定の機能を有する特定ＣＰＵが備えられている場合において、レディキュー作成手段は、上記特定ＣＰＵに関連付けた特定のレディキューを作成し、タスク管理情報格納領域情報格納手段は、上記特定の機能を利用する特定タスクのタスク管理情報格納領域情報については上記特定のレディキューに格納し、タスク割り当て手段は、特定のレディキューに接続された特定タスクを、該特定ＣＰＵに割り当てることを特徴とする請求項６または請求項７に記載の組込みシステム。
【請求項９】
複数のＣＰＵ及び第１、第２、第３記憶装置に加え、外部割り込み処理機能を有する専用ＣＰＵ及び第４、第５、第６記憶装置が備えられており、かつ、請求項６から請求項８のいずれかに記載の各手段を含む第１の制御部は、上記複数のＣＰＵ及び第１、第２、第３記憶装置を含む第１の部分を制御し、上記専用ＣＰＵ及び第４、第５、第６記憶装置を含む第２の部分を、第１の複数のタスクの実行制御に係る要求を第１の制御部に行う第２の複数のタスクを制御する手段として機能させる第２の制御部は、上記第４記憶装置上に、専用ＣＰＵで共用とされて異なる優先度が設定された第２の複数のレディキューを作成する第２レディキュー作成手段と、上記第５記憶装置に記憶されている、第１の複数のタスクを実行制御する第２の複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定する第２タスク優先度設定手段と、上記第６記憶装置上に、上記第２の複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成する第２タスク管理情報作成手段と、該第２タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第６記憶装置上における格納領域の情報を、上記第２レディキュー作成手段で作成された第２の複数のレディキューのうちの、上記第２タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納する第２タスク管理情報格納領域情報格納手段と、上記専用ＣＰＵで実行中のタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除するタスク第２管理情報格納領域情報削除手段と、上記第２タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中のタスクのタスク実行権を解放させてＣＰＵを一時タスク非実行状態とさせる第２タスク実行権解放手段と、該第２タスク実行権解放手段でタスクのタスク実行権が解放されるときに、この解放されるタスクの状態を当該タスクのタスク管理情報に記録する第２タスク実行権解放時状態記録手段と、上記第２タスク実行権解放手段でタスク非実行状態とされたＣＰＵに、上記第２の複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューの先頭に格納されたタスク情報格納領域情報に係るタスクを割り当てる第２タスク割り当て手段と、該第２タスク割り当て手段でタスクを割り当てたＣＰＵに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させる第２タスク実行手段とを有することを特徴とする請求項６から請求項８のいずれかに記載の組込みシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵを有する組込みコンピュータの制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステムに関し、タスクの動的分散の技術分野に属する。
【背景技術】
【０００２】
従来より、家電製品や産業機器等に組込まれてこれらの作動を制御する機器組込み制御システム（組込みシステム）としては、単一のＣＰＵやメモリ（記憶装置）等を有するコンピュータを、例えばＴＲＯＮ仕様等のリアルタイムオペレーティングシステム（制御プログラム）により制御するようにしたものが広く知られている。
【０００３】
このリアルタイムオペレーティングシステムは、メモリ（記憶装置）に記憶された複数のタスク（プログラムの並行実行の単位）のうちの実行すべきタスクを、異なる優先度が設定された複数のレディキューのうちの所定のレディキューに接続し、かつ、この接続されたタスクの優先度が実行中のタスクの優先度よりも高いときにはこの接続されたタスクをＣＰＵに割り当てると共に、この接続されたタスクの優先度が実行中のタスクの優先度よりも低いときには現在実行中のタスクの処理が終了したときに、タスクが接続されたレディキューのうちの最も優先度の高いレディキューの先頭に接続されたタスクをＣＰＵに割り当てるように構成されており、これにより、優先度の高いタスクのリアルタイムな処理を可能としている。
【０００４】
ところで、近年、組込みシステム分野においては、上記家電製品や産業機器等の機能の高度化等に伴って処理対象データ量が増大しており、これに対処するため組込みシステムの処理能力の向上が要求されるようになってきている。
【０００５】
組込みシステムの処理能力を向上させる方策としては、組込みシステム以外の分野において既に採用されているように複数のＣＰＵを用いることが考えられる（特許文献１参照）。
【０００６】
【特許文献１】特開平１１−５３３２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載のシステムにおいては、実行すべきタスクを接続するキューはＣＰＵ毎に専用のものが１つずつ設けられているだけであり、優先度の異なる複数のキューを有するリアルタイムオペレーティングシステムとは前提とする構成が大きく異なり、参考とすることができない。
【０００８】
特に、このように複数のＣＰＵを用いても、各ＣＰＵに負荷を適切に分散しないと、例えば、実行すべきタスクは多くあるにも拘わらず、あるＣＰＵにはタスクが割り当てられていない等の状態が生じ、ＣＰＵの複数化による処理能力向上効果を十分に発揮させることができない。また、複数のＣＰＵを用いる場合、優先度の高いタスクを如何に迅速にＣＰＵに割り当てるかという課題がある。
【０００９】
そこで、本発明は、複数のＣＰＵを有する組込みシステムにおいて、各ＣＰＵにタスクを適切に動的分散することができると共に、優先度の高いタスクを迅速に処理することができるシステム及びプログラム等を提供することを課題とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明は、次のように構成したことを特徴とする。
【００１１】
まず、本願の請求項１に記載の発明（以下、第１発明という）は、複数のＣＰＵと、該複数のＣＰＵで共用の第１、第２、第３記憶装置とを有する組込みコンピュータを制御するプログラムであって、コンピュータを、上記第１記憶装置上に、上記各ＣＰＵで共用とされて異なる優先度が設定された複数のレディキューを作成するレディキュー作成手段、上記第２記憶装置に記憶されている複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定するタスク優先度設定手段、上記第３記憶装置上に、上記複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成するタスク管理情報作成手段、該タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第３記憶装置上における格納領域の情報を、上記レディキュー作成手段で作成された複数のレディキューのうちの、上記タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納するタスク管理情報格納領域情報格納手段、上記複数のＣＰＵで実行中のタスクのうちのいずれかのタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除するタスク管理情報格納領域情報削除手段、上記タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中の全タスクのタスク実行権を解放させて全ＣＰＵを一時タスク非実行状態とさせるタスク実行権解放手段、該タスク実行権解放手段で全タスクのタスク実行権が解放されるときに、この解放される各タスクの状態を当該各タスクのタスク管理情報に記録するタスク実行権解放時状態記録手段、上記タスク実行権解放手段でタスク非実行状態とされた各ＣＰＵに、上記複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューに格納されたタスク情報格納領域情報に係るタスクを、該レディキューの先頭側から順に割り当てるタスク割り当て手段、該タスク割り当て手段でタスクを割り当てたＣＰＵに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させるタスク実行手段として機能させることを特徴とする。
【００１２】
また、本願の請求項２に記載の発明（以下、第２発明という）は、第１発明において、コンピュータをタスク実行権解放手段として機能させるときに、タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるとき、または実行が終了したタスクに係るタスク管理情報格納領域情報がタスク管理情報格納領域情報削除手段によってレディキューから削除されるときに、実行中の全タスクのタスク実行権を解放させて全ＣＰＵを一時タスク非実行状態とさせることを特徴とする。
【００１３】
そして、本願の請求項３に記載の発明（以下、第３発明という）は、第１発明または第２発明において、複数のＣＰＵのうちに特定の機能を有する特定ＣＰＵが備えられている場合において、コンピュータをレディキュー作成手段として機能させるときに、上記特定ＣＰＵに関連付けた特定のレディキューを作成するように機能させ、タスク管理情報格納領域情報格納手段として機能させるときに、上記特定の機能を利用する特定タスクのタスク管理情報格納領域情報については上記特定のレディキューに格納するように機能させ、タスク割り当て手段として機能させるときに、特定のレディキューに接続された特定タスクを、該特定ＣＰＵに割り当てるように機能させることを特徴とする。
【００１４】
そして、本願の請求項４に記載の発明（以下、第４発明という）は、第１発明から第３発明のいずれかの発明において、複数のＣＰＵ及び第１、第２、第３記憶装置に加え、外部割り込み処理機能を有する専用ＣＰＵ及び第４、第５、第６記憶装置が備えられた組込みコンピュータにおいて、コンピュータにおける上記複数のＣＰＵ及び第１、第２、第３記憶装置を含む第１の部分を請求項１から請求項３のいずれかに記載の各手段として機能させる第１の制御部と、専用ＣＰＵ及び第４、第５、第６記憶装置を含む第２の部分を、第１の複数のタスクの実行制御に係る要求を第１の制御部に対して行う第２の複数のタスクを制御する手段として機能させる第２の制御部とからなり、第２の制御部は、コンピュータの第２の部分を、上記第４記憶装置上に専用ＣＰＵで共用とされて異なる優先度が設定された第２の複数のレディキューを作成する第２レディキュー作成手段、上記第５記憶装置に記憶されている、第１の複数のタスクを実行制御する第２の複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定する第２タスク優先度設定手段、上記第６記憶装置上に、上記第２の複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成する第２タスク管理情報作成手段、該第２タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第６記憶装置上における格納領域の情報を、上記第２レディキュー作成手段で作成された第２の複数のレディキューのうちの、上記第２タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納する第２タスク管理情報格納領域情報格納手段、上記専用ＣＰＵで実行中のタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除する第２タスク管理情報格納領域情報削除手段、上記第２タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中のタスクのタスク実行権を解放させてＣＰＵを一時タスク非実行状態とさせる第２タスク実行権解放手段、該第２タスク実行権解放手段でタスクの実行権が解放されるときに、この解放されるタスクの状態を当該タスクのタスク管理情報に記録する第２タスク実行権解放時状態記録手段、上記第２タスク実行権解放手段でタスク非実行状態とされたＣＰＵに、上記第２の複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューの先頭に格納されたタスク情報格納領域情報に係るタスクを割り当てる第２タスク割り当て手段、該第２タスク割り当て手段でタスクを割り当てたＣＰＵに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させる第２タスク実行手段として機能させることを特徴とする。
【００１５】
また、本願の請求項５に記載の発明（以下、第５発明という）は、第１発明から第４発明のいずれかの組込みシステム制御用プログラムを記録したコンピュータ読み取り可能な記録媒体に関するものである。
【００１６】
次に、本願の請求項６に記載の発明（以下、第６発明という）は、複数のＣＰＵと、該複数のＣＰＵで共用の第１、第２、第３記憶装置と、上記第１記憶装置上に、上記各ＣＰＵで共用とされて異なる優先度が設定された複数のレディキューを作成するレディキュー作成手段と、上記第２記憶装置に記憶されている複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定するタスク優先度設定手段と、上記第３記憶装置上に、上記複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成するタスク管理情報作成手段と、該タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第３記憶装置上における格納領域の情報を、上記レディキュー作成手段で作成された複数のレディキューのうちの、上記タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納するタスク管理情報格納領域情報格納手段と、上記複数のＣＰＵで実行中のタスクのうちのいずれかタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除するタスク管理情報格納領域情報削除手段と、上記タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中の全タスクの実行権を解放させて全ＣＰＵを一時タスク非実行状態とさせるタスク実行権解放手段と、該タスク実行権解放手段で全タスクの実行権が解放されるときに、この解放される各タスクの状態を当該各タスクのタスク管理情報に記録するタスク実行権解放時状態記録手段と、上記タスク実行権解放手段でタスク非実行状態とされた各ＣＰＵに、上記複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューに格納されたタスク情報格納領域情報に係るタスクを、該レディキューの先頭側から順に割り当てるタスク割り当て手段と、該タスク割り当て手段でタスクを割り当てたＣＰＵに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させるタスク実行手段とを有することを特徴とする。
【００１７】
また、本願の請求項７に記載の発明（以下、第７発明という）は、第６発明において、タスク実行権解放手段は、タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるとき、または実行が終了したタスクに係るタスク管理情報格納領域情報がタスク管理情報格納領域情報削除手段によってレディキューから削除されるときに、実行中の全タスクのタスク実行権を解放させて全ＣＰＵを一時タスク非実行状態とさせることを特徴とする。
【００１８】
また、本願の請求項８に記載の発明（以下、第８発明という）は、第６発明または第７発明において、複数のＣＰＵのうちに特定の機能を有する特定ＣＰＵが備えられている場合において、レディキュー作成手段は、上記特定ＣＰＵに関連付けた特定のレディキューを作成し、タスク管理情報格納領域情報格納手段は、上記特定の機能を利用する特定タスクのタスク管理情報格納領域情報については上記特定のレディキューに格納し、タスク割り当て手段は、特定のレディキューに接続された特定タスクを、該特定ＣＰＵに割り当てることを特徴とする。
【００１９】
そして、本願の請求項９に記載の発明（以下、第９発明という）は、第６発明から第８発明のいずれかにおいて、複数のＣＰＵ及び第１、第２、第３記憶装置に加え、外部割り込み処理機能を有する専用ＣＰＵ及び第４、第５、第６記憶装置が備えられており、かつ、請求項６から請求項８のいずれかに記載の各手段を含む第１の制御部は、上記複数のＣＰＵ及び第１、第２、第３記憶装置を含む第１の部分を制御し、上記専用ＣＰＵ及び第４、第５、第６記憶装置を含む第２の部分を、第１の複数のタスクの実行制御に係る要求を第１の制御部に行う第２の複数のタスクを制御する手段として機能させる第２の制御部は、上記第４記憶装置上に、専用ＣＰＵで共用とされて異なる優先度が設定された第２の複数のレディキューを作成する第２レディキュー作成手段と、上記第５記憶装置に記憶されている、第１の複数のタスクを実行制御する第２の複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定する第２タスク優先度設定手段と、上記第６記憶装置上に、上記第２の複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成する第２タスク管理情報作成手段と、該第２タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第６記憶装置上における格納領域の情報を、上記第２レディキュー作成手段で作成された第２の複数のレディキューのうちの、上記第２タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納する第２タスク管理情報格納領域情報格納手段と、上記専用ＣＰＵで実行中のタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除するタスク第２管理情報格納領域情報削除手段と、上記第２タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中のタスクのタスク実行権を解放させてＣＰＵを一時タスク非実行状態とさせる第２タスク実行権解放手段と、該第２タスク実行権解放手段でタスクのタスク実行権が解放されるときに、この解放されるタスクの状態を当該タスクのタスク管理情報に記録する第２タスク実行権解放時状態記録手段と、上記第２タスク実行権解放手段でタスク非実行状態とされたＣＰＵに、上記第２の複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューの先頭に格納されたタスク情報格納領域情報に係るタスクを割り当てる第２タスク割り当て手段と、該第２タスク割り当て手段でタスクを割り当てたＣＰＵに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させる第２タスク実行手段とを有することを特徴とする。
【発明の効果】
【００２０】
次に、本発明の効果について説明する。
【００２１】
まず、第１発明によれば、タスクを処理するタスク処理手段としての複数のＣＰＵを有する組込みコンピュータにおいて、上記各ＣＰＵで共用とされて異なる優先度が設定された複数のレディキューが作成され、第２記憶装置に記憶されている複数のタスクのうちの少なくとも実行すべきタスクの優先度が設定され、第３記憶装置に、上記複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報が作成される。
【００２２】
そして、この実行すべきタスクのタスク管理情報の上記第３記憶装置上における格納領域の情報が、上記複数のレディキューのうちの、上記タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納される。  また、上記複数のＣＰＵで実行中のタスクのうちのいずれかのタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報がレディキューから削除される。
【００２３】
そして、実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中の全タスクのタスク実行権が解放されて全ＣＰＵが一時タスク非実行状態とされると共に、全タスクの実行権が解放されるときに、この解放される各タスクの状態が当該各タスクのタスク管理情報に記録される。
【００２４】
そして、上記タスク非実行状態とされた各ＣＰＵに、上記複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューに格納されたタスク情報格納領域情報に係るタスクが、該レディキューの先頭側から順に割り当てられ、タスクが割り当てられたＣＰＵにより、当該タスクが、当該タスクのタスク管理情報格納領域情報に基づいて実行される。
【００２５】
これによれば、実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、該タスクが即座に複数のＣＰＵのうちのいずれかのＣＰＵに割り当てられて実行されることとなり、複数のＣＰＵを有する組込みコンピュータにおいても優先度の高いタスクのリアルタイム処理が確実に確保される。
【００２６】
また、複数のＣＰＵで実行中の複数のタスクのいずれかについて実行が終了したときには、このタスクの実行が終了したＣＰＵに即座にタスクが割り当てられて実行されることとなり、タスク処理が終了したＣＰＵにいつまでもタスクが割り当てられない状態が生じることがない。
【００２７】
つまり、複数のＣＰＵにタスクが適切に動的分散されて、各ＣＰＵの負荷のばらつきが少なくなると共に、優先度の高いタスクの迅速な処理が確保される。
【００２８】
また、全ＣＰＵにタスクが割り当て直されることとなるから、これらのＣＰＵに、確実に、処理の優先順位が最も高いタスクから順に割り当てられることとなる。
【００２９】
なお、第１記憶装置、第２記憶装置、及び第３記憶装置は、１つの記憶装置を共用してもよい。
【００３０】
次に、第２発明によれば、複数のＣＰＵで実行中のタスクのうちのいずれかのタスクの実行が終了したときも、このタスクの実行が終了したＣＰＵに即座にタスクが割り当てられて実行されることとなり、タスク実行が終了したＣＰＵにいつまでもタスクが割り当てられない状態が生じることがない。
【００３１】
また、第３発明によれば、複数のＣＰＵのうちに特定の機能を有する特定ＣＰＵが備えられている場合において、上記特定ＣＰＵに関連付けた特定のレディキューが作成され、上記特定の機能を利用する特定タスクは、複数のレディキューのうちの特定のレディキューに接続され、特定のレディキューに接続された特定タスクは、特定ＣＰＵに割り当てられることとなる。
【００３２】
これによれば、例えば特定タスクの処理は特定ＣＰＵでしかできないような場合に、特定タスクが、当該タスクを処理することができないＣＰＵに割り当てられることがない。また、特定タスクの処理は特定ＣＰＵ以外のＣＰＵでもできるが特定ＣＰＵで処理すればよりタスク処理速度の向上が望めるような場合に、当該特定タスクを当該タスクの実行に適した特定ＣＰＵによって処理することができ、この結果、特定タスクの処理速度の向上等が図れる。
【００３３】
なお、特定レディキューよりも優先度が高いレディキューにタスクが存在する場合、当該優先度が高いレディキューのタスクを特定ＣＰＵに割り当てるようにしてもよいし、特定レディキューに存在するタスクを、優先度が高いレディキューに存在するタスクに優先して特定ＣＰＵに割り当てるようにしてもよい。また、特定レディキューには特定タスクのみ接続するようにしてもよいし、特定タスク以外のタスクも接続するようにしてもよい。
【００３４】
さらに、第４発明によれば、組込みコンピュータ制御プログラムには、コンピュータにおける複数のＣＰＵ及び第１、第２、第３記憶装置を含む第１の部分を請求項１から請求項３のいずれかに記載の各手段として機能させる第１の制御部に加えて、外部割り込み処理機能を有する専用ＣＰＵ及び第４、第５、第６記憶装置を含む第２の部分を、第１の複数のタスクの実行制御の要求を第１の制御部に行う第２の複数のタスクを制御する手段として機能させる第２の制御部が備えられているから、専用ＣＰＵで外部割込み処理が処理される。なお、この場合、他の複数のＣＰＵで外部割込み処理を行わないようにしてもよく、これによれば他の複数のＣＰＵの外部割込み処理の負荷が解消される。また、第２の制御部で第１の制御部を状況に応じて制御することができる。また、第１の制御部と第２の制御部とはほぼ同じ構成であるから、専用ＣＰＵで外部割込み処理を行う仕組みを容易に構築することができると共に、第１の制御部及び第２の制御部をそれぞれの機能にあわせて最適化することができる。
【００３５】
また、第５発明によれば、第１発明から第４発明のいずれかの組込みシステム制御用プログラムを記録したコンピュータ読み取り可能な記録媒体が構成される。
【００３６】
次に、第６発明から第９発明は、第１発明から第４発明のプログラムに対応する組込みシステムの発明であって、これによれば、第１発明から第４発明で説明した作用効果が組込みシステムで達成される。
【発明を実施するための最良の形態】
【００３７】
以下、本発明の実施の形態について説明する。
【００３８】
まず、図１を用いて本発明に係る組込みシステムＡについて説明すると、該組込みシステムＡは、複数のＣＰＵＢ…Ｂと、該複数のＣＰＵＢ…Ｂで共用の記憶装置Ｃと、上記記憶装置Ｃに、上記各ＣＰＵＢ…Ｂで共用とされて異なる優先度が設定された複数のレディキューＤ…Ｄを作成するレディキュー作成手段Ｅと、上記記憶装置Ｃに記憶されている複数のタスクＦ…Ｆのうちの少なくとも実行すべきタスクＦ…Ｆの優先度を設定するタスク優先度設定手段Ｇと、上記記憶装置Ｃに、上記複数のタスクＦ…Ｆのうちの少なくとも実行すべきタスクＦ…Ｆのタスク管理情報Ｈ…Ｈを作成するタスク管理情報作成手段Ｉと、該タスク管理情報作成手段Ｉで作成された実行すべきタスクＦ…Ｆのタスク管理情報Ｈ…Ｈの上記記憶装置Ｃ上における格納領域の情報Ｊ…Ｊを、上記レディキュー作成手段Ｅで作成された複数のレディキューＤ…Ｄのうちの、上記タスク優先度設定手段Ｇで設定された優先度と同一優先度のレディキューＤの最後尾に格納するタスク管理情報格納領域情報格納手段Ｋと、上記複数のＣＰＵＢ…Ｂで実行中のタスクＦ…ＦのうちのいずれかタスクＦの実行が終了したときに、この実行が終了したタスクＦに係るタスク管理情報格納領域情報ＪをレディキューＤから削除するタスク管理情報格納領域情報削除手段Ｌと、上記タスク情報格納領域情報格納手段Ｋによって実行すべきタスクＦに係るタスク情報格納領域情報Ｊが該タスクＦの優先度に対応するレディキューＤの最後尾に格納される場合において、該実行すべきタスクＦの優先度よりも優先度が低いタスクＦ…Ｆが実行中であるときは、実行中の全タスクＦ…Ｆのタスク実行権を解放させて全ＣＰＵＢ…Ｂを一時タスク非実行状態とさせるタスク実行権解放手段Ｍと、該タスク実行権解放手段Ｍで全タスクＦ…Ｆの実行権が解放されるときに、この解放された各タスクＦ…Ｆの状態を当該各タスクＦ…Ｆのタスク管理情報Ｈ…Ｈに記録するタスク実行権解放時状態記録手段Ｎと、上記タスク実行権解放手段Ｍでタスク非実行状態とされた各ＣＰＵＢ…Ｂに、上記複数のレディキューＤ…Ｄに格納されたタスク管理情報格納領域情報Ｊ…Ｊに係るタスクＦ…Ｆのうちの、優先度の高いレディキューＤ…Ｄに格納されたタスク情報格納領域情報Ｊ…Ｊに係るタスクＦ…Ｆを、該レディキューＤ…Ｄの先頭側から順に割り当てるタスク割り当て手段Ｏと、該タスク割り当て手段ＯでタスクＦ…Ｆを割り当てたＣＰＵＢ…Ｂに、当該タスクＦ…Ｆを、当該タスクＦ…Ｆのタスク管理情報格納領域情報Ｊ…Ｊに基づいて実行させるタスク実行手段Ｐとを有する。以下、この組込みシステムＡについて、第１〜第３の実施の形態を通して詳しく説明する。なお、この組込みシステムＡにおいては、特許請求の範囲の請求項１〜３に係る第１，第２，第３記憶装置は共用とされている。
【００３９】
まず、第１の実施の形態について説明する。
【００４０】
図２に示すように、第１の実施の形態の組込みシステムを構成する組込みコンピュータ１は、複数のＣＰＵ１１−１〜１１−ｎ（以下、ＣＰＵ１，ＣＰＵ２，ＣＰＵ３，…ＣＰＵｎという）と、単一の共有メモリ１２（図１の記憶装置Ｃに相当）と、これらを接続する共有バス１３とを有する。
【００４１】
共有メモリ１２は、ＲＯＭ及びＲＡＭからなる。該共有メモリ１２には、請求項１及び請求項２に記載の組込みコンピュータ制御プログラムを構成して、組込みコンピュータ１を図１に記載の各手段として機能させるリアルタイムオペレーティングシステム２１（以下、ＯＳ２１という）と、複数のタスク２２…２２（図１のタスクＦ…Ｆに相当）と、該ＯＳ２１に関する種々のパラメータや一時データ等からなるＯＳデータ２３とが格納されている。
【００４２】
ＯＳ２１は、上記共有メモリ１２からＣＰＵ１〜ＣＰＵｎ上にそれぞれ読み込まれて実行される。換言すれば、共有メモリ１２上に格納されているＯＳ２１は１つであるが、各ＣＰＵ１〜ＣＰＵｎ上で並行して実行され、各ＣＰＵ上で実行されるＯＳ２１により当該各ＣＰＵ上でのタスク２２の実行が制御されることとなる。なお、このＯＳ２１の機能の詳細については後述する。
【００４３】
ＯＳデータ２３は、上記複数のＣＰＵ上でそれぞれ実行されるＯＳ２１で共有のＯＳ共有データ２３ａと、上記複数のＣＰＵ上でそれぞれ実行されるＯＳ２１毎に固有の非共有データ２３ｂとからなる。ＯＳ共有データ２３ａには、複数のレディキュー（図１のレディキューＤ…Ｄに相当、図３参照）の状態を管理するレディキューテーブル（図４参照）が含まれている。なお、その詳細については後述する。
【００４４】
ＯＳ２１は、ＣＰＵ１〜ＣＰＵｎがタスク２２…２２を実行しているときにはＣＰＵ実行状態と判定し、タスク２２…２２を実行していないときはＣＰＵアイドル状態（特許請求の範囲に記載のタスク非実行状態）と判定する。
【００４５】
タスク２２は、ＯＳ２１によって、実行状態、実行可能状態、待ち状態、休止状態のうちのいずれかの状態に制御される。ここで、実行状態とは、タスク２２がＯＳ２１によりＣＰＵ１〜ＣＰＵｎのうちのいずれかのＣＰＵに割り当てられて実行中の状態を意味し、実行可能状態とは、タスク２２の実行準備は整っているが、そのタスク２２よりも優先順位の高いタスク２２が実行中であるためそのタスク２２を実行できない状態を意味し、待ち状態とは、起動はされたがタスク２２の実行条件が整わないため実行できない状態を意味し、休止状態とはタスク２２が起動されていない状態をいう。
【００４６】
上記タスク２２…２２の、例えば上記実行状態等の情報、タスク２２…２２の優先度等の情報を含むタスク管理情報（図１のタスク管理情報Ｈ…Ｈに相当）は、ＯＳ２１によって、例えばＯＳ２１の起動時にタスク２２…２２の全てに対して作成され、上記メモリ１２上のＯＳ共有データ２３ａの一部として記憶される。
【００４７】
また、タスク２２…２２の実行の優先度は、ＯＳ２１によって、タスク重要性、緊急性、サイズ等に基づいて、例えばＯＳ２１の起動時にタスク２２…２２毎に設定され、上記タスク管理情報の一つの情報として上記メモリ１２上に記憶される。なお、この優先度は、タスク２２…２２がＯＳ２１に対して要求することにより、または、ＯＳ２１によって、起動後に変更してもよい。
【００４８】
図３は、優先度毎に設けられたレディキューの一例を示す説明図であり、図４は、このような優先度毎のレディキューの状態を管理するレディキューテーブルの構成を示す。このレディキューテーブルは、各レディキュー毎に、当該優先度のレディキューに接続されたタスクの次に接続されたタスクのタスク情報を格納している領域の上記メモリ１２上における先頭アドレス情報と、１つ前に接続されたタスクのタスク情報を格納している領域の先頭アドレス情報とからなるタスク管理情報格納領域情報とを格納しており、ＯＳ２１の起動時に共有メモリ１２上のＯＳ共有データ２３ａの一部として作成される。換言すれば、ＯＳ２１の起動時に、異なる優先度を持つレディキューが複数作成されることとなる。
【００４９】
なお、図３は７つのタスク管理情報格納領域情報が格納されている状態を示したが、ＯＳ２１の起動時にはタスク管理情報格納領域情報は格納されておらず、例えば、タスク２２の実行条件が成立したときに、ＯＳ２１によって、上記複数のレディキューのうちの、当該タスク２２の優先度と同一優先度のレディキューの最後尾に格納され、タスク２２の実行が終了したときに、この実行が終了したタスク２２に係るタスク管理情報格納領域情報がレディキューから削除される。
【００５０】
ここで、本実施の形態に係るＯＳ２１は、スケジューリング方式として、イベントドリブン型タスク優先度順スケジューリング方式を採用している。なお、スケジューリングとは、上記レディキューテーブルを検索して次に実行すべきタスクを決定する（タスクをＣＰＵに割り当てることをいう）。
【００５１】
具体的には、各ＣＰＵ１〜ＣＰＵｎ上で実行中のＯＳ２１は、（１）実行状態のタスク２２または割込み処理から他タスク２２の起動（休止状態から実行可能状態への移行）の要求（システムコール等）があったとき、（２）実行状態のタスク２２または割込み処理から他タスク２２の停止（実行状態から休止状態への移行）の要求があったとき、（３）実行状態のタスク２２から自タスク２２の待ち状態への移行の宣言があったとき、（４）実行状態のタスク２２または割込み処理から他タスク２２の待ち状態解除（待ち状態から実行可能状態への移行）の要求があったとき、（５）実行状態のタスク２２から自タスク終了の宣言があったとき、（６）実行可能状態のタスクに対し、実行状態のタスクのタスク優先度よりも高優先度のタスク優先度が設定されたとき（システムコール等）のうちのいずれか１つの条件が成立して、実行状態のタスク２２の優先度よりも優先度の高いレディキュー（の最後尾）にタスク情報格納領域情報が格納されるとき（接続されるタスクＦの優先度よりも優先度が低いタスクが実行状態であるとき）、または実行状態のタスク２２がレディキューから切り離されるとき（以下、「所定のスケジューリング条件が成立したとき」という）には、排他制御として、上記複数のＣＰＵ１〜ＣＰＵｎで実行中の全タスク２２…２２の実行権を解放させてＣＰＵ１〜ＣＰＵｎの全てを一時ＣＰＵアイドル状態（タスク非実行状態）とさせると共に、この解放される各タスク２２…２２の解放されるときの状態を当該各タスク２２…２２のタスク情報に記録した上で、ＣＰＵアイドル状態のＣＰＵ１〜ＣＰＵｎに、上記複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスク２２…２２のうちの、優先度の高いレディキューに格納されたタスク情報格納領域情報に係るタスク２２…２２を、該レディキューの先頭側から順に割り当てる。そして、タスク２２…２２を割り当てたＣＰＵ１〜ＣＰＵｎに、当該タスク２２…２２を、当該タスク２２…２２のタスク管理情報格納領域情報に基づいて実行させる。
【００５２】
なお、以後、説明の便宜上、レディキューにタスク管理情報格納領域情報が格納されていることを、レディキューにタスクＴ１〜Ｔ７が接続されているといい、レディキューからタスク管理情報格納領域情報を削除することを、レディキューからタスクを切り離すという。
【００５３】
次に、上記所定のスケジューリング条件が成立したときに行われるこのリアルタイムＯＳ２１によるスケジューリングについて、図５のフローチャートを用いて説明する。
【００５４】
まず、ステップＳ１で、割り当て対象のＣＰＵの番号ｃとして１を設定する。
なお、ＣＰＵ番号とは、上記ＣＰＵ１〜ＣＰＵｎの添字１〜ｎのことを意味する。次いで、ステップＳ２で、スケジューリング対象のレディキューの優先度ｋとして０を設定すると共に、ステップＳ３で、ｋに１を加算した後、ステップＳ４で、ｋが所定値ｍ以下か否かを判定し、その判定がＹＥＳのとき、すなわち、ｋが所定値ｍ以下のときは、さらに、ステップＳ５で、優先度ｋのレディキューにタスクが接続されているか否かを判定する。
【００５５】
そして、ステップＳ５の判定がＮＯのとき、すなわち、優先度ｋのレディキューにタスクが接続されていときは、ステップＳ３に戻り、以後の処理を繰り返す。ここで、ステップＳ４の所定値ｍは、ＯＳ２１が設定する優先度の最大値である。つまり、ｋが所定値ｍより大きくなったときは、全レディキューの検索が終了したわけであり、スケジューリングを終了する。
【００５６】
一方、上記ステップＳ５の判定がＹＥＳのとき、すなわち、優先度ｋのレディキューにタスクが存在するときは、ステップＳ６で、タスク順位ｐとして１を設定する。ここで、このタスク順位ｐは、優先度ｋのレディキュー上において対象タスクが先頭タスクから何番目に位置するかを示す値である。次いで、ステップＳ７で、優先度ｋのレディキューにおける先頭からｐ番目のタスクを、ＣＰＵ番号ｃのＣＰＵに割り当てる。
【００５７】
次いで、ステップＳ８で、ＣＰＵ番号ｃに１を加算すると共に、ステップＳ９で、ＣＰＵ番号ｃがＣＰＵ数ｎを超えているか否かを判定し、ＮＯのとき、すなわち超えているときは、ステップＳ１０で、タスク順位ｐに１を加算すると共に、ステップＳ１１で、タスク順位ｐが優先度ｋのレディキューに接続されたタスクの数よりも大きいか否かを判定する。そして、このステップＳ１１の判定がＹＥＳのとき、すなわち、タスク順位ｐが優先度ｋのレディキューに接続されたタスクの数よりも大きく、優先度ｋのレディキューにタスク順位ｐのタスクが存在しないときは、ステップＳ３に戻って以後の処理を繰り返し、ＮＯのときは、ステップＳ７に戻って以後の処理を繰り返す。
【００５８】
一方、上記ステップＳ９の判定がＹＥＳのとき、すなわち、ＣＰＵ番号ｃがＣＰＵ数ｎを超えたときは、全てのＣＰＵにタスクが割り当てられたわけであり、スケジューリングを終了する。
【００５９】
次に、図６〜図８を用いて、上記所定のスケジューリング条件が成立したときに行われる本ＯＳ２１によるスケジューリングの一例を説明する。なお、この説明に際しては、組込みコンピュータ１は、図２において、ｎ＝３の場合、すなわち、３つのＣＰＵ１，ＣＰＵ２，ＣＰＵ３を有するものとする。また、優先度１〜５の５つのレディキューを有するものとする。
【００６０】
まず、上記所定のスケジューリング条件が成立すると、ＣＰＵ１，２，３で実行中のタスクのタスク実行権が全て解放されると共に、実行中の各タスクのタスク実行権解放時の状態が各タスク毎に各タスク情報に記録される。なお、このとき、７つのセカンダリタスク２２…２２（以下、Ｔ１〜Ｔ７という）が実行可能状態になったものとする。具体的には、図３に示すように、優先度１のレディキューにタスクＴ１が、優先度３のレディキューにタスクＴ２、及びタスクＴ３が、優先度５のレディキューにタスクＴ４、タスクＴ５、及びタスクＴ６が、優先度６のレディキューにタスクＴ７がそれぞれ接続されているものとする。なお、優先度３のレディキューにはタスクは接続されていないものとする。タスクのタスク実行権が全て解放された結果、ＣＰＵ１，２，３の全てがＣＰＵアイドル状態となっている。
【００６１】
まず、ＯＳ２１は、これらのＣＰＵアイドル状態のＣＰＵ１，ＣＰＵ２，ＣＰＵ３のうち、ＣＰＵ１にタスクを割り当てるために、レディキューテーブルを優先度の高いレディキューから順に検索する。この検索の結果、図６に示すように、優先度１のレディキューにタスクＴ１が接続されているので、ＯＳ２１は、優先度１のレディキューの先頭のタスクＴ１をＣＰＵｌに割り当てる。つまり、タスクＴ１がＣＰＵ１によって実行されることとなる。
【００６２】
次に、ＯＳ２１は、ＣＰＵ２にタスクを割り当てるため、優先度１のレディキューの先頭から２番目にタスクが接続されているかを検索するが、タスクが接続されていないので、次いで、優先度２のレディキューを検索する。この検索の結果、優先度２のレディキューにはタスクが接続されていので、ＯＳ２１は、優先度２のレディキューの先頭のタスクＴ２をＣＰＵ２に割り当てる。つまり、タスクＴ２がＣＰＵ２によって実行されることとなる。
【００６３】
次に、ＯＳ２１は、ＣＰＵ３にタスクを割り当てるため、優先度２のレディキューの先頭から２番目にタスクが接続されているかを検索すると、タスクＴ３が接続されているので、ＯＳ２１は、優先度２のレディキューの先頭から２番目のタスクＴ３をＣＰＵ３に割り当てる。つまり、タスクＴ３がＣＰＵ３によって実行されることとなる。
【００６４】
そして、これにより、ＣＰＵ１，２，３の全てにタスクが割り当てられ、実行状態となったため、ＯＳ２１は、スケジューリングを終了する。
【００６５】
なお、タスク実行権が解放されていたタスクについては、該解放されたときの状態から再開されることとなる。
【００６６】
ここで、上記のように割り当てられて現在実行中の例えばタスクＴ１が、ＯＳ２１にメモリ１２に格納されているタスクＴ８の起動を要求し、該タスクＴ８がＯＳ２１によって優先度１のレディキューに接続されるときには、所定のスケジューリング条件が成立し、現在実行中のタスクＴ１，Ｔ２，Ｔ３のタスク実行権が解放されると共に、実行中のタスクＴ１，Ｔ２，Ｔ３のタスク実行権解放時の状態が各タスクＴ１，Ｔ２，Ｔ３毎に各タスク情報に記録され、ＣＰＵ１，２，３の全てがＣＰＵアイドル状態となって、スケジューリングが実行される。そして、この場合、前述したのと同様にレディキューテーブルが検索され、図７に示すように、まず、ＣＰＵ１にタスクＴ１が割り当てられ、次いで、ＣＰＵ２にタスクＴ８が割り当てられ、次いで、ＣＰＵ３にタスクＴ２が割り当てられることとなる。なお、この場合、タスクＴ１，Ｔ２については、タスク実行権が解放されたときの実行状態から再開される。
【００６７】
そして、例えば、上記のように割り当てられて現在実行中の例えばタスクＴ１の実行が終了し、タスクＴ１がＯＳ２１にタスクの実行終了の宣言をし、該ＯＳ２１によりレディキューからタスクＴ１が削除されるときには、所定のスケジューリング条件が成立し、現在実行中のタスクＴ２，Ｔ３のタスク実行権が解放されると共に、該実行中のタスクＴ２，Ｔ３のタスク実行権解放時の状態が各タスクＴ２，Ｔ３毎に各タスク情報に記録され、スケジューリングが実行される。そして、この場合、前述したのと同様にレディキューテーブルが検索され、図８に示すように、まず、ＣＰＵ１にタスクＴ８が割り当てられ、次いで、ＣＰＵ２にタスクＴ２が割り当てられ、次いで、ＣＰＵ３にタスクＴ３が割り当てられることとなる。なお、この場合、タスクＴ２，Ｔ３については、タスク実行権が解放されたときの実行状態から再開される。
【００６８】
以上のように、第１の実施の形態に係る組込みシステムによれば、実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行すべきタスクが即座にＣＰＵ１，２，３の全てに割り当てられて実行されることとなり、複数のＣＰＵ１，２，３を有する組込みコンピュータにおいても優先度の高いタスクのリアルタイム処理が確実に確保される。
【００６９】
また、複数のＣＰＵ１，２，３で実行中の複数のタスクのいずれかについて実行が終了したときには、このタスクの実行が完了したＣＰＵに即座にタスクが割り当てられて実行されることとなり、タスク処理が終了したＣＰＵにいつまでもタスクが割り当てられない状態が生じることがない。
【００７０】
つまり、複数のＣＰＵ１，２，３にタスクが適切に動的分散されて、各ＣＰＵの負荷のばらつきが少なくなると共に、優先度の高いタスクの迅速な処理が確保される。
【００７１】
また、全ＣＰＵ１，２，３にタスクが割り当て直されることとなるから、これらのＣＰＵ１，２，３に、確実に、処理の優先順位が最も高いタスクから順に割り当てられることとなる。
【００７２】
次に、本発明の第２の実施の形態について説明する。
【００７３】
この第２の実施の形態に係る組込みシステムは、第１の実施の形態に係る組込みシステムにおいて、優先度毎のレディキューに、該優先度のレディキューに接続されたタスクを処理するＣＰＵを関連付けしたものであり、以下、図９〜図１６を用いて説明する。
【００７４】
図９に示すように、この第２の実施の形態の組込みシステムを構成する組込みコンピュータ３１は、複数のＣＰＵ４１−１，ＣＰＵ４１−２，ＣＰＵ４１−３，…ＣＰＵ４１−ｎ（図１のＣＰＵＢ…Ｂに相当。以下、ＣＰＵ１，ＣＰＵ２，ＣＰＵ３，…ＣＰＵｎという）と、単一の共有メモリ４２（図１の記憶装置Ｃに相当）と、これらを接続する共有バス４３とを有する。
【００７５】
ＣＰＵ１及びＣＰＵ２は、他のＣＰＵが有する機能に加え、それぞれ、描画信号処理や音声処理等に適した特定の機能（これらの処理は一例である）を有する。
【００７６】
共有メモリ４２は、ＲＯＭ及びＲＡＭからなる。該共有メモリ４２には、請求項１から請求項３に記載の組込みコンピュータ制御プログラムを構成して、組込みコンピュータ１を図１に記載の各手段として機能させるリアルタイムオペレーティングシステム５１（以下、ＯＳ５１という）と、複数のタスク５２…５２（図１のタスクＦ…Ｆに相当）と、該ＯＳ５１に関する種々のパラメータや一時データ等からなるＯＳデータ５３とが格納されている。
【００７７】
ＯＳ５１は、上記共有メモリ４２からＣＰＵ１〜ＣＰＵｎ上にそれぞれ読み込まれて実行される。換言すれば、共有メモリ４２上に格納されているＯＳ５１は１つであるが、各ＣＰＵ１〜ＣＰＵｎ上で並行して実行され、各ＣＰＵ上で実行されるＯＳ５１により当該各ＣＰＵ上でのタスク５２の実行が制御されることとなる。なお、このＯＳ５１の機能の詳細については後述する。
【００７８】
ＯＳデータ５３は、上記複数のＣＰＵでそれぞれ実行されるＯＳ５１で共有のＯＳ共有データ５３ａと、上記複数のＣＰＵ上でそれぞれ実行されるＯＳ５１毎に固有の非共有データ５３ｂとからなる。ＯＳ共有データ５３ａには、複数のレディキュー（図１のレディキューＤ…Ｄに相当、図１０参照）を管理するレディキューテーブル（図１１参照）が含まれている。なお、その詳細については後述する。
【００７９】
ＯＳ５１は、ＣＰＵ１〜ＣＰＵｎがタスク５２…５２を実行しているときにはＣＰＵ実行状態と判定し、タスク５２…５２を実行していないときはＣＰＵアイドル状態（特許請求の範囲に記載のタスク非実行状態）と判定する。
【００８０】
タスク５２は、ＯＳ５１によって、実行状態、実行可能状態、待ち状態、休止状態のうちのいずれかの状態に制御される。ここで、実行状態とは、タスク５２がＯＳ５１によりＣＰＵ１〜ＣＰＵｎのうちのいずれかのＣＰＵに割り当てられて実行中の状態を意味し、実行可能状態とは、タスク５２の実行準備は整っているが、そのタスク５２よりも優先順位の高いタスク５２が実行中であるためそのタスク５２を実行できない状態を意味し、待ち状態とは、起動はされたがタスク５２の実行条件が整わないため実行できない状態を意味し、休止状態とは、タスク５２が起動されていない状態をいう。
【００８１】
上記タスク５２…５２の、例えば上記実行状態等の情報、タスク優先度等の情報を含むタスク管理情報（図１のタスク管理情報Ｈ…Ｈに相当）、は、ＯＳ５１によって、例えばＯＳ５１の起動時にタスク５２…５２の全てに対して作成され、上記メモリ４２上のＯＳ共有データ５３ａの一部として記憶される。
【００８２】
また、タスク５２…５２の実行の優先度は、ＯＳ５１によって、タスク重要性、緊急性、サイズ等に基づいて、例えばＯＳ５１の起動時にタスク５２…５２毎に設定され、上記タスク管理情報の一つの情報として上記メモリ４２上に記憶される。なお、この優先度は、タスク５２…５２がＯＳ５１に対して要求することにより、または、ＯＳ５１によって、起動後に変更してもよい。
【００８３】
図１０は、優先度毎に設けられたレディキューの一例を示す説明図であり、図１１は、このような優先度毎のレディキューの状態を管理するレディキューテーブルの構成を示す。このレディキューテーブルは、各レディキュー毎に、当該優先度のレディキューに接続されたタスクの次に接続されたタスクのタスク情報（タスク管理情報Ｈ…Ｈに相当に相当。タスクコントロールブロック）を格納している領域の上記メモリ４２上における先頭アドレス情報と、１つ前に接続されたタスクのタスク情報を格納している領域の先頭アドレス情報とからなるタスク管理情報格納領域情報と、その優先度のタスクを実行可能なＣＰＵの属性情報とを格納しており、ＯＳ５１の起動時に共有メモリ４２上のＯＳ共有データ４３ａの一部として作成される。換言すれば、ＯＳ２１の起動時に、異なる優先度を持つレディキューが複数作成されることとなる。また、各レディキューに、上記複数のＣＰＵ１〜ＣＰＵｎのうちのいずれのＣＰＵが当該優先度のレディキューに存在するタスクを実行すべきかの属性が関連付けられていることとなる。
【００８４】
なお、図１０は７つのタスク管理情報格納領域情報が格納されている状態を示したが、ＯＳ５１の起動時にはタスク管理情報格納領域情報は格納されておらず、例えば、タスク５２の実行条件が成立したときに、ＯＳ５１によって、上記複数のレディキューのうちの、当該タスク５２の優先度と同一優先度のレディキューの最後尾に格納され、タスク５２の実行が終了したときに、この実行が終了したタスク５２に係るタスク管理情報格納領域情報がレディキューから削除される。
【００８５】
この第２の実施の形態に係るレディキューのＣＰＵ属性情報を格納する領域は、図１２に示すように、３２ビットのビットフィールドからなる。ビットフィールド上の各ビットは固有の意味を有する。例えば、１ビット目から３１ビット目のいずれかのビットを１とすることは、そのビットに対応したＣＰＵの指定を意味し、３２ビット目を１とすることはＣＰＵ指定なし、すなわちいずれのＣＰＵにも割り当て可能であることを意味する。なお、１ビット目から３１ビット目までのビットについては複数のビットを１とすること（論理和指定）を可能とする。換言すれば複数のＣＰＵの指定を可能とする。
【００８６】
ここで、本実施の形態に係るＯＳ５１は、スケジューリング方式として、ＣＰＵ属性付イベントドリブン型タスク優先度順スケジューリング方式を採用している。このＣＰＵ属性付きイベントドリブン型タスク優先度順スケジューリング方式は、前述した図１０に示すように、イベントドリブン型タスク優先度順スケジューリング方式の優先度毎のレディキューに、該当レディキューに接続されたタスクを実行するＣＰＵの属性を付与することにより、特定のＣＰＵで特定のタスクを処理できるようにしたものである。なお、ＣＰＵ属性に基づく制御が追加されている点を除きイベントドリブン型タスク優先度順スケジューリングと基本制御は共通であるため、次に、第１の実施の形態で説明した上記所定のスケジューリング条件が成立したときに行われるこのリアルタイムＯＳ５１によるスケジューリングについて、図１３のフローチャートを用いて具体的に説明する。
【００８７】
まず、ステップＳ２１で、対象のＣＰＵのＣＰＵ番号ｃとして１を設定する。
【００８８】
なお、ＣＰＵ番号とは、上記ＣＰＵ１〜ＣＰＵｎの添字１〜ｎのことを意味する。次いで、ステップＳ２２で、スケジューリング対象のレディキューの優先度ｋとして０を設定すると共に、ステップＳ２３で、ｋに１を加算した後、ステップＳ２４で、ｋが所定値ｍ以下か否かを判定し、その判定がＹＥＳのとき、すなわち、ｋが所定値ｍ以下のときは、さらに、ステップＳ２５で、優先度ｋのレディキューのＣＰＵ属性が、タスクを割り当てようとしているＣＰＵと一致しているか、又はＣＰＵ属性がＣＰＵ指定なしかを判定すると共に、このステップＳ２５の判定がＹＥＳのときは、さらに、ステップＳ２６で、優先度ｋのレディキューにタスクが接続されているか否かを判定する。
【００８９】
そして、上記ステップＳ２５の判定がＮＯのとき、すなわち、優先度ｋのレディキューのＣＰＵ属性が、タスクを割り当てようとしているＣＰＵと一致せず、ＣＰＵ属性がＣＰＵ指定なしでもないとき、または、ステップＳ２６の判定がＮＯのとき、すなわち、優先度ｋのレディキューにタスクが接続されていないときは、ステップＳ２３に戻り、以後の処理を繰り返す。ここで、ステップＳ２４の所定値ｍは、ＯＳ５１が設定する優先度の最大値である。つまり、ｋが所定値ｍより大きくなったときは、全レディキューの検索が終了したわけであり、スケジューリングを終了する。
【００９０】
一方、上記ステップＳ２６の判定がＹＥＳのとき、すなわち、優先度ｋのレディキューにタスクが接続されているときは、ステップＳ２７で、タスク順位ｐとして１を設定する。ここで、このタスク順位ｐは、優先度ｋのレディキュー上において対象タスクが先頭タスクから何番目に位置するかを示す値である。次いで、ステップ２８で、この先頭からｐ番目のタスクがいずれかのＣＰＵに割り当て済か否かを判定する。
【００９１】
そして、このステップＳ２８の判定がＹＥＳのとき、すなわち、ｐ番目のタスクが割り当て済のときは、ステップＳ２９で、タスク順位ｐの値に１を加算すると共に、ステップＳ３０で、タスク順位ｐが優先度ｋのレディキューに接続されたタスクの数よりも大きいか否かを判定する。そして、このステップＳ３０の判定がＹＥＳのとき、すなわち、タスク順位ｐが優先度ｋのレディキューに接続されたタスクの数よりも大きく、優先度ｋのレディキューにタスク順位ｐのタスクが接続されていないときは、ステップＳ２３に戻って以後の処理を繰り返し、ＮＯのときは、ステップＳ２８に戻って以後の処理を繰り返す。
【００９２】
一方、上記ステップＳ２８の判定がＮＯのとき、すなわち、タスク順位ｐのタスクが割り当て済でないときは、ステップＳ３１で、優先度ｋのレディキューにおける先頭からｐ番目のタスクを、ＣＰＵ番号ｃのＣＰＵに割り当てる。
【００９３】
次いで、ステップＳ３２では、ＣＰＵ番号ｃに１を加算すると共に、ステップＳ３３で、ＣＰＵ番号ｃがＣＰＵ数ｎを超えたか否かを判定し、ＮＯのとき、すなわち超えていないときは、このＣＰＵ番号ｃのＣＰＵについてタスクを割り当てるために、ステップＳ２２以後の処理を繰り返す。一方、このステップＳ３３の判定がＹＥＳのとき、すなわち、ＣＰＵ番号ｃがＣＰＵ数ｎを超えたときは、全てのＣＰＵにタスクが割り当てられたわけであり、スケジューリングを終了する。
【００９４】
次に、図１４〜図１６を用いて、上記所定のスケジューリング条件が成立したときに行われる本ＯＳ５１によるスケジューリングの一例を説明する。なお、この説明に際しては、組込みコンピュータ３１は、図９において、ｎ＝３の場合、すなわち、３つのＣＰＵ１，ＣＰＵ２，ＣＰＵ３を有し、ＣＰＵ１、ＣＰＵ２はそれぞれ異なる特定の機能を有するものとする。また、優先度１〜５の５つのレディキューを有するものとする。また、優先度１及び優先度５のレディキューのＣＰＵ属性は、全ＣＰＵ（ＣＰＵ指定なし）とされ、優先度２のレディキューのＣＰＵ属性は、ＣＰＵ１指定とされ、優先度３及び優先度４のレディキューのＣＰＵ属性は、ＣＰＵ２指定とされているものとする。
【００９５】
まず、上記所定のスケジューリング条件が成立すると、ＣＰＵ１，２，３で実行中のタスクのタスク実行権が全て解放されると共に、実行中の各タスクのタスク実行権解放時の状態が各タスク毎に各タスク情報に記録される。なお、このとき、７つのセカンダリタスク５２…５２（以下、タスクＴ１〜Ｔ７という）が実行可能状態になったものとする。具体的には、図１４に示すように、優先度１のレディキューにタスクＴ１が、優先度２のレディキューにタスクＴ２、及びタスクＴ３が、優先度４のレディキューにタスクＴ４、タスクＴ５、及びタスクＴ６が、優先度５のレディキューにタスクＴ７がそれぞれ接続されているものとする。優先度３のレディキューにはタスクは接続されていないものとする。また、タスクの実行権が全て解放された結果、ＣＰＵ１，２，３の全てがＣＰＵアイドル状態となっている。
【００９６】
次に、ＯＳ５１は、これらのＣＰＵアイドル状態のＣＰＵ１，ＣＰＵ２，ＣＰＵ３のうち、まずＣＰＵ１にタスクを割り当てるために、レディキューテーブルを優先度の高いレディキューから順に検索する。この検索の結果、図１４に示すように、優先度１のレディキューはＣＰＵ属性が全ＣＰＵ（ＣＰＵ指定なし）で、かつ該レディキューにはタスクＴ１が接続されているので、ＯＳ５１は、優先度１のレディキューの先頭のタスクＴ１をＣＰＵｌに割り当てる。つまり、タスクＴ１がＣＰＵ１によって実行されることとなる。ここで、優先度１のレディキューのＣＰＵ属性が全ＣＰＵとされているのは、緊急を要する様々なタスクを即座に処理できるようにすることを目的としている。
【００９７】
次に、ＯＳ５１は、ＣＰＵ２にタスクを割り当てるため、レディキューテーブルを優先度の高いレディキューから順に検索する。この検索の結果、優先度１のレディキューはＣＰＵ属性が全ＣＰＵ（ＣＰＵ指定なし）であるが、優先度１のレディキューに接続されているタスクＴ１がＣＰＵ１に割り当てられたため他に割り当てるべきタスクが存在せず、優先度２のレディキューはＣＰＵ属性がＣＰＵ１指定でＣＰＵ属性が一致せず、優先度３のレディキューはＣＰＵ属性がＣＰＵ２指定でＣＰＵ属性が一致するがタスクが存在せず、優先度４のレディキューはＣＰＵ属性がＣＰＵ２指定でＣＰＵ属性が一致し、かつタスクＴ４，Ｔ５，Ｔ６が接続されているので、ＯＳ５１は、優先度４のレディキューの先頭のタスクＴ４をＣＰＵ２に割り当てる。つまり、タスクＴ４がＣＰＵ２によって実行されることとなる。
【００９８】
次に、ＯＳ５１は、ＣＰＵ３にタスクを割り当てるため、レディキューテーブルを優先度の高いレディキューから順に検索する。この結果、優先度１のレディキューはＣＰＵ属性が全ＣＰＵ（ＣＰＵ指定なし）であるが、優先度１のレディキューに接続されているタスクＴ１がＣＰＵ１に割り当てられたため他に割り当てるべきタスクが存在せず、優先度２のレディキューはＣＰＵ属性がＣＰＵ１指定でＣＰＵ属性が一致せず、優先度３のレディキューはＣＰＵ属性がＣＰＵ２指定でＣＰＵ属性が一致せず、優先度４のレディキューはＣＰＵ属性がＣＰＵ２指定でＣＰＵ属性が一致せず、優先度５のレディキューはＣＰＵ属性が全ＣＰＵでかつタスクＴ７が存在するので、ＯＳ５１は、優先度５のレディキューの先頭のタスクＴ７をＣＰＵ３に割り当てる。つまり、タスクＴ７がＣＰＵ３によって実行されることとなる。
【００９９】
そして、これにより、ＣＰＵ１，２，３の全てにタスクが割り当てられ、実行状態となったため、セカンダリＯＳ５１は、スケジューリングを終了する。
【０１００】
なお、タスク実行権が解放されていたタスクについては、該解放されたときの状態から再開されることとなる。
【０１０１】
ここで、上記のように割り当てられて現在実行中の例えばタスクＴ１が、ＯＳ５１にメモリ４２に格納されているタスクＴ８の起動を要求し、該タスクＴ８がＯＳ５１によって優先度１のレディキューに接続されるときには、所定のスケジューリング条件が成立し、現在実行中のタスクＴ１，Ｔ４，Ｔ７のタスク実行権が解放されると共に、実行中のタスクＴ１，Ｔ４，Ｔ７のタスク実行権解放時の状態が各タスクＴ１，Ｔ４，Ｔ７毎に各タスク情報に記録され、ＣＰＵ１，２，３の全てがＣＰＵアイドル状態となって、スケジューリングが実行される。そして、この場合、前述したのと同様にレディキューテーブルが検索され、図１５に示すように、まず、ＣＰＵ１にタスクＴ１が割り当てられ、次いで、ＣＰＵ２にタスクＴ８が割り当てられ、次いで、ＣＰＵ３にタスクＴ７が割り当てられることとなる。なお、この場合、タスクＴ１，Ｔ３については、タスク実行権が解放されたときの状態から再開される。
【０１０２】
そして、例えば、上記のように割り当てられて現在実行中の例えばタスクＴ１の実行が完了し、タスクＴ１がＯＳ５１にタスクの実行終了の宣言をし、該ＯＳ５１によりレディキューからタスクＴ１が削除されるときには、所定のスケジューリング条件が成立し、現在実行中のタスクＴ８，Ｔ７のタスク実行権が解放されると共に、該実行中のタスクＴ８，Ｔ７のタスク実行権解放時の状態が各タスクＴ８，Ｔ７毎に各タスク情報に記録され、スケジューリングが実行される。そして、この場合、前述したのと同様にレディキューテーブルが検索され、図１６に示すように、まず、ＣＰＵ１にタスクＴ８が割り当てられ、次いで、ＣＰＵ２にタスクＴ４が割り当てられ、次いで、ＣＰＵ３にタスクＴ７が割り当てられることとなる。なお、この場合、タスクＴ４，Ｔ７については、タスク実行権が解放されたときの状態から再開される。
【０１０３】
ここで、優先度２のレディキューに接続されているタスクは、ＣＰＵ１のみが有する特定の機能を利用しないと処理できないタスク（特定タスク）、またはＣＰＵ１のみが有する特定の機能を利用して処理することにより他のＣＰＵで処理するよりも処理の迅速化が図れるタスク（特定タスク）である。そのため、ＣＰＵ１の特定機能を利用する上記特定タスクは、ＣＰＵ指定なしのレディキューには接続せず、ＣＰＵ属性がＣＰＵ１指定の上記優先度２のレディキュー（特定レディキュー）に接続するようにしている。なお、ＣＰＵ１の特定機能を利用する特定タスクであっても、例えば、該優先度２の特定レディキューにタスクが多数存在し、他のＣＰＵでも処理可能であるときは、タスクの優先度を変更して他の優先度のレディキューに接続するようにしてもよい。
【０１０４】
また、優先度３，４のレディキューに接続されているタスクは、ＣＰＵ２のみが有する特定の機能を利用しないと処理できないタスク、またはＣＰＵ２のみが有する特定の機能を利用して処理することにより他のＣＰＵで処理するよりも処理の迅速化が図れるタスクである。そのため、ＣＰＵ２の特定機能を利用する上記特定のタスクは、ＣＰＵ指定なしのレディキューには接続せず、ＣＰＵ属性がＣＰＵ２指定の優先度３のレディキュー（特定レディキュー）または優先度４のレディキュー（特定レディキュー）に接続するようにしている。なお、ＣＰＵ２の特定機能を利用する特定のタスクであっても、例えば、該優先度３，４のレディキューにタスクが多数あり、他のＣＰＵでも処理可能であるときは、タスクの優先度を変更して他の優先度のレディキューに接続するようにしてもよい。
【０１０５】
以上のように  第２の実施の形態に係る組込みシステムによれば、第１の実施の形態で説明した作用・効果に加え、特定タスクの処理は特定ＣＰＵでしかできないような場合に、特定タスクが、当該タスクを処理することができないＣＰＵに割り当てられることがない。また、特定タスクの処理は特定ＣＰＵ以外のＣＰＵでもできるが特定ＣＰＵで処理すればよりタスク処理速度の向上が望めるような場合に、当該特定タスクを当該タスクの実行に適した特定ＣＰＵによって処理することができ、この結果、特定タスクの処理速度の向上等が図れる。
【０１０６】
なお、特定レディキューより優先度が高いレディキューにタスクが存在する場合に、特定ＣＰＵのアイドル状態が検出されたときは、当該優先度が高いレディキューのタスクを特定ＣＰＵに割り当てるようにしてもよいし、特定レディキューに存在するタスクを、優先度が高いレディキューに存在するタスクに優先して特定ＣＰＵに割り当てるようにしてもよい。また、特定レディキューには特定タスクのみ接続するようにしてもよいし、特定タスク以外のタスクも接続するようにしてもよい。
【０１０７】
次に、本発明の第３の実施の形態について説明する。
【０１０８】
この第３の実施の形態に係る組込みシステムは、第２の実施の形態に係る組込みシステムにおいて、外部割込み等を処理する専用ＣＰＵを新たに設けると共に、第２の実施の形態に係る複数のＣＰＵ上で実行されるリアルタイムオペレーティングシステムとは別に、専用ＣＰＵ上で実行されるリアルタイムオペレーティングシステムを設けたものであり、以下図１７〜図１８を用いて説明する。
【０１０９】
図１７に示すように、この組込みコンピュータ６１は１つのプライマリＣＰＵ７０（以下、Ｍ−ＣＰＵという）と、複数のセカンダリＣＰＵ７１−１，７１−２，７１−３〜７１−ｎ（以下、Ｓ−ＣＰＵ１，Ｓ−ＣＰＵ２，Ｓ−ＣＰＵ３〜Ｓ−ＣＰＵｎという）と、単一の共有メモリ７２と、これらを接続する共有バス７３とを有する。
【０１１０】
Ｓ−ＣＰＵ１及びＳ−ＣＰＵ２は、他のＳ−ＣＰＵが有する機能に加え、それぞれ、描画信号処理や音声処理等に適した特定の機能（これらの処理は一例である）を有する。また、Ｍ−ＣＰＵは、Ｓ−ＣＰＵが有しない外部信号処理に係る特定の機能（例えば、組込みコンピュータ６１の外部機器からの割り込み信号受信機能等の信号処理機能）を有する。つまり、外部機器に係る信号処理はＳ−ＣＰＵでなく、Ｍ−ＣＰＵで行われる。
【０１１１】
共有メモリ７２は、ＲＯＭ及びＲＡＭからなる。該共有メモリ７２には、請求項１〜請求項４に記載の組込みコンピュータ制御プログラムを構成して、組込みコンピュータ６１を図１に記載の各手段等として機能させるリアルタイムオペレーティングシステム８１（以下、ＯＳ８１という）と、複数のタスク８２ａ…８２ａ，８２ｂ…８２ｂと、該ＯＳ８１に関する種々のパラメータや一時データ等からなるＯＳデータ８３とが格納されている。
【０１１２】
ＯＳ８１は、プライマリＯＳ８１ａと、セカンダリＯＳ８１ｂとからなる。プライマリＯＳ８１ａは、上記共有メモリ７２からＭ−ＣＰＵ上に読み込まれて実行され、セカンダリＯＳ８１ｂは、上記共有メモリ７２からＳ−ＣＰＵ１〜Ｓ−ＣＰＵｎ上にそれぞれ読み込まれて実行される。換言すれば、共有メモリ７２上に格納されているセカンダリＯＳ８１ｂは１つであるが、各Ｓ−ＣＰＵ１〜Ｓ−ＣＰＵｎ上でセカンダリＯＳが並行して実行されることとなる。なお、プライマリＯＳ８１ａは、レディキューの構成、スケジューリング方式が、第１の実施の形態に係るＯＳ２１と同一とされ、セカンダリＯＳ８１ｂは、レディキューの構成、スケジューリング方式が、第２の実施の形態に係るＯＳ５１と同一とされている。そのため、以後、ＯＳ８１ａ，８１ｂの説明にあたっては、これらのＯＳ８１ａ，８１ｂ間の制御を主に説明する。
【０１１３】
ＯＳデータ８３は、プライマリＯＳ８１ａ固有のプライマリＯＳデータ８３ａと、上記複数のＳ−ＣＰＵ上で実行されるセカンダリＯＳ８１ｂで共有のセカンダリＯＳ共有データ８３ｂと、上記複数のＳ−ＣＰＵ上で実行されるセカンダリＯＳ８１ｂ毎に固有のセカンダリＯＳ非共有データ８３ｃとからなる。マスタＯＳデータ８３ａには、複数のレディキュー（前述の図３と同様のもの）を管理するレディキューテーブル（前述の図４と同様のもの）が含まれている。また、スレーブＯＳ共有データ８３ａには、複数のレディキュー（前述の図１０と同様のもの）を管理するレディキューテーブル（前述の図１１と同様のもの）が含まれている。なお、前述のようにプライマリＯＳ８１ａ用のレディキュー及びレディキューテーブルの構成は第１の実施の形態に係るレディキューと同構成とされ、セカンダリＯＳ８１ｂ用のレディキューは第２の実施の形態に係るレディキュー及びレディキューテーブルと同構成とされており、その詳細な説明は省略する。なお、セカンダリＯＳ８１ｂ用のレディキューのＣＰＵ属性については、図１０、図１１においてＣＰＵをＳ−ＣＰＵと読み替えればよい。
【０１１４】
複数のプライマリタスク８２ａ…８２ａは、プライマリＯＳ８１ａが処理するタスクであり、複数のセカンダリタスク８２ｂ…８２ｂは、セカンダリＯＳ８１ｂが処理するタスクである。プライマリタスク８２ａは、セカンダリＯＳ８１ｂに対してセカンダリタスク８２ｂの実行制御のための各種要求を行うためのタスクであってプライマリＯＳ８１ａ上でのみ実行される。セカンダリタスク８２ｂは、それ以外のタスクであってセカンダリＯＳ８１ｂ上でのみ実行される。
【０１１５】
プライマリＯＳ８１ａは、キーやスイッチ等からの外部割込みの処理、及び各Ｓ−ＣＰＵ上のセカンダリＯＳ８１ｂの状態（実行状態であるかアイドル状態であるか）を管理、把握すると共に、この把握した状態に基づいてセカンダリタスク８２ｂの実行制御を行う。具体的には、各Ｓ−ＣＰＵ上のセカンダリＯＳ８１ｂ用の初期セカンダリタスク８２ｂの登録及び実行要求、並びにセカンダリタスク８２ｂの起動要求及び停止要求をセカンダリＯＳ８１ｂに対して行う。なお、プライマリＯＳ８１ａは、セカンダリＯＳ８１ｂに対するこれらの要求を、プライマリタスク８２ａを介して行う。セカンダリＯＳ８１ｂは、プライマリＯＳ８１ａからの上記各種要求に応じて、セカンダリタスク８２ｂを実行する。
【０１１６】
各ＯＳ８１ａ，８１ｂは、ＣＰＵがタスクを実行しているときにはＣＰＵ実行状態と判定し、タスクを実行していないときはＣＰＵアイドル状態（特許請求の範囲に記載のタスク非実行状態）と判定する。
【０１１７】
プライマリタスク８２ａ及びセカンダリタスク８２ｂは、ＯＳ８１ａ，８１ｂによって、実行状態、実行可能状態、待ち状態、休止状態のうちのいずれかの状態に制御される。
【０１１８】
Ｓ−ＣＰＵ上で実行中のセカンダリＯＳ８１ｂは、Ｍ−ＣＰＵ上で実行中のプライマリタスク８２ａまたはＭ−ＣＰＵ上で実行中の割込み処理から、セカンダリタスク８２ｂの起動、停止、または待ち状態の解除の要求を受けたときは、Ｓ−ＣＰＵ１〜Ｓ−ＣＰＵｎ上で実行中のタスクのタスク実行権を全て解放させて、スケジューリングを行う。
【０１１９】
また、Ｓ−ＣＰＵ上で実行中のセカンダリＯＳ８１ｂは、あるＳ−ＣＰＵ上で実行中のセカンダリタスク８２ｂまたはＳ−ＣＰＵ上で実行中の割込み処理から、他のセカンダリタスク８２ｂの起動、停止、または待ち状態の解除の要求を受けたとき、及びこの実行中のセカンダリタスク８２ｂが待ち状態となるときは、Ｓ−ＣＰＵ１〜Ｓ−ＣＰＵｎ上で実行中のタスクのタスク実行権を全て解放させて、スケジューリングを行う。
【０１２０】
なお、前述のように、プライマリＯＳ８１ａのスケジューリング方式及びレディキューの構成は、第１の実施の形態に係るＯＳ２１と同一とされ、セカンダリＯＳ８１ｂのスケジューリング方式及びレディキューの構成は、第２の実施の形態に係るＯＳ５１と同一とされているため、プライマリＯＳ８１ａのスケジューリングについては図５のフローチャートを参照すればよく、セカンダリＯＳ８１ｂのスケジューリングについては図１３のフローチャートを参照すればよい。なお、プライマリＯＳ８１ａによりスケジューリングされるのは、Ｍ−ＣＰＵだけであり、ＣＰＵ番号ｃが１でスケジューリング終了となる。また、セカンダリＯＳ８１ｂによりスケジューリングされるのは、Ｓ−ＣＰＵ１〜Ｓ−ＣＰＵｎであり、図１３のＣＰＵをＳ−ＣＰＵと読み替えればよい。
【０１２１】
なお、セカンダリＯＳ８１ｂは、このスケジューリング中にプライマリタスク８２ａがセカンダリタスク８２ｂの状態変化要求を出すのを防止するため、プライマリＯＳ８１ａに対して、Ｍ−ＣＰＵ上で実行中のタスクおよび割込み処理の一時停止の要求を出す。
【０１２２】
スケジューリングを行うために各ＯＳ８１ａ，８２ａからレディキュー等の各ＯＳの共有データを操作するとき等には、ＯＳ８１ａ，８１ｂ間の排他制御として、プライマリＯＳ８１ａによるセカンダリＯＳ８１ｂの停止制御、並びにセカンダリＯＳ８１ｂによるプライマリＯＳ８１ａ及び他セカンダリＯＳ８１ｂの停止制御が行われる。プライマリＯＳ８１ａによるセカンダリＯＳ８１ｂの停止制御は、セカンダリＯＳ８１ｂによるプライマリＯＳ８１ａ及び他セカンダリＯＳ８１ｂの停止制御よりも実行優先順位が高くされている。
【０１２３】
この排他制御用として、リアルタイムＯＳ８１は、プライマリＯＳ８１ａ及び各セカンダリＯＳ８１ｂから参照可能なセカンダリＯＳ共有データ８３ｂに、排他制御要求用のフラグを格納する。具体的には、Ｓ−ＣＰＵ数分（セカンダリＯＳ８１ｂ数分）のプライマリＯＳ用セカンダリ停止要求フラグと、これと同数のプライマリＯＳ用セカンダリ停止応答フラグとを格納し、プライマリＯＳ８１ａは、これらのフラグを用いてセカンダリＯＳ８１ｂ上で実行中のタスクの停止制御を行う。また、Ｓ−ＣＰＵ毎に（Ｓ−ＣＰＵ上の各セカンダリＯＳ８１ｂ毎に）、Ｓ−ＣＰＵ数分（セカンダリＯＳ８１ｂ数分）のセカンダリＯＳ用セカンダリ停止要求フラグと、これと同数のセカンダリＯＳ用セカンダリ停止応答フラグとを有し、セカンダリＯＳ８１ｂは、これらのフラグを用いてプライマリＯＳ８１ａおよび他セカンダリＯＳ８１ｂの停止制御を行う。
【０１２４】
次に、ＯＳ８１による制御の具体例について説明する。なお、この説明に際しては、組込みコンピュータ６１は、図１７において、ｎ＝３の場合、すなわち、１つのＭ−ＣＰＵ、及び３つのＳ−ＣＰＵ，Ｓ−ＣＰＵ２，Ｓ−ＣＰＵ３を有するものとする。
【０１２５】
まず、図１８を用いて、この組込みコンピュータ６１の電源が投入された後の各ＯＳ８１ａ，８１ｂの起動及びタスクの処理について説明する。
【０１２６】
組込みコンピュータ６１の電源が投入された場合、Ｍ−ＣＰＵ、及びＳ−ＣＰＵ１，Ｓ−ＣＰＵ２，Ｓ−ＣＰＵ３は、まず、共有メモリ７２のリセットベクタの命令及びデータを読み込む。この結果、Ｍ−ＣＰＵ上ではプライマリＯＳ８１ａが、Ｓ−ＣＰＵ１，Ｓ−ＣＰＵ２，Ｓ−ＣＰＵ３上ではセカンダリＯＳ８１ｂがそれぞれ同時に起動する。
【０１２７】
そして、この起動時に、プライマリＯＳ８１ａは、初期起動タスクとしてプライマリタスク８２ｂを静的に生成してプライマリＯＳ８１ａ用のレディキューに接続し、スケジューリングを行う。そして、このスケジューリングの結果、プライマリＯＳ８１ａによりＭ−ＣＰＵにこのプライマリタスク８２ｂが割り当てられ、Ｍ−ＣＰＵ上で初期起動タスクとしてのプライマリタスク８２ｂが実行されることとなる。ここで、この初期起動タスクは、Ｓ−ＣＰＵ１，Ｓ−ＣＰＵ２，Ｓ−ＣＰＵ３上で実行すべき初期起動タスクとしてのセカンダリタスク８２ｂ…８２ｂ（図１８では、タスクＡ，Ｂ，Ｃと記載）を生成し、この生成されたセカンダリタスク８２ｂ…８２ｂ（タスクＡ，Ｂ，Ｃ）の起動要求を、各Ｓ−ＣＰＵ１，Ｓ−ＣＰＵ２，Ｓ−ＣＰＵ３上で実行されるセカンダリＯＳ８１ｂに出力する。
【０１２８】
一方、各Ｓ−ＣＰＵ上のセカンダリＯＳ８１ｂは、起動後すぐにアイドル状態に移行する。そして、上記プライマリタスク８２ａからのセカンダリタスク８２ｂ（タスクＡ，Ｂ，Ｃ）の起動要求を待ち、起動要求を受けたときに、順次、セカンダリタスク８２ｂ…８２ｂ（タスクＡ，Ｂ，Ｃ）を起動する。起動の際に、どのＳ−ＣＰＵがどのセカンダリタスク８２ｂ…８２ｂ（タスクＡ，Ｂ，Ｃ）を実行するかについては、セカンダリＯＳ８１ｂがスケジューリングを行なって決定する。
【０１２９】
なお、上記所定のスケジューリング条件が成立したときに行われる本リアルタイムＯＳ８１によるスケジューリングの作用は、プライマリＯＳ８１ａの場合、基本的に第１の実施の形態に係るＯＳ２１と同様であるが、ＣＰＵがＭ−ＣＰＵ１つであることから、タスクが接続されたレディキューのうちの最も優先度の高いレディキューの先頭に接続されたタスクが実行されることとなる。つまり、先頭のタスクの実行が終了すると、先頭から２番目に接続されたタスク、もしくはそれよりも低い優先度のうち最も高い優先度のレディキューの先頭に接続されているタスクが実行されることとなる。例えば、図３のようにレディキューにタスクが接続されているものとすると、まずタスクＴ１が実行され、このタスクＴ１の実行が終了すると、次に、タスクＴ２が実行され、このタスクＴ２の実行が終了すると、次にタスクＴ３が実行されというように、１つのＭ−ＣＰＵで順次実行されることとなる。
【０１３０】
一方、セカンダリＯＳ８１ｂの場合、その作用は第２の実施の形態と同様となるため、その説明は省略する。
【０１３１】
その場合に、本第３の実施の形態によれば、例えば、Ｍ−ＣＰＵが外部からの割り込み信号を受信したときに、該割り込み信号が例えばセカンダリタスク８２ｂの起動に関するものであれば、これに関する割り込みハンドラが起動され、該割り込みハンドラからプライマリＯＳ８１ａにセカンダリタスク８２ｂの起動要求を行うプライマリタスク８２ａの起動要求が行われる。そして、プライマリＯＳ８１ａによって起動されて実行状態となったプライマリタスク８２ａが、セカンダリＯＳ８１ｂに上記セカンダリタスク８２ｂの起動要求を行い、この結果、このセカンダリタスク８２ｂがセカンダリＯＳ８２ｂによって起動されて実行されることとなる。
【０１３２】
つまり、外部割込みを伴う処理が専用に確保されたＭ−ＣＰＵで迅速に実行されると共に、セカンダリタスクの実行制御等組込みシステム全体に係る処理がやはり専用に確保されたＭ−ＣＰＵで迅速に実行され、この結果、組込みシステム全体のタスク処理が迅速に行われることとなる。また、Ｓ−ＣＰＵに外部割込みに伴うタスクを処理するための機能を設ける必要がない。
【０１３３】
以上のように、第３の実施の形態に係る組込みシステムによれば、上記第１及び第２の実施の形態で説明した作用・効果に加え、リアルタイムＯＳ８１には、複数のＳ−ＣＰＵ１，２，３及びメモリ７２を含む第１の部分を請求項１から請求項３のいずれかに記載の各手段として機能させるセカンダリＯＳ８１ｂ（第１の制御部）に加えて、外部割り込み処理機能を有するＭ−ＣＰＵ（専用ＣＰＵ）及びメモリ７２を含む第２の部分を、複数のセカンダリタスク８２ｂ（第１の複数のタスク）の起動、停止をセカンダリＯＳ８１ｂに要求する複数のプライマリタスク８２ａ（第２の複数のタスク）を制御する手段として機能させるプライマリＯＳ８１ａ（第２の制御部）が備えられているから、Ｍ−ＣＰＵで外部割込み処理が処理されるようになり、他の複数のＳ−ＣＰＵ１，２，３の外部割込み処理負荷が解消される。また、プライマリＯＳ８１ａでセカンダリＯＳ８１ｂを状況に応じて制御することができる。また、プライマリＯＳ８１ａはセカンダリＯＳ８１ｂとはほぼ同じ構成であるから、Ｍ−ＣＰＵで外部割込み処理を行う仕組みを容易に構築することができると共に、プライマリＯＳ８１ａでセカンダリＯＳ８１ｂをそれぞれの機能にあわせて最適化することができる。
【産業上の利用可能性】
【０１３４】
本発明は、複数のＣＰＵを有する組込みシステムに広く適用することができる。
【図面の簡単な説明】
【０１３５】
【図１】本発明の実施の形態に係る組込みシステムのブロック図である。
【図２】本発明の第１の実施の形態に係る組込みシステムのハードウェア構成図である。
【図３】同組込みシステムを機能させるリアルタイムオペレーティングシステムのレディキューの説明図である。
【図４】同オペレーティングシステムのレディキューテーブルの構成図である。
【図５】同オペレーティングシステムによるタスクスケジューリングのフローチャートの一例である。
【図６】同オペレーティングシステムによるタスクスケジューリングの作用の説明図である（その１）。
【図７】同オペレーティングシステムによるタスクスケジューリングの作用の説明図である（その２）。
【図８】同オペレーティングシステムによるタスクスケジューリングの作用の説明図である（その３）。
【図９】本発明の第２の実施の形態に係る組込みシステムのハードウェア構成図である。
【図１０】同組込みシステムを機能させるリアルタイムオペレーティングシステムのレディキューの説明図である。
【図１１】同オペレーティングシステムのレディキューテーブルの構成図である。
【図１２】同オペレーティングシステムのレディキューテーブルのＣＰＵ属性指定の説明図である。
【図１３】同オペレーティングシステムによるタスクスケジューリングのフローチャートの一例である。
【図１４】同オペレーティングシステムによるタスクスケジューリングの作用の説明図である（その１）。
【図１５】同オペレーティングシステムによるタスクスケジューリングの作用の説明図である（その２）。
【図１６】同オペレーティングシステムによるタスクスケジューリングの作用の説明図である（その３）。
【図１７】本発明の第３の実施の形態に係る組込みシステムのハードウェア構成図である。
【図１８】同オペレーティングシステムが適用された組込みシステムの起動時の作用の説明図である。
【符号の説明】
【０１３６】
１，３１，６１            組込みコンピュータ
１１−１〜１１−ｎ，４１−１〜４１−ｎ，７０，７１−１〜７１−ｎ    ＣＰＵ
１２，４２，７２          共有メモリ（第１記憶装置、第２記憶装置、第３記憶装置、第４記憶装置、第５記憶装置、第６記憶装置）
２１，５１，８１          リアルタイムオペレーティングシステム（制御プログラム）
２２，５２，８２          タスク
７０                      プライマリＣＰＵ
７１−１〜７１−ｎ        セカンダリＣＰＵ
８１ａ                    プライマリＯＳ（第２の制御部）
８１ｂ                    セカンダリＯＳ（第１の制御部）
【図１】
2005327007.tif 000003
【図２】
2005327007.tif 000004
【図３】
2005327007.tif 000005
【図４】
2005327007.tif 000006
【図５】
2005327007.tif 000007
【図６】
2005327007.tif 000008
【図７】
2005327007.tif 000009
【図８】
2005327007.tif 000010
【図９】
2005327007.tif 000011
【図１０】
2005327007.tif 000012
【図１１】
2005327007.tif 000013
【図１２】
2005327007.tif 000014
【図１３】
2005327007.tif 000015
【図１４】
2005327007.tif 000016
【図１５】
2005327007.tif 000017
【図１６】
2005327007.tif 000018
【図１７】
2005327007.tif 000019
【図１８】
2005327007.tif 000020