(57)【要約】【課題】処理の種類に応じてスケジューリングするＯＳを切り替えることにより、排他処理や入出力処理を効率的に行う。【解決手段】第１のオペレーティングシステムにおいて、複数のタスクのスケジューリングを管理するタスク管理システム１０は、第１のオペレーティングシステムによりスケジューリングされ、複数のタスクをスケジューリングすることにより管理するタスク管理部１２０と、複数のタスクのうち一のタスクが他のタスクより優先してスケジューリングされると判断した場合に、一のタスクを、第１のオペレーティングシステムによりタスク管理部より高い優先度でスケジューリングさせるタスク実行制御部１３０とを備える【選択図】　図１
2004078322.tif 000002
【特許請求の範囲】
【請求項１】
第１のオペレーティングシステムにおいて、タスクのスケジューリングを管理するタスク管理システムであって、
前記第１のオペレーティングシステムによりスケジューリングされ、複数のタスクをスケジューリングすることにより管理するタスク管理部と、
前記複数のタスクのうち一の前記タスクが他の前記タスクより優先してスケジューリングされると判断した場合に、前記一のタスクを、前記第１のオペレーティングシステムにより前記タスク管理部より高い優先度でスケジューリングさせるタスク実行制御部と
を備えることを特徴とするタスク管理システム。
【請求項２】
前記複数のタスクは、前記第１のオペレーティングシステム上で実行される第２のオペレーティングシステムのタスクであり、
前記タスク管理部は、前記複数のタスクとして、前記第２のオペレーティングシステムのタスクをスケジューリングすることにより管理することを特徴とする請求項１記載のタスク管理システム。
【請求項３】
前記第１のオペレーティングシステムは、前記複数のタスクより優先してスケジューリングされる複数の優先タスクを実行することを特徴とする請求項１記載のタスク管理システム。
【請求項４】
前記タスク管理部は、前記複数の優先タスクより低い優先度でスケジューリングされ、
前記一のタスクが前記他のタスクより優先してスケジューリングされると判断した場合に、前記タスク実行制御部は、前記一のタスクを、前記タスク管理部より高く、かつ前記複数の優先タスクより低い優先度でスケジューリングさせることを特徴とする請求項３記載のタスク管理システム。
【請求項５】
前記タスク実行制御部は、前記一のタスクが前記他のタスクに対して排他処理を実行すると判断した場合に、前記一のタスクを前記タスク管理部より高い優先度でスケジューリングさせることを特徴とする請求項１記載のタスク管理システム。
【請求項６】
前記タスク実行制御部は、前記一のタスクがセマフォ管理のために前記排他処理を行うと判断した場合に、前記一のタスクを前記タスク管理部より高い優先度でスケジューリングさせることを特徴とする請求項５記載のタスク管理システム。
【請求項７】
前記タスク実行制御部は、前記一のタスクが前記他のタスクより優先してスケジューリングされる状態を終了させた場合に、前記一のタスクを前記タスク管理部によりスケジューリングされる状態に戻すことを特徴とする請求項１記載のタスク管理システム。
【請求項８】
前記複数のタスクは、前記第１のオペレーティングシステムとは異なる第２のオペレーティングシステムの機能を用い、前記第１のオペレーティングシステム上で実行可能なタスクとして生成され、
前記タスク管理部は、前記複数のタスクそれぞれにおいて、前記第１のオペレーティングシステム上で実行可能か否かを示す実行状態を変更することにより、前記第１のオペレーティングシステムにより前記複数のタスクをスケジューリングさせることを特徴とする請求項１記載のタスク管理システム。
【請求項９】
前記タスク管理部は、前記複数のタスクのうち一のタスクを選択し、前記第１のオペレーティングシステムにより実行させることにより、前記複数のタスクを順次スケジューリングすることを特徴とする請求項８記載のタスク管理システム。
【請求項１０】
前記第１のオペレーティングシステムは、リアルタイムオペレーティングシステムであり、
前記複数のタスクは、非リアルタイムオペレーティングシステムのタスクをスケジューリングすることにより管理することを特徴とする請求項１記載のタスク管理システム。
【請求項１１】
第１のオペレーティングシステムにおいて、タスクのスケジューリングを管理するタスク管理システムであって、
前記第１のオペレーティングシステムとは異なる第２のオペレーティングシステムの機能を用いる複数のタスクを管理し、前記第１のオペレーティングシステムにより実行されるタスク管理部と、
前記複数のタスクのうち一の前記タスクが、前記第１のオペレーティングシステムによってのみ実行可能なモジュールを実行すると判断した場合に、前記一のタスクを前記第１のオペレーティングシステムにより実行させるタスク実行制御部と
を備えることを特徴とするタスク管理システム。
【請求項１２】
前記複数のタスクは、前記第１のオペレーティングシステム上で実行可能なタスクとして生成され、
前記タスク管理部は、前記複数のタスクそれぞれにおいて、前記第１のオペレーティングシステム上で実行可能か否かを示す実行状態を変更することにより、前記複数のタスクをスケジューリングし、
前記タスク実行制御部は、前記一のタスクが前記第１のオペレーティングシステムによってのみ実行可能なモジュールを実行すると判断した場合に、前記一のタスクの前記タスク管理部によるスケジューリングを停止することにより、前記一のタスクを前記第１オペレーティングシステムによりスケジューリングさせ、前記一のタスクを前記第１オペレーティングシステムにより実行させることを特徴とする請求項１１記載のタスク管理システム。
【請求項１３】
前記タスク実行制御部は、前記第１のオペレーティングシステムによってのみ実行可能なモジュールの実行を終了したと判断した場合に、前記一のタスクを前記タスク管理部によりスケジューリングされる状態に戻すことを特徴とする請求項１１記載のタスク管理システム。
【請求項１４】
第１のオペレーティングシステムにおいて、タスクのスケジューリングを管理するタスク管理システムをコンピュータによって制御するプログラムであって、
前記コンピュータを、
前記第１のオペレーティングシステムによりスケジューリングされ、複数のタスクをスケジューリングすることにより管理するタスク管理部と、
前記複数のタスクのうち一の前記タスクが他の前記タスクより優先してスケジューリングされると判断した場合に、前記一のタスクを、前記第１のオペレーティングシステムにより前記タスク管理部より高い優先度でスケジューリングさせるタスク実行制御部と
して機能させることを特徴とするプログラム。
【請求項１５】
第１のオペレーティングシステムにおいて、タスクのスケジューリングを管理するタスク管理システムをコンピュータによって制御するプログラムであって、
前記コンピュータを、
前記第１のオペレーティングシステムとは異なる第２のオペレーティングシステムの機能を用いる複数のタスクを管理し、前記第１のオペレーティングシステムにより実行されるタスク管理部と、
前記複数のタスクのうち一の前記タスクが、前記第１のオペレーティングシステムによってのみ実行可能なモジュールを実行すると判断した場合に、前記一のタスクを前記第１のオペレーティングシステムにより実行させるタスク実行制御部と
して機能させることを特徴とするプログラム。
【請求項１６】
請求項１４又は請求項１５何れかに記載のプログラムを記録した記録媒体。
【請求項１７】
第１のオペレーティングシステムにおいて、タスクのスケジューリングを制御する制御方法であって、
前記第１のオペレーティングシステムによりスケジューリングされるタスクとして実現され、複数のタスクを管理するタスク管理段階と、
前記複数のタスクのうち一の前記タスクが他の前記タスクより優先してスケジューリングされると判断した場合に、前記一のタスクを、前記第１のオペレーティングシステムにより前記タスク管理段階より高い優先度でスケジューリングさせるタスク実行制御段階と
を備えることを特徴とする制御方法。
【請求項１８】
第１のオペレーティングシステムにおいて、タスクのスケジューリングを管理するタスク管理システムをコンピュータによって制御する制御方法であって、
前記第１のオペレーティングシステムとは異なる第２のオペレーティングシステムの機能を用いる複数のタスクを管理し、前記第１のオペレーティングシステムにより実行されるタスク管理段階と、
前記複数のタスクのうち一の前記タスクが、前記第１のオペレーティングシステムによってのみ実行可能なモジュールを実行すると判断した場合に、前記一のタスクを前記第１のオペレーティングシステムによりスケジューリングさせるタスク実行制御段階と
を備えることを特徴とする制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、タスク管理システム、プログラム、記録媒体、及び制御方法に関する。特に本発明は、複数のオペレーティングシステムを動作させるタスク管理システム、プログラム、記録媒体、及び制御方法に関する。
【０００２】
【従来の技術】
第１のオペレーティングシステム（以下ＯＳと略す）上で、第２のＯＳを動作させる多重ＯＳシステムが用いられている。このシステムは、どちらか一方のＯＳのみで動作可能な複数のタスクを同一の計算機上で混在して動作させることができる。したがって、利用者は、様々なアプリケーションを同一の計算機上で実行でき、利便性の高い計算機環境を使用することができる。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記システムは、タスクを実行中に、当該タスクをスケジュールするＯＳを切り替えることができない。
そこで本発明は、上記の課題を解決することのできるタスク管理システム、プログラム、記録媒体、及び制御方法を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【０００４】
【課題を解決するための手段】
即ち、本発明の第１の形態によると、第１のオペレーティングシステムにおいて、タスクのスケジューリングを管理するタスク管理システムであって、第１のオペレーティングシステムによりスケジューリングされ、複数のタスクをスケジューリングすることにより管理するタスク管理部と、複数のタスクのうち一の前記タスクが他のタスクより優先してスケジューリングされると判断した場合に、一のタスクを、第１のオペレーティングシステムによりタスク管理部より高い優先度でスケジューリングさせるタスク実行制御部とを備えることを特徴とするタスク管理システム、当該システムを制御する制御方法、当該システムをコンピュータにより実現するプログラム、及びプログラムを記録した記録媒体を提供する。
【０００５】
本発明の第２の形態によると、第１のオペレーティングシステムにおいて、タスクのスケジューリングを管理するタスク管理システムであって、第１のオペレーティングシステムとは異なる第２のオペレーティングシステムの機能を用いる複数のタスクを管理し、第１のオペレーティングシステムにより実行されるタスク管理部と、複数のタスクのうち一のタスクが、第１のオペレーティングシステムによってのみ実行可能なモジュールを実行すると判断した場合に、一のタスクを第１オペレーティングシステムにより実行させるタスク実行制御部とを備えることを特徴とするタスク管理システム、当該システムを制御する制御方法、当該システムをコンピュータにより実現するプログラム、及びプログラムを記録した記録媒体を提供する。
なお上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションも又発明となりうる。
【０００６】
【発明の実施の形態】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態はクレームにかかる発明を限定するものではなく、又実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【０００７】
図１は、タスク管理システム１０の機能ブロック図である。タスク管理システム１０は、複数のオペレーティングシステム（以下ＯＳと略す）を備え、処理の種類に応じてスケジューリングするＯＳを切り替えることにより、排他処理や入出力処理を効率的に行うことを目的とする。
【０００８】
タスク管理システム１０は、第１ＯＳ１５０とは異なる第２ＯＳ１１５の機能を用いる複数のタスクの一例であるＰＯＳＩＸタスク１１０−１〜Ｎと、非リアルタイムＯＳである第２ＯＳ１１５と、ＰＯＳＩＸタスク１１０−１〜Ｎより優先してスケジューリングされる複数の優先タスクであるＩＴＲＯＮタスク１４０−１〜Ｍと、リアルタイムＯＳである第１ＯＳ１５０とを備える。本実施形態において、タスク管理システム１０は、例えば、第２ＯＳとして、ＰＯＳＩＸ規格に準拠したＵＮＩＸ（登録商標）と、第１ＯＳとして、マイクロＩＴＲＯＮとを備える。また、他の例として、タスク管理システム１０は、Ｌｉｎｕｘ（登録商標）等の非リアルタイムＯＳと、ＷＩＮＤＯＷＳ（登録商標）等の非リアルタイムＯＳとを備え、第１ＯＳ１５０及び第２ＯＳ１１５の双方が非リアルタイムＯＳである構成であってもよい。また、タスク管理システム１０は、第１ＯＳ１５０及び第２ＯＳ１１５の双方がリアルタイムＯＳである構成であってもよい。
【０００９】
ＰＯＳＩＸタスク１１０−１〜Ｎは、第２ＯＳ１１５により管理され、ＰＯＳＩＸ（Ｐｏｒｔａｂｌｅ　Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ　Ｉｎｔｅｒｆａｃｅ　ｆｏｒ　ＵＮＩＸ（登録商標）の略）のタスクであり、ＰＯＳＩＸのアプリケーションプログラミングインターフェイス（以下ＡＰＩと略す）を用いて、第２ＯＳ１１５中の処理を呼出すことにより実行し、利用者の所望の処理を行う。ＰＯＳＩＸタスク１１０−１〜Ｎは、処理の内容等に応じて、第２ＯＳ１１５又は第１ＯＳ１５０の何れかにより実行をスケジューリングされ、第１ＯＳ１５０により実行（例えば、ディスパッチ）される。
なお、ＰＯＳＩＸタスク１１０−１〜Ｎは、ＰＯＳＩＸのＡＰＩを有するＬｉｎｕｘ（登録商標）等の計算機環境で開発され、タスク管理システム１０上で実行されてもよい。
【００１０】
第２ＯＳ１１５は、第１ＯＳ１５０により実行され、ＰＯＳＩＸタスク１１０−１〜Ｎの指示に応じて、ＰＯＳＩＸのＡＰＩの少なくとも一部をＰＯＳＩＸタスク１１０−１〜Ｎに提供する。第２ＯＳ１１５は、タスク管理部１２０と、タスク実行制御部１３０とを備える。ここで、第２ＯＳ１１５は、ＰＯＳＩＸタスク１１０−１〜Ｎを管理する。第２ＯＳ１１５は、また、例えばＰＯＳＩＸ等のＯＳの全ての機能を実装せず、ＰＯＳＩＸタスク１１０−１〜Ｎを、タスク管理システム１０上で実行させるために必要となる機能を有していればよい。具体的には、第２ＯＳ１１５は、第２ＯＳ１１５のＡＰＩの機能を、第１ＯＳ１５０のＡＰＩの機能に変換することにより、第２ＯＳ１１５のタスクの、第１ＯＳ１５０のタスクへの互換性を保持する。また、第２ＯＳ１１５は、タスク間のスケジューリングの優先度を制御するが、タスクを実際にハードウェアにより実行させるタスクディスパッチを行わなくてもよく、タスクのハードウェアによる実行を切り替えるタスクスイッチを行わなくてもよい。
【００１１】
タスク管理部１２０は、レディキュー１２２と、ウェイトキュー１２４と、レディタスクポインタ１２６−１〜Ｐと、ウェイトタスクポインタ１２８−１〜Ｑとを備え、ＩＴＲＯＮタスクの１つとして、ＩＴＲＯＮタスク１４０−１〜Ｍより低い優先度で第１ＯＳ１５０によりスケジューリングされ実行される。タスク管理部１２０は、ＰＯＳＩＸタスク１１０−１〜Ｎをスケジューリングすることにより管理する。例えば、タスク管理部１２０は、ＰＯＳＩＸタスク１１０を実行するＰＯＳＩＸスレッドを識別する情報を、レディタスクポインタ１２６又はウェイトタスクポインタ１２８として、レディキュー１２２又はウェイトキュー１２４にキュー状に接続することにより管理する。
より詳細には、タスク管理部１２０は、直ちに実行可能であるが、他のスレッドを実行中であるために現在実行していないＰＯＳＩＸスレッドへのポインタを、レディタスクポインタ１２６−１〜Ｐとしてレディキュー１２２にキュー状に接続して管理する。また、ＰＯＳＩＸスレッドが、独占的にのみ使用可能な入出力デバイスが利用可能となるのを待っている等の要因により待ち状態となっている場合に、タスク管理部１２０は、当該ＰＯＳＩＸスレッドへのポインタを、ウェイトタスクポインタ１２８−１〜Ｑとしてウェイトキュー１２４にキュー状に接続して管理する。
【００１２】
そして、タスク管理部１２０は、レディタスクポインタ１２６−１〜Ｐの中から１つのレディタスクポインタ１２６を選択し、第１ＯＳ１５０により実行させることにより、レディタスクポインタ１２６−１〜Ｐを順次スケジューリングする。
さらに、タスク管理部１２０は、タスク実行制御部１３０からの指示に応じて、レディキュー１２２又はウェイトキュー１２４に接続されているレディタスクポインタ１２６又はウェイトタスクポインタ１２８の一部を、レディキュー１２２又はウェイトキュー１２４から取り除く。また、タスク管理部１２０は、タスク実行制御部１３０からの指示に応じて、レディキュー１２２又はウェイトキュー１２４に新たにレディタスクポインタ１２６又はウェイトタスクポインタ１２８を接続する。
【００１３】
タスク実行制御部１３０は、ＰＯＳＩＸタスク１１０−１〜Ｎからの指示に応じて、ＰＯＳＩＸのＡＰＩの一部等を提供する。また、タスク実行制御部１３０は、ＰＯＳＩＸタスク１１０−１〜Ｎからの指示に応じて、ＰＯＳＩＸタスク１１０−１〜Ｎを実行するスレッドのスケジューリングを停止する旨の指示や、当該停止後に再開する旨の指示を、タスク管理部１２０に送る。また、タスク実行制御部１３０は、ＰＯＳＩＸタスク１１０−１〜Ｎからの指示に応じて、ＰＯＳＩＸタスク１１０−１〜Ｎのスケジューリング優先度を変更する旨の指示を第１ＯＳ１５０に送る。
【００１４】
ＩＴＲＯＮタスク１４０−１〜Ｍは、ＩＴＲＯＮ等のリアルタイムＯＳである第１ＯＳ１５０が提供するＡＰＩを用いて記載されたプログラム又はモジュールであり、第１ＯＳ１５０によりスケジューリングされ、実行される。ＩＴＲＯＮタスク１４０−１〜Ｍは、第１ＯＳ１５０により、所定時間内に実行が完了することが保証され、ＰＯＳＩＸタスク１１０及び第２ＯＳ１１５等の動作による影響を受けることなく、利用者の所望する時間内に処理を終了することができる。
【００１５】
第１ＯＳ１５０は、レディキュー１５２と、ウェイトキュー１５４と、レディタスクポインタ１５６−１〜Ｒと、ウェイトタスクポインタ１５８−１〜Ｓとを備える。第１ＯＳ１５０は、第２ＯＳ１５０、ＰＯＳＩＸタスク１１０−１〜Ｎ、及びＩＴＲＯＮタスク１４０−１〜Ｍをスケジューリングすることにより管理する。例えば、第１ＯＳ１５０は、ＩＴＲＯＮタスク１４０−１〜Ｍを実行するスレッドと、ＰＯＳＩＸタスク１１０−１〜Ｎを実行するスレッドとを識別する情報を、レディタスクポインタ１５６又はウェイトタスクポインタ１５８として、レディキュー１５２又はウェイトキュー１５４にキュー状に接続することにより管理する。より詳細には、第１ＯＳ１５０が、レディキュー１５２及びウェイトキュー１５４を用いてレディタスクポインタ１５６及びウェイトタスクポインタ１５８を管理する方法は、それぞれタスク管理部１２０が、レディキュー１２２及びウェイトキュー１２４を用いてレディタスクポインタ１２６及びウェイトタスクポインタ１２８を管理する方法と略同一であるので説明を省略する。
【００１６】
また、第１ＯＳ１５０は、タスク管理部１２０からの指示に従い、レディキュー１２２の先頭にあるレディタスクポインタ１２６に相当する第１ＯＳ１５０のタスクポインタを、レディキュー１５２に接続することにより、ＰＯＳＩＸタスク１１０を実行する。また、第１ＯＳ１５０は、タスク管理部１２０からの指示に従い、ＰＯＳＩＸタスク１１０を実行していたスレッドへのタスクポインタをレディキュー１５２から除き、ウェイトキュー１５４に接続することにより、ＰＯＳＩＸタスク１１０の実行を停止する。
【００１７】
また、第１ＯＳ１５０は、タスク実行制御部１３０からの指示に従い、ＰＯＳＩＸタスク１１０を実行しているＩＴＲＯＮタスクのスケジューリング優先度を変更する。
【００１８】
本実施形態のタスク管理システム１０は、以下に示す２つの機能を有する。
（１）ＰＯＳＩＸタスク１１０の排他処理
（２）ＰＯＳＩＸタスク１１０によるＩＴＲＯＮのＡＰＩ実行
以下、これらの機能を順に説明する。
【００１９】
（１）ＰＯＳＩＸタスク１１０の排他処理
タスク実行制御部１３０は、ＰＯＳＩＸタスク１１０−１〜Ｎからの指示に応じて、ＰＯＳＩＸタスク１１０−１〜Ｎ間における排他処理を管理する。例えば、タスク実行制御部１３０は、１つのスレッドのみが独占排他的に実行しなければならないプログラム中の実行領域であるクリティカルセクションを実行する排他処理を行う旨の指示を、ＰＯＳＩＸタスク１１０−Ｎから受取る。この場合、タスク実行制御部１３０は、ＰＯＳＩＸタスク１１０−Ｎが、第２ＯＳ１１５及び他のＰＯＳＩＸタスク１１０より優先して実行させるように、スケジューリング優先度変更指示を第１ＯＳ１５０に送る。
これを受けて、第１ＯＳ１５０は、ＰＯＳＩＸタスク１１０−Ｎを、他のＰＯＳＩＸタスク１１０より優先して実行させる。従って、タスク実行制御部１３０は、他のＰＯＳＩＸタスク１１０やタスク管理部１２０により中断されることなく、ＰＯＳＩＸタスク１１０−Ｎによりクリティカルセクションを実行させることができる。
【００２０】
一方、タスク実行制御部１３０は、ＰＯＳＩＸタスク１１０−Ｎによるクリティカルセクションの実行が終わった場合に、ＰＯＳＩＸタスク１１０−Ｎを、他のＰＯＳＩＸタスク１１０と同一の優先度で実行させるように、スケジューリング優先度変更指示を第１ＯＳ１５０に送る。
【００２１】
（２）ＰＯＳＩＸタスク１１０によるＩＴＲＯＮのＡＰＩ実行
タスク実行制御部１３０は、ＰＯＳＩＸタスク１１０−１〜Ｎからの指示に応じて、ＰＯＳＩＸタスク１１０−１〜Ｎを、第１ＯＳ１５０により実行させる。例えば、タスク実行制御部１３０は、第１ＯＳ１５０によってのみ実行可能な入出力等のモジュールを実行する旨の通知（例えば、ＩＯ＿ＳＴＡＲＴと呼ぶ処理）をＰＯＳＩＸタスク１１０−Ｎから受け取った場合に、ＰＯＳＩＸタスク１１０−Ｎのタスク管理部１２０によるスケジューリングを停止する旨の指示をタスク管理部１２０に送る。これを受けて、タスク管理部１２０は、ＰＯＳＩＸタスク１１０−Ｎのタスク管理部１２０によるスケジューリングを停止する。従って、タスク実行制御部１３０は、ＰＯＳＩＸタスク１１０−Ｎを第１ＯＳ１５０のみによってスケジューリングさせると伴に、ＰＯＳＩＸタスク１１０−１〜Ｎから第１ＯＳ１５０のＡＰＩを呼出し可能とすることにより、ＰＯＳＩＸタスク１１０を第１ＯＳ１５０により実行させることができる。
【００２２】
一方、タスク実行制御部１３０は、第１ＯＳ１５０によってのみ実行可能なモジュールを実行終了した旨の通知（例えば、ＩＯ＿ＤＯＮＥと呼ぶ処理）をＰＯＳＩＸタスク１１０から受け取った場合に、タスク管理部１２０によるスケジューリングを再開する旨の指示をタスク管理部１２０に送る。
【００２３】
以上のように、タスク管理システム１０は、異なるＡＰＩを用いて記載されたプログラムであるＰＯＳＩＸタスク１１０及びＩＴＲＯＮタスク１４０の双方を実行することができる。そして、タスク管理システム１０は、リアルタイム性が要求されるＩＴＲＯＮタスク１４０の実行を妨害することなく、ＰＯＳＩＸタスク１１０及び第２ＯＳ１１５の実行を管理することができる。
【００２４】
図２は、タスク管理システム１０による機能である、ＰＯＳＩＸタスク１１０の排他処理の動作フローを示す。タスク管理システム１０は、ＰＯＳＩＸタスク１１０−１〜Ｎを、第１ＯＳ１５０上で実行可能なタスクとして生成する（Ｓ１００）。続いて、タスク管理システム１０は、例えば、ＰＯＳＩＸタスク１１０からの呼出しに、応じて以下の処理を行う。
【００２５】
タスク実行制御部１３０が、ＰＯＳＩＸタスク１１０−１〜Ｎのうちの一のタスク（例えば、ＰＯＳＩＸタスク１１０−Ｎとする）からの呼出しに応じて、ＰＯＳＩＸタスク１１０−Ｎのセマフォ管理のための排他処理を実行すると判断した場合に（Ｓ１１０：ＹＥＳ）、第１ＯＳ１５０は、ＰＯＳＩＸタスク１１０−Ｎのスケジューリング優先度をタスク管理部１２０より高める（Ｓ１２０）。一方、排他処理を実行しないと判断した場合に（Ｓ１１０：ＮＯ）、タスク管理システム１０は、通常のスケジューリング動作を行い、ＰＯＳＩＸタスク１１０−１〜Ｎを順次実行する。そして、タスク実行制御部１３０は、次の処理（Ｓ１７０）に移る。
【００２６】
続いて、タスク実行制御部１３０は、排他処理を終了したと判断した場合（Ｓ１３０：ＹＥＳ）に、ＰＯＳＩＸタスク１１０−Ｎの第１ＯＳ１５０によるスケジューリング優先度を元に戻す（Ｓ１３５）。一方、排他処理を終了していないと判断した場合（Ｓ１３０：ＮＯ）に、タスク管理システム１０は、通常のスケジューリング動作を行う。また、タスク管理システム１０は、ＰＯＳＩＸタスク１１０−Ｎからの呼び出し等に応じて、Ｓ１３０の判断に戻る。
ここで、ＰＯＳＩＸタスク１１０−Ｎが呼出すセマフォ管理の排他処理とは、例えば、セマフォ管理のＷＡＫＥＵＰ処理であってもよいし、ＷＡＩＴ処理であってもよいし、ＰＯＳＩＸで規定されたＭＵＴＥＸ処理であってもよいし、ＣＯＮＤ−ＶＡＲ処理であってもよい。また、排他処理とは、セマフォ管理にのみ用いられるとは限らず、１つのスレッドのみが独占排他的に実行しなければならないプログラム中の実行領域であるクリティカルセクションを実行する場合に用いられる。
【００２７】
タスク管理システム１０は、システム全体の処理を中断または停止する指示を外部から受け取ったと判断した場合に（Ｓ１７０：ＹＥＳ）、所定の終了処理を行った後に処理を終了する。当該指示を外部から受け取らなかったと判断した場合に（Ｓ１７０：ＮＯ）、タスク管理システム１０は、Ｓ１１０の処理に戻る。
【００２８】
このように、タスク管理システム１０は、ＰＯＳＩＸタスク１１０からの指示に応じ、ＰＯＳＩＸタスク１１０のスケジューリング優先度を高めることができる。例えば、タスク管理システム１０は、ＰＯＳＩＸタスク１１０が排他処理を行う場合に、当該ＰＯＳＩＸタスク１１０の第１ＯＳ１５０によるスケジューリング優先度を上げる。従って、タスク管理システム１０は、当該ＰＯＳＩＸタスク１１０をタスク管理部１２０により管理される他のタスクやタスク管理部１２０より優先して実行することができる。
【００２９】
図３は、ＰＯＳＩＸタスクが排他処理をする動作の詳細図である。本図の上方向の実線矢印は、スケジューリング優先度を示す。すなわち、タスク管理システム１０は、本図の上方向にあるタスクをより優先してスケジューリングする。第１ＯＳ１５０は、スケジューリング優先度の高い順に、ＩＴＲＯＮタスク１４０−１〜Ｍ、ＰＯＳＩＸランタイムライブラリのうち排他処理等を行う部分であるタスク実行制御部１３０と、ＰＯＳＩＸスケジューラであるタスク管理部１２０、ＰＯＳＩＸタスク１１０−１〜Ｎを実行する。ＰＯＳＩＸタスク１１０−１〜Ｎは、タスク管理部１２０により順次実行可能状態（レディ状態）にされることによりスケジューリングされる。例えば、本図において、タスク管理部１２０は、ＰＯＳＩＸタスク１１０−１〜Ｎのうちの１つであるＰＯＳＩＸタスク１１０−１の、第１ＯＳ１５０上で実行可能か否かを示す実行状態を実行可能状態（レディ状態）とすることにより、タスク管理部１２０より低い優先度で、第１ＯＳ１５０により実行させる。
【００３０】
また、第１ＯＳ１５０は、より高いスケジューリング優先度を有するタスクの実行が完了してから、当該タスクより低いスケジューリング優先度を有するタスクを実行する。例えば、第１ＯＳ１５０は、ＩＴＲＯＮタスク１４０−１〜Ｍ中に実行可能なタスクがある場合に、タスク管理部１２０を実行しない。
【００３１】
タスク実行制御部１３０は、ＰＯＳＩＸタスク１１０−１〜Ｎのうち一のタスクであるＰＯＳＩＸタスク１１０−Ｎから、排他処理のＡＰＩを介して呼出されると、ＰＯＳＩＸタスク１１０−Ｎが排他処理を実行すると判断し、ＰＯＳＩＸタスク１１０−Ｎが他のタスクより優先してスケジューリングされると判断する（図２のＳ１１０：ＹＥＳ）。
これを受けて、タスク実行制御部１３０は、ＰＯＳＩＸタスク１１０−Ｎの第１ＯＳ１５０によるスケジューリング優先度をタスク実行制御部１３０の値に変更する。
【００３２】
一方、タスク実行制御部１３０は、排他処理を終了したと判断した場合に（図２のＳ１３０：ＹＥＳ）、ＰＯＳＩＸタスク１１０−Ｎが他のＰＯＳＩＸタスク１１０より優先してスケジューリングされる状態を終了させたと判断し、ＰＯＳＩＸタスク１１０−Ｎの第１ＯＳ１５０によるスケジューリング優先度をＰＯＳＩＸタスク１１０の位置に戻し、タスク管理部１２０によりスケジューリングされる状態に戻す。
【００３３】
このように、タスク管理システム１０は、ＰＯＳＩＸタスク１１０が排他処理を実行する場合に、ＰＯＳＩＸタスク１１０が他のＰＯＳＩＸタスク１１０より優先してスケジューリングされると判断する。そして、タスク管理システム１０は、ＰＯＳＩＸタスク１１０をタスク管理部１２０や他のＰＯＳＩＸタスク１１０より高い優先度でスケジューリングさせることにより、ＰＯＳＩＸタスク１１０の処理を他のＰＯＳＩＸタスク１１０に妨害させないので、適切な排他処理を行わせることができる。更に、この場合、タスク管理システム１０は、ＰＯＳＩＸタスク１１０を、ＩＴＲＯＮタスク１４０より低い優先度でスケジューリングさせることにより、ＩＴＲＯＮタスク１４０の処理に悪影響を与えずに、上記処理を行うことができる。
【００３４】
図４は、タスク管理システム１０による機能である、ＰＯＳＩＸタスク１１０によるＩＴＲＯＮのＡＰＩ実行の動作フローを示す図である。タスク管理システム１０は、ＰＯＳＩＸタスク１１０−１〜Ｎを、第１ＯＳ１５０上で実行可能なタスクとして生成する（Ｓ１００）。続いて、タスク管理システム１０は、例えば、ＰＯＳＩＸタスク１１０からの呼出しに、応じて以下の処理を行う。
【００３５】
タスク実行制御部１３０は、第１ＯＳ１５０によってのみ実行可能なモジュールをＰＯＳＩＸタスク１１０−Ｎが実行するか否かを判断する（Ｓ１４０）。タスク実行制御部１３０は、第１ＯＳ１５０によってのみ実行可能なモジュールをＰＯＳＩＸタスク１１０−Ｎが実行すると判断した場合に（Ｓ１４０：ＹＥＳ）、ＰＯＳＩＸタスク１１０−Ｎのタスク管理部１２０によるスケジューリングを停止し、第１ＯＳ１５０のみによってスケジューリングさせる（Ｓ１５０）。なお、この場合、タスク実行制御部１３０は、ＰＯＳＩＸタスク１１０−Ｎの、第１ＯＳ１５０によるスケジューリング優先度を高めてもよい。
一方、第１ＯＳ１５０によってのみ実行可能なモジュールをＰＯＳＩＸタスク１１０−Ｎが実行しないと判断した場合に（Ｓ１４０：ＮＯ）、タスク管理システム１０は、次の処理（Ｓ１７０）に移る。
続いて、タスク実行制御部１３０は、ＰＯＳＩＸタスク１１０−Ｎが第１ＯＳ１５０によってのみ実行可能なモジュールの実行を終了したと判断した場合に（Ｓ１６０：ＹＥＳ）、ＰＯＳＩＸタスク１１０−Ｎをタスク管理部１２０によってスケジューリングされる状態に戻す（Ｓ１６５）。
【００３６】
タスク管理システム１０は、システム全体の処理を中断または停止する指示を外部から受け取ったと判断した場合に（Ｓ１７０：ＹＥＳ）、所定の終了処理を行った後に処理を終了する。当該指示を外部から受け取らなかったと判断した場合に（Ｓ１７０：ＮＯ）、タスク管理システム１０は、Ｓ１４０の処理に戻る。
【００３７】
このように、タスク管理システム１０は、ＰＯＳＩＸタスク１１０からの指示に応じ、ＰＯＳＩＸタスク１１０をスケジューリングするＯＳを切り替えることができる。例えば、タスク管理システム１０は、ＰＯＳＩＸタスク１１０が第１ＯＳ１５０によってのみ実行可能な入出力処理等を行う場合に、当該ＰＯＳＩＸタスク１１０のタスク管理部１２０によるスケジューリングを停止させることにより、タスク管理部１２０による他のＰＯＳＩＸタスク１１０のスケジューリングを効率的に行うことができる。
【００３８】
図５は、ＰＯＳＩＸタスクがＩＴＲＯＮの入出力機能を用いる動作の詳細図である。本図の上方向の実線矢印は、図３と同様、スケジューリング優先度を示す。スケジューリング優先度の詳細は、図３における同一の符号を持つスレッドと同様であるので、説明を省略する。
【００３９】
タスク実行制御部１３０は、第１ＯＳ１５０によってのみ実行可能なモジュールを実行する旨の通知（例えば、ＩＯ＿ＳＴＡＲＴと呼ぶ処理）をＰＯＳＩＸタスク１１０−Ｎから受け取った場合に（図４のＳ１４０：ＹＥＳ）、ＰＯＳＩＸタスク１１０−Ｎのタスク管理部１２０によるスケジューリングを停止する。
すなわち、ＰＯＳＩＸタスク１１０−Ｎを実行するスレッドは、タスク実行制御部１３０のＩＯ＿ＳＴＡＲＴを呼出した場合に、当該スレッドのスケジューリングに用いるレディタスクポインタ１２６をタスク管理部１２０から取り除き、ＩＴＲＯＮ入出力モジュール１３５を実行する。
【００４０】
一方、タスク実行制御部１３０は、第１ＯＳ１５０によってのみ実行可能なモジュールを実行終了した旨の通知（例えば、ＩＯ＿ＤＯＮＥと呼ぶ処理）をＰＯＳＩＸタスク１１０から受け取った場合に（図４のＳ１６０：ＹＥＳ）、タスク管理部１２０によるスケジューリングを再開する。
すなわち、タスク実行制御部１３０を実行していたスレッドは、ＩＴＲＯＮ入出力モジュール１３５の処理を終了した場合に、当該スレッドのスケジューリングに用いるレディタスクポインタ１２６を新たにタスク管理部１２０内に追加し、当該リアルタイムスレッドをタスク管理部１２０の管理下に戻す。
【００４１】
このように、タスク管理システム１０は、ＰＯＳＩＸタスク１１０が第１ＯＳ１５０によってのみ実行可能なモジュールを実行すると判断した場合に、ＰＯＳＩＸタスク１１０のタスク管理部１２０によるスケジューリングを停止し、ＰＯＳＩＸタスク１１０を第１ＯＳ１５０によりスケジューリングさせることにより、タスク管理部１２０による他のＰＯＳＩＸタスク１１０のスケジューリングを効率的に処理できる。
ここで、タスク管理システム１０は、ＰＯＳＩＸタスク１１０のタスク管理部１２０によるスケジューリングを停止せず、当該ＰＯＳＩＸタスク１１０が第１ＯＳ１５０のリソース待ち状態となるとすれば、タスク管理部１２０による他のＰＯＳＩＸタスク１１０のスケジューリングが妨害されてしまう。
なぜなら、タスク管理部１２０は、ＰＯＳＩＸタスク１１０による第１ＯＳ１５０のＡＰＩ実行に起因する待ち状態を検出することができないからである。従って、上記で説明したように、タスク管理システム１０は、用いられるＡＰＩの種類に応じてスケジューリングされるＯＳを切り替えることにより、全体として効率的にスレッドを動作させることができる。
【００４２】
図６は、ＰＯＳＩＸタスクが第１ＯＳ１５０によってのみ実行可能なモジュールを実行する構成をした場合における動作の例を示す。本例において、タスク管理システム１０は、ＰＯＳＩＸタスク１１０−Ｎと、ＩＴＲＯＮタスク１４０−Ｎと、コマンド受取に用いられるコマンド用共有メモリ５００と、データ受取に用いられるデータ用共有メモリ５１０とを備える。本図に示した実線矢印は、ＰＯＳＩＸタスク１１０−Ｎ及びＩＴＲＯＮタスク１４０−Ｎの間の、データや指示の書込み及び読出しを示している。また、タスク管理システム１０は、ＰＯＳＩＸタスク１１０それぞれに対応付けられたＩＴＲＯＮタスク１４０実行用のスレッドをあらかじめ生成しておく。本図において、ＰＯＳＩＸタスク１１０−Ｎを実行しているスレッドが、当該ＰＯＳＩＸタスク１１０−Ｎに対応するＩＴＲＯＮタスク１４０−Ｎを用いて、第１ＯＳ１５０によってのみ実行可能なモジュールである入出力モジュールを用いた処理を行う動作例を説明する。
【００４３】
ＩＴＲＯＮタスク１４０−Ｎは、初期状態として、ＰＯＳＩＸタスク１１０−Ｎからの要求を待つ状態に設定されている（（０）Ｂｌｏｃｋ）。ここで、ＰＯＳＩＸタスク１１０−Ｎは、入出力モジュールからデータを読み出す旨の読出指示を、コマンド用共有メモリ５００に書き込む（（１）Ｗｒｉｔｅ　Ｒｅｑｕｅｓｔ）。そして、ＰＯＳＩＸタスク１１０−Ｎは、ＩＴＲＯＮタスク１４０−Ｎの待ち状態を解消し（（２）Ｕｎｂｌｏｃｋ　Ｔａｓｋ−Ｒ）、ＩＴＲＯＮタスク１４０−Ｎからの読み出し結果を待つ状態に設定する（（３）Ｂｌｏｃｋ）。
【００４４】
ＩＴＲＯＮタスク１４０−Ｎは、コマンド用共有メモリ５００から読出指示を受取り（（４）Ｒｅａｄ　Ｒｅｑｕｅｓｔ）、当該読出指示に従い入出力モジュールからデータを読み出す（（５）Ｐｒｏｃｅｓｓ　Ｉ／Ｏ）。続いて、ＩＴＲＯＮタスク１４０−Ｎは、読み出したデータをデータ用共有メモリ５１０に書込み（（６）Ｗｒｉｔｅ　Ｒｅｓｕｌｔ）、ＰＯＳＩＸタスク１１０−Ｎの待ち状態を解消する（（７）Ｕｎｂｌｏｃｋ　Ｔａｓｋ−Ａ）。これを受けて、ＰＯＳＩＸタスク１１０−Ｎは、読出指示の結果であるデータ値をデータ用共有メモリ５１０から読出し（（８）Ｒｅａｄ　Ｄａｔａ）、このデータ値を用いた動作を継続する。
【００４５】
以上で示したような構成において、ＰＯＳＩＸタスク１１０−Ｎは、第１ＯＳ１５０によってのみ実行可能なモジュールを実行するＩＴＲＯＮタスク１４０−Ｎを予め生成しておくことにより、ＩＴＲＯＮタスク１４０−Ｎを用いて所望の処理を行うことができる。しかしながら、本図において、タスク管理システム１０は、ＩＴＲＯＮタスク１４０−Ｎを実行するスレッドを予め生成しておく必要があり、処理の内容に基づく本来必要なスレッド数より多くのスレッドを生成しなければならないので、効率が悪い。また、本図で示したように、ＰＯＳＩＸタスク１１０−Ｎを実行するスレッドは、ＩＴＲＯＮタスク１４０−Ｎを実行するスレッドとの間で余計な通信を行う必要があるため、効率が悪い。さらに、ＰＯＳＩＸタスク１１０−Ｎは、入出力モジュールを用いて単に値を読み出すのみの動作においても、本図で示すような複雑なプログラムが必要であるので、プログラムサイズの増大や、実行効率への悪影響を招くおそれがある。
【００４６】
図７は、本実施形態においてＰＯＳＩＸタスクがＩＴＲＯＮの入出力機能を用いる例を示す図である。本図に示した実線矢印は、ＰＯＳＩＸタスク１１０−Ｎから、ＩＴＲＯＮ入出力モジュール１３５への関数呼出しを示している。本図において、ＰＯＳＩＸタスク１１０−Ｎが、ＩＴＲＯＮ入出力モジュール１３５中の関数呼出しにより、第１ＯＳ１５０によってのみ実行可能なモジュールを用いた処理を行う動作例を説明する。
【００４７】
ＰＯＳＩＸタスク１１０−Ｎを実行するＩＴＲＯＮのリアルタイムスレッドは、ＰＯＳＩＸのＡＰＩによって記述されたＰＯＳＩＸタスク１１０−Ｎを実行している状態において、ＩＯ＿ＳＴＡＲＴを呼出す（（１）ｉｏ＿ｓｔａｒｔ（））。これを受けて、タスク実行制御部１３０は、ＰＯＳＩＸタスク１１０−Ｎのタスク管理部１２０によるスケジューリングを停止する。
【００４８】
続いて、ＰＯＳＩＸタスク１１０−Ｎを実行するＩＴＲＯＮのリアルタイムスレッドは、第１ＯＳ１５０によってのみ実行可能なモジュールを実行するために、ＩＴＲＯＮ入出力モジュール１３５中の関数を呼出し（（２）ｄｏ＿ｒｅａｄ（））、入出力を行う（（３）ｃａｌｌ　ＲＴＯＳ　ＡＰＩｓ）。ＰＯＳＩＸタスク１１０−Ｎを実行するＩＴＲＯＮのリアルタイムスレッドは、ＩＴＲＯＮ入出力モジュール１３５の実行を終了し、ＩＯ＿ＤＯＮＥを呼出す（（４）ｉｏ＿ｄｏｎｅ（））ことにより、ＰＯＳＩＸタスク１１０−Ｎを実行するＩＴＲＯＮのリアルタイムスレッドを、再びタスク管理部１２０によりスケジューリングさせる状態に戻す。
【００４９】
このように、タスク管理システム１０は、１つのスレッドに、ＰＯＳＩＸのＡＰＩ及びＩＴＲＯＮのＡＰＩの双方を呼出させることができる。そして、タスク管理システム１０は、図６の手法が行っていたスレッド間通信を必要としないので、スレッド間通信の通信コスト、スレッド間通信のための複雑なプログラム、及び入出力専用のスレッド生成を必要としない。
【００５０】
図８は、本実施形態に示すタスク管理システム１０を有する多重ＯＳシステム３００の実装例を示す図である。本図の各矩形領域は、ハードウェア又はソフトウェアにより実現されるモジュールを表す。また、本図において上方に配置されるモジュールは、下方に配置されるモジュールの機能に依存して動作する。
【００５１】
多重ＯＳシステム３００は、情報家電、携帯電話、及び計測器等のハードウェアプラットフォームと、ハードウェアプラットフォームのメモリを有効に利用するメモリマネージャと、ハードウェアプラットフォームによる入出力等を管理するＩＴＲＯＮデバイスドライバを備える。
また、多重ＯＳシステム３００は、ＩＴＲＯＮデバイスドライバを用いた通信制御を行うＴＣＰ／ＩＰ管理モジュールと、ＩＴＲＯＮデバイスドライバを管理するカーネルであるマイクロＩＴＲＯＮ１５０とを備える。
【００５２】
また、多重ＯＳシステム３００は、マイクロＩＴＲＯＮ１５０上で動作しＰＯＳＩＸタスクをスケジューリングするＰＯＳＩＸスケジューラと、マイクロＩＴＲＯＮ１５０のリソース管理を行うデバイスリソースマネージャと、マイクロＩＴＲＯＮ１５０ファイルシステムを管理するファイルシステムモジュールと、モバイル機器向けのデータ同期を管理するＳｙｎｃＭＬ／Ｍ準拠システムマネージメントモジュールとを備える。図１で示したタスク管理部１２０の機能は、本図で示すＰＯＳＩＸスケジューラにより実現される。
【００５３】
また、多重ＯＳシステム３００は、上記メモリマネージャ、ＴＣＰ／ＩＰ管理モジュール、ＰＯＳＩＸスケジューラ、デバイスリソースマネージャ、及びファイルシステムモジュールを用いて、ユーザレベルアプリケーションにＰＯＳＩＸＡＰＩを提供するＰＯＳＩＸランタイムライブラリを備える。図１で示したタスク実行制御部１３０の機能は、ＰＯＳＩＸランタイムライブラリにより実現される。
【００５４】
また、多重ＯＳシステム３００は、それぞれＰＯＳＩＸランタイムライブラリ上で動作する、イベントマネージャ／グラフィックコントロールモジュールと、ＰＯＳＩＸアプリケーション１１０と、データストアと、同期エンジンを含む同期エージェントとを備える。
【００５５】
図９は、本実施形態に示すタスク管理システム１０のハードウェア構成を示す。本実施形態に係るタスク管理システム１０は、ホストコントローラ１０８２により相互に接続されるＣＰＵ１０００、ＲＡＭ１０２０、グラフィックコントローラ１０７５、及び表示装置１０８０を有するＣＰＵ周辺部と、入出力コントローラ１０８４によりホストコントローラ１０８２に接続される通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を有する入出力部と、入出力コントローラ１０８４に接続されるＲＯＭ１０１０、フレキシブルディスクドライブ１０５０、及び入出力チップ１０７０を有するレガシー入出力部とを備える。
【００５６】
ホストコントローラ１０８２は、ＲＡＭ１０２０と、高い転送レートでＲＡＭ１０２０をアクセスするＣＰＵ１０００及びグラフィックコントローラ１０７５とを接続する。ＣＰＵ１０００は、ＲＯＭ１０１０及びＲＡＭ１０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ１０７５は、ＣＰＵ１０００等がＲＡＭ１０２０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置１０８０上に表示させる。これに代えて、グラフィックコントローラ１０７５は、ＣＰＵ１０００等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
【００５７】
入出力コントローラ１０８４は、ホストコントローラ１０８２と、比較的高速な入出力装置である通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を接続する。通信インターフェイス１０３０は、ネットワークを介して他の装置と通信する。ハードディスクドライブ１０４０は、タスク管理システム１０が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ１０６０は、ＣＤ−ＲＯＭ１０９５からプログラム又はデータを読み取り、ＲＡＭ１０２０を介して入出力チップ１０７０に提供する。
【００５８】
また、入出力コントローラ１０８４には、ＲＯＭ１０１０と、比較的低速な入出力装置であるフレキシブルディスクドライブ１０５０や入出力チップ１０７０等とが接続される。ＲＯＭ１０１０は、タスク管理システム１０の起動時にＣＰＵ１０００が実行するブートプログラムや、パーソナルコンピュータ本体１１０のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ１０５０は、フレキシブルディスク１０９０からプログラム又はデータを読み取り、ＲＡＭ１０２０を介して入出力チップ１０７０に提供する。入出力チップ１０７０は、フレキシブルディスク１０９０や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
【００５９】
タスク管理システム１０を実現するプログラムは、タスク管理モジュールと、タスク実行制御モジュールとを備える。これらのモジュールは、タスク管理システム１０を、タスク管理部１２０と、タスク実行制御部１３０として動作させるプログラムである。
【００６０】
タスク管理システム１０に提供されるプログラムは、ＲＯＭ１０１０、ハードディスク１０４０、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。このプログラムは、記録媒体から読み出され、入出力チップ１０７０を介してハードディスク１０４０にインストールされ、タスク管理システム１０において実行される。また、タスク管理システム１０に提供されるプログラムは、上記記録媒体から読み出され、ＲＯＭ１０１０等に格納されて用いられてもよい。
【００６１】
以上に示したプログラム又はモジュールは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをタスク管理システム１０に提供してもよい。
【００６２】
以上の説明から明らかなように、タスク管理システム１０は、互いに異なるオペレーティングシステムが提供する標準機能であるＡＰＩで記述された複数のタスクを、効率的に実行させることができる。例えば、タスク管理システム１０は、第２ＯＳ１１５の複数のタスクのうち一のタスクが排他処理等を行うと判断した場合に、一のタスクを、第１ＯＳ１５０によりタスク管理部１２０より高い優先度でスケジューリングさせることにより、排他処理を行うことができる。
また、タスク管理システム１０は、複数のオペレーティングシステムが提供する機能を、同一のタスク内で利用させることができる。例えば、タスク管理システム１０は、ＰＯＳＩＸのＡＰＩを用いて記載されたプログラムを実行中に、ＩＴＲＯＮ等のリアルタイムＯＳのＡＰＩを呼出させることができる。したがって、タスク管理システム１０は、入出力処理を効率的に行うことができる。
【００６３】
以上に説明した実施形態によれば、以下の各項目に示すタスク管理システム、プログラム、記録媒体、及び制御方法が実現される。
【００６４】
（項目１）　第１のオペレーティングシステムにおいて、タスクのスケジューリングを管理するタスク管理システムであって、前記第１のオペレーティングシステムによりスケジューリングされ、複数のタスクをスケジューリングすることにより管理するタスク管理部と、前記複数のタスクのうち一の前記タスクが他の前記タスクより優先してスケジューリングされると判断した場合に、前記一のタスクを、前記第１のオペレーティングシステムにより前記タスク管理部より高い優先度でスケジューリングさせるタスク実行制御部とを備えることを特徴とするタスク管理システム。
（項目２）　前記複数のタスクは、前記第１のオペレーティングシステム上で実行される第２のオペレーティングシステムのタスクであり、前記タスク管理部は、前記複数のタスクとして、前記第２のオペレーティングシステムのタスクをスケジューリングすることにより管理することを特徴とする項目１記載のタスク管理システム。
（項目３）　前記第１のオペレーティングシステムは、前記複数のタスクより優先してスケジューリングされる複数の優先タスクを実行することを特徴とする項目１記載のタスク管理システム。
【００６５】
（項目４）　前記タスク管理部は、前記複数の優先タスクより低い優先度でスケジューリングされ、前記一のタスクが前記他のタスクより優先してスケジューリングされると判断した場合に、前記タスク実行制御部は、前記一のタスクを、前記タスク管理部より高く、かつ前記複数の優先タスクより低い優先度でスケジューリングさせることを特徴とする項目３記載のタスク管理システム。
（項目５）　前記タスク実行制御部は、前記一のタスクが前記他のタスクに対して排他処理を実行すると判断した場合に、前記一のタスクを前記タスク管理部より高い優先度でスケジューリングさせることを特徴とする項目１記載のタスク管理システム。
（項目６）　前記タスク実行制御部は、前記一のタスクがセマフォ管理のために前記排他処理を行うと判断した場合に、前記一のタスクを前記タスク管理部より高い優先度でスケジューリングさせることを特徴とする項目５記載のタスク管理システム。
（項目７）　前記タスク実行制御部は、前記一のタスクが前記他のタスクより優先してスケジューリングされる状態を終了させた場合に、前記一のタスクを前記タスク管理部によりスケジューリングされる状態に戻すことを特徴とする項目１記載のタスク管理システム。
【００６６】
（項目８）　前記複数のタスクは、前記第１のオペレーティングシステムとは異なる第２のオペレーティングシステムの機能を用い、前記第１のオペレーティングシステム上で実行可能なタスクとして生成され、
前記タスク管理部は、前記複数のタスクそれぞれにおいて、前記第１のオペレーティングシステム上で実行可能か否かを示す実行状態を変更することにより、前記第１のオペレーティングシステムにより前記複数のタスクをスケジューリングさせることを特徴とする項目１記載のタスク管理システム。
（項目９）　前記タスク管理部は、前記複数のタスクのうち一のタスクを選択し、前記第１のオペレーティングシステムにより実行させることにより、前記複数のタスクを順次スケジューリングすることを特徴とする項目８記載のタスク管理システム。
（項目１０）　前記第１のオペレーティングシステムは、リアルタイムオペレーティングシステムであり、前記複数のタスクは、非リアルタイムオペレーティングシステムのタスクをスケジューリングすることにより管理することを特徴とする項目１記載のタスク管理システム。
【００６７】
（項目１１）　第１のオペレーティングシステムにおいて、タスクのスケジューリングを管理するタスク管理システムであって、前記第１のオペレーティングシステムとは異なる第２のオペレーティングシステムの機能を用いる複数のタスクを管理し、前記第１のオペレーティングシステムにより実行されるタスク管理部と、前記複数のタスクのうち一の前記タスクが、前記第１のオペレーティングシステムによってのみ実行可能なモジュールを実行すると判断した場合に、前記一のタスクを前記第１のオペレーティングシステムにより実行させるタスク実行制御部とを備えることを特徴とするタスク管理システム。
（項目１２）　前記複数のタスクは、前記第１のオペレーティングシステム上で実行可能なタスクとして生成され、前記タスク管理部は、前記複数のタスクそれぞれにおいて、前記第１のオペレーティングシステム上で実行可能か否かを示す実行状態を変更することにより、前記複数のタスクをスケジューリングし、前記タスク実行制御部は、前記一のタスクが前記第１のオペレーティングシステムによってのみ実行可能なモジュールを実行すると判断した場合に、前記一のタスクの前記タスク管理部によるスケジューリングを停止することにより、前記一のタスクを前記第１オペレーティングシステムによりスケジューリングさせ、前記一のタスクを前記第１オペレーティングシステムにより実行させることを特徴とする項目１１記載のタスク管理システム。
【００６８】
（項目１３）　前記タスク実行制御部は、前記第１のオペレーティングシステムによってのみ実行可能なモジュールの実行を終了したと判断した場合に、前記一のタスクを前記タスク管理部によりスケジューリングされる状態に戻すことを特徴とする項目１１記載のタスク管理システム。
（項目１４）　第１のオペレーティングシステムにおいて、タスクのスケジューリングを管理するタスク管理システムをコンピュータによって制御するプログラムであって、前記コンピュータを、前記第１のオペレーティングシステムによりスケジューリングされ、複数のタスクをスケジューリングすることにより管理するタスク管理部と、前記複数のタスクのうち一の前記タスクが他の前記タスクより優先してスケジューリングされると判断した場合に、前記一のタスクを、前記第１のオペレーティングシステムにより前記タスク管理部より高い優先度でスケジューリングさせるタスク実行制御部として機能させることを特徴とするプログラム。
【００６９】
（項目１５）　第１のオペレーティングシステムにおいて、タスクのスケジューリングを管理するタスク管理システムをコンピュータによって制御するプログラムであって、前記コンピュータを、前記第１のオペレーティングシステムとは異なる第２のオペレーティングシステムの機能を用いる複数のタスクを管理し、前記第１のオペレーティングシステムにより実行されるタスク管理部と、前記複数のタスクのうち一の前記タスクが、前記第１のオペレーティングシステムによってのみ実行可能なモジュールを実行すると判断した場合に、前記一のタスクを前記第１のオペレーティングシステムにより実行させるタスク実行制御部として機能させることを特徴とするプログラム。
（項目１６）　項目１４又は項目１５何れかに記載のプログラムを記録した記録媒体。
（項目１７）　第１のオペレーティングシステムにおいて、タスクのスケジューリングを制御する制御方法であって、前記第１のオペレーティングシステムによりスケジューリングされるタスクとして実現され、複数のタスクを管理するタスク管理段階と、前記複数のタスクのうち一の前記タスクが他の前記タスクより優先してスケジューリングされると判断した場合に、前記一のタスクを、前記第１のオペレーティングシステムにより前記タスク管理段階より高い優先度でスケジューリングさせるタスク実行制御段階とを備えることを特徴とする制御方法。
【００７０】
（項目１８）　第１のオペレーティングシステムにおいて、タスクのスケジューリングを管理するタスク管理システムをコンピュータによって制御する制御方法であって、前記第１のオペレーティングシステムとは異なる第２のオペレーティングシステムの機能を用いる複数のタスクを管理し、前記第１のオペレーティングシステムにより実行されるタスク管理段階と、前記複数のタスクのうち一の前記タスクが、前記第１のオペレーティングシステムによってのみ実行可能なモジュールを実行すると判断した場合に、前記一のタスクを前記第１のオペレーティングシステムによりスケジューリングさせるタスク実行制御段階とを備えることを特徴とする制御方法。
以上、本発明を実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、多様な変更または改良を加えることができる。そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００７１】
【発明の効果】
上記説明から明らかなように、本発明によれば処理の種類に応じてスケジューリングするＯＳを切り替えることにより、排他処理や入出力処理を効率的に行うことができる。
【図面の簡単な説明】
【図１】図１は、タスク管理システム１０の機能ブロック図である。
【図２】図２は、タスク管理システム１０による機能である、ＰＯＳＩＸタスク１１０の排他処理の動作フローを示す図である。
【図３】図３は、ＰＯＳＩＸタスク１１０が排他処理をする動作の詳細図である。
【図４】図４は、タスク管理システム１０による機能である、ＰＯＳＩＸタスク１１０によるＩＴＲＯＮのＡＰＩ実行の動作フローを示す図である。
【図５】図５は、ＰＯＳＩＸタスク１１０がＩＴＲＯＮの入出力機能を用いる動作の詳細図である。
【図６】図６は、ＰＯＳＩＸタスクが第１ＯＳ１５０によってのみ実行可能なモジュールを実行する構成をした場合における動作の例を示す。
【図７】図７は、本実施形態においてＰＯＳＩＸタスクがＩＴＲＯＮの入出力機能を用いる例を示す図である。
【図８】図８は、本実施形態に示すタスク管理システム１０を有する多重ＯＳシステムの実装例を示す図である。
【図９】図９は、本実施形態に示すタスク管理システム１０のハードウェア構成を示す図である。
【符号の説明】
１０　タスク管理システム
１１０　ＰＯＳＩＸタスク
１１５　第２ＯＳ
１２０　タスク管理部
１２２　レディキュー
１２４　ウェイトキュー
１２６　レディタスクポインタ
１２８　ウェイトタスクポインタ
１３０　タスク実行制御部
１３５　ＩＴＲＯＮ入出力モジュール
１４０　ＩＴＲＯＮタスク
１５０　第１ＯＳ
１５２　レディキュー
１５４　ウェイトキュー
１５６　レディタスクポインタ
１５８　ウェイトタスクポインタ
３００　多重ＯＳシステム
５００　コマンド用共有メモリ
５１０　データ用共有メモリ
【図１】
2004078322.tif 000003
【図２】
2004078322.tif 000004
【図３】
2004078322.tif 000005
【図４】
2004078322.tif 000006
【図５】
2004078322.tif 000007
【図６】
2004078322.tif 000008
【図７】
2004078322.tif 000009
【図８】
2004078322.tif 000010
【図９】
2004078322.tif 000011