JP3893136B2 - 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム - Google Patents

組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム Download PDF

Info

Publication number
JP3893136B2
JP3893136B2 JP2004143253A JP2004143253A JP3893136B2 JP 3893136 B2 JP3893136 B2 JP 3893136B2 JP 2004143253 A JP2004143253 A JP 2004143253A JP 2004143253 A JP2004143253 A JP 2004143253A JP 3893136 B2 JP3893136 B2 JP 3893136B2
Authority
JP
Japan
Prior art keywords
task
priority
executed
storage area
cpu
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.)
Expired - Fee Related
Application number
JP2004143253A
Other languages
English (en)
Other versions
JP2005327007A (ja
Inventor
信次 柴田
努 安陵
Original Assignee
ファームウェアシステム株式会社
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 ファームウェアシステム株式会社 filed Critical ファームウェアシステム株式会社
Priority to JP2004143253A priority Critical patent/JP3893136B2/ja
Publication of JP2005327007A publication Critical patent/JP2005327007A/ja
Application granted granted Critical
Publication of JP3893136B2 publication Critical patent/JP3893136B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明は、複数のCPUを有する組込みコンピュータの制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステムに関し、タスクの動的分散の技術分野に属する。
従来より、家電製品や産業機器等に組込まれてこれらの作動を制御する機器組込み制御システム(組込みシステム)としては、単一のCPUやメモリ(記憶装置)等を有するコンピュータを、例えばTRON仕様等のリアルタイムオペレーティングシステム(制御プログラム)により制御するようにしたものが広く知られている。
このリアルタイムオペレーティングシステムは、メモリ(記憶装置)に記憶された複数のタスク(プログラムの並行実行の単位)のうちの実行すべきタスクを、異なる優先度が設定された複数のレディキューのうちの所定のレディキューに接続し、かつ、この接続されたタスクの優先度が実行中のタスクの優先度よりも高いときにはこの接続されたタスクをCPUに割り当てると共に、この接続されたタスクの優先度が実行中のタスクの優先度よりも低いときには現在実行中のタスクの処理が終了したときに、タスクが接続されたレディキューのうちの最も優先度の高いレディキューの先頭に接続されたタスクをCPUに割り当てるように構成されており、これにより、優先度の高いタスクのリアルタイムな処理を可能としている。
ところで、近年、組込みシステム分野においては、上記家電製品や産業機器等の機能の高度化等に伴って処理対象データ量が増大しており、これに対処するため組込みシステムの処理能力の向上が要求されるようになってきている。
組込みシステムの処理能力を向上させる方策としては、組込みシステム以外の分野において既に採用されているように複数のCPUを用いることが考えられる(特許文献1参照)。
特開平11−53327号公報
しかしながら、特許文献1に記載のシステムにおいては、実行すべきタスクを接続するキューはCPU毎に専用のものが1つずつ設けられているだけであり、優先度の異なる複数のキューを有するリアルタイムオペレーティングシステムとは前提とする構成が大きく異なり、参考とすることができない。
特に、このように複数のCPUを用いても、各CPUに負荷を適切に分散しないと、例えば、実行すべきタスクは多くあるにも拘わらず、あるCPUにはタスクが割り当てられていない等の状態が生じ、CPUの複数化による処理能力向上効果を十分に発揮させることができない。また、複数のCPUを用いる場合、優先度の高いタスクを如何に迅速にCPUに割り当てるかという課題がある。
そこで、本発明は、複数のCPUを有する組込みシステムにおいて、各CPUにタスクを適切に動的分散することができると共に、優先度の高いタスクを迅速に処理することができるシステム及びプログラム等を提供することを課題とする。
上記課題を解決するために、本発明は、次のように構成したことを特徴とする。
まず、本願の請求項1に記載の発明(以下、第1発明という)は、複数のCPUと、該複数のCPUで共用の第1、第2、第3記憶装置とを有する組込みコンピュータを制御するプログラムであって、コンピュータを、上記第1記憶装置上に、上記各CPUで共用とされて異なる優先度が設定された複数のレディキューを作成するレディキュー作成手段、上記第2記憶装置に記憶されている複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定するタスク優先度設定手段、上記第3記憶装置上に、上記複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成するタスク管理情報作成手段、該タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第3記憶装置上における格納領域の情報を、上記レディキュー作成手段で作成された複数のレディキューのうちの、上記タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納するタスク管理情報格納領域情報格納手段、上記複数のCPUで実行中のタスクのうちのいずれかのタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除するタスク管理情報格納領域情報削除手段、上記タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中の全タスクのタスク実行権を解放させて全CPUを一時タスク非実行状態とさせるタスク実行権解放手段、該タスク実行権解放手段で全タスクのタスク実行権が解放されるときに、この解放される各タスクの状態を当該各タスクのタスク管理情報に記録するタスク実行権解放時状態記録手段、上記タスク実行権解放手段でタスク非実行状態とされた各CPUに、上記複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューに格納されたタスク情報格納領域情報に係るタスクを、該レディキューの先頭側から順に割り当てるタスク割り当て手段、該タスク割り当て手段でタスクを割り当てたCPUに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させるタスク実行手段として機能させることを特徴とする。
また、本願の請求項2に記載の発明(以下、第2発明という)は、第1発明に係る組込みコンピュータ制御プログラムにおいて、コンピュータをタスク実行権解放手段として機能させるときに、タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるとき、または実行が終了したタスクに係るタスク管理情報格納領域情報がタスク管理情報格納領域情報削除手段によってレディキューから削除されるときは、実行中の全タスクのタスク実行権を解放させて全CPUを一時タスク非実行状態とさせることを特徴とする。
そして、本願の請求項3に記載の発明(以下、第3発明という)は、第1発明または第2発明に係る組込みコンピュータ制御プログラムにおいて、複数のCPUのうちに特定の機能を有する特定CPUが備えられている場合に、コンピュータをレディキュー作成手段として機能させるときに、上記特定CPUに関連付けた特定のレディキューを作成するように機能させ、タスク管理情報格納領域情報格納手段として機能させるときに、上記特定の機能を利用する特定タスクのタスク管理情報格納領域情報については上記特定のレディキューに格納するように機能させ、タスク割り当て手段として機能させるときに、特定のレディキューに接続された特定タスクを、該特定CPUに割り当てるように機能させることを特徴とする。
そして、本願の請求項4に記載の発明(以下、第4発明という)は、複数のCPU及び第1、第2、第3記憶装置を含む第1の部分を第1の制御部として機能させる第1発明から第3発明のいずれかに係る組込みコンピュータ制御プログラムにおいて、上記組込みコンピュータに、上記第1の部分に加え、外部割り込み処理機能を有する専用CPU及び第4、第5、第6記憶装置を含む第2の部分が備えられている場合に、この組込みコンピュータの上記第2の部分を、第1の複数のタスクの実行制御に係る要求を第1の制御部に対して行う第2の複数のタスクを制御する第2の制御部として機能させると共に、この第2の制御部として機能させるときに、上記第4記憶装置上に専用CPUで共用とされて異なる優先度が設定された第2の複数のレディキューを作成する第2レディキュー作成手段、上記第5記憶装置に記憶されている、第1の複数のタスクを実行制御する第2の複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定する第2タスク優先度設定手段、上記第6記憶装置上に、上記第2の複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成する第2タスク管理情報作成手段、該第2タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第6記憶装置上における格納領域の情報を、上記第2レディキュー作成手段で作成された第2の複数のレディキューのうちの、上記第2タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納する第2タスク管理情報格納領域情報格納手段、上記専用CPUで実行中のタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除する第2タスク管理情報格納領域情報削除手段、上記第2タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中のタスクのタスク実行権を解放させてCPUを一時タスク非実行状態とさせる第2タスク実行権解放手段、該第2タスク実行権解放手段でタスクの実行権が解放されるときに、この解放されるタスクの状態を当該タスクのタスク管理情報に記録する第2タスク実行権解放時状態記録手段、上記第2タスク実行権解放手段でタスク非実行状態とされたCPUに、上記第2の複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューの先頭に格納されたタスク情報格納領域情報に係るタスクを割り当てる第2タスク割り当て手段、該第2タスク割り当て手段でタスクを割り当てたCPUに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させる第2タスク実行手段として機能させることを特徴とする。
また、本願の請求項5に記載の発明(以下、第5発明という)は、第1発明から第4発明のいずれかの組込みシステム制御用プログラムを記録したコンピュータ読み取り可能な記録媒体に関するものである。
次に、本願の請求項6に記載の発明(以下、第6発明という)は、組込みシステムに関するものであって、複数のCPUと、該複数のCPUで共用の第1、第2、第3記憶装置と、上記第1記憶装置上に、上記各CPUで共用とされて異なる優先度が設定された複数のレディキューを作成するレディキュー作成手段と、上記第2記憶装置に記憶されている複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定するタスク優先度設定手段と、上記第3記憶装置上に、上記複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成するタスク管理情報作成手段と、該タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第3記憶装置上における格納領域の情報を、上記レディキュー作成手段で作成された複数のレディキューのうちの、上記タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納するタスク管理情報格納領域情報格納手段と、上記複数のCPUで実行中のタスクのうちのいずれかタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除するタスク管理情報格納領域情報削除手段と、上記タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中の全タスクの実行権を解放させて全CPUを一時タスク非実行状態とさせるタスク実行権解放手段と、該タスク実行権解放手段で全タスクの実行権が解放されるときに、この解放される各タスクの状態を当該各タスクのタスク管理情報に記録するタスク実行権解放時状態記録手段と、上記タスク実行権解放手段でタスク非実行状態とされた各CPUに、上記複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューに格納されたタスク情報格納領域情報に係るタスクを、該レディキューの先頭側から順に割り当てるタスク割り当て手段と、該タスク割り当て手段でタスクを割り当てたCPUに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させるタスク実行手段とを有することを特徴とする。
また、本願の請求項7に記載の発明(以下、第7発明という)は、第6発明に係る組込みシステムにおいて、タスク実行権解放手段は、タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合に、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるとき、または実行が終了したタスクに係るタスク管理情報格納領域情報がタスク管理情報格納領域情報削除手段によってレディキューから削除されるときは、実行中の全タスクのタスク実行権を解放させて全CPUを一時タスク非実行状態とさせることを特徴とする。
また、本願の請求項8に記載の発明(以下、第8発明という)は、第6発明または第7発明に係る組込みシステムにおいて、複数のCPUのうちに特定の機能を有する特定CPUが備えられていると共に、レディキュー作成手段は、上記特定CPUに関連付けた特定のレディキューを作成し、タスク管理情報格納領域情報格納手段は、上記特定の機能を利用する特定タスクのタスク管理情報格納領域情報については上記特定のレディキューに格納し、タスク割り当て手段は、特定のレディキューに接続された特定タスクを、該特定CPUに割り当てることを特徴とする。
そして、本願の請求項9に記載の発明(以下、第9発明という)は、複数のCPU及び第1、第2、第3記憶装置を含む第1の部分を制御する制御部を第1の制御部とする第6発明から第8発明のいずれかに係る組込みシステムにおいて、上記第1の部分に加え、外部割り込み処理機能を有する専用CPU及び第4、第5、第6記憶装置を含む第2の部分が備えられていると共に、この第2の部分を、第1の複数のタスクの実行制御に係る要求を第1の制御部に行う第2の複数のタスクを制御する手段として機能させる第2の制御部が備えられ、この第2の制御部は、上記第4記憶装置上に、専用CPUで共用とされて異なる優先度が設定された第2の複数のレディキューを作成する第2レディキュー作成手段と、上記第5記憶装置に記憶されている、第1の複数のタスクを実行制御する第2の複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定する第2タスク優先度設定手段と、上記第6記憶装置上に、上記第2の複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成する第2タスク管理情報作成手段と、該第2タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第6記憶装置上における格納領域の情報を、上記第2レディキュー作成手段で作成された第2の複数のレディキューのうちの、上記第2タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納する第2タスク管理情報格納領域情報格納手段と、上記専用CPUで実行中のタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除するタスク第2管理情報格納領域情報削除手段と、上記第2タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中のタスクのタスク実行権を解放させてCPUを一時タスク非実行状態とさせる第2タスク実行権解放手段と、該第2タスク実行権解放手段でタスクのタスク実行権が解放されるときに、この解放されるタスクの状態を当該タスクのタスク管理情報に記録する第2タスク実行権解放時状態記録手段と、上記第2タスク実行権解放手段でタスク非実行状態とされたCPUに、上記第2の複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューの先頭に格納されたタスク情報格納領域情報に係るタスクを割り当てる第2タスク割り当て手段と、該第2タスク割り当て手段でタスクを割り当てたCPUに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させる第2タスク実行手段とを有することを特徴とする。
次に、本発明の効果について説明する。
まず、第1発明によれば、タスクを処理するタスク処理手段としての複数のCPUを有する組込みコンピュータにおいて、上記各CPUで共用とされて異なる優先度が設定された複数のレディキューが作成され、第2記憶装置に記憶されている複数のタスクのうちの少なくとも実行すべきタスクの優先度が設定され、第3記憶装置に、上記複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報が作成される。
そして、この実行すべきタスクのタスク管理情報の上記第3記憶装置上における格納領域の情報が、上記複数のレディキューのうちの、上記タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納される。 また、上記複数のCPUで実行中のタスクのうちのいずれかのタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報がレディキューから削除される。
そして、実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中の全タスクのタスク実行権が解放されて全CPUが一時タスク非実行状態とされると共に、全タスクの実行権が解放されるときに、この解放される各タスクの状態が当該各タスクのタスク管理情報に記録される。
そして、上記タスク非実行状態とされた各CPUに、上記複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューに格納されたタスク情報格納領域情報に係るタスクが、該レディキューの先頭側から順に割り当てられ、タスクが割り当てられたCPUにより、当該タスクが、当該タスクのタスク管理情報格納領域情報に基づいて実行される。
これによれば、実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、該タスクが即座に複数のCPUのうちのいずれかのCPUに割り当てられて実行されることとなり、複数のCPUを有する組込みコンピュータにおいても優先度の高いタスクのリアルタイム処理が確実に確保される。
また、複数のCPUで実行中の複数のタスクのいずれかについて実行が終了したときには、このタスクの実行が終了したCPUに即座にタスクが割り当てられて実行されることとなり、タスク処理が終了したCPUにいつまでもタスクが割り当てられない状態が生じることがない。
つまり、複数のCPUにタスクが適切に動的分散されて、各CPUの負荷のばらつきが少なくなると共に、優先度の高いタスクの迅速な処理が確保される。
また、全CPUにタスクが割り当て直されることとなるから、これらのCPUに、確実に、処理の優先順位が最も高いタスクから順に割り当てられることとなる。
なお、第1記憶装置、第2記憶装置、及び第3記憶装置は、1つの記憶装置を共用してもよい。
次に、第2発明によれば、複数のCPUで実行中のタスクのうちのいずれかのタスクの実行が終了したときも、このタスクの実行が終了したCPUに即座にタスクが割り当てられて実行されることとなり、タスク実行が終了したCPUにいつまでもタスクが割り当てられない状態が生じることがない。
また、第3発明によれば、複数のCPUのうちに特定の機能を有する特定CPUが備えられている場合において、上記特定CPUに関連付けた特定のレディキューが作成され、上記特定の機能を利用する特定タスクは、複数のレディキューのうちの特定のレディキューに接続され、特定のレディキューに接続された特定タスクは、特定CPUに割り当てられることとなる。
これによれば、例えば特定タスクの処理は特定CPUでしかできないような場合に、特定タスクが、当該タスクを処理することができないCPUに割り当てられることがない。また、特定タスクの処理は特定CPU以外のCPUでもできるが特定CPUで処理すればよりタスク処理速度の向上が望めるような場合に、当該特定タスクを当該タスクの実行に適した特定CPUによって処理することができ、この結果、特定タスクの処理速度の向上等が図れる。
なお、特定レディキューよりも優先度が高いレディキューにタスクが存在する場合、当該優先度が高いレディキューのタスクを特定CPUに割り当てるようにしてもよいし、特定レディキューに存在するタスクを、優先度が高いレディキューに存在するタスクに優先して特定CPUに割り当てるようにしてもよい。また、特定レディキューには特定タスクのみ接続するようにしてもよいし、特定タスク以外のタスクも接続するようにしてもよい。
さらに、第4発明によれば、組込みコンピュータ制御プログラムには、コンピュータにおける複数のCPU及び第1、第2、第3記憶装置を含む第1の部分を請求項1から請求項3のいずれかに記載の各手段として機能させる第1の制御部に加えて、外部割り込み処理機能を有する専用CPU及び第4、第5、第6記憶装置を含む第2の部分を、第1の複数のタスクの実行制御の要求を第1の制御部に行う第2の複数のタスクを制御する手段として機能させる第2の制御部が備えられているから、専用CPUで外部割込み処理が処理される。なお、この場合、他の複数のCPUで外部割込み処理を行わないようにしてもよく、これによれば他の複数のCPUの外部割込み処理の負荷が解消される。また、第2の制御部で第1の制御部を状況に応じて制御することができる。また、第1の制御部と第2の制御部とはほぼ同じ構成であるから、専用CPUで外部割込み処理を行う仕組みを容易に構築することができると共に、第1の制御部及び第2の制御部をそれぞれの機能にあわせて最適化することができる。
また、第5発明によれば、第1発明から第4発明のいずれかの組込みシステム制御用プログラムを記録したコンピュータ読み取り可能な記録媒体が構成される。
次に、第6発明から第9発明は、第1発明から第4発明のプログラムに対応する組込みシステムの発明であって、これによれば、第1発明から第4発明で説明した作用効果が組込みシステムで達成される。
以下、本発明の実施の形態について説明する。
まず、図1を用いて本発明に係る組込みシステムAについて説明すると、該組込みシステムAは、複数のCPUB…Bと、該複数のCPUB…Bで共用の記憶装置Cと、上記記憶装置Cに、上記各CPUB…Bで共用とされて異なる優先度が設定された複数のレディキューD…Dを作成するレディキュー作成手段Eと、上記記憶装置Cに記憶されている複数のタスクF…Fのうちの少なくとも実行すべきタスクF…Fの優先度を設定するタスク優先度設定手段Gと、上記記憶装置Cに、上記複数のタスクF…Fのうちの少なくとも実行すべきタスクF…Fのタスク管理情報H…Hを作成するタスク管理情報作成手段Iと、該タスク管理情報作成手段Iで作成された実行すべきタスクF…Fのタスク管理情報H…Hの上記記憶装置C上における格納領域の情報J…Jを、上記レディキュー作成手段Eで作成された複数のレディキューD…Dのうちの、上記タスク優先度設定手段Gで設定された優先度と同一優先度のレディキューDの最後尾に格納するタスク管理情報格納領域情報格納手段Kと、上記複数のCPUB…Bで実行中のタスクF…FのうちのいずれかタスクFの実行が終了したときに、この実行が終了したタスクFに係るタスク管理情報格納領域情報JをレディキューDから削除するタスク管理情報格納領域情報削除手段Lと、上記タスク情報格納領域情報格納手段Kによって実行すべきタスクFに係るタスク情報格納領域情報Jが該タスクFの優先度に対応するレディキューDの最後尾に格納される場合において、該実行すべきタスクFの優先度よりも優先度が低いタスクF…Fが実行中であるときは、実行中の全タスクF…Fのタスク実行権を解放させて全CPUB…Bを一時タスク非実行状態とさせるタスク実行権解放手段Mと、該タスク実行権解放手段Mで全タスクF…Fの実行権が解放されるときに、この解放された各タスクF…Fの状態を当該各タスクF…Fのタスク管理情報H…Hに記録するタスク実行権解放時状態記録手段Nと、上記タスク実行権解放手段Mでタスク非実行状態とされた各CPUB…Bに、上記複数のレディキューD…Dに格納されたタスク管理情報格納領域情報J…Jに係るタスクF…Fのうちの、優先度の高いレディキューD…Dに格納されたタスク情報格納領域情報J…Jに係るタスクF…Fを、該レディキューD…Dの先頭側から順に割り当てるタスク割り当て手段Oと、該タスク割り当て手段OでタスクF…Fを割り当てたCPUB…Bに、当該タスクF…Fを、当該タスクF…Fのタスク管理情報格納領域情報J…Jに基づいて実行させるタスク実行手段Pとを有する。以下、この組込みシステムAについて、第1〜第3の実施の形態を通して詳しく説明する。なお、この組込みシステムAにおいては、特許請求の範囲の請求項1〜3に係る第1,第2,第3記憶装置は共用とされている。
まず、第1の実施の形態について説明する。
図2に示すように、第1の実施の形態の組込みシステムを構成する組込みコンピュータ1は、複数のCPU11−1〜11−n(以下、CPU1,CPU2,CPU3,…CPUnという)と、単一の共有メモリ12(図1の記憶装置Cに相当)と、これらを接続する共有バス13とを有する。
共有メモリ12は、ROM及びRAMからなる。該共有メモリ12には、請求項1及び請求項2に記載の組込みコンピュータ制御プログラムを構成して、組込みコンピュータ1を図1に記載の各手段として機能させるリアルタイムオペレーティングシステム21(以下、OS21という)と、複数のタスク22…22(図1のタスクF…Fに相当)と、該OS21に関する種々のパラメータや一時データ等からなるOSデータ23とが格納されている。
OS21は、上記共有メモリ12からCPU1〜CPUn上にそれぞれ読み込まれて実行される。換言すれば、共有メモリ12上に格納されているOS21は1つであるが、各CPU1〜CPUn上で並行して実行され、各CPU上で実行されるOS21により当該各CPU上でのタスク22の実行が制御されることとなる。なお、このOS21の機能の詳細については後述する。
OSデータ23は、上記複数のCPU上でそれぞれ実行されるOS21で共有のOS共有データ23aと、上記複数のCPU上でそれぞれ実行されるOS21毎に固有の非共有データ23bとからなる。OS共有データ23aには、複数のレディキュー(図1のレディキューD…Dに相当、図3参照)の状態を管理するレディキューテーブル(図4参照)が含まれている。なお、その詳細については後述する。
OS21は、CPU1〜CPUnがタスク22…22を実行しているときにはCPU実行状態と判定し、タスク22…22を実行していないときはCPUアイドル状態(特許請求の範囲に記載のタスク非実行状態)と判定する。
タスク22は、OS21によって、実行状態、実行可能状態、待ち状態、休止状態のうちのいずれかの状態に制御される。ここで、実行状態とは、タスク22がOS21によりCPU1〜CPUnのうちのいずれかのCPUに割り当てられて実行中の状態を意味し、実行可能状態とは、タスク22の実行準備は整っているが、そのタスク22よりも優先順位の高いタスク22が実行中であるためそのタスク22を実行できない状態を意味し、待ち状態とは、起動はされたがタスク22の実行条件が整わないため実行できない状態を意味し、休止状態とはタスク22が起動されていない状態をいう。
上記タスク22…22の、例えば上記実行状態等の情報、タスク22…22の優先度等の情報を含むタスク管理情報(図1のタスク管理情報H…Hに相当)は、OS21によって、例えばOS21の起動時にタスク22…22の全てに対して作成され、上記メモリ12上のOS共有データ23aの一部として記憶される。
また、タスク22…22の実行の優先度は、OS21によって、タスク重要性、緊急性、サイズ等に基づいて、例えばOS21の起動時にタスク22…22毎に設定され、上記タスク管理情報の一つの情報として上記メモリ12上に記憶される。なお、この優先度は、タスク22…22がOS21に対して要求することにより、または、OS21によって、起動後に変更してもよい。
図3は、優先度毎に設けられたレディキューの一例を示す説明図であり、図4は、このような優先度毎のレディキューの状態を管理するレディキューテーブルの構成を示す。このレディキューテーブルは、各レディキュー毎に、当該優先度のレディキューに接続されたタスクの次に接続されたタスクのタスク情報を格納している領域の上記メモリ12上における先頭アドレス情報と、1つ前に接続されたタスクのタスク情報を格納している領域の先頭アドレス情報とからなるタスク管理情報格納領域情報とを格納しており、OS21の起動時に共有メモリ12上のOS共有データ23aの一部として作成される。換言すれば、OS21の起動時に、異なる優先度を持つレディキューが複数作成されることとなる。
なお、図3は7つのタスク管理情報格納領域情報が格納されている状態を示したが、OS21の起動時にはタスク管理情報格納領域情報は格納されておらず、例えば、タスク22の実行条件が成立したときに、OS21によって、上記複数のレディキューのうちの、当該タスク22の優先度と同一優先度のレディキューの最後尾に格納され、タスク22の実行が終了したときに、この実行が終了したタスク22に係るタスク管理情報格納領域情報がレディキューから削除される。
ここで、本実施の形態に係るOS21は、スケジューリング方式として、イベントドリブン型タスク優先度順スケジューリング方式を採用している。なお、スケジューリングとは、上記レディキューテーブルを検索して次に実行すべきタスクを決定する(タスクをCPUに割り当てることをいう)。
具体的には、各CPU1〜CPUn上で実行中のOS21は、(1)実行状態のタスク22または割込み処理から他タスク22の起動(休止状態から実行可能状態への移行)の要求(システムコール等)があったとき、(2)実行状態のタスク22または割込み処理から他タスク22の停止(実行状態から休止状態への移行)の要求があったとき、(3)実行状態のタスク22から自タスク22の待ち状態への移行の宣言があったとき、(4)実行状態のタスク22または割込み処理から他タスク22の待ち状態解除(待ち状態から実行可能状態への移行)の要求があったとき、(5)実行状態のタスク22から自タスク終了の宣言があったとき、(6)実行可能状態のタスクに対し、実行状態のタスクのタスク優先度よりも高優先度のタスク優先度が設定されたとき(システムコール等)のうちのいずれか1つの条件が成立して、実行状態のタスク22の優先度よりも優先度の高いレディキュー(の最後尾)にタスク情報格納領域情報が格納されるとき(接続されるタスクFの優先度よりも優先度が低いタスクが実行状態であるとき)、または実行状態のタスク22がレディキューから切り離されるとき(以下、「所定のスケジューリング条件が成立したとき」という)には、排他制御として、上記複数のCPU1〜CPUnで実行中の全タスク22…22の実行権を解放させてCPU1〜CPUnの全てを一時CPUアイドル状態(タスク非実行状態)とさせると共に、この解放される各タスク22…22の解放されるときの状態を当該各タスク22…22のタスク情報に記録した上で、CPUアイドル状態のCPU1〜CPUnに、上記複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスク22…22のうちの、優先度の高いレディキューに格納されたタスク情報格納領域情報に係るタスク22…22を、該レディキューの先頭側から順に割り当てる。そして、タスク22…22を割り当てたCPU1〜CPUnに、当該タスク22…22を、当該タスク22…22のタスク管理情報格納領域情報に基づいて実行させる。
なお、以後、説明の便宜上、レディキューにタスク管理情報格納領域情報が格納されていることを、レディキューにタスクT1〜T7が接続されているといい、レディキューからタスク管理情報格納領域情報を削除することを、レディキューからタスクを切り離すという。
次に、上記所定のスケジューリング条件が成立したときに行われるこのリアルタイムOS21によるスケジューリングについて、図5のフローチャートを用いて説明する。
まず、ステップS1で、割り当て対象のCPUの番号cとして1を設定する。
なお、CPU番号とは、上記CPU1〜CPUnの添字1〜nのことを意味する。次いで、ステップS2で、スケジューリング対象のレディキューの優先度kとして0を設定すると共に、ステップS3で、kに1を加算した後、ステップS4で、kが所定値m以下か否かを判定し、その判定がYESのとき、すなわち、kが所定値m以下のときは、さらに、ステップS5で、優先度kのレディキューにタスクが接続されているか否かを判定する。
そして、ステップS5の判定がNOのとき、すなわち、優先度kのレディキューにタスクが接続されていときは、ステップS3に戻り、以後の処理を繰り返す。ここで、ステップS4の所定値mは、OS21が設定する優先度の最大値である。つまり、kが所定値mより大きくなったときは、全レディキューの検索が終了したわけであり、スケジューリングを終了する。
一方、上記ステップS5の判定がYESのとき、すなわち、優先度kのレディキューにタスクが存在するときは、ステップS6で、タスク順位pとして1を設定する。ここで、このタスク順位pは、優先度kのレディキュー上において対象タスクが先頭タスクから何番目に位置するかを示す値である。次いで、ステップS7で、優先度kのレディキューにおける先頭からp番目のタスクを、CPU番号cのCPUに割り当てる。
次いで、ステップS8で、CPU番号cに1を加算すると共に、ステップS9で、CPU番号cがCPU数nを超えているか否かを判定し、NOのとき、すなわち超えているときは、ステップS10で、タスク順位pに1を加算すると共に、ステップS11で、タスク順位pが優先度kのレディキューに接続されたタスクの数よりも大きいか否かを判定する。そして、このステップS11の判定がYESのとき、すなわち、タスク順位pが優先度kのレディキューに接続されたタスクの数よりも大きく、優先度kのレディキューにタスク順位pのタスクが存在しないときは、ステップS3に戻って以後の処理を繰り返し、NOのときは、ステップS7に戻って以後の処理を繰り返す。
一方、上記ステップS9の判定がYESのとき、すなわち、CPU番号cがCPU数nを超えたときは、全てのCPUにタスクが割り当てられたわけであり、スケジューリングを終了する。
次に、図6〜図8を用いて、上記所定のスケジューリング条件が成立したときに行われる本OS21によるスケジューリングの一例を説明する。なお、この説明に際しては、組込みコンピュータ1は、図2において、n=3の場合、すなわち、3つのCPU1,CPU2,CPU3を有するものとする。また、優先度1〜5の5つのレディキューを有するものとする。
まず、上記所定のスケジューリング条件が成立すると、CPU1,2,3で実行中のタスクのタスク実行権が全て解放されると共に、実行中の各タスクのタスク実行権解放時の状態が各タスク毎に各タスク情報に記録される。なお、このとき、7つのセカンダリタスク22…22(以下、T1〜T7という)が実行可能状態になったものとする。具体的には、図3に示すように、優先度1のレディキューにタスクT1が、優先度3のレディキューにタスクT2、及びタスクT3が、優先度5のレディキューにタスクT4、タスクT5、及びタスクT6が、優先度6のレディキューにタスクT7がそれぞれ接続されているものとする。なお、優先度3のレディキューにはタスクは接続されていないものとする。タスクのタスク実行権が全て解放された結果、CPU1,2,3の全てがCPUアイドル状態となっている。
まず、OS21は、これらのCPUアイドル状態のCPU1,CPU2,CPU3のうち、CPU1にタスクを割り当てるために、レディキューテーブルを優先度の高いレディキューから順に検索する。この検索の結果、図6に示すように、優先度1のレディキューにタスクT1が接続されているので、OS21は、優先度1のレディキューの先頭のタスクT1をCPUlに割り当てる。つまり、タスクT1がCPU1によって実行されることとなる。
次に、OS21は、CPU2にタスクを割り当てるため、優先度1のレディキューの先頭から2番目にタスクが接続されているかを検索するが、タスクが接続されていないので、次いで、優先度2のレディキューを検索する。この検索の結果、優先度2のレディキューにはタスクが接続されていので、OS21は、優先度2のレディキューの先頭のタスクT2をCPU2に割り当てる。つまり、タスクT2がCPU2によって実行されることとなる。
次に、OS21は、CPU3にタスクを割り当てるため、優先度2のレディキューの先頭から2番目にタスクが接続されているかを検索すると、タスクT3が接続されているので、OS21は、優先度2のレディキューの先頭から2番目のタスクT3をCPU3に割り当てる。つまり、タスクT3がCPU3によって実行されることとなる。
そして、これにより、CPU1,2,3の全てにタスクが割り当てられ、実行状態となったため、OS21は、スケジューリングを終了する。
なお、タスク実行権が解放されていたタスクについては、該解放されたときの状態から再開されることとなる。
ここで、上記のように割り当てられて現在実行中の例えばタスクT1が、OS21にメモリ12に格納されているタスクT8の起動を要求し、該タスクT8がOS21によって優先度1のレディキューに接続されるときには、所定のスケジューリング条件が成立し、現在実行中のタスクT1,T2,T3のタスク実行権が解放されると共に、実行中のタスクT1,T2,T3のタスク実行権解放時の状態が各タスクT1,T2,T3毎に各タスク情報に記録され、CPU1,2,3の全てがCPUアイドル状態となって、スケジューリングが実行される。そして、この場合、前述したのと同様にレディキューテーブルが検索され、図7に示すように、まず、CPU1にタスクT1が割り当てられ、次いで、CPU2にタスクT8が割り当てられ、次いで、CPU3にタスクT2が割り当てられることとなる。なお、この場合、タスクT1,T2については、タスク実行権が解放されたときの実行状態から再開される。
そして、例えば、上記のように割り当てられて現在実行中の例えばタスクT1の実行が終了し、タスクT1がOS21にタスクの実行終了の宣言をし、該OS21によりレディキューからタスクT1が削除されるときには、所定のスケジューリング条件が成立し、現在実行中のタスクT2,T3のタスク実行権が解放されると共に、該実行中のタスクT2,T3のタスク実行権解放時の状態が各タスクT2,T3毎に各タスク情報に記録され、スケジューリングが実行される。そして、この場合、前述したのと同様にレディキューテーブルが検索され、図8に示すように、まず、CPU1にタスクT8が割り当てられ、次いで、CPU2にタスクT2が割り当てられ、次いで、CPU3にタスクT3が割り当てられることとなる。なお、この場合、タスクT2,T3については、タスク実行権が解放されたときの実行状態から再開される。
以上のように、第1の実施の形態に係る組込みシステムによれば、実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行すべきタスクが即座にCPU1,2,3の全てに割り当てられて実行されることとなり、複数のCPU1,2,3を有する組込みコンピュータにおいても優先度の高いタスクのリアルタイム処理が確実に確保される。
また、複数のCPU1,2,3で実行中の複数のタスクのいずれかについて実行が終了したときには、このタスクの実行が完了したCPUに即座にタスクが割り当てられて実行されることとなり、タスク処理が終了したCPUにいつまでもタスクが割り当てられない状態が生じることがない。
つまり、複数のCPU1,2,3にタスクが適切に動的分散されて、各CPUの負荷のばらつきが少なくなると共に、優先度の高いタスクの迅速な処理が確保される。
また、全CPU1,2,3にタスクが割り当て直されることとなるから、これらのCPU1,2,3に、確実に、処理の優先順位が最も高いタスクから順に割り当てられることとなる。
次に、本発明の第2の実施の形態について説明する。
この第2の実施の形態に係る組込みシステムは、第1の実施の形態に係る組込みシステムにおいて、優先度毎のレディキューに、該優先度のレディキューに接続されたタスクを処理するCPUを関連付けしたものであり、以下、図9〜図16を用いて説明する。
図9に示すように、この第2の実施の形態の組込みシステムを構成する組込みコンピュータ31は、複数のCPU41−1,CPU41−2,CPU41−3,…CPU41−n(図1のCPUB…Bに相当。以下、CPU1,CPU2,CPU3,…CPUnという)と、単一の共有メモリ42(図1の記憶装置Cに相当)と、これらを接続する共有バス43とを有する。
CPU1及びCPU2は、他のCPUが有する機能に加え、それぞれ、描画信号処理や音声処理等に適した特定の機能(これらの処理は一例である)を有する。
共有メモリ42は、ROM及びRAMからなる。該共有メモリ42には、請求項1から請求項3に記載の組込みコンピュータ制御プログラムを構成して、組込みコンピュータ1を図1に記載の各手段として機能させるリアルタイムオペレーティングシステム51(以下、OS51という)と、複数のタスク52…52(図1のタスクF…Fに相当)と、該OS51に関する種々のパラメータや一時データ等からなるOSデータ53とが格納されている。
OS51は、上記共有メモリ42からCPU1〜CPUn上にそれぞれ読み込まれて実行される。換言すれば、共有メモリ42上に格納されているOS51は1つであるが、各CPU1〜CPUn上で並行して実行され、各CPU上で実行されるOS51により当該各CPU上でのタスク52の実行が制御されることとなる。なお、このOS51の機能の詳細については後述する。
OSデータ53は、上記複数のCPUでそれぞれ実行されるOS51で共有のOS共有データ53aと、上記複数のCPU上でそれぞれ実行されるOS51毎に固有の非共有データ53bとからなる。OS共有データ53aには、複数のレディキュー(図1のレディキューD…Dに相当、図10参照)を管理するレディキューテーブル(図11参照)が含まれている。なお、その詳細については後述する。
OS51は、CPU1〜CPUnがタスク52…52を実行しているときにはCPU実行状態と判定し、タスク52…52を実行していないときはCPUアイドル状態(特許請求の範囲に記載のタスク非実行状態)と判定する。
タスク52は、OS51によって、実行状態、実行可能状態、待ち状態、休止状態のうちのいずれかの状態に制御される。ここで、実行状態とは、タスク52がOS51によりCPU1〜CPUnのうちのいずれかのCPUに割り当てられて実行中の状態を意味し、実行可能状態とは、タスク52の実行準備は整っているが、そのタスク52よりも優先順位の高いタスク52が実行中であるためそのタスク52を実行できない状態を意味し、待ち状態とは、起動はされたがタスク52の実行条件が整わないため実行できない状態を意味し、休止状態とは、タスク52が起動されていない状態をいう。
上記タスク52…52の、例えば上記実行状態等の情報、タスク優先度等の情報を含むタスク管理情報(図1のタスク管理情報H…Hに相当)、は、OS51によって、例えばOS51の起動時にタスク52…52の全てに対して作成され、上記メモリ42上のOS共有データ53aの一部として記憶される。
また、タスク52…52の実行の優先度は、OS51によって、タスク重要性、緊急性、サイズ等に基づいて、例えばOS51の起動時にタスク52…52毎に設定され、上記タスク管理情報の一つの情報として上記メモリ42上に記憶される。なお、この優先度は、タスク52…52がOS51に対して要求することにより、または、OS51によって、起動後に変更してもよい。
図10は、優先度毎に設けられたレディキューの一例を示す説明図であり、図11は、このような優先度毎のレディキューの状態を管理するレディキューテーブルの構成を示す。このレディキューテーブルは、各レディキュー毎に、当該優先度のレディキューに接続されたタスクの次に接続されたタスクのタスク情報(タスク管理情報H…Hに相当に相当。タスクコントロールブロック)を格納している領域の上記メモリ42上における先頭アドレス情報と、1つ前に接続されたタスクのタスク情報を格納している領域の先頭アドレス情報とからなるタスク管理情報格納領域情報と、その優先度のタスクを実行可能なCPUの属性情報とを格納しており、OS51の起動時に共有メモリ42上のOS共有データ43aの一部として作成される。換言すれば、OS21の起動時に、異なる優先度を持つレディキューが複数作成されることとなる。また、各レディキューに、上記複数のCPU1〜CPUnのうちのいずれのCPUが当該優先度のレディキューに存在するタスクを実行すべきかの属性が関連付けられていることとなる。
なお、図10は7つのタスク管理情報格納領域情報が格納されている状態を示したが、OS51の起動時にはタスク管理情報格納領域情報は格納されておらず、例えば、タスク52の実行条件が成立したときに、OS51によって、上記複数のレディキューのうちの、当該タスク52の優先度と同一優先度のレディキューの最後尾に格納され、タスク52の実行が終了したときに、この実行が終了したタスク52に係るタスク管理情報格納領域情報がレディキューから削除される。
この第2の実施の形態に係るレディキューのCPU属性情報を格納する領域は、図12に示すように、32ビットのビットフィールドからなる。ビットフィールド上の各ビットは固有の意味を有する。例えば、1ビット目から31ビット目のいずれかのビットを1とすることは、そのビットに対応したCPUの指定を意味し、32ビット目を1とすることはCPU指定なし、すなわちいずれのCPUにも割り当て可能であることを意味する。なお、1ビット目から31ビット目までのビットについては複数のビットを1とすること(論理和指定)を可能とする。換言すれば複数のCPUの指定を可能とする。
ここで、本実施の形態に係るOS51は、スケジューリング方式として、CPU属性付イベントドリブン型タスク優先度順スケジューリング方式を採用している。このCPU属性付きイベントドリブン型タスク優先度順スケジューリング方式は、前述した図10に示すように、イベントドリブン型タスク優先度順スケジューリング方式の優先度毎のレディキューに、該当レディキューに接続されたタスクを実行するCPUの属性を付与することにより、特定のCPUで特定のタスクを処理できるようにしたものである。なお、CPU属性に基づく制御が追加されている点を除きイベントドリブン型タスク優先度順スケジューリングと基本制御は共通であるため、次に、第1の実施の形態で説明した上記所定のスケジューリング条件が成立したときに行われるこのリアルタイムOS51によるスケジューリングについて、図13のフローチャートを用いて具体的に説明する。
まず、ステップS21で、対象のCPUのCPU番号cとして1を設定する。
なお、CPU番号とは、上記CPU1〜CPUnの添字1〜nのことを意味する。次いで、ステップS22で、スケジューリング対象のレディキューの優先度kとして0を設定すると共に、ステップS23で、kに1を加算した後、ステップS24で、kが所定値m以下か否かを判定し、その判定がYESのとき、すなわち、kが所定値m以下のときは、さらに、ステップS25で、優先度kのレディキューのCPU属性が、タスクを割り当てようとしているCPUと一致しているか、又はCPU属性がCPU指定なしかを判定すると共に、このステップS25の判定がYESのときは、さらに、ステップS26で、優先度kのレディキューにタスクが接続されているか否かを判定する。
そして、上記ステップS25の判定がNOのとき、すなわち、優先度kのレディキューのCPU属性が、タスクを割り当てようとしているCPUと一致せず、CPU属性がCPU指定なしでもないとき、または、ステップS26の判定がNOのとき、すなわち、優先度kのレディキューにタスクが接続されていないときは、ステップS23に戻り、以後の処理を繰り返す。ここで、ステップS24の所定値mは、OS51が設定する優先度の最大値である。つまり、kが所定値mより大きくなったときは、全レディキューの検索が終了したわけであり、スケジューリングを終了する。
一方、上記ステップS26の判定がYESのとき、すなわち、優先度kのレディキューにタスクが接続されているときは、ステップS27で、タスク順位pとして1を設定する。ここで、このタスク順位pは、優先度kのレディキュー上において対象タスクが先頭タスクから何番目に位置するかを示す値である。次いで、ステップ28で、この先頭からp番目のタスクがいずれかのCPUに割り当て済か否かを判定する。
そして、このステップS28の判定がYESのとき、すなわち、p番目のタスクが割り当て済のときは、ステップS29で、タスク順位pの値に1を加算すると共に、ステップS30で、タスク順位pが優先度kのレディキューに接続されたタスクの数よりも大きいか否かを判定する。そして、このステップS30の判定がYESのとき、すなわち、タスク順位pが優先度kのレディキューに接続されたタスクの数よりも大きく、優先度kのレディキューにタスク順位pのタスクが接続されていないときは、ステップS23に戻って以後の処理を繰り返し、NOのときは、ステップS28に戻って以後の処理を繰り返す。
一方、上記ステップS28の判定がNOのとき、すなわち、タスク順位pのタスクが割り当て済でないときは、ステップS31で、優先度kのレディキューにおける先頭からp番目のタスクを、CPU番号cのCPUに割り当てる。
次いで、ステップS32では、CPU番号cに1を加算すると共に、ステップS33で、CPU番号cがCPU数nを超えたか否かを判定し、NOのとき、すなわち超えていないときは、このCPU番号cのCPUについてタスクを割り当てるために、ステップS22以後の処理を繰り返す。一方、このステップS33の判定がYESのとき、すなわち、CPU番号cがCPU数nを超えたときは、全てのCPUにタスクが割り当てられたわけであり、スケジューリングを終了する。
次に、図14〜図16を用いて、上記所定のスケジューリング条件が成立したときに行われる本OS51によるスケジューリングの一例を説明する。なお、この説明に際しては、組込みコンピュータ31は、図9において、n=3の場合、すなわち、3つのCPU1,CPU2,CPU3を有し、CPU1、CPU2はそれぞれ異なる特定の機能を有するものとする。また、優先度1〜5の5つのレディキューを有するものとする。また、優先度1及び優先度5のレディキューのCPU属性は、全CPU(CPU指定なし)とされ、優先度2のレディキューのCPU属性は、CPU1指定とされ、優先度3及び優先度4のレディキューのCPU属性は、CPU2指定とされているものとする。
まず、上記所定のスケジューリング条件が成立すると、CPU1,2,3で実行中のタスクのタスク実行権が全て解放されると共に、実行中の各タスクのタスク実行権解放時の状態が各タスク毎に各タスク情報に記録される。なお、このとき、7つのセカンダリタスク52…52(以下、タスクT1〜T7という)が実行可能状態になったものとする。具体的には、図14に示すように、優先度1のレディキューにタスクT1が、優先度2のレディキューにタスクT2、及びタスクT3が、優先度4のレディキューにタスクT4、タスクT5、及びタスクT6が、優先度5のレディキューにタスクT7がそれぞれ接続されているものとする。優先度3のレディキューにはタスクは接続されていないものとする。また、タスクの実行権が全て解放された結果、CPU1,2,3の全てがCPUアイドル状態となっている。
次に、OS51は、これらのCPUアイドル状態のCPU1,CPU2,CPU3のうち、まずCPU1にタスクを割り当てるために、レディキューテーブルを優先度の高いレディキューから順に検索する。この検索の結果、図14に示すように、優先度1のレディキューはCPU属性が全CPU(CPU指定なし)で、かつ該レディキューにはタスクT1が接続されているので、OS51は、優先度1のレディキューの先頭のタスクT1をCPUlに割り当てる。つまり、タスクT1がCPU1によって実行されることとなる。ここで、優先度1のレディキューのCPU属性が全CPUとされているのは、緊急を要する様々なタスクを即座に処理できるようにすることを目的としている。
次に、OS51は、CPU2にタスクを割り当てるため、レディキューテーブルを優先度の高いレディキューから順に検索する。この検索の結果、優先度1のレディキューはCPU属性が全CPU(CPU指定なし)であるが、優先度1のレディキューに接続されているタスクT1がCPU1に割り当てられたため他に割り当てるべきタスクが存在せず、優先度2のレディキューはCPU属性がCPU1指定でCPU属性が一致せず、優先度3のレディキューはCPU属性がCPU2指定でCPU属性が一致するがタスクが存在せず、優先度4のレディキューはCPU属性がCPU2指定でCPU属性が一致し、かつタスクT4,T5,T6が接続されているので、OS51は、優先度4のレディキューの先頭のタスクT4をCPU2に割り当てる。つまり、タスクT4がCPU2によって実行されることとなる。
次に、OS51は、CPU3にタスクを割り当てるため、レディキューテーブルを優先度の高いレディキューから順に検索する。この結果、優先度1のレディキューはCPU属性が全CPU(CPU指定なし)であるが、優先度1のレディキューに接続されているタスクT1がCPU1に割り当てられたため他に割り当てるべきタスクが存在せず、優先度2のレディキューはCPU属性がCPU1指定でCPU属性が一致せず、優先度3のレディキューはCPU属性がCPU2指定でCPU属性が一致せず、優先度4のレディキューはCPU属性がCPU2指定でCPU属性が一致せず、優先度5のレディキューはCPU属性が全CPUでかつタスクT7が存在するので、OS51は、優先度5のレディキューの先頭のタスクT7をCPU3に割り当てる。つまり、タスクT7がCPU3によって実行されることとなる。
そして、これにより、CPU1,2,3の全てにタスクが割り当てられ、実行状態となったため、セカンダリOS51は、スケジューリングを終了する。
なお、タスク実行権が解放されていたタスクについては、該解放されたときの状態から再開されることとなる。
ここで、上記のように割り当てられて現在実行中の例えばタスクT1が、OS51にメモリ42に格納されているタスクT8の起動を要求し、該タスクT8がOS51によって優先度1のレディキューに接続されるときには、所定のスケジューリング条件が成立し、現在実行中のタスクT1,T4,T7のタスク実行権が解放されると共に、実行中のタスクT1,T4,T7のタスク実行権解放時の状態が各タスクT1,T4,T7毎に各タスク情報に記録され、CPU1,2,3の全てがCPUアイドル状態となって、スケジューリングが実行される。そして、この場合、前述したのと同様にレディキューテーブルが検索され、図15に示すように、まず、CPU1にタスクT1が割り当てられ、次いで、CPU2にタスクT8が割り当てられ、次いで、CPU3にタスクT7が割り当てられることとなる。なお、この場合、タスクT1,T3については、タスク実行権が解放されたときの状態から再開される。
そして、例えば、上記のように割り当てられて現在実行中の例えばタスクT1の実行が完了し、タスクT1がOS51にタスクの実行終了の宣言をし、該OS51によりレディキューからタスクT1が削除されるときには、所定のスケジューリング条件が成立し、現在実行中のタスクT8,T7のタスク実行権が解放されると共に、該実行中のタスクT8,T7のタスク実行権解放時の状態が各タスクT8,T7毎に各タスク情報に記録され、スケジューリングが実行される。そして、この場合、前述したのと同様にレディキューテーブルが検索され、図16に示すように、まず、CPU1にタスクT8が割り当てられ、次いで、CPU2にタスクT4が割り当てられ、次いで、CPU3にタスクT7が割り当てられることとなる。なお、この場合、タスクT4,T7については、タスク実行権が解放されたときの状態から再開される。
ここで、優先度2のレディキューに接続されているタスクは、CPU1のみが有する特定の機能を利用しないと処理できないタスク(特定タスク)、またはCPU1のみが有する特定の機能を利用して処理することにより他のCPUで処理するよりも処理の迅速化が図れるタスク(特定タスク)である。そのため、CPU1の特定機能を利用する上記特定タスクは、CPU指定なしのレディキューには接続せず、CPU属性がCPU1指定の上記優先度2のレディキュー(特定レディキュー)に接続するようにしている。なお、CPU1の特定機能を利用する特定タスクであっても、例えば、該優先度2の特定レディキューにタスクが多数存在し、他のCPUでも処理可能であるときは、タスクの優先度を変更して他の優先度のレディキューに接続するようにしてもよい。
また、優先度3,4のレディキューに接続されているタスクは、CPU2のみが有する特定の機能を利用しないと処理できないタスク、またはCPU2のみが有する特定の機能を利用して処理することにより他のCPUで処理するよりも処理の迅速化が図れるタスクである。そのため、CPU2の特定機能を利用する上記特定のタスクは、CPU指定なしのレディキューには接続せず、CPU属性がCPU2指定の優先度3のレディキュー(特定レディキュー)または優先度4のレディキュー(特定レディキュー)に接続するようにしている。なお、CPU2の特定機能を利用する特定のタスクであっても、例えば、該優先度3,4のレディキューにタスクが多数あり、他のCPUでも処理可能であるときは、タスクの優先度を変更して他の優先度のレディキューに接続するようにしてもよい。
以上のように 第2の実施の形態に係る組込みシステムによれば、第1の実施の形態で説明した作用・効果に加え、特定タスクの処理は特定CPUでしかできないような場合に、特定タスクが、当該タスクを処理することができないCPUに割り当てられることがない。また、特定タスクの処理は特定CPU以外のCPUでもできるが特定CPUで処理すればよりタスク処理速度の向上が望めるような場合に、当該特定タスクを当該タスクの実行に適した特定CPUによって処理することができ、この結果、特定タスクの処理速度の向上等が図れる。
なお、特定レディキューより優先度が高いレディキューにタスクが存在する場合に、特定CPUのアイドル状態が検出されたときは、当該優先度が高いレディキューのタスクを特定CPUに割り当てるようにしてもよいし、特定レディキューに存在するタスクを、優先度が高いレディキューに存在するタスクに優先して特定CPUに割り当てるようにしてもよい。また、特定レディキューには特定タスクのみ接続するようにしてもよいし、特定タスク以外のタスクも接続するようにしてもよい。
次に、本発明の第3の実施の形態について説明する。
この第3の実施の形態に係る組込みシステムは、第2の実施の形態に係る組込みシステムにおいて、外部割込み等を処理する専用CPUを新たに設けると共に、第2の実施の形態に係る複数のCPU上で実行されるリアルタイムオペレーティングシステムとは別に、専用CPU上で実行されるリアルタイムオペレーティングシステムを設けたものであり、以下図17〜図18を用いて説明する。
図17に示すように、この組込みコンピュータ61は1つのプライマリCPU70(以下、M−CPUという)と、複数のセカンダリCPU71−1,71−2,71−3〜71−n(以下、S−CPU1,S−CPU2,S−CPU3〜S−CPUnという)と、単一の共有メモリ72と、これらを接続する共有バス73とを有する。
S−CPU1及びS−CPU2は、他のS−CPUが有する機能に加え、それぞれ、描画信号処理や音声処理等に適した特定の機能(これらの処理は一例である)を有する。また、M−CPUは、S−CPUが有しない外部信号処理に係る特定の機能(例えば、組込みコンピュータ61の外部機器からの割り込み信号受信機能等の信号処理機能)を有する。つまり、外部機器に係る信号処理はS−CPUでなく、M−CPUで行われる。
共有メモリ72は、ROM及びRAMからなる。該共有メモリ72には、請求項1〜請求項4に記載の組込みコンピュータ制御プログラムを構成して、組込みコンピュータ61を図1に記載の各手段等として機能させるリアルタイムオペレーティングシステム81(以下、OS81という)と、複数のタスク82a…82a,82b…82bと、該OS81に関する種々のパラメータや一時データ等からなるOSデータ83とが格納されている。
OS81は、プライマリOS81aと、セカンダリOS81bとからなる。プライマリOS81aは、上記共有メモリ72からM−CPU上に読み込まれて実行され、セカンダリOS81bは、上記共有メモリ72からS−CPU1〜S−CPUn上にそれぞれ読み込まれて実行される。換言すれば、共有メモリ72上に格納されているセカンダリOS81bは1つであるが、各S−CPU1〜S−CPUn上でセカンダリOSが並行して実行されることとなる。なお、プライマリOS81aは、レディキューの構成、スケジューリング方式が、第1の実施の形態に係るOS21と同一とされ、セカンダリOS81bは、レディキューの構成、スケジューリング方式が、第2の実施の形態に係るOS51と同一とされている。そのため、以後、OS81a,81bの説明にあたっては、これらのOS81a,81b間の制御を主に説明する。
OSデータ83は、プライマリOS81a固有のプライマリOSデータ83aと、上記複数のS−CPU上で実行されるセカンダリOS81bで共有のセカンダリOS共有データ83bと、上記複数のS−CPU上で実行されるセカンダリOS81b毎に固有のセカンダリOS非共有データ83cとからなる。マスタOSデータ83aには、複数のレディキュー(前述の図3と同様のもの)を管理するレディキューテーブル(前述の図4と同様のもの)が含まれている。また、スレーブOS共有データ83aには、複数のレディキュー(前述の図10と同様のもの)を管理するレディキューテーブル(前述の図11と同様のもの)が含まれている。なお、前述のようにプライマリOS81a用のレディキュー及びレディキューテーブルの構成は第1の実施の形態に係るレディキューと同構成とされ、セカンダリOS81b用のレディキューは第2の実施の形態に係るレディキュー及びレディキューテーブルと同構成とされており、その詳細な説明は省略する。なお、セカンダリOS81b用のレディキューのCPU属性については、図10、図11においてCPUをS−CPUと読み替えればよい。
複数のプライマリタスク82a…82aは、プライマリOS81aが処理するタスクであり、複数のセカンダリタスク82b…82bは、セカンダリOS81bが処理するタスクである。プライマリタスク82aは、セカンダリOS81bに対してセカンダリタスク82bの実行制御のための各種要求を行うためのタスクであってプライマリOS81a上でのみ実行される。セカンダリタスク82bは、それ以外のタスクであってセカンダリOS81b上でのみ実行される。
プライマリOS81aは、キーやスイッチ等からの外部割込みの処理、及び各S−CPU上のセカンダリOS81bの状態(実行状態であるかアイドル状態であるか)を管理、把握すると共に、この把握した状態に基づいてセカンダリタスク82bの実行制御を行う。具体的には、各S−CPU上のセカンダリOS81b用の初期セカンダリタスク82bの登録及び実行要求、並びにセカンダリタスク82bの起動要求及び停止要求をセカンダリOS81bに対して行う。なお、プライマリOS81aは、セカンダリOS81bに対するこれらの要求を、プライマリタスク82aを介して行う。セカンダリOS81bは、プライマリOS81aからの上記各種要求に応じて、セカンダリタスク82bを実行する。
各OS81a,81bは、CPUがタスクを実行しているときにはCPU実行状態と判定し、タスクを実行していないときはCPUアイドル状態(特許請求の範囲に記載のタスク非実行状態)と判定する。
プライマリタスク82a及びセカンダリタスク82bは、OS81a,81bによって、実行状態、実行可能状態、待ち状態、休止状態のうちのいずれかの状態に制御される。
S−CPU上で実行中のセカンダリOS81bは、M−CPU上で実行中のプライマリタスク82aまたはM−CPU上で実行中の割込み処理から、セカンダリタスク82bの起動、停止、または待ち状態の解除の要求を受けたときは、S−CPU1〜S−CPUn上で実行中のタスクのタスク実行権を全て解放させて、スケジューリングを行う。
また、S−CPU上で実行中のセカンダリOS81bは、あるS−CPU上で実行中のセカンダリタスク82bまたはS−CPU上で実行中の割込み処理から、他のセカンダリタスク82bの起動、停止、または待ち状態の解除の要求を受けたとき、及びこの実行中のセカンダリタスク82bが待ち状態となるときは、S−CPU1〜S−CPUn上で実行中のタスクのタスク実行権を全て解放させて、スケジューリングを行う。
なお、前述のように、プライマリOS81aのスケジューリング方式及びレディキューの構成は、第1の実施の形態に係るOS21と同一とされ、セカンダリOS81bのスケジューリング方式及びレディキューの構成は、第2の実施の形態に係るOS51と同一とされているため、プライマリOS81aのスケジューリングについては図5のフローチャートを参照すればよく、セカンダリOS81bのスケジューリングについては図13のフローチャートを参照すればよい。なお、プライマリOS81aによりスケジューリングされるのは、M−CPUだけであり、CPU番号cが1でスケジューリング終了となる。また、セカンダリOS81bによりスケジューリングされるのは、S−CPU1〜S−CPUnであり、図13のCPUをS−CPUと読み替えればよい。
なお、セカンダリOS81bは、このスケジューリング中にプライマリタスク82aがセカンダリタスク82bの状態変化要求を出すのを防止するため、プライマリOS81aに対して、M−CPU上で実行中のタスクおよび割込み処理の一時停止の要求を出す。
スケジューリングを行うために各OS81a,82aからレディキュー等の各OSの共有データを操作するとき等には、OS81a,81b間の排他制御として、プライマリOS81aによるセカンダリOS81bの停止制御、並びにセカンダリOS81bによるプライマリOS81a及び他セカンダリOS81bの停止制御が行われる。プライマリOS81aによるセカンダリOS81bの停止制御は、セカンダリOS81bによるプライマリOS81a及び他セカンダリOS81bの停止制御よりも実行優先順位が高くされている。
この排他制御用として、リアルタイムOS81は、プライマリOS81a及び各セカンダリOS81bから参照可能なセカンダリOS共有データ83bに、排他制御要求用のフラグを格納する。具体的には、S−CPU数分(セカンダリOS81b数分)のプライマリOS用セカンダリ停止要求フラグと、これと同数のプライマリOS用セカンダリ停止応答フラグとを格納し、プライマリOS81aは、これらのフラグを用いてセカンダリOS81b上で実行中のタスクの停止制御を行う。また、S−CPU毎に(S−CPU上の各セカンダリOS81b毎に)、S−CPU数分(セカンダリOS81b数分)のセカンダリOS用セカンダリ停止要求フラグと、これと同数のセカンダリOS用セカンダリ停止応答フラグとを有し、セカンダリOS81bは、これらのフラグを用いてプライマリOS81aおよび他セカンダリOS81bの停止制御を行う。
次に、OS81による制御の具体例について説明する。なお、この説明に際しては、組込みコンピュータ61は、図17において、n=3の場合、すなわち、1つのM−CPU、及び3つのS−CPU,S−CPU2,S−CPU3を有するものとする。
まず、図18を用いて、この組込みコンピュータ61の電源が投入された後の各OS81a,81bの起動及びタスクの処理について説明する。
組込みコンピュータ61の電源が投入された場合、M−CPU、及びS−CPU1,S−CPU2,S−CPU3は、まず、共有メモリ72のリセットベクタの命令及びデータを読み込む。この結果、M−CPU上ではプライマリOS81aが、S−CPU1,S−CPU2,S−CPU3上ではセカンダリOS81bがそれぞれ同時に起動する。
そして、この起動時に、プライマリOS81aは、初期起動タスクとしてプライマリタスク82bを静的に生成してプライマリOS81a用のレディキューに接続し、スケジューリングを行う。そして、このスケジューリングの結果、プライマリOS81aによりM−CPUにこのプライマリタスク82bが割り当てられ、M−CPU上で初期起動タスクとしてのプライマリタスク82bが実行されることとなる。ここで、この初期起動タスクは、S−CPU1,S−CPU2,S−CPU3上で実行すべき初期起動タスクとしてのセカンダリタスク82b…82b(図18では、タスクA,B,Cと記載)を生成し、この生成されたセカンダリタスク82b…82b(タスクA,B,C)の起動要求を、各S−CPU1,S−CPU2,S−CPU3上で実行されるセカンダリOS81bに出力する。
一方、各S−CPU上のセカンダリOS81bは、起動後すぐにアイドル状態に移行する。そして、上記プライマリタスク82aからのセカンダリタスク82b(タスクA,B,C)の起動要求を待ち、起動要求を受けたときに、順次、セカンダリタスク82b…82b(タスクA,B,C)を起動する。起動の際に、どのS−CPUがどのセカンダリタスク82b…82b(タスクA,B,C)を実行するかについては、セカンダリOS81bがスケジューリングを行なって決定する。
なお、上記所定のスケジューリング条件が成立したときに行われる本リアルタイムOS81によるスケジューリングの作用は、プライマリOS81aの場合、基本的に第1の実施の形態に係るOS21と同様であるが、CPUがM−CPU1つであることから、タスクが接続されたレディキューのうちの最も優先度の高いレディキューの先頭に接続されたタスクが実行されることとなる。つまり、先頭のタスクの実行が終了すると、先頭から2番目に接続されたタスク、もしくはそれよりも低い優先度のうち最も高い優先度のレディキューの先頭に接続されているタスクが実行されることとなる。例えば、図3のようにレディキューにタスクが接続されているものとすると、まずタスクT1が実行され、このタスクT1の実行が終了すると、次に、タスクT2が実行され、このタスクT2の実行が終了すると、次にタスクT3が実行されというように、1つのM−CPUで順次実行されることとなる。
一方、セカンダリOS81bの場合、その作用は第2の実施の形態と同様となるため、その説明は省略する。
その場合に、本第3の実施の形態によれば、例えば、M−CPUが外部からの割り込み信号を受信したときに、該割り込み信号が例えばセカンダリタスク82bの起動に関するものであれば、これに関する割り込みハンドラが起動され、該割り込みハンドラからプライマリOS81aにセカンダリタスク82bの起動要求を行うプライマリタスク82aの起動要求が行われる。そして、プライマリOS81aによって起動されて実行状態となったプライマリタスク82aが、セカンダリOS81bに上記セカンダリタスク82bの起動要求を行い、この結果、このセカンダリタスク82bがセカンダリOS82bによって起動されて実行されることとなる。
つまり、外部割込みを伴う処理が専用に確保されたM−CPUで迅速に実行されると共に、セカンダリタスクの実行制御等組込みシステム全体に係る処理がやはり専用に確保されたM−CPUで迅速に実行され、この結果、組込みシステム全体のタスク処理が迅速に行われることとなる。また、S−CPUに外部割込みに伴うタスクを処理するための機能を設ける必要がない。
以上のように、第3の実施の形態に係る組込みシステムによれば、上記第1及び第2の実施の形態で説明した作用・効果に加え、リアルタイムOS81には、複数のS−CPU1,2,3及びメモリ72を含む第1の部分を請求項1から請求項3のいずれかに記載の各手段として機能させるセカンダリOS81b(第1の制御部)に加えて、外部割り込み処理機能を有するM−CPU(専用CPU)及びメモリ72を含む第2の部分を、複数のセカンダリタスク82b(第1の複数のタスク)の起動、停止をセカンダリOS81bに要求する複数のプライマリタスク82a(第2の複数のタスク)を制御する手段として機能させるプライマリOS81a(第2の制御部)が備えられているから、M−CPUで外部割込み処理が処理されるようになり、他の複数のS−CPU1,2,3の外部割込み処理負荷が解消される。また、プライマリOS81aでセカンダリOS81bを状況に応じて制御することができる。また、プライマリOS81aはセカンダリOS81bとはほぼ同じ構成であるから、M−CPUで外部割込み処理を行う仕組みを容易に構築することができると共に、プライマリOS81aでセカンダリOS81bをそれぞれの機能にあわせて最適化することができる。
本発明は、複数のCPUを有する組込みシステムに広く適用することができる。
本発明の実施の形態に係る組込みシステムのブロック図である。 本発明の第1の実施の形態に係る組込みシステムのハードウェア構成図である。 同組込みシステムを機能させるリアルタイムオペレーティングシステムのレディキューの説明図である。 同オペレーティングシステムのレディキューテーブルの構成図である。 同オペレーティングシステムによるタスクスケジューリングのフローチャートの一例である。 同オペレーティングシステムによるタスクスケジューリングの作用の説明図である(その1)。 同オペレーティングシステムによるタスクスケジューリングの作用の説明図である(その2)。 同オペレーティングシステムによるタスクスケジューリングの作用の説明図である(その3)。 本発明の第2の実施の形態に係る組込みシステムのハードウェア構成図である。 同組込みシステムを機能させるリアルタイムオペレーティングシステムのレディキューの説明図である。 同オペレーティングシステムのレディキューテーブルの構成図である。 同オペレーティングシステムのレディキューテーブルのCPU属性指定の説明図である。 同オペレーティングシステムによるタスクスケジューリングのフローチャートの一例である。 同オペレーティングシステムによるタスクスケジューリングの作用の説明図である(その1)。 同オペレーティングシステムによるタスクスケジューリングの作用の説明図である(その2)。 同オペレーティングシステムによるタスクスケジューリングの作用の説明図である(その3)。 本発明の第3の実施の形態に係る組込みシステムのハードウェア構成図である。 同オペレーティングシステムが適用された組込みシステムの起動時の作用の説明図である。
符号の説明
1,31,61 組込みコンピュータ
11−1〜11−n,41−1〜41−n,70,71−1〜71−n CPU
12,42,72 共有メモリ(第1記憶装置、第2記憶装置、第3記憶装置、第4記憶装置、第5記憶装置、第6記憶装置)
21,51,81 リアルタイムオペレーティングシステム(制御プログラム)
22,52,82 タスク
70 プライマリCPU
71−1〜71−n セカンダリCPU
81a プライマリOS(第2の制御部)
81b セカンダリOS(第1の制御部)

Claims (9)

  1. 複数のCPUと、該複数のCPUで共用の第1、第2、第3記憶装置とを有する組込みコンピュータを制御するプログラムであって、
    コンピュータを、
    上記第1記憶装置上に、上記各CPUで共用とされて異なる優先度が設定された複数のレディキューを作成するレディキュー作成手段、
    上記第2記憶装置に記憶されている複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定するタスク優先度設定手段、
    上記第3記憶装置上に、上記複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成するタスク管理情報作成手段、
    該タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第3記憶装置上における格納領域の情報を、上記レディキュー作成手段で作成された複数のレディキューのうちの、上記タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納するタスク管理情報格納領域情報格納手段、
    上記複数のCPUで実行中のタスクのうちのいずれかのタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除するタスク管理情報格納領域情報削除手段、
    上記タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中の全タスクのタスク実行権を解放させて全CPUを一時タスク非実行状態とさせるタスク実行権解放手段、
    該タスク実行権解放手段で全タスクのタスク実行権が解放されるときに、この解放される各タスクの状態を当該各タスクのタスク管理情報に記録するタスク実行権解放時状態記録手段、
    上記タスク実行権解放手段でタスク非実行状態とされた各CPUに、上記複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューに格納されたタスク情報格納領域情報に係るタスクを、該レディキューの先頭側から順に割り当てるタスク割り当て手段、
    該タスク割り当て手段でタスクを割り当てたCPUに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させるタスク実行手段
    として機能させることを特徴とする組込みコンピュータ制御プログラム。
  2. 請求項1に記載の組込みコンピュータ制御プログラムにおいて、
    コンピュータをタスク実行権解放手段として機能させるときに、タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるとき、または実行が終了したタスクに係るタスク管理情報格納領域情報がタスク管理情報格納領域情報削除手段によってレディキューから削除されるときは、実行中の全タスクのタスク実行権を解放させて全CPUを一時タスク非実行状態とさせることを特徴とする組込みコンピュータ制御プログラム。
  3. 請求項1または請求項2に記載の組込みコンピュータ制御プログラムにおいて、
    複数のCPUのうちに特定の機能を有する特定CPUが備えられている場合に、
    コンピュータをレディキュー作成手段として機能させるときに、上記特定CPUに関連付けた特定のレディキューを作成するように機能させ、
    タスク管理情報格納領域情報格納手段として機能させるときに、上記特定の機能を利用する特定タスクのタスク管理情報格納領域情報については上記特定のレディキューに格納するように機能させ、
    タスク割り当て手段として機能させるときに、特定のレディキューに接続された特定タスクを、該特定CPUに割り当てるように機能させる
    ことを特徴とする組込みコンピュータ制御プログラム。
  4. 複数のCPU及び第1、第2、第3記憶装置を含む第1の部分を第1の制御部として機能させる請求項1から請求項3のいずれかに記載の組込みコンピュータ制御プログラムにおいて、
    上記組込みコンピュータに、上記第1の部分に加え、外部割り込み処理機能を有する専用CPU及び第4、第5、第6記憶装置を含む第2の部分が備えられている場合に、
    この組込みコンピュータの上記第2の部分を、第1の複数のタスクの実行制御に係る要求を第1の制御部に対して行う第2の複数のタスクを制御する第2の制御部として機能させると共に、
    この第2の制御部として機能させるときに、
    上記第4記憶装置上に専用CPUで共用とされて異なる優先度が設定された第2の複数のレディキューを作成する第2レディキュー作成手段、
    上記第5記憶装置に記憶されている、第1の複数のタスクを実行制御する第2の複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定する第2タスク優先度設定手段、
    上記第6記憶装置上に、上記第2の複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成する第2タスク管理情報作成手段、
    該第2タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第6記憶装置上における格納領域の情報を、上記第2レディキュー作成手段で作成された第2の複数のレディキューのうちの、上記第2タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納する第2タスク管理情報格納領域情報格納手段、
    上記専用CPUで実行中のタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除する第2タスク管理情報格納領域情報削除手段、
    上記第2タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中のタスクのタスク実行権を解放させてCPUを一時タスク非実行状態とさせる第2タスク実行権解放手段、
    該第2タスク実行権解放手段でタスクの実行権が解放されるときに、この解放されるタスクの状態を当該タスクのタスク管理情報に記録する第2タスク実行権解放時状態記録手段、
    上記第2タスク実行権解放手段でタスク非実行状態とされたCPUに、上記第2の複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューの先頭に格納されたタスク情報格納領域情報に係るタスクを割り当てる第2タスク割り当て手段、
    該第2タスク割り当て手段でタスクを割り当てたCPUに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させる第2タスク実行手段
    として機能させることを特徴とする組込みコンピュータ制御プログラム。
  5. 請求項1から請求項4のいずれかに記載の組込みコンピュータ制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
  6. 複数のCPUと、
    該複数のCPUで共用の第1、第2、第3記憶装置と、
    上記第1記憶装置上に、上記各CPUで共用とされて異なる優先度が設定された複数のレディキューを作成するレディキュー作成手段と、
    上記第2記憶装置に記憶されている複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定するタスク優先度設定手段と、
    上記第3記憶装置上に、上記複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成するタスク管理情報作成手段と、
    該タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第3記憶装置上における格納領域の情報を、上記レディキュー作成手段で作成された複数のレディキューのうちの、上記タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納するタスク管理情報格納領域情報格納手段と、
    上記複数のCPUで実行中のタスクのうちのいずれかタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除するタスク管理情報格納領域情報削除手段と、
    上記タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中の全タスクの実行権を解放させて全CPUを一時タスク非実行状態とさせるタスク実行権解放手段と、
    該タスク実行権解放手段で全タスクの実行権が解放されるときに、この解放される各タスクの状態を当該各タスクのタスク管理情報に記録するタスク実行権解放時状態記録手段と、
    上記タスク実行権解放手段でタスク非実行状態とされた各CPUに、上記複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューに格納されたタスク情報格納領域情報に係るタスクを、該レディキューの先頭側から順に割り当てるタスク割り当て手段と、
    該タスク割り当て手段でタスクを割り当てたCPUに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させるタスク実行手段と
    を有することを特徴とする組込みシステム。
  7. 請求項6に記載の組込みシステムにおいて、
    タスク実行権解放手段は、タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合に、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるとき、または実行が終了したタスクに係るタスク管理情報格納領域情報がタスク管理情報格納領域情報削除手段によってレディキューから削除されるときは、実行中の全タスクのタスク実行権を解放させて全CPUを一時タスク非実行状態とさせることを特徴とする組込みシステム
  8. 請求項6または請求項7に記載の組込みシステムにおいて、
    複数のCPUのうちに特定の機能を有する特定CPUが備えられていると共に、
    レディキュー作成手段は、上記特定CPUに関連付けた特定のレディキューを作成し、
    タスク管理情報格納領域情報格納手段は、上記特定の機能を利用する特定タスクのタスク管理情報格納領域情報については上記特定のレディキューに格納し、
    タスク割り当て手段は、特定のレディキューに接続された特定タスクを、該特定CPUに割り当てる
    ことを特徴とする組込みシステム
  9. 複数のCPU及び第1、第2、第3記憶装置を含む第1の部分を制御する制御部を第1の制御部とする請求項6から請求項8のいずれかに記載の組込みシステムにおいて、
    上記第1の部分に加え、外部割り込み処理機能を有する専用CPU及び第4、第5、第6記憶装置を含む第2の部分が備えられていると共に、
    この第2の部分を、第1の複数のタスクの実行制御に係る要求を第1の制御部に行う第2の複数のタスクを制御する手段として機能させる第2の制御部が備えられ、
    この第2の制御部は、
    上記第4記憶装置上に、専用CPUで共用とされて異なる優先度が設定された第2の複数のレディキューを作成する第2レディキュー作成手段と、
    上記第5記憶装置に記憶されている、第1の複数のタスクを実行制御する第2の複数のタスクのうちの少なくとも実行すべきタスクの優先度を設定する第2タスク優先度設定手段と、
    上記第6記憶装置上に、上記第2の複数のタスクのうちの少なくとも実行すべきタスクのタスク管理情報を作成する第2タスク管理情報作成手段と、
    該第2タスク管理情報作成手段で作成された実行すべきタスクのタスク管理情報の上記第6記憶装置上における格納領域の情報を、上記第2レディキュー作成手段で作成された第2の複数のレディキューのうちの、上記第2タスク優先度設定手段で設定された優先度と同一優先度のレディキューの最後尾に格納する第2タスク管理情報格納領域情報格納手段と、
    上記専用CPUで実行中のタスクの実行が終了したときに、この実行が終了したタスクに係るタスク管理情報格納領域情報をレディキューから削除するタスク第2管理情報格納領域情報削除手段と、
    上記第2タスク情報格納領域情報格納手段によって実行すべきタスクに係るタスク情報格納領域情報が該タスクの優先度に対応するレディキューの最後尾に格納される場合において、該実行すべきタスクの優先度よりも優先度が低いタスクが実行中であるときは、実行中のタスクのタスク実行権を解放させてCPUを一時タスク非実行状態とさせる第2タスク実行権解放手段と、
    該第2タスク実行権解放手段でタスクのタスク実行権が解放されるときに、この解放されるタスクの状態を当該タスクのタスク管理情報に記録する第2タスク実行権解放時状態記録手段と、
    上記第2タスク実行権解放手段でタスク非実行状態とされたCPUに、上記第2の複数のレディキューに格納されたタスク管理情報格納領域情報に係るタスクのうちの、優先度の高いレディキューの先頭に格納されたタスク情報格納領域情報に係るタスクを割り当てる第2タスク割り当て手段と、
    該第2タスク割り当て手段でタスクを割り当てたCPUに、当該タスクを、当該タスクのタスク管理情報格納領域情報に基づいて実行させる第2タスク実行手段と
    を有することを特徴とする組込みシステム。
JP2004143253A 2004-05-13 2004-05-13 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム Expired - Fee Related JP3893136B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004143253A JP3893136B2 (ja) 2004-05-13 2004-05-13 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004143253A JP3893136B2 (ja) 2004-05-13 2004-05-13 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム

Publications (2)

Publication Number Publication Date
JP2005327007A JP2005327007A (ja) 2005-11-24
JP3893136B2 true JP3893136B2 (ja) 2007-03-14

Family

ID=35473331

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004143253A Expired - Fee Related JP3893136B2 (ja) 2004-05-13 2004-05-13 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム

Country Status (1)

Country Link
JP (1) JP3893136B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102915254A (zh) * 2011-08-02 2013-02-06 中兴通讯股份有限公司 任务管理方法及装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007156976A (ja) * 2005-12-07 2007-06-21 Hitachi Kokusai Electric Inc 情報処理システム
JP2007188398A (ja) * 2006-01-16 2007-07-26 Seiko Epson Corp マルチプロセッサシステム、マルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラム。
JP5365201B2 (ja) * 2009-01-07 2013-12-11 日本電気株式会社 プロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラム
JP5545288B2 (ja) * 2009-02-18 2014-07-09 日本電気株式会社 タスク割当装置、タスク割当方法、及び、タスク割当プログラム
JP5631022B2 (ja) * 2010-03-05 2014-11-26 キヤノン株式会社 処理装置、処理の割り当て方法及びプログラム
JP7322797B2 (ja) * 2020-04-28 2023-08-08 株式会社デンソー リアルタイム演算処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102915254A (zh) * 2011-08-02 2013-02-06 中兴通讯股份有限公司 任务管理方法及装置
CN102915254B (zh) * 2011-08-02 2018-04-06 中兴通讯股份有限公司 任务管理方法及装置

Also Published As

Publication number Publication date
JP2005327007A (ja) 2005-11-24

Similar Documents

Publication Publication Date Title
CN109997112B (zh) 数据处理
CN108920267B (zh) 任务处理装置
WO2017070900A1 (zh) 多核数字信号处理系统中处理任务的方法和装置
US9588808B2 (en) Multi-core system performing packet processing with context switching
JP2009265963A (ja) 情報処理システム及びタスクの実行制御方法
KR101680109B1 (ko) 복수 코어 장치 및 그의 로드 조정 방법
US7590990B2 (en) Computer system
US20080140896A1 (en) Processor and interrupt controlling method
JP6296678B2 (ja) ソフトリアルタイムオペレーティングシステムの実時間性を確保する方法及び装置
JP2010140290A (ja) マルチプロセッサシステム及びその排他制御の調停方法
JP2010128664A (ja) マルチプロセッサシステム、競合回避プログラム及び競合回避方法
KR20070090649A (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
JP3893136B2 (ja) 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム
US20030018682A1 (en) Computer system and computer-readable record medium
US20150277973A1 (en) System and method for conditional task switching during ordering scope transitions
JP2018073301A (ja) 車両制御装置
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム
JP4017005B2 (ja) 演算装置
JP7054688B2 (ja) 同期制御システムおよび同期制御方法
JP2007141155A (ja) マルチコアプロセッサにおけるマルチコア制御方法
JP2013522710A (ja) Itシステムの構成方法、そのコンピュータプログラムおよびitシステム
US20150363227A1 (en) Data processing unit and method for operating a data processing unit
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
US20230195523A1 (en) Semiconductor device, control method for the same, and program
JP2013149108A (ja) 情報処理装置及びその制御方法、プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060418

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060515

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: 20061121

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061208

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101215

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111215

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121215

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121215

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141215

Year of fee payment: 8

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141215

Year of fee payment: 8

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

LAPS Cancellation because of no payment of annual fees