(57)【特許請求の範囲】
【請求項１】
複数のタスクが並列的に実行されるマルチタスク処理を行うマルチタスク処理装置において、
各タスクに対応して占有される複数のレジスタバンクと、
上記複数のレジスタバンクのうちで空きレジスタバンクがない場合に、タスクが待機するための空き待ち行列手段と、
上記複数のレジスタバンクを管理する管理手段と
を有し、
上記管理手段は、タスクが実行された際に、上記空きレジスタバンクがある場合は、該空きレジスタバンクの何れかに実行された該タスクを動的に割り当て、
上記レジスタバンクを占有しているタスクの処理が終了した際に、該タスクが占有していた上記レジスタバンクを解放し、解放した該レジスタバンクに上記空き待ち行列手段に待機しているタスクを割り当てるようにしたマルチタスク処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、リアルタイムオペレーティングシステムを用いたマルチタスク処理装置に関する。
【０００２】
【従来の技術】
リアルタイムオペレーティングシステムは、例えば組み込み機器用のオペレーティングシステムとして用いられる。リアルタイムオペレーティングシステムは、一定時間以内での応答を保証するようなオペレーティングシステムであり、複数のタスクを並列的に実行させるためのマルチタスク機能が不可欠である。
【０００３】
リアルタイムオペレーティングシステムは、タスク管理機能、タスク付属同期機能、同期・通信機能、メモリプール管理機能、割り込み管理機能、時間管理機能、システム管理機能を有している。
【０００４】
タスク管理機能は、タスクの状態を直接操作したり、参照したりする機能である。タスク付属同期機能は、タスクをサスペンド状態にして一時的に実行を停止する機能とそれを解除する機能等を含むタスクに予め付加されている同期機能である。同期・通信機能は、セマフォ、イベントフラグ、メールボックスを用いたタスクとは独立した同期機能及び通信機能である。メモリプール管理機能は、カーネルによってメモリブロックの割当及びメモリプールの管理を行う機能である。割り込み管理機能は、外部割り込みの禁止／許可及び外部割り込みに対するハンドラの定義を行う機能である。時間管理機能は、システムクロックの設定や参照する機能、タスクを遅延させる機能及び指定した時刻に起動されるハンドラの定義を行う機能である。システム管理機能は、カーネルのバージョンを参照する機能である。
【０００５】
オペレーティングシステムがタスクを管理するための制御領域は、ＴＣＢ（Task Control Block）と呼ばれている。ＴＣＢは、各タスクを管理するために、タスク毎に必要になる。ＴＣＢには、タスクに割当られたＩＤ番号であるタスクＩＤ、タスクの状態を示すタスクステータス、タスク起動時のタスクの優先度を示すタスク優先度、タスクに割り当てられたスタックポインタを示すスタックポインタ、レジスタ、プログラムステータスワードを示すコンテキスト、個別情報等が格納される。
【０００６】
マルチタスク処理を行うためのタスクの状態としては、実行状態（ＲＵＮ）、実行可能状態（ＲＥＡＤＹ）、待ち状態（ＷＡＩＴ）、休止状態（ＤＯＲＭＡＮＴ）の４状態がある。実行状態は、カーネルによって実行権が渡されたタスクの状態である。待ち状態は、カーネルから実行権が渡されれば実行状態になれるタスクの状態である。待ち状態は、タスクが何らかの条件が満たされるのを待っている状態であり、実行条件が整えば実行可能となる。休止状態は、タスクが起動されていない状態又は終了後の状態である。
【０００７】
従来のリアルタイムオペレーティングシステムでは、アプリケーションのタスクから処理要求があると、タスクから処理要求を行い、リアルタイムオペレーティングシステムの該当する処理要求の中でコテキスト等の退避を行い、処理要求の処理を行い、実行可能状態のタスクから次に実行するタスクをサーチし（スケジューリング）、実際に実行するためにコンテキスト等を復帰させ実行権を与える（ディスパッチ）ような処理が行われる。スケジューリングを行う場合には、タスクが持っているタスク優先度が考慮される。つまり、２つのタスクＡ、Ｂが実行可能状態で、先にタスクＢの方が実行可能状態になったとしても、タスクＡの方が高い優先度が与えられていたなら、タスクＡに実行権が与えられる。
【０００８】
【発明が解決しようとする課題】
リアルタイムオペレーティングシステムでは、システムコールに対する応答時間を短縮することが重要である。システムコールに対する応答時間は、アプリケーションからシステムコールを発行して、次のアプリケーションに制御が戻ってくる時間であり、これはディスパッチ時間と呼ばれる。つまり、数々の事象に対して最適なのは実時間に応答することであるが、システムコールには、オーバーヘッドすなわちディスパッチ時間がある。したがって、この時間が如何に短縮されているかにより、リアルタイムオペレーティングシステムの性能を評価することができる。
【０００９】
そこで、各タスクに対応してレジスタバンクを用意することで、ディスパッチ時間を短縮することが考えられる。すなわち、従来では、システムコールが発行されると、コンテキストの退避／復帰の処理が行われる。このため、ディスパッチ時間が長くかかる。これに対して、各レジスタバンクを各タスクに対応して用意しておけば、コンテキスト等の退避／復帰がレジスタバンクを切り替えることにより行なえる。
【００１０】
しかしながら、レジスタバンクの数は有限である。このため、各タスクを各レジスタバンクに１対１に対応させると、並行して動作するタスクの数は、レジスタバンクの数に制限され、レジスタバンクの空きがなければ、処理を実行することができないことになる。このことは、アプリケーションを作成する上で制限事項となる。
【００１１】
したがって、この発明の目的は、並行して実行できるタスクの数が制限されず、ディスパッチ時間を短縮できるマルチタスク処理装置を提供することにある。
【００１２】
【課題を解決するための手段】
この発明は、複数のタスクが並列的に実行されるマルチタスク処理を行うマルチタスク処理装置において、各タスクに対応して占有される複数のレジスタバンクと、複数のレジスタバンクのうちで空きレジスタバンクがない場合に、タスクが待機するための空き待ち行列手段と、複数のレジスタバンクを管理する管理手段とを有し、管理手段は、タスクが実行された際に、空きレジスタバンクがある場合は、空きレジスタバンクの何れかに実行されたタスクを動的に割り当て、レジスタバンクを占有しているタスクの処理が終了した際に、タスクが占有していたレジスタバンクを解放し、解放したレジスタバンクに空き待ち行列手段に待機しているタスクを割り当てるようにしたマルチタスク処理装置である。
【００１３】
この発明では、更に、バンクの空き待ち行列手段を有し、各レジスタバンクは、そのレジスタバンクのタスクの処理が終了した時点でそのタスクを解放し、タスクを解放したバンクに空き待ち行列手段に待機されているタスクを割り当てるようにしている。
【００１４】
【作用】
複数のタスクに対応してレジスタバンクが用意される。このため、コンテキスト等の退避／復帰がレジスタバンクを切り替えることにより行なえる。そして、複数あるレジスタバンクが個々にオペレーティングシステムにより管理され、起動時に空いているレジスタバンクにタスクが動的に割り当てられ、タスクが終了されると、占有されていたレジスタバンクが解放される。オペレーティングシステムが管理しているレジスタバンクに空きが無ければ、起動したタスクはレジスタバンクの空き待ちの状態となり、タスクが占有しているレジスタバンクを解放するまで、待機される。このため、実行されるタスクの数がレジスタバンクの数に制限されなくなる。
【００１５】
【実施例】
以下、この発明の一実施例について図面を参照して説明する。図１は、この発明を実現するためのハードウェアの構成を示すものである。図１に示すように、この発明が適用された中央処理装置１は、ＣＰＵコア部２と、ＲＯＭ３と、ＲＡＭ４と、レジスタバンク５−１〜５−ｎと、割り込みコントローラ６と、Ｉ／Ｏポート７とを含んでいる。レジスタバンク５−１〜５−ｎは、例えばバンク数が１５（ｎ＝１５）であり、これらのレジスタバンクは各タスクに占有される。このレジスタバンク５−１〜５−ｎを利用することで、ディスパッチ時間が短縮できる。
【００１６】
すなわち、従来では、システムコールが発行されると、コンテキストの退避／復帰の処理が行われる。このため、ディスパッチ時間が長くかかる。これに対して、各レジスタバンク５−１〜５−ｎを各タスクに対応して用意しておけば、コンテキスト等の退避／復帰がレジスタバンク５−１〜５−ｎを切り替えることにより行なえる。
【００１７】
しかしながら、レジスタバンク５−１〜５−ｎの数は有限（例えば１５）である。このため、各タスクを各レジスタバンク５−１〜５−ｎに１対１に対応させると、並行して動作するタスクの数は、レジスタバンク５−１〜５−ｎの数に制限され、レジスタバンク５−１〜５−ｎの空きがなければ、処理を実行することができないことになる。
【００１８】
そこで、このようなレジスタバンク５−１〜５−ｎの数によるタスクの数の制限を無くすために、複数あるレジスタバンク５−１〜５−ｎが個々にオペレーティングシステムにより管理され、起動時に空いているレジスタバンク５−１〜５−ｎにタスクが動的に割り当てられる。割り当てられたレジスタバンク５−１〜５−ｎがそのタスク用の資源として占有される。タスクが終了されると、占有されていたレジスタバンク５−１〜５−ｎが解放される。オペレーティングシステムが管理しているレジスタバンク５−１〜５−ｎに空きが無ければ、起動したタスクはレジスタバンクの空き待ちの状態となり、タスクが占有しているレジスタバンク５−１〜５−ｎを解放するまで、待機される。
【００１９】
以下、具体例について説明する。図２において、Ｂ１〜Ｂ４は、レジスタバンクである。これらのレジスタバンクＢ１〜Ｂ４は、図１におけるレジスタバンク５−１〜５−ｎに対応している。レジスタバンク５−１〜５−ｎのバンク数は例えば１５であるが、ここでは説明を簡単とするため、バンク数を４としている。これらレジスタバンクＢ１〜Ｂ４のうち、レジスタバンクＢ１〜Ｂ３は実行される各タスクに割り当てられ、レジスタバンクＢ４はオペレーティングシステムＯＳ用に割り当てられる。Ｔ１〜Ｔ４はタスクであり、これらのタスクＴ１〜Ｔ４は、同じ優先度のものである。Ｑ１は、実行されるタスクが待機される実行可能タスク行列である。Ｑ２は、レジスタバンク待ちのタスクが待機されるバンク空き待ち行列である。
【００２０】
４つのタスクＴ１〜Ｔ４は、先ず、実行可能タスク行列Ｑ１に待機される。これらのタスクのうち、先ず、タスクＴ１、Ｔ２の順に起動されるとすると、タスクＴ１にはレジスタバンクＢ１が資源として割り当てられ、タスクＴ２にはレジスタバンクＢ２が資源として割り当てられる。各レジスタバンクＢ１、Ｂ２は、処理が終了するまで、これらの各タスクＴ１、Ｔ２に占有される。
【００２１】
次に、タスクＴ３、Ｔ４が起動されるとする。この時、レジスタバンクＢ３は空いている。このため、タスクＴ３にレジスタバンクＢ３が資源として割り当てられる。これで、全てのレジスタバンクＢ１〜Ｂ４が使われたことになり、タスクＴ４に割り当てるべきレジスタバンクがなくなる。そこで、タスクＴ４は、バンク空き待ち行列Ｑ２に待機される。
【００２２】
その後、レジスタバンクＢ１〜Ｂ３に割り当てられたいずれかのタスクの処理が終了して休止状態になったとすると、オペレーティングシステムＯＳは、バンク待ち行列Ｑ２に待機されていたタスクＴ４を、処理の終了したタスクのレジスタバンクに割り当てる。
【００２３】
図３及び図４は、第２の例である。この例では、５つのタスクＴ１１、Ｔ１２、Ｔ１３、Ｔ１４、Ｔ１５が実行可能タスク行列Ｑ１に待機される。図３に示すように、これらのタスクのうち、タスクＴ１３、Ｔ１４、Ｔ１５の順に起動されるとすると、タスクＴ１３にはレジスタバンクＢ１が資源として割り当てられ、タスクＴ１４にはレジスタバンクＢ２が資源として割り当てられ、タスクＴ１５にはレジスタバンクＢ３が資源として割り当てられる。各レジスタバンクＢ１〜Ｂ３は、処理が終了するまで、これらの各タスクＴ１３、Ｔ１４、Ｔ１５に占有される。
【００２４】
次に、タスクＴ１１、Ｔ１２が起動されるとする。この時、レジスタバンクＢ１、Ｂ２、Ｂ３は、タスクＴ１３、Ｔ１４、Ｔ１５に占有されているため、タスクＴ１１、Ｔ１２に割り当てるべきレジスタバンクがない。このため、タスクＴ１１、Ｔ１２は、バンク空き待ち行列Ｑ２に待機される。
【００２５】
その後、タスクＴ４が処理を終了して休止状態になったとすると、図４で破線で示すように、オペレーティングシステムＯＳは、タスクＴ１４に占有されていたレジスタバンクＢ２を解放し、バンク待ち行列Ｑ２で待機されていたタスク（この場合にはタスクＴ１１）にこのレジスタバンクＢ２を割り当てる。更にその後、レジスタバンクＢ１〜Ｂ３に割り当てられたいずれかのタスクの処理が終了して休止状態となったときに、オペレーティングシステムＯＳは、バンク待ち行列Ｑ２に待機されていたタスクＴ１２を、処理の終了したタスクのレジスタバンクに割り当てる。
【００２６】
【発明の効果】
この発明によれば、複数のタスクに対応してレジスタバンクが用意される。このため、コンテキスト等の退避／復帰がレジスタバンクの切り替えることにより行なえ、ディスパッチ時間が短縮できる。そして、複数あるレジスタバンクが個々にオペレーティングシステムにより管理され、起動時に空いているレジスタバンクにタスクが動的に割り当てられ、タスクが終了されると、占有されていたレジスタバンクが解放される。オペレーティングシステムが管理しているレジスタバンクに空きが無ければ、起動したタスクはレジスタバンクの空き待ちの状態となり、タスクが占有しているレジスタバンクを解放するまで、他のタスクが待機される。このため、実行されるタスクの数がレジスタバンクの数に制限されなくなる。
【図面の簡単な説明】
【図１】この発明が適用できる中央処理装置の一例のブロック図である。
【図２】この発明の一実施例の動作説明図である。
【図３】この発明の一実施例の動作説明図である。
【図４】この発明の一実施例の動作説明図である。
【符号の説明】
５−１〜５−ｎ，Ｂ１〜Ｂ４  レジスタバンク
Ｔ１〜Ｔ４，Ｔ１〜Ｔ１５  タスク
ＯＳ  オペレーティングシステム
Ｑ１  実行可能タスク行列
Ｑ２  バンク空き待ち行列
【図１】
0003644042.tif 000002
【図２】
0003644042.tif 000003
【図３】
0003644042.tif 000004
【図４】
0003644042.tif 000005