(57)【要約】【課題】汎用ＯＳ（ＧＰＯＳ）を一つのタスクとして実行するリアルタイムＯＳでＧＰＯＳ制御下のプロセスとリアルタイムタスク（ＲＴタスク）との間で通信を行う場合に、ＧＰタスクの優先度をリアルタイムタスクの優先度に上げることによって通信と関係ないプロセスも高い優先度で実行されることを防ぐこと。【解決手段】優先度継承管理リスト１２０を用いて、ＯＳ間通信を要求して待ちとなったすべてのＲＴタスクのＴＣＢを優先度順に管理し、ＲＴタスクからＧＰタスク３００へ通信要求を行ってＲＴタスクが待ちになる際に、スケジューラ１５０が、このＲＴタスクが優先度継承管理リスト１２０の先頭のＲＴタスクであるか否かを判定し、先頭のＲＴタスクである場合に、このＲＴタスクの優先度をこのＲＴタスクと通信するプロセスだけに継承させる。【選択図】        図１
2005234658.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムおよびその制御下で実行されるプロセスを一つのタスクとしてコンピュータに実行させるタスク管理プログラムであって、
前記オペレーティングシステムの制御下で実行されるプロセスと協調して動作するオペレーティングシステムタスク以外のタスクが、協調動作を該オペレーティングシステムタスクに要求して待ち状態になる際に、該オペレーティングシステムタスクに協調動作を要求して待ち状態にある他のタスクの優先度よりも該待ち状態になるタスクの優先度が高いか否かを判定する優先度判定手順と、
前記優先度判定手順により、前記待ち状態になるタスクの優先度が前記他のタスクの優先度よりも高いと判定された場合に、前記オペレーティングシステムタスクおよび該待ち状態になるタスクと協調して動作する前記オペレーティングシステム制御下のプロセスに、該待ち状態になるタスクの優先度を継承する優先度継承手順と
をコンピュータに実行させることを特徴とするタスク管理プログラム。
【請求項２】
前記オペレーティングシステムタスク以外のタスクに要求された協調動作を前記オペレーティングシステムタスクが終了して該タスクの実行が再開される際に、前記他のタスクがあるか否かを判定する待ちタスク判定手順と、
前記待ちタスク判定手順により他のタスクがあると判定された場合に、前記オペレーティングシステムタスクおよび他のタスクのうちで優先度が最も高いタスクと協調して動作するプロセスに該優先度が最も高いタスクの優先度を継承させる優先度復帰手順と
をさらにコンピュータに実行させることを特徴とする請求項１に記載のタスク管理プログラム。
【請求項３】
前記優先度判定手順は、前記オペレーティングシステムタスクに協調動作を要求して待ち状態にあるタスクのタスク制御ブロックを優先度順に接続した優先度継承管理リストを用いて、前記待ち状態になるタスクの優先度が前記他のタスクの優先度よりも高いか否かを判定することを特徴とする請求項１または２に記載のタスク管理プログラム。
【請求項４】
前記プロセスとタスクとの間の協調動作は、ＯＳ間通信機構を用いた通信であることを特徴とする請求項１または２に記載のタスク管理プログラム。
【請求項５】
オペレーティングシステムおよびその制御下で実行されるプロセスを一つのタスクとしてコンピュータに実行させるタスク管理装置であって、
前記オペレーティングシステムの制御下で実行されるプロセスと協調して動作するオペレーティングシステムタスク以外のタスクが、協調動作を該オペレーティングシステムタスクに要求して待ち状態になる際に、該オペレーティングシステムタスクに協調動作を要求して待ち状態にある他のタスクの優先度よりも該待ち状態になるタスクの優先度が高いか否かを判定する優先度判定手段と、
前記優先度判定手段により、前記待ち状態になるタスクの優先度が前記他のタスクの優先度よりも高いと判定された場合に、前記オペレーティングシステムタスクおよび該待ち状態になるタスクと協調して動作する前記オペレーティングシステム制御下のプロセスに、該待ち状態になるタスクの優先度を継承する優先度継承手段と
を備えたことを特徴とするタスク管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、オペレーティングシステムが二重になっているシステムにおいて、一つのオペレーティングシステム及びその制御下で実行されるプロセスを一つの低優先度タスクとしてコンピュータに実行させるタスク管理プログラムおよびタスク管理装置に関し、特に、このオペレーティングシステムの制御下で実行されるプロセスが他の高優先度タスクと協調して動作するために、高優先度タスクの有する高い優先度をオペレーティングシステムタスクに継承させる場合に、協調して動作するプロセス以外のプロセスも高い優先度で実行されることに起因して高優先度タスクの実行が妨げられることを防ぐことができるタスク管理プログラムおよびタスク管理装置に関するものである。
【背景技術】
【０００２】
近年、１台のコンピュータ上で二つのオペレーティングシステム（以下「ＯＳ」という。）を同時に動作させるハイブリッドＯＳが利用されるようになってきている。これは、ＯＳにはリアルタイム性に優れたものや開発環境に優れたものなどの特徴があり、複数のＯＳを利用することによって、それぞれのＯＳの優れた点を使用できる利点があるためである。
【０００３】
このようなハイブリッドＯＳの一つとして、図６に示すように、汎用ＯＳをリアルタイムＯＳの上に置いて、汎用ＯＳ(上記オペレーティングシステムタスクに相当し、以下ＧＰＯＳと称す)をリアルタイムＯＳ(以下ＲＴＯＳと称す)の一つのタスクとして実行するＯＳがある。同図に示すように、このハイブリッドＯＳでは、ＧＰＯＳはＲＴＯＳの制御下にあるリアルタイムタスク(以下ＲＴタスクと称す)の一つとして実行される。すなわち、ＧＰＯＳ、及びその制御下で実行されるプロセスも含めＧＰタスクとして実行される。このようなＧＰＯＳとしては、たとえばLinuxがある。
このハイブリッドＯＳでは、ＧＰＯＳおよびその制御下にあるプロセスに対するリアルタイム性要求が低いことから、ＧＰタスクを最低優先度で実行し、他のＲＴタスクを優先的に実行することがおこなわれている（たとえば、非特許文献１参照。）。
【０００４】
ただし、たとえば、車載ナビゲーションシステムでは、ＲＴタスクである経路探索タスクをＧＰＯＳ制御下のユーザインタフェースプロセスに対して優先的に実行すると、ユーザの操作が認識されない状況が発生するなど、ＧＰタスクを最低優先度で実行することが常によいとは限らない（特許文献１参照。）。
【０００５】
また、ハイブリッドＯＳでは、ＧＰＯＳの制御下にあるプロセスと他のＲＴタスクが協調して動作することが必要な場合がある。たとえば、インターネットを用いた音楽のストリーミング再生では、インターネットからの音楽データの受信はＧＰＯＳ制御下のプロセスが行い、このプロセスは受信した音楽データを音楽再生ＲＴタスクに送信する必要がある。
【０００６】
このような場合には、ＧＰタスクの優先度が低いと優先度の高いリアルタイムタスクとの協調動作が行えないため、単一ＯＳ下で二つのタスクが通信する場合のように、ＲＴタスクの高い優先度をＧＰタスクに継承させることが考えられる。
【０００７】
【特許文献１】特開２０００−２４２５１２号公報
【非特許文献１】「リアルタイムＯＳそれともLinux?」、［平成１５年８月８日検索］、インターネット＜URL:http://www.qnx.co.jp/resource/QNX-Linux.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、単にＲＴタスクの高い優先度をＧＰタスクに継承させると、ＲＴタスクと協調して動作するプロセス以外のプロセスも高い優先度で実行されるため、ＲＴタスクの実行が妨げられるという問題がある。
【０００９】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、ＧＰＯＳの制御下で実行されるプロセスがＲＴタスクと協調して動作するためにＲＴタスクの有する高い優先度をＧＰタスクに継承させる場合に、協調して動作するプロセス以外のプロセスも高い優先度で実行されることに起因してＲＴタスクの実行が妨げられることを防ぐことができるタスク管理プログラムおよびタスク管理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明は、オペレーティングシステムおよびその制御下で実行されるプロセスを一つのタスクとしてコンピュータに実行させるタスク管理プログラムであって、前記オペレーティングシステムの制御下で実行されるプロセスと協調して動作するオペレーティングシステムタスク以外のタスクが、協調動作を該オペレーティングシステムタスクに要求して待ち状態になる際に、該オペレーティングシステムタスクに協調動作を要求して待ち状態にある他のタスクの優先度よりも該待ち状態になるタスクの優先度が高いか否かを判定する優先度判定手順と、前記優先度判定手順により、前記待ち状態になるタスクの優先度が前記他のタスクの優先度よりも高いと判定された場合に、前記オペレーティングシステムタスクおよび該待ち状態になるタスクと協調して動作する前記オペレーティングシステム制御下のプロセスに、該待ち状態になるタスクの優先度を継承する優先度継承手順とをコンピュータに実行させることを特徴とする。
【００１１】
また、本発明は、オペレーティングシステムおよびその制御下で実行されるプロセスを一つのタスクとしてコンピュータに実行させるタスク管理装置であって、前記オペレーティングシステムの制御下で実行されるプロセスと協調して動作するオペレーティングシステムタスク以外のタスクが、協調動作を該オペレーティングシステムタスクに要求して待ち状態になる際に、該オペレーティングシステムタスクに協調動作を要求して待ち状態にある他のタスクの優先度よりも該待ち状態になるタスクの優先度が高いか否かを判定する優先度判定手段と、前記優先度判定手段により、前記待ち状態になるタスクの優先度が前記他のタスクの優先度よりも高いと判定された場合に、前記オペレーティングシステムタスクおよび該待ち状態になるタスクと協調して動作する前記オペレーティングシステム制御下のプロセスに、該待ち状態になるタスクの優先度を継承する優先度継承手段とを備えたことを特徴とする。
【００１２】
かかる発明によれば、オペレーティングシステムの制御下で実行されるプロセスと協調して動作するタスクが協調動作をオペレーティングシステムタスクに要求して待ち状態になる際に、オペレーティングシステムタスクに協調動作を要求して待ち状態にある他のタスクの優先度よりも待ち状態になるタスクの優先度が高いか否かを判定し、待ち状態になるタスクの優先度が他のタスクの優先度よりも高いと判定した場合に、オペレーティングシステムタスクおよび待ち状態になるタスクと協調して動作するプロセスに、待ち状態になるタスクの優先度を継承させるよう構成したので、タスクと協調して動作するプロセス以外の他のプロセスが高い優先度で実行されることを防ぐことができる。
【発明の効果】
【００１３】
本発明によれば、ＲＴタスクと協調してＧＰＯＳ制御下で動作するプロセス以外の他のプロセスが高い優先度で実行されることを防ぐので、他のプロセスも高い優先度で実行されることに起因してＲＴタスクの実行が妨げられることを防ぐことができるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に添付図面を参照して、この発明に係るタスク管理プログラムおよびタスク管理装置の好適な実施例を詳細に説明する。
【実施例】
【００１５】
まず、本実施例に係るハイブリッドＯＳの構成について説明する。図１は、本実施例に係るハイブリッドＯＳの構成を示す機能ブロック図である。同図に示すように、このハイブリッドＯＳは、リアルタイムＯＳ（以下「ＲＴＯＳ」という。）１００と、汎用ＯＳ（以下「ＧＰＯＳ」という。）２００とを有する。
【００１６】
ＲＴＯＳ１００は、ＧＰＯＳ２００およびその制御下で実行されるプロセスをリアルタイムタスク（以下「ＲＴタスク」という。）の一つとして実行するＯＳであり、ＯＳ間通信機構１１０と、優先度継承管理リスト１２０と、ＴＣＢ待ちキュー１３０と、優先度継承管理リスト先頭１４０と、スケジューラ１５０とを有する。なお、ＧＰＯＳ２００は、配下のプロセスとともにＲＴＯＳ１００の制御下で汎用ＯＳタスク（以下「ＧＰタスク」という。）３００として実行される。
【００１７】
ＯＳ間通信機構１１０は、ＲＴＯＳ１００とＧＰＯＳ２００との間の通信機能を提供するオブジェクトであり、ＦＩＦＯ、メッセージボックスなどのデータ構造体とメソードから構成される。
【００１８】
このＯＳ間通信機構１１０は、通信するＲＴタスクとプロセスの組み合わせごとに生成され、通信する方式によって、ＦＩＦＯ、メッセージボックスなどのデータ構造体がそれぞれ生成される。なお、通信するＲＴタスクとプロセスの組み合わせにおいて、ＲＴタスクおよびプロセスは、それぞれ複数の場合もある。
【００１９】
各ＯＳ間通信機構１１０は、ＴＣＢ待ちキュー先頭１１１とＰＣＢ待ちキュー先頭１１２とを有し、ＴＣＢ待ちキュー先頭１１１は、ＴＣＢ待ちキュー１３０の先頭を示すポインタであり、ＰＣＢ待ちキュー先頭１１２は、ＰＣＢ待ちキュー２１０の先頭を示すポインタである。なお、ＴＣＢ待ちキュー１３０およびＰＣＢ待ちキュー２１０の詳細については後述する。
【００２０】
優先度継承管理リスト１２０は、ＯＳ間通信を要求して待ちとなったすべてのＲＴタスクのＴＣＢ（Task Control Block：タスク制御ブロック）をＲＴタスクの優先度順に接続するリストである。
【００２１】
ＴＣＢ待ちキュー１３０は、ＯＳ間通信機構１１０ごとに、そのＯＳ間通信機構１１０に対してＯＳ間通信を要求して待ちとなったすべてのＲＴタスクのＴＣＢを接続するキューである。なお、前述したように、このＴＣＢ待ちキュー１３０の先頭は、ＯＳ間通信機構１１０のＴＣＢ待ちキュー先頭１１１により示される。
【００２２】
優先度継承管理リスト先頭１４０は、優先度継承管理リスト１２０の先頭を示すポインタである。すなわち、優先度継承管理リスト先頭１４０は、ＯＳ間通信を要求して待ちとなったＲＴタスクのうち、最も優先度が高いＲＴタスクのＴＣＢを指す。
【００２３】
スケジューラ１５０は、ＲＴタスクの実行を各ＲＴタスクのＴＣＢに格納された優先度に基づいて管理する処理部である。このスケジューラ１５０は、ＲＴタスクとＧＰＯＳ２００制御下のプロセスが通信する場合に、ＲＴタスクと通信するプロセスだけにＲＴタスクの優先度を継承させる。
【００２４】
具体的には、このスケジューラ１５０は、ＲＴタスクからＧＰタスク３００へ通信要求を行ってＲＴタスクが待ちになったときに、そのＲＴタスクが優先度継承管理リスト１２０の先頭に接続された場合、すなわち、ＯＳ間通信を要求して待ちとなったＲＴタスクのうちでそのＲＴタスクが最も優先度が高い場合に、その優先度をＧＰタスク３００に継承させ、そしてその優先度を待ちとなったＲＴタスクと通信するプロセスに継承させる。
【００２５】
また、このスケジューラ１５０は、ＲＴタスクとＧＰタスク３００とのＯＳ間通信終了によって、待ちタスクの実行が再開されるときには、優先度継承管理リスト１２０が空でない場合、すなわち、他にＯＳ間通信要求をして待ちとなっているＲＴタスクがある場合に、待ちとなっているＲＴタスクのうち優先度が最も高いＲＴタスクの優先度をそのＲＴタスクと通信するプロセスおよびＧＰタスク３００に継承させる。優先度継承管理リスト１２０が空の場合、すなわち、他にＯＳ間通信要求をして待ちとなっているＲＴタスクがない場合に、ＧＰタスク３００の優先度を元の低い優先度に戻す。
【００２６】
このように、このスケジューラ１５０が、ＲＴタスクと通信するプロセスだけにＲＴタスクの優先度を継承させ、ＧＰＯＳ２００制御下の他のプロセスに対してはＲＴタスクの優先度を継承させないことによって、ＲＴタスクと通信するプロセス以外のプロセスが高い優先度で実行されることを防ぐことができる。
【００２７】
ＧＰＯＳ２００は、ＯＳとして複数のプロセスを並行処理するとともに、ＲＴＯＳ１００の制御下で実行される最低優先度のＲＴタスクとして構成される。このＧＰＯＳ２００の配下にアイドルプロセスがあり、このアイドルプロセスは常に実行可能な状態にある。
【００２８】
このＧＰＯＳ２００は、ＰＣＢ（Process Control Block：プロセス制御ブロック）待ちキュー２１０と、ＧＰＯＳスケジューラ２２０とを有する。ＰＣＢ待ちキュー２１０は、ＯＳ間通信機構１１０ごとに、そのＯＳ間通信機構１１０を用いて他のＲＴタスクと通信するプロセスのＰＣＢを接続するキューである。なお、前述したように、このＰＣＢ待ちキュー２１０の先頭は、ＯＳ間通信機構１１０の、ＰＣＢ待ちキュー先頭１１２により示される。
【００２９】
ＲＴＯＳ１００のスケジューラ１５０は、ＯＳ間通信機構１１０を介して上述ＰＣＢ待ちキュー２１０にアクセスする、或いはＧＰＯＳスケジューラ２２０に指示を与えることによって、ＲＴタスクと通信するプロセス、すなわち、ＲＴタスクの優先度を継承させるプロセスを特定することができる。
【００３０】
ＧＰＯＳスケジューラ２２０は、ＰＣＢ内の優先度に基づいて、ＧＰＯＳ２００の制御下で実行されるプロセスの実行を管理する処理部である。また、このＧＰＯＳスケジューラ２２０は、スケジューラ１５０の指示にしたがって、ＲＴタスクと通信するプロセスの優先度を変更する。
【００３１】
次に、本実施例に係るＲＴＯＳ１００がＧＰＯＳ２００制御下のプロセスへの優先度継承で用いるデータ構造について説明する。図２は、本実施例に係るＲＴＯＳ１００がＧＰＯＳ２００制御下のプロセスへの優先度継承で用いるデータ構造を説明するための説明図である。
【００３２】
同図に示すように、ＯＳ間通信を要求して待ちとなったすべてのＲＴタスクのＴＣＢをＲＴタスクの優先度順に接続する優先度継承管理リスト１２０の先頭を優先度継承管理リスト先頭１４０が示し、ＯＳ間通信機構１１０ごとに、そのＯＳ間通信機構１１０に対してＯＳ間通信を要求して待ちとなったすべてのＲＴタスクのＴＣＢを接続するＴＣＢ待ちキュー１３０の先頭をＴＣＢ待ちキュー先頭１１１が示し、ＯＳ間通信機構１１０ごとに、そのＯＳ間通信機構１１０を用いてＲＴタスクと通信するプロセスのＰＣＢを接続するＰＣＢ待ちキュー２１０の先頭をＰＣＢ待ちキュー先頭１１２が示している。
【００３３】
また、各ＴＣＢには、ＴＣＢに対応するＲＴタスクを実行するときの優先度である実優先度４０１、ＴＣＢ待ちキュー１３０用のポインタである次の待ちＴＣＢ４０２、ＲＴタスクがＯＳ間通信に用いるＯＳ間通信機構１１０へのポインタである待ち対象４０３、優先度継承管理リスト１２０用のポインタである次の優先度継承ＴＣＢ４０４、ＲＴタスクの本来の優先度である本優先度４０５が含まれる。
【００３４】
また、各ＰＣＢには、ＲＴタスクから継承された優先度である現在優先度４１１、ＰＣＢに対応するプロセスの本来の優先度である本来優先度４１２、ＰＣＢ待ちキュー２１０用のポインタである次の待ちＰＣＢ４１３が含まれる。
【００３５】
スケジューラ１５０は、優先度継承管理リスト１２０が示す優先度継承管理先頭ＴＣＢを特定し、このＴＣＢに格納された待ち対象４０３を用いて、ＲＴタスクが用いるＯＳ間通信機構１１０を特定し、特定したＯＳ間通信機構１１０が有するＰＣＢ待ちキュー先頭１１２を用いて優先度を継承すべきプロセスを特定する。
【００３６】
このように、スケジューラ１５０は、ＯＳ間通信を要求して待ちとなったＲＴタスクの中で最も優先度が高いＲＴタスクのＴＣＢを、優先度継承管理リスト１２０を用いて特定し、特定したＴＣＢの待ち対象４０３を用いて、ＲＴタスクが用いるＯＳ間通信機構１１０を特定し、特定したＯＳ間通信機構１１０が有するＰＣＢ待ちキュー先頭１１２を用いて優先度を継承すべきプロセスを特定することによって、ＲＴタスクと通信するプロセスにＲＴタスクの優先度を継承することができる。
【００３７】
次に、ＲＴタスクからＧＰタスク３００へ通信要求を行ってＲＴタスクが待ちになったときのＲＴＯＳ１００の処理手順について説明する。図３は、ＲＴタスクからＧＰタスク３００へ通信要求を行ってＲＴタスクが待ちになったときのＲＴＯＳ１００の処理手順を示すフローチャートである。
【００３８】
同図に示すように、ＲＴタスクからＧＰタスク３００へ通信要求を行ってＲＴタスクが待ちになる際に、通信要求を処理するＯＳ間通信機構１１０のメソードは、待ちになるタスクをＴＣＢ待ちキュー１３０にリンクする（ステップＳ３０１）とともに、優先度順で優先度継承管理リスト１２０にも入れる（ステップＳ３０２）。
【００３９】
そして、スケジューラ１５０は、ディスパッチの前に、現在のＲＴタスクが優先度継承管理リスト１２０の先頭のＲＴタスクであるか否か、すなわち、ＯＳ間通信要求を行って待ちになった現在のＲＴタスクが優先度継承管理リスト１２０にある他のＲＴタスクよりも優先度が高いか否かを判定する（ステップＳ３０３）。
【００４０】
その結果、現在のＲＴタスクが優先度継承管理リスト１２０の先頭のＲＴタスクである場合には、このＲＴタスクと通信するプロセスの優先度をこのＲＴタスクの優先度に上げる。
【００４１】
具体的には、このＲＴタスクの優先度をＧＰタスク３００に継承させ（ステップＳ３０４）、このＲＴタスクのＴＣＢの待ち対象４０３を用いてＯＳ間通信機構１１０を特定し（ステップＳ３０５）、特定したＯＳ間通信機構１１０から、このＲＴタスクと通信するプロセスのＰＣＢを取得し、取得したＰＣＢにこのＲＴタスクの優先度を継承させる（ステップＳ３０６）。すなわち、取得したＰＣＢの現在優先度４１１にこのＲＴタスクの優先度を設定する。そして、ディスパッチの処理に移る（ステップＳ３０７）。
【００４２】
一方、現在のＲＴタスクが優先度継承管理リスト１２０の先頭のＲＴタスクでない場合には、優先度継承管理リスト１２０の先頭にあるＲＴタスクの優先度が既にＧＰタスク３００に継承されているので、そのまま、ディスパッチの処理に移る（ステップＳ３０７）。
【００４３】
このように、ＲＴタスクからＧＰタスク３００へ通信要求を行ってＲＴタスクが待ちになる際に、ＯＳ間通信機構１１０のメソードが、待ちになる現在のＲＴタスクを優先度順で優先度継承管理リスト１２０に入れ、スケジューラ１５０が、ディスパッチの前に、現在のＲＴタスクが優先度継承管理リスト１２０の先頭のＲＴタスクであるか否かを判定し、先頭のＲＴタスクである場合には、このＲＴタスクの優先度をこのＲＴタスクと通信するプロセスに継承させることによって、このＲＴタスクと通信するプロセスだけ優先度をＲＴタスクの優先度に上げることができる。
【００４４】
次に、ＧＰタスク３００のＯＳ間通信終了によってＲＴＯＳ１００の待ちタスクの実行が再開されるときのＲＴＯＳ１００の処理手順について説明する。図４は、ＧＰタスク３００のＯＳ間通信終了によってＲＴＯＳ１００の待ちタスクの実行が再開されるときのＲＴＯＳ１００の処理手順を示すフローチャートである。
【００４５】
同図に示すように、ＧＰタスク３００のＯＳ間通信終了によってＲＴＯＳ１００の待ちタスクの実行が再開される際に、通信を処理したＯＳ間通信機構１１０のメソードは、待ちタスクの実行が再開されるので、実行が再開されるＲＴタスクをＯＳ間通信機構１１０のＴＣＢ待ちキュー１３０から削除し（ステップＳ４０１）、優先度継承管理リスト１２０からも削除する（ステップＳ４０２）。
【００４６】
そして、スケジューラ１５０は、ディスパッチの前に、優先度継承管理リスト１２０が空であるか否かを判定し（ステップＳ４０３）、空でない場合には、優先度継承管理リスト１２０の先頭にあるＲＴタスクの優先度をＧＰタスク３００に継承させ、そしてその優先度をこのＲＴタスクと通信するプロセスに継承させる。
【００４７】
具体的には、このＲＴタスクの優先度をＧＰタスク３００に継承させ（ステップＳ４０４）、このＲＴタスクのＴＣＢの待ち対象４０３を用いてＯＳ間通信機構１１０を特定し（ステップＳ４０４）、特定したＯＳ間通信機構１１０から、このＲＴタスクと通信するプロセスのＰＣＢを取得し、取得したＰＣＢにこのＲＴタスクの優先度を継承させる（ステップＳ４０６）。すなわち、取得したＰＣＢの現在優先度４１１にこのＲＴタスクの優先度を設定する。そして、ディスパッチの処理に移る（ステップＳ４０７）。
【００４８】
一方、優先度継承管理リスト１２０が空である場合には、ＧＰタスク３００の優先度および通信を行ったプロセスの優先度を本来の低い優先度に戻し（ステップＳ４０８）、ディスパッチの処理に移る（ステップＳ４０７）。
【００４９】
このように、ＧＰタスク３００のＯＳ間通信終了によってＲＴＯＳ１００の待ちタスクの実行が再開される際に、ＯＳ間通信機構１１０のメソードが、実行が再開されるＲＴタスクを優先度継承管理リスト１２０から削除し、スケジューラ１５０が、ディスパッチの前に、優先度継承管理リスト１２０が空であるか否かを判定し、空でない場合には、優先度継承管理リスト１２０の先頭にあるＲＴタスクの優先度をこのＲＴタスクと通信するプロセスの優先度に継承させることによって、ＲＴタスクと通信するプロセスの優先度を通信相手のＲＴタスクの優先度に保つことができる。
【００５０】
次に、本実施例に係るハイブリッドＯＳを実行するコンピュータについて説明する。図５は、本実施例に係るハイブリッドＯＳを実行するコンピュータを示す図である。同図に示すように、このコンピュータ５００は、ＣＰＵ５１０と、ＲＡＭ５２０と、ＲＯＭ５３０と、ＨＤＤ５４０と、Ｉ／Ｏインタフェース５５０と、ＬＡＮインタフェース５６０と、モデム５７０とを有する。
【００５１】
ＣＰＵ５１０は、ハイブリッドＯＳやアプリケーションプログラムなどを実行する処理装置であり、ＲＡＭ５２０は、優先度継承管理リスト１２０、ＴＣＢ待ちキュー１３０、ＰＣＢ待ちキュー２１０などを記憶する記憶部である。
【００５２】
ＲＯＭ５３０は、変更されない定数などを記憶した記憶部であり、ＨＤＤ５４０は、プログラムやファイルを記憶する磁気ディスク装置である。ＨＤＤ５４０に記憶されたプログラムは、ＲＡＭ５２０やＲＯＭ５３０を用いてＣＰＵ５１０により実行される。
【００５３】
Ｉ／Ｏインタフェース５５０は、表示装置、キーボード、マウスなどの入出力機器を接続するためのインタフェースである。ＬＡＮインタフェース５６０は、ＬＡＮに接続するためのインタフェースであり、モデム５７０は、公衆回線に接続するための装置である。
【００５４】
上述してきたように、本実施例では、ＯＳ間通信を要求して待ちとなったすべてのＲＴタスクのＴＣＢをＲＴタスクの優先度順に優先度継承管理リスト１２０を用いて管理し、ＲＴタスクからＧＰタスク３００へ通信要求を行ってＲＴタスクが待ちになる際に、スケジューラ１５０が、このＲＴタスクが優先度継承管理リスト１２０の先頭のＲＴタスクであるか否かを判定し、先頭のＲＴタスクである場合に、このＲＴタスクの優先度をこのＲＴタスクと通信するプロセスだけに継承させることとしたので、他のプロセスがこのＲＴタスクの優先度で実行されることを防ぎ、ＲＴタスクの実行が他のプロセスによって妨げられることを防ぐことができる。
【００５５】
また、本実施例では、ＧＰタスク３００のＯＳ間通信終了によってＲＴＯＳ１００の待ちタスクの実行が再開される際に、スケジューラ１５０が、優先度継承管理リスト１２０が空であるか否かを判定し、空でない場合には、優先度継承管理リスト１２０の先頭にあるＲＴタスクの優先度をこのＲＴタスクと通信するプロセスの優先度に設定することによって、ＲＴタスクと通信するプロセスの優先度を通信相手のＲＴタスクの優先度に保つことができる。
【００５６】
（付記１）オペレーティングシステムおよびその制御下で実行されるプロセスを一つのタスクとしてコンピュータに実行させるタスク管理プログラムであって、
前記オペレーティングシステムの制御下で実行されるプロセスと協調して動作するオペレーティングシステムタスク以外のタスクが、協調動作を該オペレーティングシステムタスクに要求して待ち状態になる際に、該オペレーティングシステムタスクに協調動作を要求して待ち状態にある他のタスクの優先度よりも該待ち状態になるタスクの優先度が高いか否かを判定する優先度判定手順と、
前記優先度判定手順により、前記待ち状態になるタスクの優先度が前記他のタスクの優先度よりも高いと判定された場合に、前記オペレーティングシステムタスクおよび該待ち状態になるタスクと協調して動作する前記オペレーティングシステム制御下のプロセスに、該待ち状態になるタスクの優先度を継承する優先度継承手順と
をコンピュータに実行させることを特徴とするタスク管理プログラム。
【００５７】
（付記２）前記オペレーティングシステムタスク以外のタスクに要求された協調動作を前記オペレーティングシステムタスクが終了して該タスクの実行が再開される際に、前記他のタスクがあるか否かを判定する待ちタスク判定手順と、
前記待ちタスク判定手順により他のタスクがあると判定された場合に、前記オペレーティングシステムタスクおよび他のタスクのうちで優先度が最も高いタスクと協調して動作するプロセスに該優先度が最も高いタスクの優先度を継承させる優先度復帰手順と
をさらにコンピュータに実行させることを特徴とする付記１に記載のタスク管理プログラム。
【００５８】
（付記３）前記優先度判定手順は、前記オペレーティングシステムタスクに協調動作を要求して待ち状態にあるタスクのタスク制御ブロックを優先度順に接続した優先度継承管理リストを用いて、前記待ち状態になるタスクの優先度が前記他のタスクの優先度よりも高いか否かを判定することを特徴とする付記１または２に記載のタスク管理プログラム。
【００５９】
（付記４）前記待ちタスク判定手順は、前記オペレーティングシステムに協調動作を要求して待ち状態にあるタスクのタスク制御ブロックを優先度順に接続した優先度継承管理リストを用いて、前記他のタスクがあるか否かを判定し、
前記優先度復帰手順は、前記優先度継承管理リストを用いて、前記待ち状態にあるタスクのうちで優先度が最も高いタスクと協調して動作するプロセスおよび前記オペレーティングシステムに該優先度が最も高いタスクの優先度を継承することを特徴とする付記２に記載のタスク管理プログラム。
【００６０】
（付記５）前記優先度継承手順は、タスク制御ブロック待ちキューを用いて、前記オペレーティングシステムに協調動作を要求して待ち状態にあるタスクのタスク制御ブロックに記憶した協調動作を行うＯＳ間協調動作機構を特定し、該特定したＯＳ間協調動作機構を介して、該待ち状態になるタスクと協調動作するプロセスに優先度を継承することを特徴とする付記１または２に記載のタスク管理プログラム。
【００６１】
（付記６）タスク制御ブロックは、タスクが使用するＯＳ間協調動作機構へのポインタを待ち対象として含み、
前記優先度継承手順は、タスク制御ブロックに含まれる待ち対象を用いて、前記待ち状態になるタスクが用いるＯＳ間協調動作機構を特定することを特徴とする付記５に記載のタスク管理プログラム。
【００６２】
（付記７）前記プロセスとタスクとの間の協調動作は、ＯＳ間通信機構を用いた通信であることを特徴とする付記１または２に記載のタスク管理プログラム。
【００６３】
（付記８）オペレーティングシステムおよびその制御下で実行されるプロセスを一つのタスクとしてコンピュータに実行させるタスク管理装置であって、
前記オペレーティングシステムの制御下で実行されるプロセスと協調して動作するオペレーティングシステムタスク以外のタスクが、協調動作を該オペレーティングシステムタスクに要求して待ち状態になる際に、該オペレーティングシステムタスクに協調動作を要求して待ち状態にある他のタスクの優先度よりも該待ち状態になるタスクの優先度が高いか否かを判定する優先度判定手段と、
前記優先度判定手段により、前記待ち状態になるタスクの優先度が前記他のタスクの優先度よりも高いと判定された場合に、前記オペレーティングシステムタスクおよび該待ち状態になるタスクと協調して動作する前記オペレーティングシステム制御下のプロセスに、該待ち状態になるタスクの優先度を継承する優先度継承手段と
を備えたことを特徴とするタスク管理装置。
【００６４】
（付記９）オペレーティングシステムを一つのタスクとしてコンピュータに実行させるタスク管理方法であって、
前記オペレーティングシステムの制御下で実行されるプロセスと協調して動作するタスクが協調動作を該オペレーティングシステムに要求して待ち状態になる際に、該オペレーティングシステムに協調動作を要求して待ち状態にある他のタスクの優先度よりも該待ち状態になるタスクの優先度が高いか否かを判定する優先度判定手続きと、
前記優先度判定手続きにより、前記待ち状態になるタスクの優先度が前記他のタスクの優先度よりも高いと判定された場合に、該待ち状態になるタスクと協調して動作するプロセスおよび前記オペレーティングシステムに該待ち状態になるタスクの優先度を継承する優先度継承手続きと
を含んだことを特徴とするタスク管理方法。
【００６５】
（付記１０）オペレーティングシステムを一つのタスクとしてコンピュータに実行させるタスク管理プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記オペレーティングシステムの制御下で実行されるプロセスと協調して動作するタスクが協調動作を該オペレーティングシステムに要求して待ち状態になる際に、該オペレーティングシステムに協調動作を要求して待ち状態にある他のタスクの優先度よりも該待ち状態になるタスクの優先度が高いか否かを判定する優先度判定手順と、
前記優先度判定手順により、前記待ち状態になるタスクの優先度が前記他のタスクの優先度よりも高いと判定された場合に、該待ち状態になるタスクと協調して動作するプロセスおよび前記オペレーティングシステムに該待ち状態になるタスクの優先度を継承する優先度継承手順と
をコンピュータに実行させるタスク管理プログラム記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【産業上の利用可能性】
【００６６】
以上のように、本発明に係るタスク管理プログラムおよびタスク管理装置は、ハイブリッドＯＳを用いるコンピュータシステムに有用であり、特に、ＧＰＯＳをリアルタイムタスクの一つとして動作させるハイブリッドＯＳを使用するコンピュータシステムや組み込み機器などに適している。
【図面の簡単な説明】
【００６７】
【図１】本実施例に係るハイブリッドＯＳの構成を示す機能ブロック図である。
【図２】本実施例に係るＲＴＯＳがＧＰＯＳ制御下のプロセスへの優先度継承で用いるデータ構造を説明するための説明図である。
【図３】ＲＴタスクからＧＰタスクへ通信要求を行ってＲＴタスクが待ちになったときのＲＴＯＳの処理手順を示すフローチャートである。
【図４】ＧＰタスクのＯＳ間通信終了によってＯＳ間通信待ちＲＴタスクの実行が再開されるときのＲＴＯＳの処理手順を示すフローチャートである。
【図５】本実施例に係るハイブリッドＯＳを実行するコンピュータを示す図である。
【図６】ハイブリッドＯＳを説明するための説明図である。
【符号の説明】
【００６８】
１００    ＲＴＯＳ
１１０    ＯＳ間通信機構
１１１    ＴＣＢ待ちキュー先頭
１１２    ＰＣＢ待ちキュー先頭
１２０    優先度継承管理リスト
１３０    ＴＣＢ待ちキュー
１４０    優先度継承管理リスト先頭
１５０    スケジューラ
２００    ＧＰＯＳ
２１０    ＰＣＢ待ちキュー
２２０    ＧＰＯＳスケジューラ
３００    ＧＰタスク
４０１    実優先度
４０２    次の待ちＴＣＢ
４０３    待ち対象
４０４    次の優先度継承ＴＣＢ
４０５    本優先度
４１１    現在優先度
４１２    本来優先度
４１３    次の待ちＰＣＢ
５００    コンピュータ
５１０    ＣＰＵ
５２０    ＲＡＭ
５３０    ＲＯＭ
５４０    ＨＤＤ
５５０    Ｉ／Ｏインタフェース
５６０    ＬＡＮインタフェース
５７０    モデム
【図１】
2005234658.tif 000003
【図２】
2005234658.tif 000004
【図３】
2005234658.tif 000005
【図４】
2005234658.tif 000006
【図５】
2005234658.tif 000007
【図６】
2005234658.tif 000008