(57)【要約】【課題】割込み処理を含んだ仮想計算機よりも、優先度が高いタスクを含む仮想計算機があったときでも、優先度が高いタスクを含む仮想計算機を優先的に実行させる。【解決手段】個々の仮想計算機に属するタスクと割込みハンドラに、複数の仮想計算機の間で同一の方式に従った優先度を付与する。割込みが発生した際には、発生した割込みに対する割込みハンドラの優先度が、実行中のタスクまたは割込みハンドラより優先度が低い場合は、その割込みハンドラを保留する。仮想計算機の実行するタスクと割込みハンドラの遷移を監視し、保留中の割込みハンドラの優先度が、仮想計算機が次に実行するタスクまたは割込みハンドラより高くなった時に、保留中の割込みハンドラが属する仮想計算機に保留中の割込みハンドラを実行させる。【選択図】図１
2008234116.tif 000002
【特許請求の範囲】
【請求項１】
タスクの優先度に基づきタスクのスケジューリングを行う複数の仮想計算機に対し、前記仮想計算機の切替えを制御する仮想計算機制御装置であって、
前記仮想計算機の優先度を記録する優先度記録手段と、
一時的に実行を保留する割込みに対応する割込みハンドラを記録する保留割込み記録手段と、
前記仮想計算機への割込み通知を受け取り、前記割込みの発生を通知する割込み通知受取手段と、
前記仮想計算機で実行中の処理が切り替わる場合に、前記仮想計算機から通知される切替え通知を受け取り、前記切替え通知を通知する切替え通知受取手段と、
前記割込み通知受取手段が前記割込み発生通知を受け取ると、前記割込みを実行する前記仮想計算機に対応する前記優先度記録手段に記録された優先度を、前記受け取った割込みに対応する割込みハンドラの優先度に更新する優先度更新手段と、
前記優先度更新手段が前記仮想計算機に対応する前記優先度記録手段に記録された優先度を更新した場合に、前記更新後の優先度を用いて実行中の前記仮想計算機を切替えるか否かを決定し、前記受け取った割込みを実行する前記仮想計算機に切替えないと決定した場合、前記割込みに対応する割込みハンドラを、前記仮想計算機の前記保留割込み記録手段に記録する仮想計算機スケジュール手段とを備え、
前記優先度更新手段は、更に、前記切替え通知受取手段から前記切替え通知を受け取ると、前記切替え通知を送信した前記仮想計算機に対応する前記優先度記録手段に記録された優先度を、前記仮想計算機が切替える処理の優先度に更新し、
前記仮想計算機スケジュール手段は、前記優先度更新手段が前記仮想計算機に対応する前記優先度記録手段に記録された優先度を更新する場合に、前記更新後の優先度を用いて実行中の前記仮想計算機を切替えるか否かを決定し、実行中の前記仮想計算機を切替えると決定し、さらに、前記仮想計算機の前記保留割込み記録手段に前記割込みハンドラが記録されているときには、前記割込みハンドラを取得し、切替え後の仮想計算機に実行を指示することを特徴とする仮想計算機制御装置。
【請求項２】
前記切替え通知受取手段は、前記仮想計算機のタスクが切替わる場合にタスクが切替わる旨のタスク切替え通知を前記仮想計算機から受け取り、前記タスク切替え通知を通知するタスク切替え通知受取手段であり、
前記優先度変更手段は、更に、前記タスク切替え通知受取手段から前記タスク切替え通知を受け取ると、前記切替え通知を送信した前記仮想計算機に対応する前記優先度記憶手段に記憶された優先度を、前記仮想計算機が次に実行すると決定しているタスクの優先度に変更することを特徴とする請求項２記載の仮想計算機制御装置。
【請求項３】
前記切替え通知受取手段は、割込みの処理が終了する場合に前記割込みの処理が終了する旨の割込み終了通知を前記仮想計算機から受け取り、前記割込み終了通知を通知する割込み終了通知受取手段であり、
前記優先度変更手段は、更に、前記割込み終了通知受取手段が前記割込み終了通知を受け取ると、前記割込み終了通知を送信した前記仮想計算機に対応する前記優先度記憶手段に記憶された優先度を、前記仮想計算機が前記割込みによって割込まれた処理の優先度に変更することを特徴とする請求項２記載の仮想計算機制御装置。
【請求項４】
前記仮想計算機制御装置は、前記タスクと前記割込みハンドラに付与された優先度を変更する優先度調整手段を備えることを特徴とする請求項２記載の仮想計算機制御装置。
【請求項５】
前記仮想計算機制御装置は、設定したレベル以下の割込みをマスクする機能を持つ割込みコントローラを備え、前記割込みコントローラに、前記仮想計算機が次に実行する処理の優先度に対応した割込みマスクレベルを設定し、前記仮想計算機に対して前記割込みマスクレベルより低い割込みがあった場合には、前記割込みをマスクすることを特徴とする請求項４記載の仮想計算機制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一つの物理計算機において、複数のオペレーティングシステム（以下ＯＳと略す）とそのアプリケーションを切り替えながら動作させる仮想計算機技術において、特に、複数の仮想計算機の切替えを制御する仮想計算機制御装置に関するものである。
【背景技術】
【０００２】
情報処理装置で行なう処理の性質は様々である。例えば、リアルタイム性能を要する処理はリアルタイムＯＳ（以下ＲＴＯＳと略す）を用いるのが適切である。一方、グラフィック機能の豊富なＯＳを用いれば、グラフィック機能を活かした優れたユーザインターフェイスなどを提供することが出来る。一つの機器でこのような性質の違う処理を同時に行ないたい場合には、仮想計算機技術を用いることができる。
【０００３】
仮想計算機技術は、一つの物理的な計算機で複数のＯＳを同時に用いる技術であり、サーバーの分野などで用いられている。ＯＳとそのアプリケーションは、それぞれ仮想的な計算機となり、一つの物理計算機上で複数の仮想計算機が時分割で実行される。
【０００４】
従来の複数の仮想計算機の切替えの制御（仮想計算機スケジュール）としては、仮想計算機単位に優先度を付ける方法がある。この方法では、典型的には、優先度の高い仮想計算機の処理が全て終了してアイドル状態になった時に、次の優先度の仮想計算機に切り替わる。従って優先度の高い仮想計算機に属するなら、特に急がない処理であっても、優先度の低い仮想計算機に属する全ての処理より優先して先に実行される。その為、例えば、優先度の低い仮想計算機に、満たすべきデッドラインがある様なリアルタイム性能を要求する処理を設けると、優先度の高い仮想計算機の処理を先に実行することにより、優先度の低い仮想計算機での処理の実行が遅れてリアルタイム性能の要件を満たせなくなる場合がある。つまり、仮想計算機単位で固定された優先度を付けるような仮想計算機スケジュールでは、複数の仮想計算機それぞれにリアルタイム性能を要求する処理を設けることは困難である。
【０００５】
この課題を解決するために、仮想計算機の優先度を、実行する処理によって変化させるものがあった（たとえば、特許文献１参照）。これは、実行するタスクの優先度（ＯＳがタスク管理の為に用いるタスクの優先度）を変換して、そのタスクを実行する仮想計算機の優先度とするものである。優先度の高いタスクを実行する場合は、仮想計算機の優先度も高くなるので、優先度の高い仮想計算機の方へ切り替えることで、属する仮想計算機に関わらず優先度の高いタスクから実行することができる。
【特許文献１】特開２０００−２４２５１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
計算機での処理単位としては、タスクだけでなく、これに加え、割込み発生時に実行される処理（割込みハンドラ）がある。仮想計算機に関わらず重要な処理から優先して実行させる仮想計算機スケジュールを行う場合、一方の仮想計算機のタスクが別の仮想計算機の割込み処理より重要であり、優先して実行したい場合もある。例えば、一方の仮想計算機で外手段とのデータ交換、もう一方がユーザと対話的なインターフェイスをうけ持つ場合を考える。ここでデータ交換が極めて高いリアルタイム性能を必要とする場合、インターフェイスに関連する割込み、例えばキー操作による割込み等がデータ交換を極力妨げないようにする必要がある。
【０００７】
通常、割込みハンドラは割込みの発生を外手段から通知されることにより、最優先で実行される。割込みの通知は、デバイスより発生する信号をＣＰＵが受け、ＣＰＵの動作としてＣＰＵのモードの切替えやレジスタの退避、特定アドレスへのジャンプなどが行なわれことで実現され、仮想計算機内のＯＳは、レジスタの読み出し、書き込みなどハードウェアの操作も行ないながら、割込みハンドラを実行する。従って、ＯＳによる割込み処理の制御は、タスクの制御とはまったく異なったものとなる。
【０００８】
しかしながら、前記従来の技術では、割込みハンドラに関しては、全てのタスクより優先し割込み発生時に即座に実行する方法を開示しており、割込み処理を含んだ仮想計算機スケジュールの方法は開示されていない。割込みの処理はタスクとは別の制御となっているため、割込みに優先度を付与し、その割込みを実行する仮想計算機の優先度としても、割込み処理を最優先に実行する構成であることから、割込み処理を優先度に応じて実行させることは出来ない。つまり、従来の技術では、複数の仮想計算機に属するタスク、割込み処理の両方に優先度を付けても、割込み処理を含んだ仮想計算機よりも優先度が高いタスクを含む仮想計算機を優先的に実行させることができないという課題を有していた。
【０００９】
本発明は、前記従来の課題を解決するもので、割込み処理を含んだ仮想計算機よりも、優先度が高いタスクを含む仮想計算機があったときでも、割込み処理を含んだ仮想計算機を実行するのではなく、優先度が高いタスクを含む仮想計算機を優先的に実行させることができる仮想計算機制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
前記従来の課題を解決するために、本発明の仮想計算機制御装置は、前記仮想計算機の優先度を記録する優先度記録手段と、一時的に実行を保留する割込みに対応する割込みハンドラを記録する保留割込み記録手段と、前記仮想計算機への割込み通知を受け取り、前記割込みの発生を通知する割込み通知受取手段と、前記仮想計算機で実行中の処理が切り替わる場合に、前記仮想計算機から通知される切替え通知を受け取り、前記切替え通知を通知する切替え通知受取手段と、前記割込み通知受取手段が前記割込み発生通知を受け取ると、前記割込みを実行する前記仮想計算機に対応する前記優先度記録手段に記録された優先度を、前記受け取った割込みに対応する割込みハンドラの優先度に更新する優先度更新手段と、前記優先度更新手段が前記仮想計算機に対応する前記優先度記録手段に記録された優先度を更新した場合に、前記更新後の優先度を用いて実行中の前記仮想計算機を切替えるか否かを決定し、前記受け取った割込みを実行する前記仮想計算機に切替えないと決定した場合、前記割込みに対応する割込みハンドラを、前記仮想計算機の前記保留割込み記録手段に記録する仮想計算機スケジュール手段とを備え、前記優先度更新手段は、更に、前記切替え通知受取手段から前記切替え通知を受け取ると、前記切替え通知を送信した前記仮想計算機に対応する前記優先度記録手段に記録された優先度を、前記仮想計算機が切替える処理の優先度に更新し、前記仮想計算機スケジュール手段は、前記優先度更新手段が前記仮想計算機に対応する前記優先度記録手段に記録された優先度を更新する場合に、前記更新後の優先度を用いて実行中の前記仮想計算機を切替えるか否かを決定し、実行中の前記仮想計算機を切替えると決定し、さらに、前記仮想計算機の前記保留割込み記録手段に前記割込みハンドラが記録されているときには、前記割込みハンドラを取得し、切替え後の仮想計算機に実行を指示することを特徴とする。
【００１１】
本構成によって、割込み処理を含んだ仮想計算機よりも、優先度が高いタスクを含む仮想計算機があれば、優先度が高いタスクを含む仮想計算機を優先的に実行させることができる。
【発明の効果】
【００１２】
本発明によれば、割込み処理を含んだ仮想計算機よりも、優先度が高いタスクを含む仮想計算機があったときでも、割込み処理を含んだ仮想計算機を実行するのではなく、優先度が高いタスクを含む仮想計算機を優先的に実行させることができるので、割込み処理を含んだ仮想計算機スケジュールを、処理単位の優先度に応じて適切に行うことができる。
【発明を実施するための最良の形態】
【００１３】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００１４】
（実施の形態１）
図１は、本発明の実施の形態における仮想計算機制御装置を備えた情報処理装置の構成を示す図である。情報処理装置は、中央演算装置（ＣＰＵ）１、割込みコントローラ２、周辺デバイス３、メモリ４とを備えている。ＣＰＵ１は、処理能力が十分であれば任意のものが利用可能である。割込みコントローラ２は、周辺デバイス３から発生する割込み要求をＣＰＵ１に通知する。周辺デバイス３は、各種の入出力装置であり、情報処理装置の使用目的に応じたものを利用する。例えば、キーデバイスや通信デバイスや表示デバイス、デコーダやエンコーダ、ＤＳＰやＤＭＡコントローラなどである。メモリ４には、仮想計算機１０と、仮想計算機２０と、仮想計算機制御装置３０が格納されている。メモリ４は、十分な機能及び容量があればランダムアクセスメモリ（ＲＡＭ）やフラッシュメモリのような任意のタイプのものを使用することができる。また、メモリ４は、単一のメモリ装置で構成されている必要はなく、同種の複数のメモリ又はリードオンリーメモリ（ＲＯＭ）を含む異なる種類のメモリの組み合わせであってもよい。さらに、メモリ４以外に、例えばハードディスクのような外部記憶装置を設け、情報処理装置の動作に問題の無い範囲で外部記憶装置にメモリ４の内容を移動させてもよい。
【００１５】
仮想計算機１０は、タスク１００と、ＯＳ１１０を備えている。また、ＯＳ１１０は、タスクスケジューラ１１１と割込み処理手段１１２を含んでいる。タスクスケジューラ１１１は、次に実行すべきタスクを決定し、決定したタスクを実行する。割込み処理手段１１２は、割込みハンドラ１２０を含み、割込み発生を受け取ると、割込みの要因に応じた割込みハンドラを実行する。仮想計算機２０は、仮想計算機１０と同様に、タスク２００と、ＯＳ２１０を備えている。また、ＯＳ２１０は、タスクスケジューラ２１１と割込み処理手段２１２を含んでいる。割込み処理手段２１２は、割込みハンドラ２２０を含んでいる。タスクスケジューラ２１１と割込み処理手段２１２の動作は、仮想計算機１０に含まれるタスクスケジューラ１１１と割込み処理手段１１２と同様である。なお、各タスク（１００、２００）や割込みハンドラ（１２０、２２０）毎に、優先度が設定されているものとする。
【００１６】
本発明の実施の形態における情報処理装置では、図１に示すように複数の仮想計算機（１０、２０）を備え、それぞれの仮想計算機（１０、２０）が異なるＯＳ（１１０、２１０）と、タスク（１００、２００）、割込みハンドラ（１２０、２２０）を備えている。仮想計算機１０と仮想計算機２０は、後述する仮想計算機制御装置３０により切り替えられ、複数の仮想計算機（１０、２０）が同時に動作することなく、時分割で実行される。これにより、一つの物理的な計算機で複数の計算機の働きをさせることができる。例えば、リアルタイム性能を要求される処理は、仮想計算機１０のタスク１００や割込みハンドラ１２０として実装し、ＯＳ１１０にリアルタイム性能に優れたＲＴＯＳを用いる。同時にユーザインターフェイスに関する処理は、仮想計算機２０のタスク２００や割込みハンドラ２２０として実装し、ＯＳ２１０にグラフィック機能の豊富なＯＳを用いる。このような構成をとることで、本実施の形態の情報処理装置は、リアルタイム性能と、豊富なグラフィック機能を用いた優れたユーザインターフェイスを同時に実現できる。
【００１７】
なお、ＯＳ１１０とＯＳ２１０を異なるＯＳにする必要は必ずしもなく、ＯＳ１１０とＯＳ２１０に同じＯＳを用いてもよい。
【００１８】
仮想計算機制御装置３０は、複数の仮想計算機の切り替えを制御する。仮想計算機制御装置３０は、割込み通知受取手段３０１、切替え通知受取手段３０２、優先度更新手段３０３、優先度記録手段３０４、仮想計算機スケジュール手段３０５、保留割込み記録手段３０６とを備える。
【００１９】
割込み通知受取手段３０１は、仮想計算機（１０または２０）への割込みが発生した際に、割込みコントローラ２からの割込みの発生通知を、ＣＰＵ１を介して受け取り、優先度更新手段３０３に通知する。
【００２０】
なお、本実施の形態では、割込みコントローラ２からＣＰＵ１を介して仮想計算機制御装置３０（割込み通知受取手段３０１）に通知されるとしたが、割込みコントローラ２から仮想計算機（１０、２０）を介して仮想計算機制御装置３０（割込み通知受取手段３０１）に割込みの発生通知を通知してもよい。
【００２１】
切替え通知受取手段３０２は、仮想計算機（１０、２０）から実行中の処理の切替え通知を受け取り、優先度更新手段３０３に通知する。
【００２２】
優先度更新手段３０３は、割込み通知受取手段３０１と切替え通知受取手段３０２からの通知を受け取り、仮想計算機（１０、２０）の優先度を更新するタイミングと判断し、仮想計算機１０および仮想計算機２０の優先度の更新処理を行う。具体的には、割込み通知受取手段３０１や切替え通知受取手段３０２からの通知に基づき、仮想計算機１０および仮想計算機２０の優先度を、それぞれが実行するタスクまたは割込みハンドラの優先度に設定し、優先度記録手段３０４に記録された優先度情報を更新する。これにより、仮想計算機（１０、２０）の優先度は、次に実行するタスク（１００、２００）または割込みハンドラ（１１０、２１０）の優先度と同じになる。
【００２３】
優先度記録手段３０４は、仮想計算機（１０、２０）の優先度を優先度情報として保持しており、優先度更新手段３０３により優先度情報の更新が行われる。図２に、優先度テーブルのフォーマットの一例を示している。詳細は、後述する。
【００２４】
なお、ここでは、複数の仮想計算機（１０、２０）の優先度をテーブルとして保持するとしたが、各仮想計算機（１０または２０）に自分の仮想計算機（１０または２０）の優先度情報を持たせるようにしてもよい。この場合、優先度更新手段３０３は、保持している自分の優先度情報の更新が必要な仮想計算機（１０、２０）に対し、優先度情報の更新を行うことになる。
【００２５】
仮想計算機スケジュール手段３０５は、優先度更新手段３０３が優先度の更新をした場合に、更新後の優先度を用いて、実行中の仮想計算機を切り替えるか否かを判断し、判断した結果に基づき、実行対象の仮想計算機（１０、２０）の切替えを制御する。また、保留割込み記録手段３０６への割込みハンドラ（１２０、２２０）の書き込みや読み出しを行う。また、現在実行中の仮想計算機（１０、２０）の情報を保持しているものとする。詳細は、図面を用いて後で説明する。
【００２６】
保留割込み記録手段３０６は、一時的に実行を保留する割込みに対応する割込みハンドラを記録する。また、割込みハンドラの書き込みや読み出しは、仮想計算機スケジュール手段３０５により行われる。
【００２７】
なお、優先度記録手段３０４と保留割込み記録手段３０６は、各仮想計算機（１０または２０）にそれぞれ自分の優先度情報と保留割込み記録手段３０６をもたせてもよい。
【００２８】
図２は、優先度記録手段３０４の優先度テーブルのフォーマットの一例を示している。優先度テーブル３０４は、仮想計算機（１０、２０）の識別子（＃１、＃２）と、各仮想計算機（１０または２０）の優先度を示す優先度情報を組みとして記憶している。また、優先度を数字で表し、数字が小さいほど優先度としては高いとしている。
【００２９】
仮想計算機＃１（１０）はＯＳ１１０を備えており、割込みハンドラ＃１１、割込みハンドラ＃１２、割込みハンドラ＃１３、タスク＃１４の各処理に対し、それぞれ優先度が設定されている。また、ここでは、割込みハンドラ＃１１が次に実行対象の処理であり、優先度記録手段３０４の仮想計算機＃１（１０）の優先度が、割込みハンドラ＃１１の優先度「１」と同じ値の「１」に設定されている。
【００３０】
仮想計算機＃２（２０）はＯＳ２１０を備えており、割込みハンドラ＃２１、タスク＃２２、タスク＃２３、タスク＃２４の各処理に対し、それぞれ優先度が設定されている。また、ここでは、タスク＃２３が次に実行対象の処理であり、優先度記録手段３０４の仮想計算機＃２（２０）の優先度が、タスク＃２３の優先度「４」と同じ値の「４」に設定されている。
【００３１】
なお、各割込みハンドラおよびタスクと、その優先度情報は、仮想計算機制御装置３０で保持してもよいし、仮想計算機１０と仮想計算機２０が保持し、必要に応じて仮想計算機制御装置３０が取得する構成でもよい。
【００３２】
以上の構成により、本発明の実施の形態における仮想計算機制御装置３０は、タスク１００、タスク２００、割込みハンドラ１２０、割込みハンドラ２２０が優先度の順に実行されるように、仮想計算機１０と仮想計算機２０を切り替え、どちらの仮想計算機（１０または２０）に属するかに関わらず優先度の高い処理を優先して実行させることが可能となる。
【００３３】
なお、ここで述べたタスク（１００、２００）や割込みハンドラ（１２０、２２０）の優先度は、ＯＳ１１０、またはＯＳ２１０がタスクスケジュールなどの用途の為に用いる優先度とは別種のものである。ＯＳ１１０とＯＳ２１０が異なるＯＳの場合、これら二つのＯＳが用いる優先度の体系は異なる場合がある。また、既存の情報処理装置のＯＳやアプリケーションを、本実施の形態における仮想計算機として利用する場合、仮想計算機（１０、２０）内の優先度設計は個々の仮想計算機内の実行順序の設計であり、異なる仮想計算機間での比較は考慮されていない場合がある。従って、本実施の形態において仮想計算機（１０、２０）の優先度に反映される優先度は、ＯＳ１１０とＯＳ１２０が独自にタスク管理等で優先度を用いる場合でも、それとは別に情報処理装置の設計者によって付与されるものとする。ただし、優先度はＯＳが決定する仮想計算機内の実行の順番とは矛盾しないように付与することになる。
【００３４】
図３は、仮想計算機＃１（１０）の処理の遷移と、仮想計算機制御装置３０の各構成要素の動作の関係を模式的に示している。なお、図３の破線は、条件によって呼び出される場合とそうでない場合があることを示す。また、図３では仮想計算機＃１（１０）について示したが、仮想計算機＃２（２０）に関しても同様である。仮想計算機＃１（１０）は、一例として、割込みハンドラ＃１１、タスク＃１３、タスク＃１４の順で処理が遷移しているものとする。
【００３５】
割込み通知受取手段３０１は、割込みが発生した時に割込み発生通知を受け取り、優先度更新手段３０３に割込み発生通知を通知する。優先度更新手段３０３は、仮想計算機＃１（１０）の優先度に割込みハンドラ＃１１の優先度を設定し、仮想計算機スケジュール手段３０５は、仮想計算機＃１（１０）が動作する（割込みハンドラ＃１１が処理される）と決定し、仮想計算機＃１（１０）に割込み発生通知をする。割込み発生通知を受けた仮想計算機＃１（１０）は割込みハンドラ＃１１を実行する。なお、一時的に割込みハンドラ＃１１の実行が保留される場合には、保留割込み記録手段３０６に、割込みハンドラ＃１１が記録されることになる。
【００３６】
次に、割込みハンドラ＃１１が終了するタイミングで、切替え通知受取手段３０２は、処理の切替え通知を受け取り、優先度更新手段３０３に切替え通知を通知する。優先度更新手段３０３は、仮想計算機＃１（１０）の優先度に仮想計算機＃１（１０）の次処理であるタスク＃１３の優先度を設定し、仮想計算機スケジュール手段３０５は、仮想計算機＃１（１０）が動作する（タスク＃１３が処理される）と決定し、タスク＃１３を実行する。なお、仮想計算機＃１（１０）が継続して実行するため、保留割込み記録手段３０６から記録中の割込みハンドラを取得する処理を行わなくてよい。
【００３７】
最後に、タスク＃１３が終了するタイミングで、切替え通知受取手段３０２は、処理の切替え通知を受け取り、優先度更新手段３０３に切替え通知を通知する。優先度更新手段３０３は、仮想計算機＃１（１０）の優先度に仮想計算機＃１（１０）の次処理であるタスク＃１４の優先度を設定し、仮想計算機スケジュール手段３０５は、仮想計算機＃１（１０）が動作する（タスク＃１４が処理される）と決定し、仮想計算機＃１（１０）がタスク＃１４を実行する。
【００３８】
以下、本発明の実施の形態における仮想計算機制御装置の処理の流れについて、図を用いて説明する。
【００３９】
図４は、割込みが発生した場合の動作の一例を示すフローチャートである。
【００４０】
本発明の実施の形態における仮想計算機制御装置３０を備える情報処理装置に割込みが発生し、処理を開始する（ステップＳ４−１）。割込みが発生すると、割込み通知受取手段３０１が、割込み発生通知を受け取る。例えば、ＣＰＵ１が、割込みコントローラ２から割込みの発生通知を受けて割込みを検知した時にジャンプする先である割込みベクターを仮想計算機管理装置３０に設けることで、割込み発生時に、割込み通知受取手段３０１を動作させることが可能である。
【００４１】
割込み通知受取手段３０１は、受け取った割込み通知に含まれている割込み要因を取得し、この割込み要因から、どちらの仮想計算機（１０または２０）を対象にした割込みかを決定する（ステップＳ４−２）。この決定は、割込み要因情報を用いて行うものとする。図５に、割込み要因情報の一例を示した通り、割込み発生要因と、その割込み発生が対象にしている仮想計算機（＃１または＃２）を組にして保持している。ここでは、テーブルで示しているが、関数やリンク形式など、対象の仮想計算機が一意に決定すればよい。
【００４２】
割込み通知受取手段３０１は、決定した対象仮想計算機（１０または２０）の情報と共に割込みの発生通知を、優先度更新手段３０３に通知し、優先度更新手段３０３は、受け取った対象仮想計算機（１０または２０）の情報を判断する（ステップＳ４−３）。
【００４３】
対象仮想計算機（１０または２０）が仮想計算機＃１（１０）である場合（ステップＳ４−３が＃１）、優先度更新手段３０３は、仮想計算機＃１（１０）の優先度を、発生した割込みに対応する割込みハンドラ（１２０）の優先度に設定し、優先度記録手段３０４に記録されている優先度情報を更新する。一方、対象仮想計算機（１０または２０）が仮想計算機＃２（２０）である場合（ステップＳ４−３が＃２）、優先度更新手段３０３は、仮想計算機＃２（２０）の優先度を、発生した割込みに対応する割込みハンドラ（２２０）の優先度に設定し、優先度記録手段３０４に記録されている優先度情報を更新する。これにより、対象の仮想計算機（１０または２０）は、次の処理である割込みハンドラ（１２０または２２０）の実行が完了するまでは、仮想計算機（１０または２０）の優先度を割込みハンドラ（１２０または２２０）の優先度と同じ値にすることができる。ただし、対象の仮想計算機（１０または２０）に対して既に割込みが発生しており、その割込みハンドラ（１２０または２２０）の実行中である場合、割込みハンドラ（１２０または２２０）の優先度に変化させると仮想計算機（１０または２０）の優先度が下がる場合がある。この場合には、優先度を変化（低下）させなくてもよい。
【００４４】
優先度更新手段３０３は、優先度記録手段３０４に記録されている優先度情報を更新した後、仮想計算機スケジュール手段３０５を呼び出す（ステップＳ４−６）。仮想計算機スケジュール手段３０５は、優先度記録手段３０４を参照して、次に実行する仮想計算機（１０および２０）を決定し、実行中の仮想計算機を切り替えるか否かを判断する（ステップＳ４−７）。ステップＳ４−１で発生した割込みの対象の仮想計算機（１０または２０）を次に実行すると決定した場合（ステップＳ４−７が割込みの対象）、仮想計算機スケジュール手段３０５は、実行対象の仮想計算機（１０または２０）に、受け取った割込みの発生を通知する（ステップＳ４−８）。
【００４５】
なお、割込みの発生の通知は、例えば、ＯＳ（１１０、２１０）に、通知を受けるインターフェイスを設け、そのインターフェイスを利用すればよい。あるいは、割込み時のハードウェアの動作をエミュレートしてもよい。一般に、割込み発生時にはハードウェアにより、割込み発生の番地などをレジスタやスタックに記録し、割込み処理にジャンプするという動作が行なわれる。従って、割込み発生時と同じレジスタやスタックの状態にして、割込みの対象であるＯＳ（１１０、２１０）内の割込み処理手段にジャンプすれば、割込みハンドラを実行させることができる。
【００４６】
一方、ステップＳ４−１で発生した割込みの対象の仮想計算機を次に実行しないと決定した場合（ステップＳ４−７が割込みの対象ではない）、仮想計算機スケジュール手段３０５は、ステップＳ４−１で発生した割込みに対応する割込みハンドラ（１２０または２２０）を、保留割込み記録手段３０６に記録し（ステップＳ４−９）、処理を終了する（ステップＳ４−１０）。
【００４７】
なお、保留割込み記録手段３０６は、仮想計算機ごとの記録領域を備え、ソフトウェア的に記録すればよい。また、割込みコントローラ２が、レジスタ等の操作によってハードウェア的に割込みを保留する機能を備えるならば、そのような機能を用いてもよい。
【００４８】
最後に、仮想計算機スケジュール手段３０５は、実行中の仮想計算機の切替えが必要な場合（例えば、実行中の仮想計算機が仮想計算機２０であり、実行対象の仮想計算機が１０である場合）、実行対象の仮想計算機１０の切替えを行い、保持している現在実行中の仮想計算機の情報を更新する。
【００４９】
以上により、ステップＳ４−８を経由した場合は、ステップＳ４−１で発生した割込みの対象の仮想計算機（１０または２０）が実行され、割込みの通知を受けたことにより割込みハンドラ（１２０または２２０）が実行される。また、ステップＳ４−９を経由した場合は、割込みの対象の仮想計算機には割込み保留が記録された上で、割込みの対象でない仮想計算機が実行される。
【００５０】
図６は、切替え通知受取手段３０２が仮想計算機（１０または２０）から切替え通知を受け付けたときの動作の一例を説明するフローチャートである。本発明の実施の形態における切替え通知受取手段３０２が実行処理を切り替える仮想計算機（１０または２０）から切替え通知を受け取り、処理を開始する（ステップＳ６−１）。切替え通知を受けた切替え通知受取手段３０２は、切替え通知を優先度更新手段３０３に通知し、優先度更新手段３０３は、優先度記録手段３０４に記録されている実行処理を切り替える仮想計算機（１０または２０）の優先度を、切り替えると判断した処理の優先度に変更する（ステップＳ６−２）。つまり、図４のステップＳ４−４またはＳ４−５で変化させる前の処理の優先度に更新する。その為に、図４のステップＳ４−４またはＳ４−５で変化させる為の優先度情報を保存し、ステップＳ１２−２で復帰させても良い。この場合は、ステップＳ４−４またはＳ４−５で優先度情報をスタックに保存し、ステップＳ１２−２で復帰させれば、割込み中にさらに別の割込みが発生し、割込み処理がネストした場合（多重割込み時）にも対応できる。仕様として多重割込みを認めるＯＳ（１１０または２１０）を仮想計算機（１０または２０）内で用いる場合は、このようにスタックに割込み発生前の優先度情報を保存しても良い。
【００５１】
次に、優先度更新手段３０３は仮想計算機スケジュール手段３０５を呼び出し、仮想計算機スケジュール手段３０５は、仮想計算機１０と仮想計算機２０との優先度を比較し、優先度の高い仮想計算機（１０または２０）に切り替える（ステップＳ６−３）。
【００５２】
仮想計算機スケジュール手段３０５が切り替えた仮想計算機（１０または２０）が割込みに対応する割込みハンドラ（１２０または２２０）を保留割込み記録手段３０６に記録しているかを判断する（ステップＳ６−４）。切り替わった仮想計算機（１０または２０）の保留割込み記録手段３０６に割込みハンドラ（１２０または２２０）が記録されている場合、保留割込み記録手段３０６に記録されている割込みハンドラ（１２０または２２０）を実行する（ステップＳ６−５）。割込みハンドラ（１２０または２２０）が保留割込み記録手段３０６に記録されているということは、割込み発生時（ステップＳ４−１）に、割込んだ仮想計算機（１０または２０）が仮想計算機スケジュール手段３０５に選択されなかったことを意味する。そして、割込み発生時（ステップＳ４−１）に、割込みの対象の仮想計算機（１０または２０）の優先度が、その割込みに対応する割込みハンドラ（１２０または２２０）の優先度に設定される（ステップＳ４−４、ステップＳ４−５）ので、仮想計算機スケジュール手段３０５が、割込みを保留している仮想計算機（１０または２０）を次に実行すると判断した場合（ステップＳ６−４）、保留されている割込み処理は、もう一方の仮想計算機（１０または２０）が次に実行する処理より高いことを意味する。
【００５３】
つまり、ここで保留されている割込み処理を実行することが、優先度に従った実行となる。そして、切り替わった仮想計算機（１０または２０）の保留割込み記録手段３０６に割込みハンドラ（１２０または２２０）が記録されていない場合には、切替え通知受取手段３０２が仮想計算機（１０または２０）から切替え通知を受け付けたときの動作は終了（ステップＳ６−６）し、ステップＳ６−３で決定した仮想計算機（１０または２０）が実行される。
【００５４】
なお、上述したように、仮想計算機（１０または２０）の内部に保留割込み記録手段３０６がある場合には、仮想計算機１０と仮想計算機２０がそれぞれ保留割込み記録手段３０６を持っていることになるので、仮想計算機スケジュール手段３０５は、仮想計算機（１０または２０）に割込み通知を行い、これを受けた仮想計算機（１０または２０）が保留割込み記録手段３０６に記録している割込みハンドラを実行するようにしてもよい。
【００５５】
図７、図８、図９に本実施の形態の情報処理装置の実際の動作の例を示す。図７、図８、図９では仮想計算機１０について示したが、仮想計算機２０に関しても同様である。
【００５６】
なお、図７、図８と図９を見ると、割込み通知受取手段３０１と切替え通知受取手段３０２が仮想計算機（１０または２０）に通知しているが、優先度更新手段３０３、仮想計算機スケジュール手段３０５の動作が省略してあり、本来であれば、割込み通知受取手段３０１または切替え通知受取手段３０２が仮想計算機（１０または２０）から通知を受け取ると、この通知を優先度更新手段３０３に通知し、優先度更新手段３０３は仮想計算機スケジュール手段３０５を呼び出し、呼び出された仮想計算機スケジュール手段３０５が次に実行すると決定した仮想計算機（１０または２０）に通知する。
【００５７】
図７の例では、仮想計算機＃１（１０）は、優先度７のタスク＃１４が実行される予定であったが、優先度１の割込みハンドラ＃１１を有する割込みが発生した状態を表している。一方、仮想計算機＃２（２０）は、次に優先度４のタスク＃２３が実行される予定である。そして、仮想計算機＃１（１０）の優先度は、仮想計算機＃１（１０）が次に実行するタスク＃１４の優先度７が設定され、仮想計算機＃２（２０）の優先度は、仮想計算機＃２（２０）が次に実行するタスク＃２３の優先度４となっている。そして、仮想計算機＃２（２０）の方が仮想計算機＃１（１０）より優先度が高いので、仮想計算機＃２（２０）が選択され、タスク＃２３が実行されている。その後、仮想計算機＃１（１０）に対する割込みが発生（ステップＳ４−１）し、割込み通知受取手段３０１が割込み通知を受け取り、割込み要因から対象の仮想計算機＃１（１０）を特定する（ステップＳ４−２）。そして、この割込み通知を優先度更新手段３０３に通知し、優先度更新手段３０３は、仮想計算機＃１（１０）の優先度を、割込みに対応する割込みハンドラ＃１１の優先度１に更新し（ステップＳ４−３、ステップＳ４−４）、仮想計算機スケジュール手段３０５を呼び出し、仮想計算機スケジュール手段３０５が仮想計算機間の優先度比較を行い、仮想計算機＃１（１０）に切り替える（ステップＳ４−６）。
【００５８】
発生した割込みの対象である仮想計算機＃１（１０）が次に実行されるので、割込みの発生が仮想計算機＃１（１０）に通知され（ステップＳ４−８）、割込み発生の動作処理終了（ステップＳ４−１０）後、仮想計算機＃１（１０）が動作し、割込みハンドラ＃１１が実行される。割込みハンドラ＃１１の実行終了後は、仮想計算機＃１（１０）の実行する対象が切り替わるので、仮想計算機制御装置３０の切替え通知受取手段３０２が仮想計算機＃１（１０）から切替え通知を受け取り、切替え通知を受けた場合の処理が動作する（ステップＳ６−１）。仮想計算機＃１（１０）が割込みハンドラ＃１１の実行終了後に、優先度７のタスク＃１４に切り替えるので、切替え通知受取手段３０２から通知を受けた優先度更新手段３０３が、仮想計算機＃１（１０）の優先度を切り替える前の優先度７に戻す（ステップＳ６−２）。そして、優先度更新手段３０３から通知された仮想計算機スケジュール手段３０５が呼び出され（ステップＳ６−３）、仮想計算機間の優先度比較を行い、優先度が高い仮想計算機＃２（２０）に切り替える（ステップＳ６−４）。その後、仮想計算機スケジュール手段３０５は仮想計算機＃２（２０）に通知し、仮想計算機＃２（２０）のタスク＃２３の実行が再開される。
【００５９】
図８の例では、仮想計算機＃１（１０）は、優先度７のタスク＃１４が実行される予定であったが、優先度３の割込みハンドラ＃１２を有する割込みが発生した状態を表している。一方、仮想計算機＃２（２０）は、優先度２の割込みハンドラ＃２１と優先度４のタスク＃２３が実行される予定である。そして、仮想計算機＃１（１０）の優先度は、仮想計算機＃１（１０）が次に実行するタスク＃１４の優先度７が設定され、仮想計算機＃２（２０）の優先度は、仮想計算機＃２（２０）が次に実行する割込みハンドラ＃２１の優先度２となっている。そして、仮想計算機＃２（２０）の方が仮想計算機＃１（１０）より優先度が高いので、仮想計算機＃２（２０）が選択され、割込みハンドラ＃２１が実行されている。その後、仮想計算機＃１（１０）に対する割込みが発生（ステップＳ４−１）し、割込み通知受取手段３０１が割込み通知を受け取り、割込み要因から対象の仮想計算機＃１（１０）を特定する（ステップＳ４−２）。そして、この割込み通知を優先度更新手段３０３に通知し、優先度更新手段３０３は、仮想計算機＃１（１０）の優先度を、割込みに対応する割込みハンドラ＃１２の優先度３に更新し（ステップＳ４−３、ステップＳ４−４）、仮想計算機スケジュール手段３０５を呼び出し（ステップＳ４−５）、仮想計算機スケジュール手段３０５が仮想計算機間の優先度比較を行う。ここで、仮想計算機＃２（２０）の方が仮想計算機＃１（１０）より優先度が高いので、切り替えは発生せず、仮想計算機＃２（２０）に引き続き実行させる（ステップＳ４−６、ステップＳ４−７）。ここで、発生した割込みの対象である仮想計算機＃１（１０）は、次に実行されると判断されなかったので、自分の優先度を次に実行する割込みハンドラ＃１２の優先度に更新し、割込みハンドラ＃１２を保留割込み記録手段３０６に記録する（ステップＳ４−９）。
【００６０】
割込みハンドラ＃２１の実行終了後は、仮想計算機＃２（２０）の実行する対象が切り替わるので、仮想計算機制御装置３０の切替え通知受取手段３０２が仮想計算機＃２（２０）から切替え通知を受け取り、切替え通知を受けた場合の処理が動作する（ステップＳ６−１）。仮想計算機＃２（２０）が割込みハンドラ＃２１の実行終了後、優先度４のタスク＃２３に切り替えるので、切替え通知受取手段３０２から通知を受けた優先度更新手段３０３が、仮想計算機＃２（２０）の優先度を切り替える前の優先度４に戻す（ステップＳ６−２）。そして、優先度更新手段３０３から通知された仮想計算機スケジュール手段３０５が呼び出され（ステップＳ６−３）、仮想計算機間の優先度比較を行う。仮想計算機＃１（１０）の保留割込み記録手段３０６に記録されている割込みハンドラ＃１２の優先度が３であるので、仮想計算機＃１（１０）の優先度は３である。一方、仮想計算機＃２（２０）の次に実行する処理は優先度４のタスク＃２３であるので、仮想計算機＃２（２０）の優先度は４である。したがって、優先度が高い仮想計算機＃１（１０）に切り替え（ステップＳ６−４）、仮想計算機スケジュール手段３０５は仮想計算機＃１（１０）に通知し、仮想計算機＃１（１０）の割込みハンドラ＃１２の実行がされる。
【００６１】
その後、割込みハンドラ＃１２の処理が終わったら、仮想計算機＃１（１０）は優先度７のタスク＃１４に切り替えるので、切替え通知受取手段３０２から通知を受けた優先度更新手段３０３が、仮想計算機＃１（１０）の優先度を切り替える前の優先度７に戻す（ステップＳ６−２）。そして、優先度更新手段３０３から通知された仮想計算機スケジュール手段３０５が呼び出され（ステップＳ６−３）、仮想計算機間の優先度比較を行う。仮想計算機＃２（２０）の優先度は４であるので、優先度が高い仮想計算機＃２（２０）に切り替える（ステップＳ６−４）。その後、仮想計算機スケジュール手段３０５は仮想計算機＃２（２０）に通知し、仮想計算機＃２（２０）のタスク＃２３の実行が再開される。
【００６２】
図９の例では、仮想計算機＃１（１０）は、優先度７のタスク＃１４が実行される予定であったが、優先度５の割込みハンドラ＃１３を有する割込みが発生した状態を表している。一方、仮想計算機＃２（２０）は、優先度４のタスク＃２３と優先度６のタスク＃２４が実行される予定である。そして、仮想計算機＃１（１０）の優先度は、仮想計算機＃１（１０）が次に実行するタスク＃１４の優先度７が設定され、仮想計算機＃２（２０）の優先度は、仮想計算機＃２（２０）が次に実行するタスク＃２３の優先度４となっている。そして、仮想計算機＃２（２０）の方が仮想計算機＃１（１０）より優先度が高いので、仮想計算機＃２（２０）が選択され、タスク＃２３が実行されている。その後、仮想計算機＃１（１０）に対する割込みが発生（ステップＳ４−１）し、割込み通知受取手段３０１が割込み通知を受け取り、割込み要因から対象の仮想計算機＃１（１０）を特定する（ステップＳ４−２）。そして、この割込み通知を優先度更新手段３０３に通知し、優先度更新手段３０３は、仮想計算機＃１（１０）の優先度を、割込みに対応する割込みハンドラ＃１３の優先度５に更新し（ステップＳ４−３、ステップＳ４−４）、仮想計算機スケジュール手段３０５を呼び出し（ステップＳ４−５）、仮想計算機スケジュール手段３０５が仮想計算機間の優先度比較を行う。ここで、仮想計算機＃２（２０）の方が仮想計算機＃１（１０）より優先度が高いので、切り替えは発生せず、仮想計算機＃２（２０）に引き続き実行させる（ステップＳ４−６、ステップＳ４−７）。ここで、発生した割込みの対象である仮想計算機＃１（１０）は、次に実行されると判断されなかったので、自分の優先度を次に実行する割込みハンドラ＃１３の優先度５に更新し、割込みハンドラ＃１３を保留割込み記録手段３０６に記録する（ステップＳ４−９）。
【００６３】
タスク＃２３の実行終了後は、仮想計算機＃２（２０）の実行する対象が切り替わるので、仮想計算機制御装置３０の切替え通知受取手段３０２が仮想計算機＃２（２０）から切替え通知を受け取り、切替え通知を受けた場合の処理が動作する（ステップＳ６−１）。仮想計算機＃２（２０）が優先度６のタスク＃２４に切り替えるので、切替え通知受取手段３０２から通知を受けた優先度更新手段３０３が、仮想計算機＃２（２０）の優先度を、次の処理であるタスク＃２４の優先度６に更新する（ステップＳ６−２）。そして、優先度更新手段３０３から通知された仮想計算機スケジュール手段３０５が呼び出され（ステップＳ６−３）、仮想計算機間の優先度比較を行う。仮想計算機＃１（１０）の保留割込み記録手段３０６に記録されている割込みハンドラ＃１３の優先度が５であるので、仮想計算機＃１（１０）の優先度は５である。一方、仮想計算機＃２（２０）の次に実行する処理は優先度６のタスク＃２４であるので、仮想計算機＃２（２０）の優先度は６である。したがって、優先度が高い仮想計算機＃１（１０）に切り替え（ステップＳ６−４）、仮想計算機スケジュール手段３０５は仮想計算機＃１（１０）に通知し、仮想計算機＃１（１０）の割込みハンドラ＃１３の実行がされる。
【００６４】
その後、割込みハンドラ＃１３の処理が終わったら、仮想計算機＃１（１０）は優先度７のタスク＃１４に切り替えるので、切替え通知受取手段３０２から通知を受けた優先度更新手段３０３が、仮想計算機＃１（１０）の優先度を切り替える前の優先度７に戻す（ステップＳ６−２）。その後、優先度更新手段３０３から通知された仮想計算機スケジュール手段３０５が呼び出され（ステップＳ６−３）、仮想計算機間の優先度比較を行う。仮想計算機＃２（２０）の優先度は６であるので、優先度が高い仮想計算機＃２（２０）に切り替える（ステップＳ６−４）。仮想計算機スケジュール手段３０５は仮想計算機＃２（２０）に通知し、仮想計算機＃２（２０）のタスク＃２４の実行が再開される。
【００６５】
なお、本実施の形態では、仮想計算機スケジュール手段３０５は、直ちに仮想計算機を切り替えるが、必ずしもその必要はない。切替えの有無のみを判定し、実際の切替えは、仮想計算機の実行が再開するまでに行なえば良い。また、割込み発生の通知も、仮想計算機の実行の再開までに行なえば良い。
【００６６】
（実施の形態２）
図１０は、本発明の実施の形態における仮想計算機制御装置３０を備えた情報処理装置の構成を示す図であり、実施の形態１の切替え通知受取手段３０２の代わりに、仮想計算機の割込み処理が終了する旨の通知を受取る割込み終了通知受取手段３０７と、タスクを切り替える旨の通知を受け取るタスク切替え通知受取手段３０８とを設けたものである。
【００６７】
本実施の形態においても実施の形態１と同様に、情報処理装置はＣＰＵ１と、割込みコントローラ２と、周辺デバイス３と、メモリ４を備えている。メモリ４には、実施の形態１と同様に、仮想計算機１０、仮想計算機２０と、仮想計算機制御装置３０が格納されている。また、実施の形態１と同じ符号で表すタスク１００、ＯＳ１１０、タスクスケジューラ１１１、割込み処理手段１１２、割込みハンドラ１２０、タスク２００、ＯＳ２１０、タスクスケジューラ２１１、割込み処理手段２１２、割込みハンドラ２２０、割込み通知受取手段３０１、優先度更新手段３０３、優先度記録手段３０４、仮想計算機スケジュール手段３０５、保留割込み記録手段３０６、タスク切替え通知受取手段３０８、割込み終了通知受取手段３０７とからなる。タスク切替え通知受取手段３０８と割込み終了通知受取手段３０７以外は、前述した実施の形態１のものと同一である。
【００６８】
図１１は、仮想計算機＃１（１０）の処理の遷移と、仮想計算機制御装置３０の各構成要素の動作の関係を模式的に示している。なお、図１１の破線は、条件によって呼び出される場合とそうでない場合があることを示す。また、図１１では仮想計算機＃１（１０）について示したが、仮想計算機＃２（２０）に関しても同様である。仮想計算機＃１（１０）は、一例として、割込みハンドラ＃１１、タスク＃１３、タスク＃１４の順で処理が遷移しているものとする。
【００６９】
割込み通知受取手段３０１は、割込みが発生した時に割込み発生通知を受け取り、優先度更新手段３０３に割込み発生通知を通知する。優先度更新手段３０３は、仮想計算機＃１（１０）の優先度に割込みハンドラ＃１１の優先度を設定し、仮想計算機スケジュール手段３０５は、仮想計算機＃１（１０）が動作する（割込みハンドラ＃１１が処理される）と決定し、仮想計算機＃１（１０）に割込み発生通知をする。割込み発生通知を受けた仮想計算機＃１（１０）は割込みハンドラ＃１１を実行する。
【００７０】
なお、一時的に割込みハンドラ＃１１の実行が保留される場合には、保留割込み記録手段３０６に、割込みハンドラ＃１１が記録されることになる。
【００７１】
次に、割込みハンドラ＃１１が終了するタイミングで、割込み終了通知受取手段３０７は、割込み終了通知を受け取り、優先度更新手段３０３に割込み終了通知を通知する。優先度更新手段３０３は、仮想計算機＃１（１０）の優先度に仮想計算機＃１（１０）の次処理であるタスク＃１３の優先度を設定し、仮想計算機スケジュール手段３０５は、仮想計算機＃１（１０）が動作する（タスク＃１３が処理される）と決定し、仮想計算機＃１（１０）にタスク切替え通知をする。タスク切替え通知を受けた仮想計算機＃１（１０）はタスク＃１３を実行する。なお、仮想計算機＃１（１０）が継続して実行するため、保留割込み記録手段３０６から記録中の割込みハンドラを取得する処理を行わなくてよい。
【００７２】
最後に、タスク＃１３が終了するタイミングで、タスク切替え通知受取手段３０８は、タスク切替え通知を受け取り、優先度更新手段３０３にタスク切替え通知を通知する。優先度更新手段３０３は、仮想計算機＃１（１０）の優先度に仮想計算機＃１（１０）の次処理であるタスク＃１４の優先度を設定し、仮想計算機スケジュール手段３０５は、仮想計算機＃１（１０）が動作する（タスク＃１４が処理される）と決定し、仮想計算機＃１（１０）は仮想計算機＃１（１０）がタスク＃１４を実行する。
【００７３】
以下、割込み終了通知受取手段３０７とタスク切替え通知受取手段３０８とを設けたことによって、実施の形態１と異なる動作になる部分について説明する。
【００７４】
図１２は、割込み処理が終了して、割込み終了通知受取手段３０７が仮想計算機（１０または２０）から割込み終了通知を受け付けたときの動作の一例を説明するフローチャートである。
【００７５】
本発明の実施の形態における割込み終了通知受取手段３０７が、割込み処理を終了する仮想計算機（１０または２０）から割込み終了通知を受け取り、処理を開始する（ステップＳ１２−１）。例えば、ＯＳ内の割込み処理手段１１２、２１２から割込みハンドラ終了時に仮想計算機制御装置３０に通知するようにし、それを契機に動作させれば良い。割込み終了通知を受けた割込み終了通知受取手段３０７は、割込み終了通知を優先度更新手段３０３に通知し、優先度更新手段３０３は、優先度記録手段３０４に記録されている割込み処理を終了する仮想計算機（１０または２０）の優先度を、割込み前の処理の優先度に更新する（ステップＳ１２−２）。
【００７６】
次に、優先度更新手段３０３は仮想計算機スケジュール手段３０５を呼び出し、仮想計算機スケジュール手段３０５は、仮想計算機１０と仮想計算機２０との優先度を比較し、優先度の高い仮想計算機（１０または２０）に切り替える（ステップＳ１２−３）。
【００７７】
仮想計算機スケジュール手段３０５が切り替えた仮想計算機（１０または２０）が割込みに対応する割込みハンドラ（１２０または２２０）を保留割込み記録手段３０６に記録しているかを判断する（ステップＳ１２−４）。切り替わった仮想計算機（１０または２０）の保留割込み記録手段３０６に割込みハンドラ（１２０または２２０）が記録されている場合、保留割込み記録手段３０６に記録されている割込みハンドラ（１２０または２２０）を実行する（ステップＳ１２−５）。割込みハンドラ（１２０または２２０）が保留割込み記録手段３０６に記録されているということは、割込み発生時（ステップＳ１２−１）に、割込んだ仮想計算機（１０または２０）が仮想計算機スケジュール手段３０５に選択されなかったことを意味する。そして、割込み発生時（ステップＳ１２−１）に、割込みの対象の仮想計算機（１０または２０）の優先度が、その割込みに対応する割込みハンドラ（１２０または２２０）の優先度に設定される（ステップＳ１２−４、ステップＳ１２−５）ので、仮想計算機スケジュール手段３０５が、割込みを保留している仮想計算機（１０または２０）を次に実行すると判断した場合（ステップＳ１２−４）、保留されている割込み処理は、もう一方の仮想計算機（１０または２０）が次に実行する処理より高いことを意味する。つまり、ここで保留されている割込み処理を実行することが、優先度に従った実行となる。そして、切り替わった仮想計算機（１０または２０）の保留割込み記録手段３０６に割込みハンドラ（１２０または２２０）が記録されていない場合には、切替え通知受取手段３０２が仮想計算機（１０または２０）から切替え通知を受け付けたときの動作は終了（ステップＳ１２−６）し、ステップＳ１２−３で決定した仮想計算機（１０または２０）が実行される。
【００７８】
なお、上述したように、仮想計算機（１０または２０）の内部に保留割込み記録手段３０６がある場合には、仮想計算機１０と仮想計算機２０がそれぞれ保留割込み記録手段３０６を持っていることになるので、仮想計算機スケジュール手段３０５は、仮想計算機（１０または２０）に割込み通知を行い、これを受けた仮想計算機（１０または２０）が保留割込み記録手段３０６に記録している割込みハンドラ（１２０または２２０）を実行するようにしてもよい。
【００７９】
さらに、上述したように、仮想計算機（１０または２０）の内部に保留割込み記録手段３０６がある場合には、仮想計算機１０と仮想計算機２０がそれぞれ保留割込み記録手段３０６を持っていることになるので、仮想計算機スケジュール手段３０５は、仮想計算機（１０または２０）に割込み通知を行い、これを受けた仮想計算機（１０または２０）が保留割込み記録手段３０６に記録している割込みハンドラ（１２０または２２０）を実行するようにしてもよい。この場合、仮想計算機（１０または２０）が保留割込み記録手段３０６を持っているので、仮想計算機スケジュール手段３０５は、仮想計算機（１０または２０）に割込み通知を行い、これを受けた仮想計算機（１０または２０）が保留割込み記録手段３０６に記録してある割込みハンドラ（１２０または２２０）を実行する。例えば、前述したように仮想計算機（１０または２０）のＯＳ（１１０または２１０）に割込みハンドラ（１２０または２２０）の実行命令を受け取るインターフェイスを設ければ、このインターフェイスを用いることで割込み発生をＯＳ（１１０または２１０）に通知し、割込みハンドラ（１２０または２２０）を実行させることが可能である。あるいは、ハードウェアを操作することで割込みを発生させることができるなら、実際に割込みを再発生させても良い。あるいは、別の方法として割込み時のハードウェアの動作をエミュレートしてもよい。例えば、割込み発生時にはハードウェアにより、割込み発生の番地などをレジスタやスタックに記録し、ＣＰＵを割込みモードにして処理にジャンプするという動作が行なわれる。
【００８０】
従って、割込み発生時と同じレジスタやスタック状態、ＣＰＵモードにして、ＯＳ（１１０または２１０）内の割込み処理手段にジャンプすれば、その時点で割込みが発生したかの様にＯＳ（１１０または２１０）に割込みハンドラ（１２０または２２０）を実行させることができるので、ＯＳ（１１０または２１０）に対する割込みの通知として用いることが出来る。あるいは、割込みコントローラ２の機能によりハードウェア的に割込みを保留している場合は、ここで保留を解除して割込みの発生をＣＰＵ１に通知させてもよい。
【００８１】
図１３は、タスクが切り替わり、タスク切替え通知受取手段３０８が仮想計算機（１０または２０）からタスク切替え通知を受け付けたときの動作の一例を説明するフローチャートである。
【００８２】
本発明の実施の形態におけるタスク切替え通知受取手段３０８が、タスク処理を切り替える仮想計算機（１０または２０）からタスク切替え通知を受け取り、処理を開始する（ステップＳ１３−１）。例えば、ＯＳ内のタスクスケジューラ１１１、２１１からタスクスイッチ時に仮想計算機制御装置３０に通知するようにし、それを契機に動作させれば良い。タスク切替え通知を受けたタスク切替え通知受取手段３０８は、タスク切替え通知を優先度更新手段３０３に通知し、優先度更新手段３０３は、優先度記録手段３０４に記録されているタスクを切り替える仮想計算機（１０または２０）の優先度を、次に実行するタスクの優先度に変更する（ステップＳ１３−２）。
【００８３】
次に、優先度更新手段３０３は仮想計算機スケジュール手段３０５を呼び出し、仮想計算機スケジュール手段３０５は、仮想計算機１０と仮想計算機２０との優先度を比較し、優先度の高い仮想計算機（１０または２０）に切り替える（ステップＳ１３−３）。仮想計算機スケジュール手段３０５が切り替えた仮想計算機（１０または２０）が割込みに対応する割込みハンドラを保留割込み記録手段３０６に記録しているかを判断する（ステップＳ１３−４）。切り替わった仮想計算機（１０または２０）の保留割込み記録手段３０６に割込みハンドラ（１２０または２２０）が記録されている場合、保留割込み記録手段３０６に記録されている割込みハンドラ（１２０または２２０）を実行する（ステップＳ１３−５）。割込みハンドラ（１２０または２２０）が保留割込み記録手段３０６に記録されているということは、割込み発生時（ステップＳ４−１）に、割込んだ仮想計算機（１０または２０）が仮想計算機スケジュール手段３０５に選択されなかったことを意味する。そして、割込み発生時（ステップＳ４−１）に、割込みの対象の仮想計算機（１０または２０）の優先度が、その割込みに対応する割込みハンドラ（１２０または２２０）の優先度に設定される（ステップＳ４−４、ステップＳ４−５）ので、仮想計算機スケジュール手段３０５が、割込みを保留している仮想計算機（１０または２０）を次に実行すると判断した場合（ステップＳ１３−４）、保留されている割込み処理は、もう一方の仮想計算機が次に実行する処理より高いことを意味する。つまり、ここで保留されている割込み処理を実行することが、優先度に従った実行となる。そして、切り替わった仮想計算機（１０または２０）の保留割込み記録手段３０６に割込みハンドラ（１２０または２２０）が記録されていない場合には、切替え通知受取手段３０２が仮想計算機から切替え通知を受け付けたときの動作は終了（ステップＳ１３−６）し、ステップＳ１３−３で決定した仮想計算機（１０または２０）が実行される。
【００８４】
なお、上述したように、仮想計算機（１０または２０）の内部に保留割込み記録手段３０６がある場合には、仮想計算機１０と仮想計算機２０がそれぞれ保留割込み記録手段３０６を持っていることになるので、仮想計算機スケジュール手段３０５は、仮想計算機（１０または２０）に割込み通知を行い、これを受けた仮想計算機（１０または２０）が保留割込み記録手段３０６に記録している割込みハンドラ（１２０または２２０）を実行するようにしてもよい。
【００８５】
さらに、上述したように、仮想計算機（１０または２０）の内部に保留割込み記録手段３０６がある場合には、仮想計算機１０と仮想計算機２０がそれぞれ保留割込み記録手段３０６を持っていることになるので、仮想計算機スケジュール手段３０５は、仮想計算機（１０または２０）に割込み通知を行い、これを受けた仮想計算機（１０または２０）が保留割込み記録手段３０６に記録している割込みハンドラ（１２０または２２０）を実行するようにしてもよい。この場合、仮想計算機（１０または２０）が保留割込み記録手段３０６を持っているので、仮想計算機スケジュール手段３０５は、仮想計算機（１０または２０）に割込み通知を行い、これを受けた仮想計算機（１０または２０）が保留割込み記録手段３０６に記録してある割込みハンドラ（１２０または２２０）を実行する。例えば、前述したように仮想計算機（１０または２０）のＯＳ（１１０または２１０）に割込みハンドラ（１２０または２２０）の実行命令を受け取るインターフェイスを設ければ、このインターフェイスを用いることで割込み発生をＯＳ（１１０または２１０）に通知し、割込みハンドラを実行させることが可能である。あるいは、ハードウェアを操作することで割込みを発生させることができるなら、実際に割込みを再発生させても良い。あるいは、別の方法として割込み時のハードウェアの動作をエミュレートしてもよい。例えば、割込み発生時にはハードウェアにより、割込み発生の番地などをレジスタやスタックに記録し、ＣＰＵを割込みモードにして処理にジャンプするという動作が行なわれる。
【００８６】
従って、割込み発生時と同じレジスタやスタック状態、ＣＰＵモードにして、ＯＳ（１１０または２１０）内の割込み処理手段にジャンプすれば、その時点で割込みが発生したかの様にＯＳ（１１０または２１０）に割込みハンドラ（１２０または２２０）を実行させることができるので、ＯＳ（１１０または２１０）に対する割込みの通知として用いることが出来る。あるいは、割込みコントローラ２の機能によりハードウェア的に割込みを保留している場合は、ここで保留を解除して割込みの発生をＣＰＵ１に通知させてもよい。
【００８７】
図１４、図１５、図１６に本実施の形態の情報処理装置の実際の動作の例を示す。図１４、図１５、図１６では仮想計算機１０について示したが、仮想計算機２０に関しても同様である。
【００８８】
なお、図１４、図１５と図１６を見ると、割込み通知受取手段３０１と割込み終了通知受取手段３０７、タスク切替え通知受取手段３０８が仮想計算機（１０または２０）に通知しているが、優先度更新手段３０３、仮想計算機スケジュール手段３０５の動作が省略してあり、本来であれば、割込み通知受取手段３０１または割込み終了通知受取手段３０７、タスク切替え通知受取手段３０８が仮想計算機（１０または２０）から通知を受け取ると、この通知を優先度更新手段３０３に通知し、優先度更新手段３０３は仮想計算機スケジュール手段３０５を呼び出し、呼び出された仮想計算機スケジュール手段３０５が次に実行すると決定した仮想計算機（１０または２０）に通知する。
【００８９】
図１４の例では、仮想計算機＃１（１０）は、優先度７のタスク＃１４が実行される予定であったが、優先度１の割込みハンドラ＃１１を有する割込みが発生した状態を表している。一方、仮想計算機＃２（２０）は、次に優先度４のタスク＃２３が実行される予定である。そして、仮想計算機＃１（１０）の優先度は、仮想計算機＃１（１０）が次に実行するタスク＃１４の優先度７が設定され、仮想計算機＃２（２０）の優先度は、仮想計算機＃２（２０）が次に実行するタスク＃２３の優先度４となっている。そして、仮想計算機＃２（２０）の方が仮想計算機＃１（１０）より優先度が高いので、仮想計算機＃２（２０）が選択され、タスク＃２３が実行されている。その後、仮想計算機＃１（１０）に対する割込みが発生（ステップＳ４−１）し、割込み通知受取手段３０１が割込み通知を受け取り、割込み要因から対象の仮想計算機＃１（１０）を特定する（ステップＳ４−２）。そして、この割込み通知を優先度更新手段３０３に通知し、優先度更新手段３０３は、仮想計算機＃１（１０）の優先度を、割込みに対応する割込みハンドラ＃１１の優先度１に更新し（ステップＳ４−３、ステップＳ４−４）、仮想計算機スケジュール手段３０５を呼び出し、仮想計算機スケジュール手段３０５が仮想計算機間の優先度比較を行い、仮想計算機＃１（１０）に切り替える（ステップＳ４−６）。
【００９０】
発生した割込みの対象である仮想計算機＃１（１０）が次に実行されるので、割込みの発生が仮想計算機＃１（１０）に通知され（ステップＳ４−８）、割込み発生の動作処理終了（ステップＳ４−１０）後、仮想計算機＃１（１０）が動作し、割込みハンドラ＃１１が実行される。割込みハンドラ＃１１の実行終了後は、仮想計算機＃１（１０）の実行する対象が切り替わるので、仮想計算機制御装置３０の割込み終了通知受取手段３０７が仮想計算機＃１（１０）から割込み終了通知を受け取り、割込み終了通知を受けた場合の処理が動作する（ステップＳ１２−１）。仮想計算機＃１（１０）が割込みハンドラ＃１１の実行終了後に、優先度７のタスク＃１４に切り替えるので、割込み終了通知受取手段３０７から通知を受けた優先度更新手段３０３が、仮想計算機＃１（１０）の優先度を切り替える前の優先度７に戻す（ステップＳ１２−２）。そして、優先度更新手段３０３から通知された仮想計算機スケジュール手段３０５が呼び出され（ステップＳ１２−３）、仮想計算機間の優先度比較を行い、優先度が高い仮想計算機＃２（２０）に切り替える（ステップＳ１２−４）。その後、仮想計算機スケジュール手段３０５は仮想計算機＃２（２０）に通知し、仮想計算機＃２（２０）のタスク＃２３の実行が再開される。
【００９１】
図１５の例では、仮想計算機＃１（１０）は、優先度７のタスク＃１４が実行される予定であったが、優先度３の割込みハンドラ＃１２を有する割込みが発生した状態を表している。一方、仮想計算機＃２（２０）は、優先度２の割込みハンドラ＃２１と優先度４のタスク＃２３が実行される予定である。そして、仮想計算機＃１（１０）の優先度は、仮想計算機＃１（１０）が次に実行するタスク＃１４の優先度７が設定され、仮想計算機＃２（２０）の優先度は、仮想計算機＃２（２０）が次に実行する割込みハンドラ＃２１の優先度２となっている。そして、仮想計算機＃２（２０）の方が仮想計算機＃１（１０）より優先度が高いので、仮想計算機＃２（２０）が選択され、割込みハンドラ＃２１が実行されている。その後、仮想計算機＃１（１０）に対する割込みが発生（ステップＳ４−１）し、割込み通知受取手段３０１が割込み通知を受け取り、割込み要因から対象の仮想計算機＃１（１０）を特定する（ステップＳ４−２）。そして、この割込み通知を優先度更新手段３０３に通知し、優先度更新手段３０３は、仮想計算機＃１（１０）の優先度を、割込みに対応する割込みハンドラ＃１２の優先度３に更新し（ステップＳ４−３、ステップＳ４−４）、仮想計算機スケジュール手段３０５を呼び出し（ステップＳ４−５）、仮想計算機スケジュール手段３０５が仮想計算機間の優先度比較を行う。ここで、仮想計算機＃２（２０）の方が仮想計算機＃１（１０）より優先度が高いので、切り替えは発生せず、仮想計算機＃２（２０）に引き続き実行させる（ステップＳ４−６、ステップＳ４−７）。ここで、発生した割込みの対象である仮想計算機＃１（１０）は、次に実行されると判断されなかったので、自分の優先度を次に実行する割込みハンドラ＃１２の優先度に更新し、割込みハンドラ＃１２を保留割込み記録手段３０６に記録する（ステップＳ４−９）。
【００９２】
割込みハンドラ＃２１の実行終了後は、仮想計算機制御装置３０の割込み終了通知受取手段３０７が仮想計算機＃２（２０）から割込み終了通知を受け取り、割込み終了通知を受けた場合の処理が動作する（ステップＳ１２−１）。仮想計算機＃２（２０）が割込みハンドラ＃２１の実行終了後、優先度４のタスク＃２３に切り替えるので、割込み終了通知受取手段３０７から通知を受けた優先度更新手段３０３が、仮想計算機＃２（２０）の優先度を切り替える前の優先度４に戻す（ステップＳ１２−２）。そして、優先度更新手段３０３から通知された仮想計算機スケジュール手段３０５が呼び出され（ステップＳ１２−３）、仮想計算機間の優先度比較を行う。仮想計算機＃１（１０）の保留割込み記録手段３０６に記録されている割込みハンドラ＃１２の優先度が３であるので、仮想計算機＃１（１０）の優先度は３である。一方、仮想計算機＃２（２０）の次に実行する処理は優先度４のタスク＃２３であるので、仮想計算機＃２（２０）の優先度は４である。したがって、優先度が高い仮想計算機＃１（１０）に切り替え（ステップＳ１２−４）、仮想計算機スケジュール手段３０５は仮想計算機＃１（１０）に通知し、仮想計算機＃１（１０）の割込みハンドラ＃１２の実行がされる。
【００９３】
その後、割込みハンドラ＃１２の処理が終わったら、仮想計算機＃１（１０）は優先度７のタスク＃１４に切り替えるので、割込み終了通知受取手段３０７から通知を受けた優先度更新手段３０３が、仮想計算機＃１（１０）の優先度を切り替える前の優先度７に戻す（ステップＳ１２−２）。そして、優先度更新手段３０３から通知された仮想計算機スケジュール手段３０５が呼び出され（ステップＳ１２−３）、仮想計算機間の優先度比較を行う。仮想計算機＃２（２０）の優先度は４であるので、優先度が高い仮想計算機＃２（２０）に切り替える（ステップＳ１２−４）。その後、仮想計算機スケジュール手段３０５は仮想計算機＃２（２０）に通知し、仮想計算機＃２（２０）のタスク＃２３の実行が再開される。
【００９４】
図１６の例では、仮想計算機＃１（１０）は、優先度７のタスク＃１４が実行される予定であったが、優先度５の割込みハンドラ＃１３を有する割込みが発生した状態を表している。一方、仮想計算機＃２（２０）は、優先度４のタスク＃２３と優先度６のタスク＃２４が実行される予定である。そして、仮想計算機＃１（１０）の優先度は、仮想計算機＃１（１０）が次に実行するタスク＃１４の優先度７が設定され、仮想計算機＃２（２０）の優先度は、仮想計算機＃２（２０）が次に実行するタスク＃２３の優先度４となっている。そして、仮想計算機＃２（２０）の方が仮想計算機＃１（１０）より優先度が高いので、仮想計算機＃２（２０）が選択され、タスク＃２３が実行されている。その後、仮想計算機＃１（１０）に対する割込みが発生（ステップＳ４−１）し、割込み通知受取手段３０１が割込み通知を受け取り、割込み要因から対象の仮想計算機＃１（１０）を特定する（ステップＳ４−２）。そして、この割込み通知を優先度更新手段３０３に通知し、優先度更新手段３０３は、仮想計算機＃１（１０）の優先度を、割込みに対応する割込みハンドラ＃１３の優先度５に更新し（ステップＳ４−３、ステップＳ４−４）、仮想計算機スケジュール手段３０５を呼び出し（ステップＳ４−５）、仮想計算機スケジュール手段３０５が仮想計算機間の優先度比較を行う。ここで、仮想計算機＃２（２０）の方が仮想計算機＃１（１０）より優先度が高いので、切り替えは発生せず、仮想計算機＃２（２０）に引き続き実行させる（ステップＳ４−６、ステップＳ４−７）。ここで、発生した割込みの対象である仮想計算機＃１（１０）は、次に実行されると判断されなかったので、自分の優先度を次に実行する割込みハンドラ＃１３の優先度５に更新し、割込みハンドラ＃１３を保留割込み記録手段３０６に記録する（ステップＳ４−９）。
【００９５】
タスク＃２３の実行終了後は、仮想計算機＃２（２０）の実行する対象が切り替わるので、仮想計算機制御装置３０のタスク切替え通知受取手段３０８が仮想計算機＃２（２０）からタスク切替え通知を受け取り、タスク切替え通知を受けた場合の処理が動作する（ステップＳ１３−１）。仮想計算機＃２（２０）が優先度６のタスク＃２４に切り替えるので、タスク切替え通知受取手段３０８から通知を受けた優先度更新手段３０３が、仮想計算機＃２（２０）の優先度を、次の処理であるタスク＃２４の優先度６に更新する（ステップＳ１３−２）。そして、優先度更新手段３０３から通知された仮想計算機スケジュール手段３０５が呼び出され（ステップＳ１３−３）、仮想計算機間の優先度比較を行う。仮想計算機＃１（１０）の保留割込み記録手段３０６に記録されている割込みハンドラ＃１３の優先度が５であるので、仮想計算機＃１（１０）の優先度は５である。一方、仮想計算機＃２（２０）の次に実行する処理は優先度６のタスク＃２４であるので、仮想計算機＃２（２０）の優先度は６である。したがって、優先度が高い仮想計算機＃１（１０）に切り替え（ステップＳ１３−４）、仮想計算機スケジュール手段３０５は仮想計算機＃１（１０）に通知し、仮想計算機＃１（１０）の割込みハンドラ＃１３の実行がされる。
【００９６】
その後、割込みハンドラ＃１３の処理が終わったら、割込み終了通知受取手段３０７から割込み終了通知を受けた優先度更新手段３０３が、仮想計算機＃１（１０）の優先度を割込み前の優先度７に戻す（ステップＳ１３−２）。その後、優先度更新手段３０３から通知された仮想計算機スケジュール手段３０５が呼び出され（ステップＳ１３−３）、仮想計算機間の優先度比較を行う。仮想計算機＃２（２０）の優先度は６であるので、優先度が高い仮想計算機＃２（２０）に切り替える（ステップＳ１３−４）。仮想計算機スケジュール手段３０５は仮想計算機＃２（２０）に通知し、仮想計算機＃２（２０）のタスク＃２４の実行が再開される。
【００９７】
なお、本実施の形態では、仮想計算機スケジュール手段３０５は、直ちに仮想計算機を切り替えるが、必ずしもその必要はない。切替えの有無のみを判定し、実際の切替えは、仮想計算機の実行が再開するまでに行なえば良い。また、割込み発生の通知も、仮想計算機の実行の再開までに行なえば良い。
【００９８】
以上、本実施の形態では、割込み発生時、割込み終了通知時、タスク切替え時の３箇所で、仮想計算機（１０または２０）の優先度を割込み処理の優先度、割込み前の処理の優先度、次に実行するタスク処理の優先度に変更して比較し、切替えを行なう。仮想計算機間での優先度を比較することにより、割込みハンドラの実行が保留された場合には、その保留された割込みハンドラを記録する。そして割込み発生時、割込み終了通知、タスク切替えの時点で仮想計算機（１０または２０）が切り替わり、仮想計算機スケジュール手段３０５の働きにより保留していた割込みハンドラの実行が行なわれる。これにより、タスク、割込みハンドラの優先度に従った実行が実現される。
【００９９】
なお、本実施の形態では、仮想計算機スケジュール手段３０５は、直ちに仮想計算機（１０または２０）を切り替えるが、必ずしもその必要はない。切替えの有無のみを判定し、実際の切替えは、仮想計算機（１０または２０）の実行が再開するまでに行なえば良い。また、割込み発生の通知も、仮想計算機（１０または２０）の実行の再開までに行なえば良い。
【０１００】
（実施の形態３）
図１７は、本発明の第３の実施の形態の仮想計算機制御装置である情報処理装置を示す図であり、実施の形態２に優先度調整手段３０９を付け加えたものである。本実施の形態においても実施の形態２と同様に、情報処理装置はＣＰＵ１と、割込みコントローラ２と、周辺デバイス３と、メモリ４を備えている。メモリ４には、実施の形態２と同様に、仮想計算機１０、仮想計算機２０と、仮想計算機制御装置３０が格納されている。また、実施の形態２と同じ符号で表すタスク１００、ＯＳ１１０、タスクスケジューラ１１１、割込み処理手段１１２、割込みハンドラ１２０、タスク２００、ＯＳ２１０、タスクスケジューラ２１１、割込み処理手段２１０、割込みハンドラ２２０、割込み通知受取手段３０１、優先度更新手段３０３、優先度記録手段３０４、仮想計算機スケジュール手段３０５、保留割込み記録手段３０６、割込み終了通知受取手段３０７、タスク切替え通知受取手段３０８は、前述した実施の形態２のものと同一である。
【０１０１】
優先度調整手段３０９は、各種の要求を受け、タスク１００、割込みハンドラ１２０、タスク２００、割込みハンドラ２２０に付与されている優先度を変更する。実際に本発明を用いる場合、状況によってタスク（１００、２００）や割込みハンドラ（１１０、２１０）に付与している優先度を変更したい場合がある。例えば、仮想計算機１０で外部とデータ交換を行ない、仮想計算機２０ではユーザと対話的な処理を行う場合を考える。この場合、ユーザに対するレスポンスの為、仮想計算機２０に属するタスク２００や割込みハンドラ２２０の優先度を高く設定することが考えられる。しかし、データ交換が追いつかなくなった場合は、一時的にユーザへのレスポンスを犠牲にしても、データ交換の優先度を上げたいことがある。このような場合に、優先度調整手段３０９に通知し、仮想計算機１０に属するタスク１００や割込みハンドラ１２０の優先度を上げる。その結果、データ交換の優先度を上げることが出来る。
【０１０２】
本実施の形態を用いる別の例として、仮想計算機１０、仮想計算機２０になるべく均等にＣＰＵ時間を割り振りたい場合がある。この場合、例えば仮想計算機１０、仮想計算機２０の実行時間の記録を取り、一定の時間ごとに実行時間の短い仮想計算機に属する処理（タスク、割込みハンドラ）の優先度から一定の値を引く。優先度の変化の例を図１８に示す。
【０１０３】
図１８では、まず仮想計算機＃１（１０）の方が仮想計算機＃２（２０）よりも実行時間が長いと判断された場合、実行時間の短い仮想計算機＃２（２０）に属する割込みハンドラ＃２１、タスク＃２２、タスク＃２３およびタスク＃２４の優先度をそれぞれ−１して優先度を上げる。次に実行時間の長い仮想計算機＃１（１０）に属する割込みハンドラ＃１１、割込みハンドラ＃１２、割込みハンドラ＃１３およびタスク＃１４の優先度をそれぞれ＋１して、優先度を下げる。同様に仮想計算機＃１（１０）の方が仮想計算機＃２（２０）よりも実行時間が短いと判断されれば、仮想計算機＃１（１０）に属する処理の優先度をそれぞれ−１して優先度を上げ、仮想計算機＃２（２０）に属する割込みハンドラ＃２１、タスク＃２２、タスク＃２３およびタスク＃２４の優先度をそれぞれ＋１して、優先度を下げる。そして、時間が経過し、仮想計算機＃１（１０）の方が仮想計算機＃２（２０）よりも実行時間が長いと判断された場合、実行時間の短い仮想計算機＃２（２０）に属する割込みハンドラ＃２１、タスク＃２２、タスク＃２３およびタスク＃２４の優先度をそれぞれ−１して優先度を上げる。次に実行時間の長い仮想計算機＃１（１０）に属する割込みハンドラ＃１１、割込みハンドラ＃１２、割込みハンドラ＃１３およびタスク＃１４の優先度をそれぞれ＋１して、優先度を下げる。そして、この動作を繰り返すことで、動作時間をなるべく均等にする。
【０１０４】
なお、優先度を変化させる契機は、情報処理装置の利用目的に合わせて任意ものを用いても良い。例えば、データ取得のスループットなどを定期的に取得し、優先度変化の必要性を判断しても良い。
【０１０５】
また、本実施の形態を用いる更に別の例として、一方の仮想計算機を、一時的にもう一方より完全に優先したい場合がある。例えば、電波状況などの条件を監視し、データ交換が可能になった時に、極力早くデータ交換を完了したい場合などである。この場合、電波状況などの変化を契機にし、データ交換をする仮想計算機に属する全ての処理の優先度を十分高くすれば実現できる。データ交換が終了すれば、優先度を元に戻す。図１９にこの場合の例を示す。
【０１０６】
図１９では、仮想計算機＃１（１０）が、データ交換をする仮想計算機である場合、データ交換可能な電波状態になったときには、一時的に仮想計算機＃２（２０）の割込みハンドラ＃２１、タスク＃２２、タスク＃２３およびタスク＃２４の優先度に＋１０することで、それぞれの優先度を下げ、仮想計算機＃１（１０）の処理を優先させる。そしてデータ交換が終了すれば、仮想計算機＃２（２０）の割込みハンドラ＃２１、タスク＃２２、タスク＃２３およびタスク＃２４の優先度を−１０して元に戻している。
【０１０７】
また、本実施の形態を用いる更に別の例として、一方の仮想計算機に属する処理を完全に停止したい場合がある。この場合、停止したい仮想計算機に属する処理の優先度の全てがもう一方の仮想計算機のアイドルタスクより低い優先度に変化させれば良い。アイドルタスクは、何も仕事が無い時のタスクをいい、最低の優先度になる。本発明では、割込みも含み優先度に従った順で処理を実行させることができるので、一方の仮想計算機に属するタスク、割込みハンドラを優先度の調整により、完全に実行されない状態にすることが簡単に可能である。図２０に例を示す。
【０１０８】
図２０では、仮想計算機＃１（１０）に属する処理を完全に停止するために、仮想計算機＃１（１０）に属する割込みハンドラ＃１１、割込みハンドラ＃１２、割込みハンドラ＃１３およびタスク＃１４の優先度に＋１００をする。この場合、優先度比較の結果、この間は仮想計算機＃１（１０）はどうなっても動作しないので、仮想計算機＃１（１０）は停止状態になる。そして、仮想計算機＃１（１０）を再開させるときには、仮想計算機＃１（１０）に属する割込みハンドラ＃１１、割込みハンドラ＃１２、割込みハンドラ＃１３およびタスク＃１４の優先度に−１００をして、元に戻している。
【０１０９】
なお、優先度は相対的なものなので、一方の仮想計算機の処理の優先度に一定値を加える代わりに、もう一方の仮想計算機の処理の優先度から同じ値を引いても良い。図１８、図１９、図２０の例でも同様である。
【０１１０】
以上、本実施の形態では、状況に応じ優先度の変更を行なうことで、より状況に応じた仮想計算機の制御が可能である。
【０１１１】
なお、保留割込み記録手段３０６を仮想計算機（１０または２０）の方に設けても良い。この場合は、実施の形態１、２と同様に仮想計算機スケジュール手段３０５が仮想計算機（１０または２０）に割込み発生通知を通知し、あとは仮想計算機（１０または２０）の方で保留割込み処理を実行させるようにする。
【０１１２】
（実施の形態４）
図２１は、本発明の実施の形態４の仮想計算機制御装置である情報処理装置を示す図であり、実施の形態２に割込みハンドラ１２１、割込みハンドラ２２１、第２割込み通知受取手段３１０、実割込み通知手段３１１と実保留割込み記録手段３１２を付け加えたものである。本実施の形態においても実施の形態２と同様に、情報処理装置はＣＰＵ１と、割込みコントローラ２と、周辺デバイス３と、とメモリ４とを備えている。メモリ４には、実施の形態２と同様に、仮想計算機１０、仮想計算機２０と、仮想計算機制御装置３０が格納されている。
【０１１３】
また、実施の形態２と同じ符号で表すタスク１００、ＯＳ１１０、タスクスケジューラ１１１、割込み処理手段１１２、タスク２００、ＯＳ２１０、タスクスケジューラ２１１、割込み処理手段２１２、優先度更新手段３０３、優先度記録手段３０４、仮想計算機スケジュール手段３０５、割込み終了通知受取手段３０７、タスク切替え通知受取手段３０８は、前述した実施の形態２のものと同一である。
【０１１４】
本実施の形態での割込みハンドラ１２１、２２１は図２２に示すように、先に実行される先頭ハンドラと、先頭ハンドラの後に続いて実行される実ハンドラの２つに分かれる。つまり本発明では、割込み発生時の処理は、先頭ハンドラ、実ハンドラが順に実行されることで実現される。
【０１１５】
図２３は、仮想計算機＃１（１０）の処理の遷移と、仮想計算機制御装置３０の各構成要素の動作の関係を模式的に示している。なお、図２３の破線は、条件によって呼び出される場合とそうでない場合があることを示す。なお、図２３では仮想計算機＃１（１０）について示したが、仮想計算機＃２（２０）に関しても同様である。仮想計算機＃１（１０）は、一例として、割込みハンドラ＃１１、タスク＃１３、タスク＃１４の順で処理が遷移しているものとする。割込みハンドラ＃１１は、図２２で示したように、先頭ハンドラと実ハンドラに分かれる。
【０１１６】
第２割込み通知受取手段３１０は、割込みが発生した時に割込みの対象である仮想計算機＃１（１０）に割込み発生通知をする。割込み発生通知を受けた仮想計算機＃１（１０）は、割込みハンドラ＃１１の先頭ハンドラを実行する。
【０１１７】
先頭ハンドラの実行が終了すると、実割込み処理通知受取手段３１０に仮想計算機＃１（１０）で先頭ハンドラの実行が終了した旨の通知と、仮想計算機＃１（１０）が現在実行しているか否かを表すフラグとを含む、先頭ハンドラ終了通知をする。先頭ハンドラ終了通知を受け取った実割込み処理通知受取手段３１１についての詳細な動作は後述する。
【０１１８】
次に、割込みハンドラ＃１１の実ハンドラが終了するタイミングで、割込み終了通知受取手段３０７は、割込み終了通知を受け取り、優先度更新手段３０３に割込み終了通知を通知する。優先度更新手段３０３は、仮想計算機＃１（１０）の優先度に仮想計算機＃１（１０）の次処理であるタスク＃１３の優先度を設定し、仮想計算機スケジュール手段３０５は、仮想計算機＃１（１０）が動作する（タスク＃１３が処理される）と決定し、仮想計算機＃１（１０）がタスク＃１３を実行する。なお、仮想計算機＃１（１０）が継続して実行するため、保留割込み記録手段３０６から記録中の割込みハンドラを取得する処理を行わなくてよい。
【０１１９】
最後に、タスク＃１３が終了するタイミングで、タスク切替え通知受取手段３０８は、タスク切替え通知を受け取り、優先度更新手段３０３にタスク切替え通知を通知する。優先度更新手段３０３は、仮想計算機＃１（１０）の優先度に仮想計算機＃１（１０）の次処理であるタスク＃１４の優先度を設定し、仮想計算機スケジュール手段３０５は、仮想計算機＃１（１０）が動作する（タスク＃１４が処理される）と決定し、仮想計算機＃１（１０）がタスク＃１４を実行する。
【０１２０】
図２４は、割込みが発生した場合の動作の一例を示すフローチャートである。
【０１２１】
本発明の実施の形態における仮想計算機制御装置を備える情報処理装置に割込みが発生し、処理を開始する（ステップＳ２４−１）。割込みが発生すると、第２割込み通知受取手段３１０が、割込み発生通知を受け取る。例えば、ＣＰＵ１が、割込みコントローラ２から割込みの発生通知を受けて割込みを検知した時にジャンプする先である割込みベクターを仮想計算機制御装置３０に設けることで、割込み発生時に、割込み通知受取手段３０１を動作させることが可能である。
【０１２２】
第２割込み通知受取手段３１０は、受け取った割込み通知に含まれている割込み要因を取得し、この割込み要因から、どちらの仮想計算機（１０または２０）を対象にした割込みかを決定する（ステップＳ２４−２）。この決定は、割込み要因情報を用いて行うものとする。図５に、割込み要因情報の一例を示した通り、割込み発生要因と、その割込み発生が対象にしている仮想計算機（＃１または＃２）を組にして保持している。ここでは、テーブルで示しているが、関数やリンク形式など、対象の仮想計算機が一意に決定すればよい。そして、第２割込み通知受取手段３１０は、対象となる仮想計算機（１０または２０）に割込み発生通知をする（ステップＳ２４−３）。割込み発生通知を受けた仮想計算機（１０または２０）は、先頭ハンドラの処理を行い、先頭ハンドラの処理実行後に、先頭ハンドラの処理が終了した旨の通知を実割込み通知受取手段３１１に行う（ステップＳ２４−４）。そして、対象となる仮想計算機（１０または２０）が現在実行中でなければ、割込みの対象の仮想計算機（１０または２０）に切り替える（ステップＳ２４−５、ステップＳ２４−６）。ステップＳ２４−６は、例えば割込みの対象である仮想計算機（１０または２０）の優先度を十分高く設定して、仮想計算機スケジュール手段３０５を呼び出せば良い。あるいは優先度に関係なく仮想計算機（１０または２０）を切り替える機構を設けても良い。その後、割込みの対象である仮想計算機（１０または２０）が実行に移され割込み処理が開始され、実割込みハンドラの処理が終了する（ステップＳ２４−１０）。また、対象となる仮想計算機（１０または２０）が現在実行中であれば、先頭ハンドラの処理が終了した旨の通知を受けた実割込み通知受取手段３１１は、決定した対象仮想計算機の情報と共に先頭ハンドラ終了通知を、優先度更新手段３０３に通知し、優先度更新手段３０３は、仮想計算機スケジュール手段３０５を呼び出す（ステップＳ２４−５、ステップＳ２４−７）。仮想計算機スケジュール手段３０５は、実行すると決定した仮想計算機（１０または２０）が割込みの対象であれば、そのまま実ハンドラを実行し、処理を終了する（ステップＳ２４−１０）。仮想計算機スケジュール手段３０５が実行すると決定した仮想計算機（１０または２０）が割込みの対象でなければ、実保留割込み記録手段３１２に割込みに対応する割込みハンドラの実ハンドラと割込みハンドラの優先度を記録して、処理を終了する（ステップＳ２４−１０）。
【０１２３】
図２５は、割込み処理が終了して、割込み終了通知受取手段３０７が仮想計算機＃１（１０）から割込み終了通知を受け付けたときの動作の一例を説明するフローチャートである。
【０１２４】
本発明の実施の形態における割込み終了通知受取手段３０７が、割込み処理を終了する仮想計算機（１０または２０）から割込み終了通知を受け取り、処理を開始する（ステップＳ２５−１）。例えば、ＯＳ内の割込み処理手段１１２、２１２から割込みハンドラ終了時に仮想計算機制御装置３０に通知するようにし、それを契機に動作させれば良い。割込み終了通知を受けた割込み終了通知受取手段３０７は、割込み終了通知を優先度更新手段３０３に通知し、優先度更新手段３０３は、優先度記録手段３０４に記録されている割込み処理を終了する仮想計算機（１０または２０）の優先度を、割込み前の処理の優先度に更新する（ステップＳ２５−２）。
【０１２５】
次に、優先度更新手段３０３は仮想計算機スケジュール手段３０５を呼び出し、仮想計算機スケジュール手段３０５は、仮想計算機１０と仮想計算機２０との優先度を比較し、優先度の高い仮想計算機（１０または２０）に切り替える（ステップＳ２５−３）。切り替えた仮想計算機（１０または２０）の実保留割込み記録手段３１２に実ハンドラが記録されていれば、その実ハンドラを実行させ、処理を終了する（ステップＳ２５−６）。切り替えた仮想計算機（１０または２０）の実保留割込み記録手段３１２に実ハンドラが記録されていなければ、そのまま処理を終了する（ステップＳ２５−６）。
【０１２６】
図２６は、タスク処理が終了して、タスク切替え通知受取手段３０８が仮想計算機＃１（１０）からタスク切替え通知を受け付けたときの動作の一例を説明するフローチャートである。
【０１２７】
本発明の実施の形態におけるタスク切替え通知受取手段３０８が、タスク処理を終了する仮想計算機（１０または２０）からタスク切替え通知を受け取り、処理を開始する（ステップＳ２６−１）。タスク切替え終了通知を受けたタスク切替え通知受取手段３０８は、タスク切替え通知を優先度更新手段３０３に通知し、優先度更新手段３０３は、優先度記録手段３０４に記録されているタスク処理を終了する仮想計算機（１０または２０の優先度を、次のタスク処理の優先度に更新する（ステップＳ２６−２）。
【０１２８】
次に、優先度更新手段３０３は仮想計算機スケジュール手段３０５を呼び出し、仮想計算機スケジュール手段３０５は、仮想計算機１０と仮想計算機２０との優先度を比較し、優先度の高い仮想計算機（１０または２０に切り替える（ステップＳ２６−３）。切り替えた仮想計算機（１０または２０）の実保留割込み記録手段３１２に実ハンドラが記録されていれば、その実ハンドラを実行させ、処理を終了する（ステップＳ２６−６）。切り替えた仮想計算機（１０または２０）の実保留割込み記録手段３１２に実ハンドラが記録されていなければ、そのまま処理を終了する（ステップＳ２６−６）。
【０１２９】
以上、本実施の形態では、割込み発生時において、割込みの対象である仮想計算機＃１（１０）が割込み処理を始めた後、実ハンドラの実行前に仮想計算機の優先度比較、及び切替えが発生する。従って、割込みの優先度が低い場合においても、ＯＳに割込みの通知を行い、ＯＳが割込み処理のコンテキストに入った状態で待ち状態になる。従って、待ち状態から復帰すれば割込みの通知がなくても、割込みの処理が再開される。その為、本実施の形態では、仮想計算機切替えの際に、ＯＳ１１０、２１０に改めて割込みの通知を行なう必要は無い。
【０１３０】
本実施の形態において、先頭ハンドラの実行に費やす時間を十分短くし、実質的な割込みの処理を実ハンドラ手段として実装すれば、実質的にタスク、割込みハンドラの優先度に従った仮想計算機の実行が可能である。
【０１３１】
なお、割込みハンドラを、比較的短く即時の処理が必要なトップハーフと、それ以外のボトムハーフに分けることが一般に行なわれている。トップハーフを本実施の形態の先頭ハンドラ、ボトムハーフを実ハンドラとして利用しても良い。この場合、トップハーフは常に最優先で処理し、ボトムハーフとタスクを優先度の順に実行させるスケジュールを行なうことになる。
【０１３２】
なお、本実施の形態においても、実施の形態２の優先度調整手段３０９を設けても良い。実施の形態３で記述した利用の例も、本実施の形態において同様に利用できる。また、実保留割込み記録手段３１２を仮想計算機の方に設けても良い。この場合は、実施の形態１、２、３と同様に仮想計算機スケジュール手段３０５が仮想計算機に割込み発生通知を通知し、あとは仮想計算機の方で保留割込み処理を実行させるようにする。
【０１３３】
（実施の形態５）
図２７は、本発明の実施の形態５の仮想計算機制御装置である情報処理装置を示す図であり、実施の形態２の、割込み通知受取手段３０１を第３割込み通知受取手段３１３に、割込み終了通知受取手段３０７を第２割込み終了通知受取手段３１４に、タスク切替え通知受取手段３０８を第２タスク切替え通知受取手段３１５に置き換えたものである。情報処理装置はＣＰＵ１と、周辺デバイス３と、メモリ４と、割込みコントローラ５を備えている。メモリ４には、仮想計算機１０、仮想計算機２０と、仮想計算機制御手段３０が格納されている。また、実施の形態２と同じ符号で表すタスク１００、ＯＳ１１０、タスクスケジューラ１１１、割込み処理手段１１２、割込みハンドラ１２０、タスク２００、ＯＳ２１０、タスクスケジューラ２１１、割込み処理手段２１０、割込みハンドラ２２０、割込み通知受取手段３０１、優先度更新手段３０３、優先度記録手段３０４、仮想計算機スケジュール手段３０５、保留割込み記録手段３０６は、実施の形態２のものと同一である。
【０１３４】
本実施の形態の割込みコントローラ５は、個々の割込みに対し割込みレベルを設定可能であり、特定のレベル以下の割込みのみをマスクする機能を持つ。つまり、割込みコントローラ５のレジスタの操作で特定のレベルをマスクレベルとして設定すると、マスクレベル以下に設定されている割込みは割込みコントローラ５からＣＰＵ１に通知されなくなる。これにより、設定レベルの低い割込みの通知を割込みコントローラ５でハードウェア的に遅延することができる。
【０１３５】
本実施の形態では、タスク１００、タスク２００、割込みハンドラ１２０、割込みハンドラ２２０に付与する優先度と、割込みコントローラ５に設定可能な割込みレベルは一対一の対応が可能とする。つまり、優先度ごとに対応する割込みレベルが有り、優先度ＡとＢにＡ＞Ｂの関係があれば、対応する割込みレベルａとｂにもａ＞ｂの関係が成り立つ。優先度と割込みレベルの関係は、例えば図２８のようなテーブルを保持し参照すれば良い。本実施の形態では、後述するように、タスク、割込みハンドラ実行中には、その優先度に対応した割込みレベルのマスクが割込みコントローラ５に設定される。その為、現在実行中の処理より優先度の低い割込みの場合、割込みレベルが設定されているマスクレベルより低いので割込みコントローラ５で保留され、ＣＰＵ１には割込みは発生しない。
【０１３６】
図２９は、仮想計算機＃１（１０）の処理の遷移と、仮想計算機制御装置３０の各構成要素の動作の関係を模式的に示している。なお、図２９の破線は、条件によって呼び出される場合とそうでない場合があることを示す。また、図２９では仮想計算機＃１（１０）について示したが、仮想計算機＃２（２０）に関しても同様である。仮想計算機＃１（１０）は、一例として、割込みハンドラ＃１１、タスク＃１３、タスク＃１４の順で処理が遷移しているものとする。
【０１３７】
なお、第３割込み通知受取手段３１３、第２割込み終了通知受取手段３１４、第２タスク切替え受取手段３１５は、割込みコントローラ５のレベルマスクを変更することができる。詳細は後述する。
【０１３８】
第３割込み通知受取手段３１３は、割込みが発生した時に割込み発生通知を受け取り、優先度更新手段３０３に割込み発生通知を通知する。優先度更新手段３０３は、仮想計算機＃１（１０）の優先度に割込みハンドラ＃１１の優先度を設定し、仮想計算機スケジュール手段３０５は、仮想計算機＃１（１０）が動作する（割込みハンドラ＃１１が処理される）と決定し、仮想計算機＃１（１０）に割込み発生通知をする。割込み発生通知を受けた仮想計算機＃１（１０）は割込みハンドラ＃１１を実行する。なお、一時的に割込みハンドラ＃１１の実行が保留される場合には、保留割込み記録手段３０６に、割込みハンドラ＃１１が記録されることになる。
【０１３９】
次に、割込みハンドラ＃１１が終了するタイミングで、第２割込み終了通知受取手段３１４は、割込み終了通知を受け取り、優先度更新手段３０３に割込み終了通知を通知する。優先度更新手段３０３は、仮想計算機＃１（１０）の優先度に仮想計算機＃１（１０）の次処理であるタスク＃１３の優先度を設定し、仮想計算機スケジュール手段３０５は、仮想計算機＃１（１０）が動作する（タスク＃１３が処理される）と決定し、仮想計算機＃１（１０）がタスク＃１３を実行する。なお、仮想計算機＃１（１０）が継続して実行するため、保留割込み記録手段３０６から記録中の割込みハンドラを取得する処理を行わなくてよい。
【０１４０】
最後に、タスク＃１３が終了するタイミングで、第２タスク切替え通知受取手段３１５は、タスク切替え通知を受け取り、優先度更新手段３０３にタスク切替え通知を通知する。優先度更新手段３０３は、仮想計算機＃１（１０）の優先度に仮想計算機＃１（１０）の次処理であるタスク＃１４の優先度を設定し、仮想計算機スケジュール手段３０５は、仮想計算機＃１（１０）が動作する（タスク＃１４が処理される）と決定し、仮想計算機＃１（１０）がタスク＃１４を実行する。
【０１４１】
図３０は、割込みが発生した場合の動作の一例を示すフローチャートである。
【０１４２】
本発明の実施の形態における仮想計算機制御装置３０を備える情報処理装置に割込みが発生し、処理を開始する（ステップＳ３０−１）。割込みが発生すると、第３割込み通知受取手段３１３が、割込み発生通知を受け取る。例えば、ＣＰＵ１が、割込みコントローラ５から割込みの発生通知を受けて割込みを検知した時にジャンプする先である割込みベクターを仮想計算機制御装置３０に設けることで、割込み発生時に、第３割込み通知受取手段３１３を動作させることが可能である。
【０１４３】
第３割込み通知受取手段３１３は、図５のような割込み要因とその対象となる仮想計算機を示した割込みレベルのテーブルを保持しているので、これらを参照し、どちらの仮想計算機（１０または２０）を対象にした割込みかを決定し、さらに割込みコントローラ５に設定する割込みレベルを決定する（ステップＳ３０−２）。そして、決定した割込みレベルを割込みコントローラ５に設定する（ステップＳ３０−３）。
【０１４４】
第３割込み通知受取手段３１３は、決定した対象仮想計算機（１０または２０）の情報と共に割込みの発生通知を、優先度更新手段３０３に通知し、優先度更新手段３０３は、受け取った対象仮想計算機（１０または２０）の情報を判断する（ステップＳ３０−４）。
【０１４５】
対象仮想計算機（１０または２０）が仮想計算機＃１（１０）である場合（ステップＳ３０−４が＃１）、優先度更新手段３０３は、仮想計算機＃１（１０）の優先度を、発生した割込みに対応する割込みハンドラ１２０の優先度に設定し、優先度記録手段３０４に記録されている優先度情報を更新する。一方、対象仮想計算機（１０または２０）が仮想計算機＃２（２０）である場合（ステップＳ３０−４が＃２）、優先度更新手段３０３は、仮想計算機＃２（２０）の優先度を、発生した割込みに対応する割込みハンドラ２２０の優先度に設定し、優先度記録手段３０４に記録されている優先度情報を更新する。これにより、対象の仮想計算機（１０または２０）は、次の処理である割込みハンドラ（１２０または２２０）の実行が完了するまでは、仮想計算機（１０または２０）の優先度を割込みハンドラ（１２０または２２０）の優先度と同じ値にすることができる。ただし、対象の仮想計算機（１０または２０）に対して既に割込みが発生しており、その割込みハンドラ（１２０または２２０）の実行中である場合、割込みハンドラ（１２０または２２０）の優先度に変化させると仮想計算機（１０または２０）の優先度が下がる場合がある。この場合には、優先度を変化（低下）させなくてもよい。
【０１４６】
優先度更新手段３０３は、優先度記録手段３０４に記録されている優先度情報を更新した後、仮想計算機スケジュール手段３０５を呼び出す（ステップＳ３０−７）。
【０１４７】
仮想計算機スケジュール手段３０５は、優先度記録手段３０４を参照して、次に実行する仮想計算機（１０または２０）を決定し、実行中の仮想計算機（１０または２０）を切り替えるか否かを判断する（ステップＳ３０−８）。
【０１４８】
ステップＳ３０−１で発生した割込みの対象の仮想計算機（１０または２０）を次に実行すると決定した場合（ステップＳ３０−８が割込みの対象）、仮想計算機スケジュール手段３０５は、実行対象の仮想計算機（１０または２０）に、受け取った割込みの発生を通知する（ステップＳ３０−９）。
【０１４９】
なお、割込みの発生の通知は、例えば、ＯＳ（１１０、２１０）に、通知を受けるインターフェイスを設け、そのインターフェイスを利用すればよい。あるいは、割込み時のハードウェアの動作をエミュレートしてもよい。一般に、割込み発生時にはハードウェアにより、割込み発生の番地などをレジスタやスタックに記録し、割込み処理にジャンプするという動作が行なわれる。従って、割込み発生時と同じレジスタやスタックの状態にして、割込みの対象であるＯＳ（１１０、２１０）内の割込み処理手段にジャンプすれば、割込みハンドラ（１２０または２２０）を実行させることができる。
【０１５０】
一方、ステップＳ３０−１で発生した割込みの対象の仮想計算機（１０または２０）を次に実行しないと決定した場合（ステップＳ３０−８が割込みの対象ではない）、仮想計算機スケジュール手段３０５は、ステップＳ３０−１で発生した割込みに対応する割込みハンドラ（１２０または２２０）を、保留割込み記録手段３０６に記録し（ステップＳ３０−１０）、処理を終了する（ステップＳ３０−１１）。
【０１５１】
なお、保留割込み記録手段３０６は、仮想計算機（１０または２０）ごとの記録領域を備え、ソフトウェア的に記録すればよい。また、割込みコントローラ５が、レジスタ等の操作によってハードウェア的に割込みを保留する機能を備えるならば、そのような機能を用いてもよい。
【０１５２】
最後に、仮想計算機スケジュール手段３０５は、実行中の仮想計算機（１０または２０）の切替えが必要な場合（例えば、実行中の仮想計算機（１０または２０）が仮想計算機２０であり、実行対象の仮想計算機（１０または２０）が１０である場合）、実行対象の仮想計算機１０の切替えを行い、保持している現在実行中の仮想計算機２０の情報を更新する。
【０１５３】
図３１は、割込み処理が終了して、第２割込み終了通知受取手段３１４が仮想計算機（１０または２０）から割込み終了通知を受け付けたときの動作の一例を説明するフローチャートである。
【０１５４】
本発明の実施の形態における第２割込み終了通知受取手段３１４が、割込み処理を終了する仮想計算機（１０または２０）から割込み終了通知を受け取り、処理を開始する（ステップＳ３１−１）。例えば、ＯＳ内の割込み処理手段１１２、２１２から割込みハンドラ終了時に仮想計算機制御装置３０に通知するようにし、それを契機に動作させれば良い。割込み終了通知を受けた第２割込み終了通知受取手段３１４は、割込み終了通知を優先度更新手段３０３に通知し、優先度更新手段３０３は、優先度記録手段３０４に記録されている割込み処理を終了する仮想計算機（１０または２０）の優先度を、割込み前の処理の優先度に更新する（ステップＳ３１−２）。
【０１５５】
次に、優先度更新手段３０３は仮想計算機スケジュール手段３０５を呼び出し、仮想計算機スケジュール手段３０５は、仮想計算機１０と仮想計算機２０との優先度を比較し、優先度の高い仮想計算機に切り替える（ステップＳ３１−３）。そして、次に実行する処理の優先度に応じた割込みレベルが設定される（ステップＳ３１−４）。これにより、次に実行する処理より優先度の低い割込みはＣＰＵ１に通知されなくなる。本実施の形態では、デバイス３は割込みを起こしているが、割込みレベル（＝優先度）が低い為にＣＰＵ１では割込みが発生してない場合がある。ステップＳ３１−４で新たに設定される割込みレベルが、割込みコントローラ５で遅延されている割込みのレベルより低い場合、この時点でＣＰＵ１において割込みが発生する。これは、遅延されていた割込みの優先度が、次に実行される処理より優先度が高いことを意味する。従って、この場合、割込みの通知により第３割込み通知受取手段３１３が動作して、優先度に従った順で処理が行なわれる。
【０１５６】
その後、仮想計算機スケジュール手段３０５が切り替えた仮想計算機（１０または２０）が割込みに対応する割込みハンドラ（１２０または２２０）を保留割込み記録手段３０６に記録しているかを判断する（ステップＳ３１−５）。
【０１５７】
切り替わった仮想計算機（１０または２０）の保留割込み記録手段３０６に割込みハンドラ（１２０または２２０）が記録されている場合、保留割込み記録手段３０６に記録されている割込みハンドラ（１２０または２２０）を実行する（ステップＳ３１−６）。割込みハンドラ（１２０または２２０）が保留割込み記録手段３０６に記録されているということは、割込み発生時（ステップＳ４−１）に、割込んだ仮想計算機（１０または２０）が仮想計算機スケジュール手段３０５に選択されなかったことを意味する。そして、割込み発生時（ステップＳ３０−１）に、割込みの対象の仮想計算機（１０または２０）の優先度が、その割込みに対応する割込みハンドラの優先度に設定される（ステップＳ３０−５、ステップＳ３０−６）ので、仮想計算機スケジュール手段３０５が、割込みを保留している仮想計算機（１０または２０）を次に実行すると判断した場合（ステップＳ３１−５）、保留されている割込み処理は、もう一方の仮想計算機（１０または２０）が次に実行する処理より高いことを意味する。つまり、ここで保留されている割込み処理を実行することが、優先度に従った実行となる。そして、切り替わった仮想計算機（１０または２０）の保留割込み記録手段３０６に割込みハンドラ（１２０または２２０）が記録されていない場合には、第２タスク切替え通知受取手段３１５が仮想計算機（１０または２０）からタスク切替え通知を受け付けたときの動作は終了（ステップＳ３１−７）し、ステップＳ３１−３で決定した仮想計算機（１０または２０）が実行される。
【０１５８】
なお、上述したように、仮想計算機（１０または２０）の内部に保留割込み記録手段３０６がある場合には、仮想計算機１０と仮想計算機２０がそれぞれ保留割込み記録手段３０６を持っていることになるので、仮想計算機スケジュール手段３０５は、仮想計算機（１０または２０）に割込み通知を行い、これを受けた仮想計算機（１０または２０）が保留割込み記録手段３０６に記録している割込みハンドラ（１２０または２２０）を実行するようにしてもよい。
【０１５９】
さらに、上述したように、仮想計算機（１０または２０）の内部に保留割込み記録手段３０６がある場合には、仮想計算機１０と仮想計算機２０がそれぞれ保留割込み記録手段３０６を持っていることになるので、仮想計算機スケジュール手段３０５は、仮想計算機（１０または２０）に割込み通知を行い、これを受けた仮想計算機（１０または２０）が保留割込み記録手段３０６に記録している割込みハンドラ（１２０または２２０）を実行するようにしてもよい。この場合、仮想計算機（１０または２０）が保留割込み記録手段３０６を持っているので、仮想計算機スケジュール手段３０５は、仮想計算機（１０または２０）に割込み通知を行い、これを受けた仮想計算機（１０または２０）が保留割込み記録手段３０６に記録してある割込みハンドラ（１２０または２２０）を実行する。例えば、前述したように仮想計算機（１０または２０）のＯＳ（１１０または２１０）に割込みハンドラ（１２０または２２０）の実行命令を受け取るインターフェイスを設ければ、このインターフェイスを用いることで割込み発生をＯＳ（１１０または２１０）に通知し、割込みハンドラ（１２０または２２０）を実行させることが可能である。あるいは、ハードウェアを操作することで割込みを発生させることができるなら、実際に割込みを再発生させても良い。あるいは、別の方法として割込み時のハードウェアの動作をエミュレートしてもよい。例えば、割込み発生時にはハードウェアにより、割込み発生の番地などをレジスタやスタックに記録し、ＣＰＵを割込みモードにして処理にジャンプするという動作が行なわれる。
【０１６０】
従って、割込み発生時と同じレジスタやスタック状態、ＣＰＵモードにして、ＯＳ（１１０または２１０）内の割込み処理手段にジャンプすれば、その時点で割込みが発生したかの様にＯＳ（１１０または２１０）に割込みハンドラ（１２０または２２０）を実行させることができるので、ＯＳ（１１０または２１０）に対する割込みの通知として用いることが出来る。あるいは、割込みコントローラ５の機能によりハードウェア的に割込みを保留している場合は、ここで保留を解除して割込みの発生をＣＰＵ１に通知させてもよい。
【０１６１】
図３２は、タスクが切り替わり、第２タスク切替え通知受取手段３１５が仮想計算機（１０または２０）からタスク切替え通知を受け付けたときの動作の一例を説明するフローチャートである。
【０１６２】
本発明の実施の形態における第２タスク切替え通知受取手段３１５が、タスク処理を切り替える仮想計算機（１０または２０）からタスク切替え通知を受け取り、処理を開始する（ステップＳ３２−１）。例えば、ＯＳ内のタスクスケジューラ１１１、２１１からタスクスイッチ時に仮想計算機制御装置３０に通知するようにし、それを契機に動作させれば良い。タスク切替え通知を受けた第２タスク切替え通知受取手段３１５は、タスク切替え通知を優先度更新手段３０３に通知し、優先度更新手段３０３は、優先度記録手段３０４に記録されているタスクを切り替える仮想計算機（１０または２０）の優先度を、次に実行するタスクの優先度に更新する（ステップＳ３２−２）。
【０１６３】
次に、優先度更新手段３０３は仮想計算機スケジュール手段３０５を呼び出し、仮想計算機スケジュール手段３０５は、仮想計算機１０と仮想計算機２０との優先度を比較し、優先度の高い仮想計算機（１０または２０）に切り替える（ステップＳ３２−３）。そして、次に実行する処理の優先度に応じた割込みレベルが設定される（ステップＳ３２−４）。これにより、次に実行する処理より優先度の低い割込みはＣＰＵ１に通知されなくなる。本実施の形態では、デバイス３は割込みを起こしているが、割込みレベル（＝優先度）が低い為にＣＰＵ１では割込みが発生してない場合がある。ステップＳ３２−４で新たに設定される割込みレベルが、割込みコントローラ５で遅延されている割込みのレベルより低い場合、この時点でＣＰＵ１において割込みが発生する。これは、遅延されていた割込みの優先度が、次に実行される処理より優先度が高いことを意味する。従って、この場合、割込みの通知により割込み通知受取手段３０１が動作して、優先度に従った順で処理が行なわれる。
【０１６４】
仮想計算機スケジュール手段３０５が切り替えた仮想計算機（１０または２０）が割込みに対応する割込みハンドラ（１２０または２２０）を保留割込み記録手段３０６に記録しているかを判断する（ステップＳ３２−５）。切り替わった仮想計算機（１０または２０）の保留割込み記録手段３０６に割込みハンドラ（１２０または２２０）が記録されている場合、保留割込み記録手段３０６に記録されている割込みハンドラ（１２０または２２０）を実行する（ステップＳ３２−６）。そして、第２タスク切替え通知受取手段３１５が仮想計算機からタスク切替え通知を受け付けたときの動作は終了（ステップＳ３２−７）し、ステップＳ３２−３で決定した仮想計算機（１０または２０）が実行される。また、割込みハンドラが保留割込み記録手段３０６に記録されているということは、割込み発生時（ステップＳ３０−１）に、割込んだ仮想計算機（１０または２０）が仮想計算機スケジュール手段３０５に選択されなかったことを意味する。
【０１６５】
そして、割込み発生時（ステップＳ３０−１）に、割込みの対象の仮想計算機（１０または２０）の優先度が、その割込みに対応する割込みハンドラ（１２０または２２０）の優先度に設定されるので、仮想計算機スケジュール手段３０５が、割込みを保留している仮想計算機（１０または２０）を次に実行すると判断した場合（ステップＳ３２−３）、保留されている割込み処理は、もう一方の仮想計算機が次に実行する処理より高いことを意味する。つまり、ここで保留されている割込み処理を実行することが、優先度に従った実行となる。そして、切り替わった仮想計算機（１０または２０）の保留割込み記録手段３０６に割込みハンドラ（１２０または２２０）が記録されていない場合には、第２タスク切替え通知受取手段３１５が仮想計算機からタスク切替え通知を受け付けたときの動作は終了（ステップＳ３２−７）し、ステップＳ３２−３で決定した仮想計算機（１０または２０）が実行される。
【０１６６】
なお、上述したように、仮想計算機（１０または２０）の内部に保留割込み記録手段３０６がある場合には、仮想計算機１０と仮想計算機２０がそれぞれ保留割込み記録手段３０６を持っていることになるので、仮想計算機スケジュール手段３０５は、仮想計算機（１０または２０）に割込み通知を行い、これを受けた仮想計算機（１０または２０）が保留割込み記録手段３０６に記録している割込みハンドラ（１２０または２２０）を実行するようにしてもよい。
【０１６７】
さらに、上述したように、仮想計算機（１０または２０）の内部に保留割込み記録手段３０６がある場合には、仮想計算機１０と仮想計算機２０がそれぞれ保留割込み記録手段３０６を持っていることになるので、仮想計算機スケジュール手段３０５は、仮想計算機（１０または２０）に割込み通知を行い、これを受けた仮想計算機（１０または２０）が保留割込み記録手段３０６に記録している割込みハンドラ（１２０または２２０）を実行するようにしてもよい。この場合、仮想計算機（１０または２０）が保留割込み記録手段３０６を持っているので、仮想計算機スケジュール手段３０５は、仮想計算機（１０または２０）に割込み通知を行い、これを受けた仮想計算機（１０または２０）が保留割込み記録手段３０６に記録してある割込みハンドラ（１２０または２２０）を実行する。例えば、前述したように仮想計算機（１０または２０）のＯＳ（１１０または２１０）に割込みハンドラ（１２０または２２０）の実行命令を受け取るインターフェイスを設ければ、このインターフェイスを用いることで割込み発生をＯＳ（１１０または２１０）に通知し、割込みハンドラ（１２０または２２０）を実行させることが可能である。あるいは、ハードウェアを操作することで割込みを発生させることができるなら、実際に割込みを再発生させても良い。あるいは、別の方法として割込み時のハードウェアの動作をエミュレートしてもよい。例えば、割込み発生時にはハードウェアにより、割込み発生の番地などをレジスタやスタックに記録し、ＣＰＵを割込みモードにして処理にジャンプするという動作が行なわれる。
【０１６８】
従って、割込み発生時と同じレジスタやスタック状態、ＣＰＵモードにして、ＯＳ（１１０または２１０）内の割込み処理手段にジャンプすれば、その時点で割込みが発生したかの様にＯＳ（１１０または２１０）に割込みハンドラ（１２０または２２０）を実行させることができるので、ＯＳ（１１０または２１０）に対する割込みの通知として用いることが出来る。あるいは、割込みコントローラ５の機能によりハードウェア的に割込みを保留している場合は、ここで保留を解除して割込みの発生をＣＰＵ１に通知させてもよい。
【０１６９】
以上の様に、本実施の形態では、処理の優先度に応じた割込みレベルを設定することで、割込みの優先度に従った順での実行が可能である。
【０１７０】
なお、割込みコントローラが割込みレベルマスクの機能を持たない場合においても、割込み要因ごとのマスクが可能な割込みコントローラなら、擬似的に割込みレベルの設定が可能である。図３３にその方法を記す。マスクレベルを設定する代わりに、マスクレベルより割込みレベルを低く設定した割込みを全てマスクする。図３３では１がマスクされた状態であることを示す。これにより、特定の優先度より低い割込みのみを遅延させることが出来る。本実施の形態では、この方法を用いても良い。
【０１７１】
なお、保留割込み記録手段３０６を仮想計算機（１０または２０）の方に設けても良い。この場合は、実施の形態１、２、３、４と同様に仮想計算機スケジュール手段３０５が仮想計算機に割込み発生通知を通知し、あとは仮想計算機（１０または２０）の方で保留割込み処理を実行させるようにする。
【０１７２】
また、本実施の形態においても、実施の形態３の優先度調整手段３０９を設けても良い。また、本実施の形態では、優先度と割込みレベルは１対１の関係にあるが、割込みコントローラ５の仕様によっては設定できるレベルの数が十分でないこともある。このような場合は、優先度のある程度の範囲を一つの割込みレベルに対応させたり、優先度の一部の範囲のみに本実施の形態を適用し、他の範囲には実施の形態１を用いるといった形でも良い。
【０１７３】
以上、本発明によれば、複数の仮想計算機に渡り情報処理装置の特性に合わせて設計された優先度に従って、タスク、割込み処理の実行が可能である。
【０１７４】
なお、本明細書では仮想計算機が２つの場合を実施の形態として示したが、本発明はこれに限定するのではない。３つ以上の仮想計算機を設ける場合でも、同様に本発明を用いることが出来る。また、ＯＳによっては、割込み処理終了時には必ずタスクスケジューリングを行なうものも有る。そのようなＯＳの場合は、割込み終了時には必ずタスク切替え通知受取手段３０８が呼ばれるので、割込み終了通知受取手段３０７の役割をタスク切替え通知受取手段３０８に統合してもよい。
【０１７５】
また、本発明の各機能ブロックは典型的にはソフトウェアとして実現されるが、集積回路であるＬＳＩとして実現しても良い。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  ＰｒｏｇｒａｍｍａｂｌｅＧａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【産業上の利用可能性】
【０１７６】
本発明にかかる仮想計算機制御装置、及び方法は、情報処理装置を用いるものであれば幅広い分野において有効である。例えば、大型計算機やパーソナルコンピュータのような形態のみならず、各種の家電機器、携帯電話のような通信機器、産業機器、乗用機器などでも利用可能である。
【図面の簡単な説明】
【０１７７】
【図１】本発明の実施の形態における仮想計算機制御装置を備えた情報処理装置の構成を示すブロック図
【図２】本発明の実施の形態における仮想計算機制御装置の優先度記録手段のフォーマットの一例を示す図
【図３】本発明の実施の形態１における機能ブロックの動作の関係を示す図
【図４】本発明の実施の形態における仮想計算機制御装置の割込み発生時の処理の流れの一例を示すフローチャート
【図５】割込み要因と対象の仮想計算機の関係を記述するテーブルの例の図
【図６】本発明の実施の形態１における切替え通知受取時の動作を説明するフローチャート
【図７】本発明の実施の形態１における動作の一例を示す図
【図８】本発明の実施の形態１における動作の一例を示す図
【図９】本発明の実施の形態１における動作の一例を示す図
【図１０】本発明の実施の形態２における仮想計算機制御装置を構築する情報処理装置の概略構成図
【図１１】本発明の実施の形態２における機能ブロックの動作の関係を示す図
【図１２】本発明の実施の形態２における割込み処理終了時の動作を説明するフローチャート
【図１３】本発明の実施の形態２におけるタスクスイッチ時の動作を説明するフローチャート
【図１４】本発明の実施の形態２における動作の一例を示す図
【図１５】本発明の実施の形態２における動作の一例を示す図
【図１６】本発明の実施の形態２における動作の一例を示す図
【図１７】本発明の実施の形態３における仮想計算機制御装置を構築する情報処理装置の概略構成図
【図１８】本発明の実施の形態３における優先度の調整の例を説明する図
【図１９】本発明の実施の形態３における優先度の調整の例を説明する図
【図２０】本発明の実施の形態３における優先度の調整の例を説明する図
【図２１】本発明の実施の形態４における仮想計算機制御装置を構築する情報処理装置の概略構成図
【図２２】本発明の実施の形態４における割込みハンドラ構成を示す図
【図２３】本発明の実施の形態４における機能ブロックの動作の関係を示す図
【図２４】本発明の実施の形態４における割込み発生時の動作を説明するフローチャート
【図２５】本発明の実施の形態４における割込み処理終了時の動作を説明するフローチャート
【図２６】本発明の実施の形態４におけるタスクスイッチ時の動作を説明するフローチャート
【図２７】本発明の実施の形態５における仮想計算機制御装置を構築する情報処理装置の概略構成図
【図２８】本発明の実施の形態５における優先度と割込みレベルの対応の一例を示す図
【図２９】本発明の実施の形態５における機能ブロックの動作の関係を示す図
【図３０】本発明の実施の形態５における割込み発生時の動作を説明するフローチャート
【図３１】本発明の実施の形態５における割込み処理終了時の動作を説明するフローチャート
【図３２】本発明の実施の形態５におけるタスクスイッチ時の動作を説明するフローチャート
【図３３】擬似的に割込みレベルマスクを行なう場合の一例を示す図
【符号の説明】
【０１７８】
１    ＣＰＵ
２    割込みコントローラ
３    周辺デバイス
４    メモリ
５    割込みコントローラ
１０    仮想計算機
２０    仮想計算機
３０    仮想計算機制御装置
１００    タスク
１１０    ＯＳ
１１１    タスクスケジューラ
１１２    割込み処理手段
１２０    割込みハンドラ
１２１    実割込みハンドラ
２００    タスク
２１０    ＯＳ
２１１    タスクスケジューラ
２１２    割込み処理手段
２２０    割込みハンドラ
２２１    実割込みハンドラ
３０１    割込み通知受取手段
３０２    切替え通知受取手段
３０３    優先度更新手段
３０４    優先度記録手段
３０５    仮想計算機スケジュール手段
３０６    保留割込み記録手段
３０７    割込み終了通知受取手段
３０８    タスク切替え通知受取手段
３０９    優先度調整手段
３１０    第２割込み通知受取手段
３１１    実割込み通知受取手段
３１２    実保留割込み記録手段
３１３    第３割込み通知受取手段
３１４    第２割込み終了通知受取手段
３１５    第２タスク切替え通知受取手段
【図１】
2008234116.tif 000003
【図２】
2008234116.tif 000004
【図３】
2008234116.tif 000005
【図４】
2008234116.tif 000006
【図５】
2008234116.tif 000007
【図６】
2008234116.tif 000008
【図７】
2008234116.tif 000009
【図８】
2008234116.tif 000010
【図９】
2008234116.tif 000011
【図１０】
2008234116.tif 000012
【図１１】
2008234116.tif 000013
【図１２】
2008234116.tif 000014
【図１３】
2008234116.tif 000015
【図１４】
2008234116.tif 000016
【図１５】
2008234116.tif 000017
【図１６】
2008234116.tif 000018
【図１７】
2008234116.tif 000019
【図１８】
2008234116.tif 000020
【図１９】
2008234116.tif 000021
【図２０】
2008234116.tif 000022
【図２１】
2008234116.tif 000023
【図２２】
2008234116.tif 000024
【図２３】
2008234116.tif 000025
【図２４】
2008234116.tif 000026
【図２５】
2008234116.tif 000027
【図２６】
2008234116.tif 000028
【図２７】
2008234116.tif 000029
【図２８】
2008234116.tif 000030
【図２９】
2008234116.tif 000031
【図３０】
2008234116.tif 000032
【図３１】
2008234116.tif 000033
【図３２】
2008234116.tif 000034
【図３３】
2008234116.tif 000035