(57)【要約】      （修正有）【課題】ＯＳの動作状態に影響を受けずにソフトウェアコンポーネントからＡＰＩの発行を可能にする。【解決手段】汎用ＯＳをホストＯＳ２０とし、この上の１つ以上のタスクとして動作するリアルタイムＯＳをホストＯＳ４０とする。ホストＯＳ２０上の割込みハンドラ３１及びタスク３２と、ゲストＯＳ４０上の割込みハンドラ５１及びタスク５２とは、タスクの起動、停止などへのタスク状態の変更を要求するＡＰＩ（Application Program Interface）を発行する。各ＯＳのＡＰＩ処理部２１，４１は、タスク状態を変更する命令を出力する。ゲストＯＳのＡＰＩ処理部４１が出力した命令を順次蓄積して出力する命令蓄積部６２を設け、両割込みハンドラ３１，５１がともに実行中でないタイミングに、ホストＯＳのＡＰＩ処理部２１の出力命令と命令蓄積部６２の出力命令とのうち後者を命令同期タイミング制御部６３が優先的にスケジューラ部２２へ渡す。【選択図】  図４
2006146758.tif 000002
【特許請求の範囲】
【請求項１】
１つのＯＳ（Operating System）と、当該ＯＳ上の１つ以上のタスクとして動作するソフトウェアコンポーネントとを備えたコンピュータシステムであって、
各々前記ＯＳ上で動作してＡＰＩ（Application Program Interface）を発行する機能を有するＯＳ割込みハンドラ及びＯＳタスクと、
前記ＯＳ割込みハンドラ及び前記ＯＳタスクのうちのいずれかから発行されたＡＰＩに基づいて前記ＯＳのタスク状態を変更する命令を出力する機能を有する第１のＡＰＩ処理部と、
前記ソフトウェアコンポーネントに係るＡＰＩに基づいて前記ＯＳのタスク状態を変更する命令を出力する機能を有する第２のＡＰＩ処理部と、
前記第２のＡＰＩ処理部が出力した命令を順次蓄積し、当該命令を蓄積した順に出力する命令蓄積部と、
前記第１のＡＰＩ処理部の出力と前記命令蓄積部の出力とを入力とし、これらの入力のうち前記命令蓄積部から出力された命令を優先的に選択し、該選択した命令を出力する命令同期タイミング制御部と、
前記命令同期タイミング制御部から出力された命令を処理することにより、起動すべきタスクの選択を行うスケジューラ部と、
前記スケジューラ部の選択に従って前記ＯＳのタスク切り替えを実行するコンテキストスイッチ部とを更に備えたことを特徴とするコンピュータシステム。
【請求項２】
請求項１記載のコンピュータシステムにおいて、
前記ソフトウェアコンポーネントは、前記ＯＳをホストＯＳとして、当該ホストＯＳ上の１つ以上のタスクとして動作するゲストＯＳであって、
前記コンピュータシステムは、各々前記ゲストＯＳ上で動作してＡＰＩを発行する機能を有するゲストＯＳ割込みハンドラ及びゲストＯＳタスクを更に備え、
前記第２のＡＰＩ処理部は、前記ゲストＯＳ割込みハンドラ及び前記ゲストＯＳタスクのうちのいずれかから発行されたＡＰＩに基づいて前記ＯＳのタスク状態を変更する命令を出力する機能を有することを特徴とするコンピュータシステム。
【請求項３】
請求項１記載のコンピュータシステムにおいて、
前記ソフトウェアコンポーネントは、前記ＯＳ上の１つ以上のタスクとして動作するアプリケーションプログラムであり、
前記第２のＡＰＩ処理部は、前記アプリケーションプログラムから発行されたＡＰＩに基づいて前記ＯＳのタスク状態を変更する命令を出力する機能を有することを特徴とするコンピュータシステム。
【請求項４】
請求項２記載のコンピュータシステムにおいて、
前記第１のＡＰＩ処理部が出力した命令を順次蓄積し、当該命令を蓄積した順に前記命令同期タイミング制御部へ出力する他の命令蓄積部を更に備えたことを特徴とするコンピュータシステム。
【請求項５】
請求項２記載のコンピュータシステムにおいて、
前記ホストＯＳ割込みハンドラが実行中であるか否かをホストＯＳ割込み状態情報として出力するホストＯＳ割込み状態情報出力部と、
前記ゲストＯＳ割込みハンドラが実行中であるか否かをゲストＯＳ割込み状態情報として出力するゲストＯＳ割込み状態情報出力部とを更に備え、
前記命令同期タイミング制御部は、前記ホストＯＳ割込み状態情報及び前記ゲストＯＳ割込み状態情報に基づき、前記ホストＯＳ割込みハンドラ及び前記ゲストＯＳ割込みハンドラがともに実行中でないタイミングに、前記命令の選択及び出力を実行する機能を有することを特徴とするコンピュータシステム。
【請求項６】
請求項５記載のコンピュータシステムにおいて、
前記ホストＯＳ割込み状態情報及び前記ゲストＯＳ割込み状態情報の各々の有効性を制御する割込み状態情報制御部を更に備え、
前記第１及び第２のＡＰＩ処理部のうちの少なくとも一方は、前記ホストＯＳ割込み状態情報及び前記ゲストＯＳ割込み状態情報の各々を無効とするか否かを指定するＡＰＩが発行された場合に、当該ＡＰＩに対応する制御情報を前記割込み状態情報制御部へ出力する機能を有し、
前記ホストＯＳ割込み状態情報が無効とされた場合には前記ホストＯＳ割込みハンドラが実行中でないものとされ、前記ゲストＯＳ割込み状態情報が無効とされた場合には前記ゲストＯＳ割込みハンドラが実行中でないものとされることを特徴とするコンピュータシステム。
【請求項７】
請求項２記載のコンピュータシステムにおいて、
前記ホストＯＳ上の他の１つ以上のタスクとして動作する他のゲストＯＳと、
各々前記他のゲストＯＳ上で動作してＡＰＩを発行する機能を有する他のゲストＯＳ割込みハンドラ及び他のゲストＯＳタスクと、
前記他のゲストＯＳ割込みハンドラ及び前記他のゲストＯＳタスクのうちのいずれかから発行されたＡＰＩに基づいて前記ホストＯＳのタスク状態を変更する命令を出力する機能を有する第３のＡＰＩ処理部とを更に備え、
前記命令蓄積部は、前記第２のＡＰＩ処理部の出力と前記第３のＡＰＩ処理部の出力とを入力とし、これらの入力のうちの一方に係る命令を優先的に蓄積する機能を有することを特徴とするコンピュータシステム。
【請求項８】
請求項７記載のコンピュータシステムにおいて、
前記命令蓄積部にて前記第２のＡＰＩ処理部の出力と前記第３のＡＰＩ処理部の出力とのうちいずれを優先するかを制御する蓄積命令選択部を更に備えたことを特徴とするコンピュータシステム。
【請求項９】
請求項２記載のコンピュータシステムにおいて、
前記ホストＯＳ上の他の１つ以上のタスクとして動作する他のゲストＯＳと、
各々前記他のゲストＯＳ上で動作してＡＰＩを発行する機能を有する他のゲストＯＳ割込みハンドラ及び他のゲストＯＳタスクと、
前記他のゲストＯＳ割込みハンドラ及び前記他のゲストＯＳタスクのうちのいずれかから発行されたＡＰＩに基づいて前記ホストＯＳのタスク状態を変更する命令を出力する機能を有する第３のＡＰＩ処理部と、
前記第３のＡＰＩ処理部が出力した命令を順次蓄積し、当該命令を蓄積した順に出力する他の命令蓄積部とを更に備え、
前記命令同期タイミング制御部は、前記第１のＡＰＩ処理部の出力と前記命令蓄積部の出力とに加えて前記他の命令蓄積部の出力を入力とし、これらの入力のうち前記命令蓄積部又は前記他の命令蓄積部から出力された命令を優先的に出力する機能を有することを特徴とするコンピュータシステム。
【請求項１０】
請求項９記載のコンピュータシステムにおいて、
前記命令同期タイミング制御部にて前記命令蓄積部の出力と前記他の命令蓄積部の出力とのうちいずれを優先するかを制御する同期命令選択部を更に備えたことを特徴とするコンピュータシステム。
【請求項１１】
１つのＯＳ（Operating System）をホストＯＳとし、当該ホストＯＳ上の１つ以上のタスクとして動作するゲストＯＳを備えたコンピュータシステムにおける制御方法であって、
各々前記ホストＯＳ上で動作する割込みハンドラ及びタスクのうちのいずれかから発行されたＡＰＩ（Application Program Interface）に基づいて前記ホストＯＳのタスク状態を変更する命令を第１のＡＰＩ処理部が出力するステップと、
各々前記ゲストＯＳ上で動作する割込みハンドラ及びタスクのうちのいずれかから発行されたＡＰＩに基づいて前記ホストＯＳのタスク状態を変更する命令を第２のＡＰＩ処理部が出力するステップと、
前記第２のＡＰＩ処理部が出力した命令を順次蓄積しつつ当該命令を蓄積した順に命令蓄積部が出力するステップと、
前記第１のＡＰＩ処理部の出力と前記命令蓄積部の出力とを入力とし、これらの入力のうち前記命令蓄積部から出力された命令を優先的に選択しつつ、該選択した命令を命令同期タイミング制御部が出力するステップと、
前記命令同期タイミング制御部から出力された命令を処理することにより、起動すべきタスクの選択をスケジューラ部が行うステップと、
前記スケジューラ部の選択に従って前記ホストＯＳのタスク切り替えをコンテキストスイッチ部が実行するステップとを備えたことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおけるＯＳ（Operating System）の制御に関するものである。
【背景技術】
【０００２】
ある従来技術によれば、あるＯＳに対して別のＯＳが処理要求の通信を行う場合には、処理要求を一時的に遅延要求キューに格納する。処理要求を受けたＯＳは、割込み処理によって遅延要求キューから要求を取り出し、要求の処理を行う。この方式によって、あるＯＳが資源をロックしていても別のＯＳの割込みハンドラの実行が可能となるため、別のＯＳの割込み処理は遅延しない（特許文献１参照）。
【特許文献１】特開２００１−２８１５５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記従来技術では、あるＯＳと別のＯＳとの間で処理要求の通信を行う場合に割込み処理によって要求を処理するが、一般に割込み処理を行う場合には、ＣＰＵ（Central Processing Unit）が持っているレジスタを全て保存する必要があり、このレジスタの保存には時間がかかる。また、命令のプリフェッチ機構がＣＰＵに搭載されている場合には、この機構が機能しないため、命令の実行が遅くなる。
【０００４】
さて、あるＯＳ（ホストＯＳ）上のタスクとして別のＯＳ（ゲストＯＳ）やアプリケーションプログラムを動作させる方式も考えられる。この方式では、ゲストＯＳ上で動作する割込みハンドラ及びタスクは、ホストＯＳに定められた規則に則って動作する。ただし、ホストＯＳが何らかの資源を排他制御している状態では、資源の競合を避けるため、ゲストＯＳ割込みもあわせて禁止される。
【０００５】
ホストＯＳ上で動作するタスクがＡＰＩ（Application Program Interface）、具体的にはＯＳサービスコールを発行し、その結果、タスクの起動や停止を行う必要が生じた場合、ホストＯＳのＡＰＩ処理部がタスクの起動や停止の要求を処理するスケジューラ部に要求を行う。スケジューラ部は、自らが動作するにあたって、スケジューラ部が動作していることを表すように資源をロックする。この際、資源の競合を避けるために割込みが禁止されるので、ゲストＯＳへの割込みが発生してもロックが解除された後にゲストＯＳの割込み処理が動作することになる。また、ゲストＯＳ割込みを禁止しない場合においても、ゲストＯＳの割込みハンドラ内では、資源の競合が発生する可能性のあるＡＰＩの発行を禁止しておく必要がある。同様に、アプリケーションプログラムからのＡＰＩ発行も制約を受ける。したがって、このようなコンピュータシステムでは、ホストＯＳの動作状態の影響を受けてゲストＯＳやアプリケーションプログラムの動作が遅延するという課題がある。
【０００６】
本発明の目的は、１つのＯＳと、当該ＯＳ上の１つ以上のタスクとして動作するソフトウェアコンポーネントとを備えたコンピュータシステムにおいて、当該ＯＳの動作状態に影響を受けずに当該ソフトウェアコンポーネントからＡＰＩの発行を可能にすることにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明は、１つのＯＳと、当該ＯＳ上の１つ以上のタスクとして動作するソフトウェアコンポーネントとを備えたコンピュータシステムにおいて、各々前記ＯＳ上で動作してＡＰＩを発行する機能を有するＯＳ割込みハンドラ及びＯＳタスクと、前記ＯＳ割込みハンドラ及び前記ＯＳタスクのうちのいずれかから発行されたＡＰＩに基づいて前記ＯＳのタスク状態を変更する命令を出力する機能を有する第１のＡＰＩ処理部と、前記ソフトウェアコンポーネントに係るＡＰＩに基づいて前記ＯＳのタスク状態を変更する命令を出力する機能を有する第２のＡＰＩ処理部と、前記第２のＡＰＩ処理部が出力した命令を順次蓄積し、当該命令を蓄積した順に出力する命令蓄積部と、前記第１のＡＰＩ処理部の出力と前記命令蓄積部の出力とを入力とし、これらの入力のうち前記命令蓄積部から出力された命令を優先的に選択し、該選択した命令を出力する命令同期タイミング制御部と、前記命令同期タイミング制御部から出力された命令を処理することにより、起動すべきタスクの選択を行うスケジューラ部と、前記スケジューラ部の選択に従って前記ＯＳのタスク切り替えを実行するコンテキストスイッチ部とを更に備えた構成を採用することとしたものである。
【０００８】
前記ソフトウェアコンポーネントは、前記ＯＳをホストＯＳとして、当該ホストＯＳ上の１つ以上のタスクとして動作するゲストＯＳであっても、あるいは前記ＯＳ上の１つ以上のタスクとして動作するアプリケーションプログラムであってもよい。
【発明の効果】
【０００９】
本発明によれば、ホストＯＳの動作状態に影響を受けずにゲストＯＳの割込みハンドラ及びタスクからのＡＰＩの発行が可能となり、またホストＯＳの動作状態に影響を受けずに当該ホストＯＳ上で動作するアプリケーションプログラムからのＡＰＩの発行が可能となる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明のコンピュータシステムの実施形態について、図面を参照しながら説明する。
【００１１】
《第１の実施形態》
図１は、本発明の第１の実施形態に係るコンピュータシステムの構成を示している。図１のコンピュータシステムは、ハードウェア資源であるＣＰＵ１０と、このＣＰＵ１０上で動作するソフトウェア資源であるホストＯＳ２０及びゲストＯＳ４０とを備えている。ホストＯＳ２０は、例えばリアルタイム性が要求されない汎用ＯＳであって、ＣＰＵ１０上で動作する。ゲストＯＳ４０は、例えばリアルタイムＯＳであって、ホストＯＳ２０上の１つ以上のタスクとして動作する。ここでタスクとはプロセッサ上での処理の実行単位のことを表す。また、仮想メモリ管理機能を備えたＯＳでは、複数のタスクがアドレス空間を共有することが可能であり、これらのタスクの集まりをタスク群と呼ぶ。ゲストＯＳは、１つ以上のタスク群から構成されることも可能である。
【００１２】
ホストＯＳ２０上では、ホストＯＳ割込みハンドラ３１及びホストＯＳタスク３２が動作する。ホストＯＳ割込みハンドラ３１は、ハードウェア割込みによって起動し、ホストＯＳ２０で定められたＡＰＩを発行することが可能である。また、ホストＯＳタスク３２もホストＯＳ２０のＡＰＩを発行することが可能である。これらのＡＰＩによって、ホストＯＳタスク３２の起動や停止などへのタスク状態の変更が行われる。
【００１３】
ゲストＯＳ４０上では、ゲストＯＳ割込みハンドラ５１及びゲストＯＳタスク５２が動作する。ゲストＯＳ割込みハンドラ５１は、ハードウェア割込みによって起動し、ゲストＯＳ４０で定められたＡＰＩを発行することが可能である。また、ゲストＯＳタスク５２もゲストＯＳ４０のＡＰＩを発行することが可能である。これらのＡＰＩによって、ゲストＯＳタスク５２の起動や停止などへのタスク状態の変更が行われる。ただし、各々のゲストＯＳタスク５２はホストＯＳタスクとしての識別情報を持つ。
【００１４】
ホストＯＳ２０は、ＡＰＩ処理部２１と、スケジューラ部２２と、コンテキストスイッチ部２３とを有している。ゲストＯＳ４０は、独自のＡＰＩ処理部４１を有している。ホストＯＳ２０のＡＰＩは、ホストＯＳ２０の内部のＡＰＩ処理部２１によって処理される。この処理によってタスクの起動や停止などへのタスク状態の変更を行うことになると、スケジューラ部２２にて処理可能なタスク状態変更命令をＡＰＩ処理部２１が出力する。ゲストＯＳ４０のＡＰＩは、ゲストＯＳ４０の内部のＡＰＩ処理部４１によって処理される。この処理によってタスクの起動や停止などへのタスク状態の変更を行うことになると、スケジューラ部２２にて処理可能なタスク状態変更命令をＡＰＩ処理部４１が出力する。これらタスク状態変更命令に含まれる情報の例としては、対象タスクの識別情報と、起動や停止などのタスク状態の変更を表す情報とが挙げられる。
【００１５】
図１のコンピュータシステムは、第１及び第２の命令蓄積部６１，６２と、命令同期タイミング制御部６３とを更に備えている。第１及び第２の命令蓄積部６１，６２はいずれも、複数の命令を蓄積することが可能なバッファと、当該バッファへ命令を蓄積するための手段と、当該バッファから命令を取り出すための手段とを備えている。第１の命令蓄積部６１は、ホストＯＳのＡＰＩ処理部２１が出力した命令を順次蓄積し、当該命令を蓄積した順に出力する。第２の命令蓄積部６２は、ゲストＯＳのＡＰＩ処理部４１が出力した命令を順次蓄積し、当該命令を蓄積した順に出力する。図１では、第１の命令蓄積部６１の出力命令をＱａとし、第２の命令蓄積部６２の出力命令をＱｂとしている。命令同期タイミング制御部６３は、第１の命令蓄積部６１の出力命令Ｑａと第２の命令蓄積部６２の出力命令Ｑｂとを入力命令とし、これらの入力命令のうち第２の命令蓄積部６２から出力された命令を優先的に選択し、該選択した命令をスケジューラ部２２へ出力する。図１では、このようにして命令同期タイミング制御部６３からスケジューラ部２２へ出力される命令をＱｓとしている。
【００１６】
スケジューラ部２２は、命令同期タイミング制御部６３から入力された命令Ｑｓに基づいて、ホストＯＳタスク３２やゲストＯＳタスク５２の起動、停止などの操作を行うものであり、動作させるべきタスクを決定する。動作させるべきタスクが変化した場合は、スケジューラ部２２がタスク切替情報をコンテキストスイッチ部２３へ出力する。
【００１７】
コンテキストスイッチ部２３は、タスク切替情報に基づいてコンテキスト情報のスイッチを行う。コンテキスト情報に含まれる情報としては、ＣＰＵ１０のレジスタ情報、タスク３２，５２の各々に固有のメモリ空間を表す情報などが挙げられる。
【００１８】
図２は、図１中の第１及び第２の命令蓄積部６１，６２の各々の動作を示している。ここでは、図２を用いて第１の命令蓄積部６１の動作を説明する。まず、ステップＳ１１において命令の入力があるかどうかを判定する。入力がある場合は、ステップＳ１２において第１の命令蓄積部６１内にあるバッファに命令を蓄積し、入力がない場合はステップＳ１３に進む。次に、ステップＳ１３においてバッファに蓄積された命令の有無を判断し、命令がない場合は終了し、命令がある場合はステップＳ１４に進む。ステップＳ１４では、第１の命令蓄積部６１から前に出力された命令が命令同期タイミング制御部６３に受け付けられたかどうかを判定する。前に出力された命令が未だ受け付けられていない場合には、一旦処理を終了して再度ステップＳ１１から処理を開始する。前に出力された命令が既に受け付けられていた場合には、バッファに最も早く蓄積された命令をステップＳ１５で取り出し、命令同期タイミング制御部６３に出力し、ステップＳ１３に戻って処理を継続する。なお、第２の命令蓄積部６２の動作も図２と同様であるので、説明を省略する。
【００１９】
図３は、図１中の命令同期タイミング制御部６３が命令Ｑｓを出力するに際し、第２の命令蓄積部６２の出力命令Ｑｂが優先されることを示している。第１及び第２の命令蓄積部６１，６２のいずれからも命令の入力がない場合には、命令Ｑｓの出力もない。第１の命令蓄積部６１の出力命令Ｑａのみが命令同期タイミング制御部６３に入力された場合には、命令Ｑｓの前出力にかかわりなく、Ｑｓ＝Ｑａとされる。また、第２の命令蓄積部６２の出力命令Ｑｂが命令同期タイミング制御部６３に入力された場合には、第１の命令蓄積部６１の出力命令Ｑａの有無や命令Ｑｓの前出力にかかわりなく、Ｑｓ＝Ｑｂとされるのである。
【００２０】
以上説明したとおり、本実施形態によれば、ゲストＯＳ４０の命令処理において第２の命令蓄積部６２を用いることで、ホストＯＳ２０の動作状態に影響を受けずにゲストＯＳ割込みハンドラ５１及びゲストＯＳタスク５２からＡＰＩの発行が可能となる。しかも、リアルタイム性が要求されるゲストＯＳ４０からのＡＰＩが、ホストＯＳ２０のＡＰＩよりも優先されるので、好都合である。また、ホストＯＳ２０の命令処理において第１の命令蓄積部６１を用いることで、ゲストＯＳ４０の動作状態に影響を受けずにホストＯＳ割込みハンドラ３１及びホストＯＳタスク３２からＡＰＩの発行が可能となる。
【００２１】
《第２の実施形態》
図４は、本発明の第２の実施形態に係るコンピュータシステムの構成を示している。図１の構成と比べて、第１の命令蓄積部６１が省略され、ホストＯＳ割り込み状態情報出力部２４と、ゲストＯＳ割り込み状態情報出力部４２と、第１及び第２の割り込み状態情報制御部６４，６５とが追加されている点が異なる。
【００２２】
ホストＯＳ割込み状態情報出力部２４は、ホストＯＳ割込みハンドラ３１が実行中であるか否かをホストＯＳ割込み状態情報として出力する。ゲストＯＳ割込み状態情報出力部４２は、ゲストＯＳ割込みハンドラ５１が実行中であるか否かをゲストＯＳ割込み状態情報として出力する。
【００２３】
ホストＯＳのＡＰＩ処理部２１は、ホストＯＳ割込み状態情報及びゲストＯＳ割込み状態情報の各々を無効とするか否かを指定するＡＰＩが発行された場合に、当該ＡＰＩに対応する制御情報を第１及び第２の割込み状態情報制御部６４，６５へ出力する。ゲストＯＳのＡＰＩ処理部４１も同様に、ホストＯＳ割込み状態情報及びゲストＯＳ割込み状態情報の各々を無効とするか否かを指定するＡＰＩが発行された場合に、当該ＡＰＩに対応する制御情報を第１及び第２の割込み状態情報制御部６４，６５へ出力する。例えば、これらの制御情報は、ホストＯＳ割込み状態情報及びゲストＯＳ割込み状態情報を修正せずに出力するか、ホストＯＳ割込みハンドラ３１及びゲストＯＳ割込みハンドラ５１が実行中でないことを表す情報に修正するかを示すものとする。
【００２４】
第１の割込み状態情報制御部６４はホストＯＳ割込み状態情報の有効性を、第２の割込み状態情報制御部６５はゲストＯＳ割込み状態情報の有効性をそれぞれ制御情報に従って制御するものである。具体的には、ホストＯＳ割込み状態情報が無効とされた場合にはホストＯＳ割込みハンドラ３１が実行中でないものとされ、ゲストＯＳ割込み状態情報が無効とされた場合にはゲストＯＳ割込みハンドラ５１が実行中でないものとされる。命令同期タイミング制御部６３は、第１の割り込み状態情報制御部６４から与えられたホストＯＳ割込み状態情報と、第２の割り込み状態情報制御部６５から与えられたゲストＯＳ割込み状態情報とに基づき、ホストＯＳ割込みハンドラ３１及びゲストＯＳ割込みハンドラ５１がともに実行中でないタイミングに、図３をもって説明した命令の選択及び出力を実行するようになっている。
【００２５】
図５は、図４中の命令同期タイミング制御部６３の動作を示している。命令同期タイミング制御部６３は、図５に従って命令同期のタイミングを決定する。そのため、まずステップＳ２１で、ホストＯＳ割込み状態情報が割込みハンドラ３１が実行中であることを表す情報であるかどうかを判断し、実行中でない場合はステップＳ２２へ進み、実行中である場合は終了する。次に、ステップＳ２２で、ゲストＯＳ割込み状態情報が割込みハンドラ５１が実行中であることを表す情報であるかどうかを判断し、実行中でない場合はステップＳ２３へ進み、実行中である場合は終了する。次に、ステップＳ２３では図３に基づいて、出力する命令の選択と、命令の出力とを行う。ただし、図３中の第１の命令蓄積部（Ｑａ）６１はホストＯＳのＡＰＩ処理部（Ｑａ）２１と読み替えるものとする。
【００２６】
本実施形態によれば、各ＯＳ２０，４０の状態が割込みハンドラ３１，５１を実行していない状態である場合に命令同期を行うことで、割込みハンドラ３１，５１の実行中には命令同期タイミング制御部６３の動作を抑止することが可能となる。一般的にＯＳでは、割込みハンドラの実行中にタスクのコンテキストスイッチは行われないため、割込みハンドラ３１，５１の実行が終了した時点で命令同期タイミング制御部６３を動作させることが可能となり、この命令同期タイミング制御部６３の動作回数を減少することが可能となる。
【００２７】
更に、各ＯＳ２０，４０の割込み状態に基づいて命令同期タイミングを取るかどうかをホストＯＳ２０又はゲストＯＳ４０から制御可能とすることにより、命令同期タイミングの動的な制御が可能となる。特に、ホストＯＳ２０がリアルタイム性が要求されない汎用ＯＳであり、ゲストＯＳ４０がリアルタイムＯＳであって、ゲストＯＳ割込みハンドラ５１及びゲストＯＳタスク５２によってリアルタイム性を要求される処理が行われている場合、より高速に命令同期タイミングの動的制御が可能となる点で有利である。
【００２８】
《第３の実施形態》
図６は、本発明の第３の実施形態に係るコンピュータシステムの構成を示している。図１の構成と比べて、第１の命令蓄積部６１が省略され、他のゲストＯＳ７０と、蓄積命令選択部６６とが追加されている点が異なる。
【００２９】
追加されたゲストＯＳ７０もまた、ホストＯＳ２０上の１つ以上のタスクとして動作する。このゲストＯＳ７０上では、ゲストＯＳ割込みハンドラ８１及びゲストＯＳタスク８２が動作する。ゲストＯＳ割込みハンドラ８１は、ハードウェア割込みによって起動し、ゲストＯＳ７０で定められたＡＰＩを発行することが可能である。また、ゲストＯＳタスク８２もゲストＯＳ７０のＡＰＩを発行することが可能である。これらのＡＰＩによって、ゲストＯＳタスク８２の起動や停止などへのタスク状態の変更が行われる。ただし、各々のゲストＯＳタスク８２はホストＯＳタスクとしての識別情報を持つ。
【００３０】
ゲストＯＳ７０は、独自のＡＰＩ処理部７１を有している。ゲストＯＳ７０のＡＰＩは、ゲストＯＳ７０の内部のＡＰＩ処理部７１によって処理される。この処理によってタスクの起動や停止などへのタスク状態の変更を行うことになると、スケジューラ部２２にて処理可能なタスク状態変更命令ＱｃをＡＰＩ処理部７１が出力する。
【００３１】
図６のコンピュータシステムにおける命令蓄積部６２は、ゲストＯＳのＡＰＩ処理部４１の出力命令Ｑｂと、他のゲストＯＳのＡＰＩ処理部７１の出力命令Ｑｃとを入力命令とし、これらの入力命令のうちの一方に係る命令を優先的に蓄積する機能を有する。蓄積命令選択部６６は、命令蓄積部６２にてＱｂとＱｃとのうちいずれを優先するかを制御するものである。命令同期タイミング制御部６３は、ホストＯＳのＡＰＩ処理部２１の出力命令Ｑａと命令蓄積部６２の出力命令Ｑｂ又はＱｃとを入力命令とし、これらの入力命令のうち命令蓄積部６２から出力された命令Ｑｂ又はＱｃを優先的に選択し、該選択した命令をスケジューラ部２２へ出力する。
【００３２】
本実施形態によれば、複数のゲストＯＳ４０，７０を動作可能とすることにより、従来は各々単体システムとして動作していた複数システムの融合が可能となる。なお、蓄積命令選択部６６を省略して、命令蓄積部６２にて固定的な優先制御を実行することとしてもよい。また、本実施形態ではゲストＯＳの個数は２つであるが、３つ以上の場合でも同様に実施することが可能である。また、複数のゲストＯＳが同一のタスク群として動作する場合も同様に動作可能である。
【００３３】
《第４の実施形態》
図７は、本発明の第４の実施形態に係るコンピュータシステムの構成を示している。図１の構成と比べて、他のゲストＯＳ７０と、第３の命令蓄積部６７と、同期命令選択部６８とが追加されている点が異なる。
【００３４】
追加されたゲストＯＳ７０がホストＯＳ２０上の１つ以上のタスクとして動作し、このゲストＯＳ７０上でゲストＯＳ割込みハンドラ８１及びゲストＯＳタスク８２が動作し、ゲストＯＳ７０が独自のＡＰＩ処理部７１を有する点は、図６と同様である。
【００３５】
第１及び第２の命令蓄積部６１，６２と同様に、第３の命令蓄積部６７もまた、複数の命令を蓄積することが可能なバッファと、当該バッファへ命令を蓄積するための手段と、当該バッファから命令を取り出すための手段とを備えている。第３の命令蓄積部６７は、ゲストＯＳのＡＰＩ処理部７１が出力した命令を順次蓄積し、当該命令を蓄積した順に出力する。図７では、第１の命令蓄積部６１の出力命令をＱａとし、第２の命令蓄積部６２の出力命令をＱｂとし、第３の命令蓄積部６２の出力命令をＱｃとしている。命令同期タイミング制御部６３は、第１の命令蓄積部６１の出力命令Ｑａと第２の命令蓄積部６２の出力命令Ｑｂと第３の命令蓄積部６７の出力命令Ｑｃとを入力命令とし、これらの入力命令のうち第２又は第３の命令蓄積部６２，６７から出力された命令を優先的にスケジューラ部２２へ出力する。同期命令選択部６８は、命令同期タイミング制御部６３にてＱｂとＱｃとのうちいずれを優先するかを制御するものである。
【００３６】
本実施形態によれば、複数のゲストＯＳ４０，７０の各々に対して専用の命令蓄積部６２，６７を用意することで、これらのゲストＯＳ４０，７０の間に優先度を付けることが可能となる。なお、同期命令選択部６８を省略して、命令同期タイミング制御部６３にて固定的な優先制御を実行することとしてもよい。また、本実施形態ではゲストＯＳの個数は２つであるが、３つ以上の場合でも同様に実施することが可能である。また、複数のゲストＯＳが同一のタスク群として動作する場合も同様に動作可能である。
【００３７】
《第５の実施形態》
図８は、本発明の第５の実施形態に係るコンピュータシステムの構成を示している。図１の構成と比べて、第１の命令蓄積部６１が省略され、ゲストＯＳ４０に代えてアプリケーションプログラム９０を備えている点が異なる。
【００３８】
アプリケーションプログラム９０は、ＯＳ２０上の１つ以上のタスクとして動作するプログラムであって、独自のＡＰＩ処理部９１を有している。このアプリケーションプログラム９０に対してＯＳ割込みハンドラ３１やＯＳタスク３２がＡＰＩを発行することも可能である。アプリケーションプログラム９０のＡＰＩは、アプリケーションプログラム９０の内部のＡＰＩ処理部９１によって処理される。この処理によってタスクの起動や停止などへのタスク状態の変更を行うことになると、スケジューラ部２２にて処理可能なタスク状態変更命令をＡＰＩ処理部９１が出力する。
【００３９】
図８のコンピュータシステムにおける命令蓄積部６２は、アプリケーションプログラムのＡＰＩ処理部９１が出力した命令を順次蓄積し、当該命令を蓄積した順に出力する。命令同期タイミング制御部６３は、ＯＳのＡＰＩ処理部２１の出力命令Ｑａと命令蓄積部６２の出力命令Ｑｂとを入力命令とし、これらの入力命令のうち命令蓄積部６２から出力された命令を優先的に選択し、該選択した命令をスケジューラ部２２へ出力する。
【００４０】
本実施形態によれば、ＯＳ２０の動作状態に影響を受けずにアプリケーションプログラム９０からＡＰＩの発行が可能となる。
【産業上の利用可能性】
【００４１】
以上説明してきたとおり、本発明は、複数のＯＳを切り替えて動作させるコンピュータシステムの制御に特に有用である。
【図面の簡単な説明】
【００４２】
【図１】本発明の第１の実施形態に係るコンピュータシステムの構成図である。
【図２】図１中の第１及び第２の命令蓄積部の各々の動作を示すフローチャート図である。
【図３】図１中の命令同期タイミング制御部の動作を示す図である。
【図４】本発明の第２の実施形態に係るコンピュータシステムの構成図である。
【図５】図４中の命令同期タイミング制御部の動作を示すフローチャート図である。
【図６】本発明の第３の実施形態に係るコンピュータシステムの構成図である。
【図７】本発明の第４の実施形態に係るコンピュータシステムの構成図である。
【図８】本発明の第５の実施形態に係るコンピュータシステムの構成図である。
【符号の説明】
【００４３】
１０  ＣＰＵ
２０  ホストＯＳ
２１  ホストＯＳのＡＰＩ処理部
２２  スケジューラ部
２３  コンテキストスイッチ部
２４  ホストＯＳ割込み状態情報出力部
３１  ホストＯＳ割込みハンドラ
３２  ホストＯＳタスク
４０  ゲストＯＳ
４１  ゲストＯＳのＡＰＩ処理部
４２  ゲストＯＳ割込み状態情報出力部
５１  ゲストＯＳ割込みハンドラ
５２  ゲストＯＳタスク
６１，６２，６７  命令蓄積部
６３  命令同期タイミング制御部
６４，６５  割込み状態情報制御部
６６  蓄積命令選択部
６８  同期命令選択部
７０  他のゲストＯＳ
７１  他のゲストＯＳのＡＰＩ処理部
８１  他のゲストＯＳ割込みハンドラ
８２  他のゲストＯＳタスク
９０  アプリケーションプログラム
９１  アプリケーションプログラムのＡＰＩ処理部
Ｑａ，Ｑｂ，Ｑｃ，Ｑｓ  命令
【図１】
2006146758.tif 000003
【図２】
2006146758.tif 000004
【図３】
2006146758.tif 000005
【図４】
2006146758.tif 000006
【図５】
2006146758.tif 000007
【図６】
2006146758.tif 000008
【図７】
2006146758.tif 000009
【図８】
2006146758.tif 000010