JP2008234116A - 仮想計算機制御装置 - Google Patents

仮想計算機制御装置 Download PDF

Info

Publication number
JP2008234116A
JP2008234116A JP2007070154A JP2007070154A JP2008234116A JP 2008234116 A JP2008234116 A JP 2008234116A JP 2007070154 A JP2007070154 A JP 2007070154A JP 2007070154 A JP2007070154 A JP 2007070154A JP 2008234116 A JP2008234116 A JP 2008234116A
Authority
JP
Japan
Prior art keywords
interrupt
virtual machine
priority
task
notification
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007070154A
Other languages
English (en)
Inventor
Katsushige Amano
克重 天野
Masahiko Saito
雅彦 齊藤
Tadao Tanigawa
忠雄 谷川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2007070154A priority Critical patent/JP2008234116A/ja
Publication of JP2008234116A publication Critical patent/JP2008234116A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】割込み処理を含んだ仮想計算機よりも、優先度が高いタスクを含む仮想計算機があったときでも、優先度が高いタスクを含む仮想計算機を優先的に実行させる。
【解決手段】個々の仮想計算機に属するタスクと割込みハンドラに、複数の仮想計算機の間で同一の方式に従った優先度を付与する。割込みが発生した際には、発生した割込みに対する割込みハンドラの優先度が、実行中のタスクまたは割込みハンドラより優先度が低い場合は、その割込みハンドラを保留する。仮想計算機の実行するタスクと割込みハンドラの遷移を監視し、保留中の割込みハンドラの優先度が、仮想計算機が次に実行するタスクまたは割込みハンドラより高くなった時に、保留中の割込みハンドラが属する仮想計算機に保留中の割込みハンドラを実行させる。
【選択図】図1

Description

本発明は、一つの物理計算機において、複数のオペレーティングシステム(以下OSと略す)とそのアプリケーションを切り替えながら動作させる仮想計算機技術において、特に、複数の仮想計算機の切替えを制御する仮想計算機制御装置に関するものである。
情報処理装置で行なう処理の性質は様々である。例えば、リアルタイム性能を要する処理はリアルタイムOS(以下RTOSと略す)を用いるのが適切である。一方、グラフィック機能の豊富なOSを用いれば、グラフィック機能を活かした優れたユーザインターフェイスなどを提供することが出来る。一つの機器でこのような性質の違う処理を同時に行ないたい場合には、仮想計算機技術を用いることができる。
仮想計算機技術は、一つの物理的な計算機で複数のOSを同時に用いる技術であり、サーバーの分野などで用いられている。OSとそのアプリケーションは、それぞれ仮想的な計算機となり、一つの物理計算機上で複数の仮想計算機が時分割で実行される。
従来の複数の仮想計算機の切替えの制御(仮想計算機スケジュール)としては、仮想計算機単位に優先度を付ける方法がある。この方法では、典型的には、優先度の高い仮想計算機の処理が全て終了してアイドル状態になった時に、次の優先度の仮想計算機に切り替わる。従って優先度の高い仮想計算機に属するなら、特に急がない処理であっても、優先度の低い仮想計算機に属する全ての処理より優先して先に実行される。その為、例えば、優先度の低い仮想計算機に、満たすべきデッドラインがある様なリアルタイム性能を要求する処理を設けると、優先度の高い仮想計算機の処理を先に実行することにより、優先度の低い仮想計算機での処理の実行が遅れてリアルタイム性能の要件を満たせなくなる場合がある。つまり、仮想計算機単位で固定された優先度を付けるような仮想計算機スケジュールでは、複数の仮想計算機それぞれにリアルタイム性能を要求する処理を設けることは困難である。
この課題を解決するために、仮想計算機の優先度を、実行する処理によって変化させるものがあった(たとえば、特許文献1参照)。これは、実行するタスクの優先度(OSがタスク管理の為に用いるタスクの優先度)を変換して、そのタスクを実行する仮想計算機の優先度とするものである。優先度の高いタスクを実行する場合は、仮想計算機の優先度も高くなるので、優先度の高い仮想計算機の方へ切り替えることで、属する仮想計算機に関わらず優先度の高いタスクから実行することができる。
特開2000−242512号公報
計算機での処理単位としては、タスクだけでなく、これに加え、割込み発生時に実行される処理(割込みハンドラ)がある。仮想計算機に関わらず重要な処理から優先して実行させる仮想計算機スケジュールを行う場合、一方の仮想計算機のタスクが別の仮想計算機の割込み処理より重要であり、優先して実行したい場合もある。例えば、一方の仮想計算機で外手段とのデータ交換、もう一方がユーザと対話的なインターフェイスをうけ持つ場合を考える。ここでデータ交換が極めて高いリアルタイム性能を必要とする場合、インターフェイスに関連する割込み、例えばキー操作による割込み等がデータ交換を極力妨げないようにする必要がある。
通常、割込みハンドラは割込みの発生を外手段から通知されることにより、最優先で実行される。割込みの通知は、デバイスより発生する信号をCPUが受け、CPUの動作としてCPUのモードの切替えやレジスタの退避、特定アドレスへのジャンプなどが行なわれことで実現され、仮想計算機内のOSは、レジスタの読み出し、書き込みなどハードウェアの操作も行ないながら、割込みハンドラを実行する。従って、OSによる割込み処理の制御は、タスクの制御とはまったく異なったものとなる。
しかしながら、前記従来の技術では、割込みハンドラに関しては、全てのタスクより優先し割込み発生時に即座に実行する方法を開示しており、割込み処理を含んだ仮想計算機スケジュールの方法は開示されていない。割込みの処理はタスクとは別の制御となっているため、割込みに優先度を付与し、その割込みを実行する仮想計算機の優先度としても、割込み処理を最優先に実行する構成であることから、割込み処理を優先度に応じて実行させることは出来ない。つまり、従来の技術では、複数の仮想計算機に属するタスク、割込み処理の両方に優先度を付けても、割込み処理を含んだ仮想計算機よりも優先度が高いタスクを含む仮想計算機を優先的に実行させることができないという課題を有していた。
本発明は、前記従来の課題を解決するもので、割込み処理を含んだ仮想計算機よりも、優先度が高いタスクを含む仮想計算機があったときでも、割込み処理を含んだ仮想計算機を実行するのではなく、優先度が高いタスクを含む仮想計算機を優先的に実行させることができる仮想計算機制御装置を提供することを目的とする。
前記従来の課題を解決するために、本発明の仮想計算機制御装置は、前記仮想計算機の優先度を記録する優先度記録手段と、一時的に実行を保留する割込みに対応する割込みハンドラを記録する保留割込み記録手段と、前記仮想計算機への割込み通知を受け取り、前記割込みの発生を通知する割込み通知受取手段と、前記仮想計算機で実行中の処理が切り替わる場合に、前記仮想計算機から通知される切替え通知を受け取り、前記切替え通知を通知する切替え通知受取手段と、前記割込み通知受取手段が前記割込み発生通知を受け取ると、前記割込みを実行する前記仮想計算機に対応する前記優先度記録手段に記録された優先度を、前記受け取った割込みに対応する割込みハンドラの優先度に更新する優先度更新手段と、前記優先度更新手段が前記仮想計算機に対応する前記優先度記録手段に記録された優先度を更新した場合に、前記更新後の優先度を用いて実行中の前記仮想計算機を切替えるか否かを決定し、前記受け取った割込みを実行する前記仮想計算機に切替えないと決定した場合、前記割込みに対応する割込みハンドラを、前記仮想計算機の前記保留割込み記録手段に記録する仮想計算機スケジュール手段とを備え、前記優先度更新手段は、更に、前記切替え通知受取手段から前記切替え通知を受け取ると、前記切替え通知を送信した前記仮想計算機に対応する前記優先度記録手段に記録された優先度を、前記仮想計算機が切替える処理の優先度に更新し、前記仮想計算機スケジュール手段は、前記優先度更新手段が前記仮想計算機に対応する前記優先度記録手段に記録された優先度を更新する場合に、前記更新後の優先度を用いて実行中の前記仮想計算機を切替えるか否かを決定し、実行中の前記仮想計算機を切替えると決定し、さらに、前記仮想計算機の前記保留割込み記録手段に前記割込みハンドラが記録されているときには、前記割込みハンドラを取得し、切替え後の仮想計算機に実行を指示することを特徴とする。
本構成によって、割込み処理を含んだ仮想計算機よりも、優先度が高いタスクを含む仮想計算機があれば、優先度が高いタスクを含む仮想計算機を優先的に実行させることができる。
本発明によれば、割込み処理を含んだ仮想計算機よりも、優先度が高いタスクを含む仮想計算機があったときでも、割込み処理を含んだ仮想計算機を実行するのではなく、優先度が高いタスクを含む仮想計算機を優先的に実行させることができるので、割込み処理を含んだ仮想計算機スケジュールを、処理単位の優先度に応じて適切に行うことができる。
以下本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
図1は、本発明の実施の形態における仮想計算機制御装置を備えた情報処理装置の構成を示す図である。情報処理装置は、中央演算装置(CPU)1、割込みコントローラ2、周辺デバイス3、メモリ4とを備えている。CPU1は、処理能力が十分であれば任意のものが利用可能である。割込みコントローラ2は、周辺デバイス3から発生する割込み要求をCPU1に通知する。周辺デバイス3は、各種の入出力装置であり、情報処理装置の使用目的に応じたものを利用する。例えば、キーデバイスや通信デバイスや表示デバイス、デコーダやエンコーダ、DSPやDMAコントローラなどである。メモリ4には、仮想計算機10と、仮想計算機20と、仮想計算機制御装置30が格納されている。メモリ4は、十分な機能及び容量があればランダムアクセスメモリ(RAM)やフラッシュメモリのような任意のタイプのものを使用することができる。また、メモリ4は、単一のメモリ装置で構成されている必要はなく、同種の複数のメモリ又はリードオンリーメモリ(ROM)を含む異なる種類のメモリの組み合わせであってもよい。さらに、メモリ4以外に、例えばハードディスクのような外部記憶装置を設け、情報処理装置の動作に問題の無い範囲で外部記憶装置にメモリ4の内容を移動させてもよい。
仮想計算機10は、タスク100と、OS110を備えている。また、OS110は、タスクスケジューラ111と割込み処理手段112を含んでいる。タスクスケジューラ111は、次に実行すべきタスクを決定し、決定したタスクを実行する。割込み処理手段112は、割込みハンドラ120を含み、割込み発生を受け取ると、割込みの要因に応じた割込みハンドラを実行する。仮想計算機20は、仮想計算機10と同様に、タスク200と、OS210を備えている。また、OS210は、タスクスケジューラ211と割込み処理手段212を含んでいる。割込み処理手段212は、割込みハンドラ220を含んでいる。タスクスケジューラ211と割込み処理手段212の動作は、仮想計算機10に含まれるタスクスケジューラ111と割込み処理手段112と同様である。なお、各タスク(100、200)や割込みハンドラ(120、220)毎に、優先度が設定されているものとする。
本発明の実施の形態における情報処理装置では、図1に示すように複数の仮想計算機(10、20)を備え、それぞれの仮想計算機(10、20)が異なるOS(110、210)と、タスク(100、200)、割込みハンドラ(120、220)を備えている。仮想計算機10と仮想計算機20は、後述する仮想計算機制御装置30により切り替えられ、複数の仮想計算機(10、20)が同時に動作することなく、時分割で実行される。これにより、一つの物理的な計算機で複数の計算機の働きをさせることができる。例えば、リアルタイム性能を要求される処理は、仮想計算機10のタスク100や割込みハンドラ120として実装し、OS110にリアルタイム性能に優れたRTOSを用いる。同時にユーザインターフェイスに関する処理は、仮想計算機20のタスク200や割込みハンドラ220として実装し、OS210にグラフィック機能の豊富なOSを用いる。このような構成をとることで、本実施の形態の情報処理装置は、リアルタイム性能と、豊富なグラフィック機能を用いた優れたユーザインターフェイスを同時に実現できる。
なお、OS110とOS210を異なるOSにする必要は必ずしもなく、OS110とOS210に同じOSを用いてもよい。
仮想計算機制御装置30は、複数の仮想計算機の切り替えを制御する。仮想計算機制御装置30は、割込み通知受取手段301、切替え通知受取手段302、優先度更新手段303、優先度記録手段304、仮想計算機スケジュール手段305、保留割込み記録手段306とを備える。
割込み通知受取手段301は、仮想計算機(10または20)への割込みが発生した際に、割込みコントローラ2からの割込みの発生通知を、CPU1を介して受け取り、優先度更新手段303に通知する。
なお、本実施の形態では、割込みコントローラ2からCPU1を介して仮想計算機制御装置30(割込み通知受取手段301)に通知されるとしたが、割込みコントローラ2から仮想計算機(10、20)を介して仮想計算機制御装置30(割込み通知受取手段301)に割込みの発生通知を通知してもよい。
切替え通知受取手段302は、仮想計算機(10、20)から実行中の処理の切替え通知を受け取り、優先度更新手段303に通知する。
優先度更新手段303は、割込み通知受取手段301と切替え通知受取手段302からの通知を受け取り、仮想計算機(10、20)の優先度を更新するタイミングと判断し、仮想計算機10および仮想計算機20の優先度の更新処理を行う。具体的には、割込み通知受取手段301や切替え通知受取手段302からの通知に基づき、仮想計算機10および仮想計算機20の優先度を、それぞれが実行するタスクまたは割込みハンドラの優先度に設定し、優先度記録手段304に記録された優先度情報を更新する。これにより、仮想計算機(10、20)の優先度は、次に実行するタスク(100、200)または割込みハンドラ(110、210)の優先度と同じになる。
優先度記録手段304は、仮想計算機(10、20)の優先度を優先度情報として保持しており、優先度更新手段303により優先度情報の更新が行われる。図2に、優先度テーブルのフォーマットの一例を示している。詳細は、後述する。
なお、ここでは、複数の仮想計算機(10、20)の優先度をテーブルとして保持するとしたが、各仮想計算機(10または20)に自分の仮想計算機(10または20)の優先度情報を持たせるようにしてもよい。この場合、優先度更新手段303は、保持している自分の優先度情報の更新が必要な仮想計算機(10、20)に対し、優先度情報の更新を行うことになる。
仮想計算機スケジュール手段305は、優先度更新手段303が優先度の更新をした場合に、更新後の優先度を用いて、実行中の仮想計算機を切り替えるか否かを判断し、判断した結果に基づき、実行対象の仮想計算機(10、20)の切替えを制御する。また、保留割込み記録手段306への割込みハンドラ(120、220)の書き込みや読み出しを行う。また、現在実行中の仮想計算機(10、20)の情報を保持しているものとする。詳細は、図面を用いて後で説明する。
保留割込み記録手段306は、一時的に実行を保留する割込みに対応する割込みハンドラを記録する。また、割込みハンドラの書き込みや読み出しは、仮想計算機スケジュール手段305により行われる。
なお、優先度記録手段304と保留割込み記録手段306は、各仮想計算機(10または20)にそれぞれ自分の優先度情報と保留割込み記録手段306をもたせてもよい。
図2は、優先度記録手段304の優先度テーブルのフォーマットの一例を示している。優先度テーブル304は、仮想計算機(10、20)の識別子(#1、#2)と、各仮想計算機(10または20)の優先度を示す優先度情報を組みとして記憶している。また、優先度を数字で表し、数字が小さいほど優先度としては高いとしている。
仮想計算機#1(10)はOS110を備えており、割込みハンドラ#11、割込みハンドラ#12、割込みハンドラ#13、タスク#14の各処理に対し、それぞれ優先度が設定されている。また、ここでは、割込みハンドラ#11が次に実行対象の処理であり、優先度記録手段304の仮想計算機#1(10)の優先度が、割込みハンドラ#11の優先度「1」と同じ値の「1」に設定されている。
仮想計算機#2(20)はOS210を備えており、割込みハンドラ#21、タスク#22、タスク#23、タスク#24の各処理に対し、それぞれ優先度が設定されている。また、ここでは、タスク#23が次に実行対象の処理であり、優先度記録手段304の仮想計算機#2(20)の優先度が、タスク#23の優先度「4」と同じ値の「4」に設定されている。
なお、各割込みハンドラおよびタスクと、その優先度情報は、仮想計算機制御装置30で保持してもよいし、仮想計算機10と仮想計算機20が保持し、必要に応じて仮想計算機制御装置30が取得する構成でもよい。
以上の構成により、本発明の実施の形態における仮想計算機制御装置30は、タスク100、タスク200、割込みハンドラ120、割込みハンドラ220が優先度の順に実行されるように、仮想計算機10と仮想計算機20を切り替え、どちらの仮想計算機(10または20)に属するかに関わらず優先度の高い処理を優先して実行させることが可能となる。
なお、ここで述べたタスク(100、200)や割込みハンドラ(120、220)の優先度は、OS110、またはOS210がタスクスケジュールなどの用途の為に用いる優先度とは別種のものである。OS110とOS210が異なるOSの場合、これら二つのOSが用いる優先度の体系は異なる場合がある。また、既存の情報処理装置のOSやアプリケーションを、本実施の形態における仮想計算機として利用する場合、仮想計算機(10、20)内の優先度設計は個々の仮想計算機内の実行順序の設計であり、異なる仮想計算機間での比較は考慮されていない場合がある。従って、本実施の形態において仮想計算機(10、20)の優先度に反映される優先度は、OS110とOS120が独自にタスク管理等で優先度を用いる場合でも、それとは別に情報処理装置の設計者によって付与されるものとする。ただし、優先度はOSが決定する仮想計算機内の実行の順番とは矛盾しないように付与することになる。
図3は、仮想計算機#1(10)の処理の遷移と、仮想計算機制御装置30の各構成要素の動作の関係を模式的に示している。なお、図3の破線は、条件によって呼び出される場合とそうでない場合があることを示す。また、図3では仮想計算機#1(10)について示したが、仮想計算機#2(20)に関しても同様である。仮想計算機#1(10)は、一例として、割込みハンドラ#11、タスク#13、タスク#14の順で処理が遷移しているものとする。
割込み通知受取手段301は、割込みが発生した時に割込み発生通知を受け取り、優先度更新手段303に割込み発生通知を通知する。優先度更新手段303は、仮想計算機#1(10)の優先度に割込みハンドラ#11の優先度を設定し、仮想計算機スケジュール手段305は、仮想計算機#1(10)が動作する(割込みハンドラ#11が処理される)と決定し、仮想計算機#1(10)に割込み発生通知をする。割込み発生通知を受けた仮想計算機#1(10)は割込みハンドラ#11を実行する。なお、一時的に割込みハンドラ#11の実行が保留される場合には、保留割込み記録手段306に、割込みハンドラ#11が記録されることになる。
次に、割込みハンドラ#11が終了するタイミングで、切替え通知受取手段302は、処理の切替え通知を受け取り、優先度更新手段303に切替え通知を通知する。優先度更新手段303は、仮想計算機#1(10)の優先度に仮想計算機#1(10)の次処理であるタスク#13の優先度を設定し、仮想計算機スケジュール手段305は、仮想計算機#1(10)が動作する(タスク#13が処理される)と決定し、タスク#13を実行する。なお、仮想計算機#1(10)が継続して実行するため、保留割込み記録手段306から記録中の割込みハンドラを取得する処理を行わなくてよい。
最後に、タスク#13が終了するタイミングで、切替え通知受取手段302は、処理の切替え通知を受け取り、優先度更新手段303に切替え通知を通知する。優先度更新手段303は、仮想計算機#1(10)の優先度に仮想計算機#1(10)の次処理であるタスク#14の優先度を設定し、仮想計算機スケジュール手段305は、仮想計算機#1(10)が動作する(タスク#14が処理される)と決定し、仮想計算機#1(10)がタスク#14を実行する。
以下、本発明の実施の形態における仮想計算機制御装置の処理の流れについて、図を用いて説明する。
図4は、割込みが発生した場合の動作の一例を示すフローチャートである。
本発明の実施の形態における仮想計算機制御装置30を備える情報処理装置に割込みが発生し、処理を開始する(ステップS4−1)。割込みが発生すると、割込み通知受取手段301が、割込み発生通知を受け取る。例えば、CPU1が、割込みコントローラ2から割込みの発生通知を受けて割込みを検知した時にジャンプする先である割込みベクターを仮想計算機管理装置30に設けることで、割込み発生時に、割込み通知受取手段301を動作させることが可能である。
割込み通知受取手段301は、受け取った割込み通知に含まれている割込み要因を取得し、この割込み要因から、どちらの仮想計算機(10または20)を対象にした割込みかを決定する(ステップS4−2)。この決定は、割込み要因情報を用いて行うものとする。図5に、割込み要因情報の一例を示した通り、割込み発生要因と、その割込み発生が対象にしている仮想計算機(#1または#2)を組にして保持している。ここでは、テーブルで示しているが、関数やリンク形式など、対象の仮想計算機が一意に決定すればよい。
割込み通知受取手段301は、決定した対象仮想計算機(10または20)の情報と共に割込みの発生通知を、優先度更新手段303に通知し、優先度更新手段303は、受け取った対象仮想計算機(10または20)の情報を判断する(ステップS4−3)。
対象仮想計算機(10または20)が仮想計算機#1(10)である場合(ステップS4−3が#1)、優先度更新手段303は、仮想計算機#1(10)の優先度を、発生した割込みに対応する割込みハンドラ(120)の優先度に設定し、優先度記録手段304に記録されている優先度情報を更新する。一方、対象仮想計算機(10または20)が仮想計算機#2(20)である場合(ステップS4−3が#2)、優先度更新手段303は、仮想計算機#2(20)の優先度を、発生した割込みに対応する割込みハンドラ(220)の優先度に設定し、優先度記録手段304に記録されている優先度情報を更新する。これにより、対象の仮想計算機(10または20)は、次の処理である割込みハンドラ(120または220)の実行が完了するまでは、仮想計算機(10または20)の優先度を割込みハンドラ(120または220)の優先度と同じ値にすることができる。ただし、対象の仮想計算機(10または20)に対して既に割込みが発生しており、その割込みハンドラ(120または220)の実行中である場合、割込みハンドラ(120または220)の優先度に変化させると仮想計算機(10または20)の優先度が下がる場合がある。この場合には、優先度を変化(低下)させなくてもよい。
優先度更新手段303は、優先度記録手段304に記録されている優先度情報を更新した後、仮想計算機スケジュール手段305を呼び出す(ステップS4−6)。仮想計算機スケジュール手段305は、優先度記録手段304を参照して、次に実行する仮想計算機(10および20)を決定し、実行中の仮想計算機を切り替えるか否かを判断する(ステップS4−7)。ステップS4−1で発生した割込みの対象の仮想計算機(10または20)を次に実行すると決定した場合(ステップS4−7が割込みの対象)、仮想計算機スケジュール手段305は、実行対象の仮想計算機(10または20)に、受け取った割込みの発生を通知する(ステップS4−8)。
なお、割込みの発生の通知は、例えば、OS(110、210)に、通知を受けるインターフェイスを設け、そのインターフェイスを利用すればよい。あるいは、割込み時のハードウェアの動作をエミュレートしてもよい。一般に、割込み発生時にはハードウェアにより、割込み発生の番地などをレジスタやスタックに記録し、割込み処理にジャンプするという動作が行なわれる。従って、割込み発生時と同じレジスタやスタックの状態にして、割込みの対象であるOS(110、210)内の割込み処理手段にジャンプすれば、割込みハンドラを実行させることができる。
一方、ステップS4−1で発生した割込みの対象の仮想計算機を次に実行しないと決定した場合(ステップS4−7が割込みの対象ではない)、仮想計算機スケジュール手段305は、ステップS4−1で発生した割込みに対応する割込みハンドラ(120または220)を、保留割込み記録手段306に記録し(ステップS4−9)、処理を終了する(ステップS4−10)。
なお、保留割込み記録手段306は、仮想計算機ごとの記録領域を備え、ソフトウェア的に記録すればよい。また、割込みコントローラ2が、レジスタ等の操作によってハードウェア的に割込みを保留する機能を備えるならば、そのような機能を用いてもよい。
最後に、仮想計算機スケジュール手段305は、実行中の仮想計算機の切替えが必要な場合(例えば、実行中の仮想計算機が仮想計算機20であり、実行対象の仮想計算機が10である場合)、実行対象の仮想計算機10の切替えを行い、保持している現在実行中の仮想計算機の情報を更新する。
以上により、ステップS4−8を経由した場合は、ステップS4−1で発生した割込みの対象の仮想計算機(10または20)が実行され、割込みの通知を受けたことにより割込みハンドラ(120または220)が実行される。また、ステップS4−9を経由した場合は、割込みの対象の仮想計算機には割込み保留が記録された上で、割込みの対象でない仮想計算機が実行される。
図6は、切替え通知受取手段302が仮想計算機(10または20)から切替え通知を受け付けたときの動作の一例を説明するフローチャートである。本発明の実施の形態における切替え通知受取手段302が実行処理を切り替える仮想計算機(10または20)から切替え通知を受け取り、処理を開始する(ステップS6−1)。切替え通知を受けた切替え通知受取手段302は、切替え通知を優先度更新手段303に通知し、優先度更新手段303は、優先度記録手段304に記録されている実行処理を切り替える仮想計算機(10または20)の優先度を、切り替えると判断した処理の優先度に変更する(ステップS6−2)。つまり、図4のステップS4−4またはS4−5で変化させる前の処理の優先度に更新する。その為に、図4のステップS4−4またはS4−5で変化させる為の優先度情報を保存し、ステップS12−2で復帰させても良い。この場合は、ステップS4−4またはS4−5で優先度情報をスタックに保存し、ステップS12−2で復帰させれば、割込み中にさらに別の割込みが発生し、割込み処理がネストした場合(多重割込み時)にも対応できる。仕様として多重割込みを認めるOS(110または210)を仮想計算機(10または20)内で用いる場合は、このようにスタックに割込み発生前の優先度情報を保存しても良い。
次に、優先度更新手段303は仮想計算機スケジュール手段305を呼び出し、仮想計算機スケジュール手段305は、仮想計算機10と仮想計算機20との優先度を比較し、優先度の高い仮想計算機(10または20)に切り替える(ステップS6−3)。
仮想計算機スケジュール手段305が切り替えた仮想計算機(10または20)が割込みに対応する割込みハンドラ(120または220)を保留割込み記録手段306に記録しているかを判断する(ステップS6−4)。切り替わった仮想計算機(10または20)の保留割込み記録手段306に割込みハンドラ(120または220)が記録されている場合、保留割込み記録手段306に記録されている割込みハンドラ(120または220)を実行する(ステップS6−5)。割込みハンドラ(120または220)が保留割込み記録手段306に記録されているということは、割込み発生時(ステップS4−1)に、割込んだ仮想計算機(10または20)が仮想計算機スケジュール手段305に選択されなかったことを意味する。そして、割込み発生時(ステップS4−1)に、割込みの対象の仮想計算機(10または20)の優先度が、その割込みに対応する割込みハンドラ(120または220)の優先度に設定される(ステップS4−4、ステップS4−5)ので、仮想計算機スケジュール手段305が、割込みを保留している仮想計算機(10または20)を次に実行すると判断した場合(ステップS6−4)、保留されている割込み処理は、もう一方の仮想計算機(10または20)が次に実行する処理より高いことを意味する。
つまり、ここで保留されている割込み処理を実行することが、優先度に従った実行となる。そして、切り替わった仮想計算機(10または20)の保留割込み記録手段306に割込みハンドラ(120または220)が記録されていない場合には、切替え通知受取手段302が仮想計算機(10または20)から切替え通知を受け付けたときの動作は終了(ステップS6−6)し、ステップS6−3で決定した仮想計算機(10または20)が実行される。
なお、上述したように、仮想計算機(10または20)の内部に保留割込み記録手段306がある場合には、仮想計算機10と仮想計算機20がそれぞれ保留割込み記録手段306を持っていることになるので、仮想計算機スケジュール手段305は、仮想計算機(10または20)に割込み通知を行い、これを受けた仮想計算機(10または20)が保留割込み記録手段306に記録している割込みハンドラを実行するようにしてもよい。
図7、図8、図9に本実施の形態の情報処理装置の実際の動作の例を示す。図7、図8、図9では仮想計算機10について示したが、仮想計算機20に関しても同様である。
なお、図7、図8と図9を見ると、割込み通知受取手段301と切替え通知受取手段302が仮想計算機(10または20)に通知しているが、優先度更新手段303、仮想計算機スケジュール手段305の動作が省略してあり、本来であれば、割込み通知受取手段301または切替え通知受取手段302が仮想計算機(10または20)から通知を受け取ると、この通知を優先度更新手段303に通知し、優先度更新手段303は仮想計算機スケジュール手段305を呼び出し、呼び出された仮想計算機スケジュール手段305が次に実行すると決定した仮想計算機(10または20)に通知する。
図7の例では、仮想計算機#1(10)は、優先度7のタスク#14が実行される予定であったが、優先度1の割込みハンドラ#11を有する割込みが発生した状態を表している。一方、仮想計算機#2(20)は、次に優先度4のタスク#23が実行される予定である。そして、仮想計算機#1(10)の優先度は、仮想計算機#1(10)が次に実行するタスク#14の優先度7が設定され、仮想計算機#2(20)の優先度は、仮想計算機#2(20)が次に実行するタスク#23の優先度4となっている。そして、仮想計算機#2(20)の方が仮想計算機#1(10)より優先度が高いので、仮想計算機#2(20)が選択され、タスク#23が実行されている。その後、仮想計算機#1(10)に対する割込みが発生(ステップS4−1)し、割込み通知受取手段301が割込み通知を受け取り、割込み要因から対象の仮想計算機#1(10)を特定する(ステップS4−2)。そして、この割込み通知を優先度更新手段303に通知し、優先度更新手段303は、仮想計算機#1(10)の優先度を、割込みに対応する割込みハンドラ#11の優先度1に更新し(ステップS4−3、ステップS4−4)、仮想計算機スケジュール手段305を呼び出し、仮想計算機スケジュール手段305が仮想計算機間の優先度比較を行い、仮想計算機#1(10)に切り替える(ステップS4−6)。
発生した割込みの対象である仮想計算機#1(10)が次に実行されるので、割込みの発生が仮想計算機#1(10)に通知され(ステップS4−8)、割込み発生の動作処理終了(ステップS4−10)後、仮想計算機#1(10)が動作し、割込みハンドラ#11が実行される。割込みハンドラ#11の実行終了後は、仮想計算機#1(10)の実行する対象が切り替わるので、仮想計算機制御装置30の切替え通知受取手段302が仮想計算機#1(10)から切替え通知を受け取り、切替え通知を受けた場合の処理が動作する(ステップS6−1)。仮想計算機#1(10)が割込みハンドラ#11の実行終了後に、優先度7のタスク#14に切り替えるので、切替え通知受取手段302から通知を受けた優先度更新手段303が、仮想計算機#1(10)の優先度を切り替える前の優先度7に戻す(ステップS6−2)。そして、優先度更新手段303から通知された仮想計算機スケジュール手段305が呼び出され(ステップS6−3)、仮想計算機間の優先度比較を行い、優先度が高い仮想計算機#2(20)に切り替える(ステップS6−4)。その後、仮想計算機スケジュール手段305は仮想計算機#2(20)に通知し、仮想計算機#2(20)のタスク#23の実行が再開される。
図8の例では、仮想計算機#1(10)は、優先度7のタスク#14が実行される予定であったが、優先度3の割込みハンドラ#12を有する割込みが発生した状態を表している。一方、仮想計算機#2(20)は、優先度2の割込みハンドラ#21と優先度4のタスク#23が実行される予定である。そして、仮想計算機#1(10)の優先度は、仮想計算機#1(10)が次に実行するタスク#14の優先度7が設定され、仮想計算機#2(20)の優先度は、仮想計算機#2(20)が次に実行する割込みハンドラ#21の優先度2となっている。そして、仮想計算機#2(20)の方が仮想計算機#1(10)より優先度が高いので、仮想計算機#2(20)が選択され、割込みハンドラ#21が実行されている。その後、仮想計算機#1(10)に対する割込みが発生(ステップS4−1)し、割込み通知受取手段301が割込み通知を受け取り、割込み要因から対象の仮想計算機#1(10)を特定する(ステップS4−2)。そして、この割込み通知を優先度更新手段303に通知し、優先度更新手段303は、仮想計算機#1(10)の優先度を、割込みに対応する割込みハンドラ#12の優先度3に更新し(ステップS4−3、ステップS4−4)、仮想計算機スケジュール手段305を呼び出し(ステップS4−5)、仮想計算機スケジュール手段305が仮想計算機間の優先度比較を行う。ここで、仮想計算機#2(20)の方が仮想計算機#1(10)より優先度が高いので、切り替えは発生せず、仮想計算機#2(20)に引き続き実行させる(ステップS4−6、ステップS4−7)。ここで、発生した割込みの対象である仮想計算機#1(10)は、次に実行されると判断されなかったので、自分の優先度を次に実行する割込みハンドラ#12の優先度に更新し、割込みハンドラ#12を保留割込み記録手段306に記録する(ステップS4−9)。
割込みハンドラ#21の実行終了後は、仮想計算機#2(20)の実行する対象が切り替わるので、仮想計算機制御装置30の切替え通知受取手段302が仮想計算機#2(20)から切替え通知を受け取り、切替え通知を受けた場合の処理が動作する(ステップS6−1)。仮想計算機#2(20)が割込みハンドラ#21の実行終了後、優先度4のタスク#23に切り替えるので、切替え通知受取手段302から通知を受けた優先度更新手段303が、仮想計算機#2(20)の優先度を切り替える前の優先度4に戻す(ステップS6−2)。そして、優先度更新手段303から通知された仮想計算機スケジュール手段305が呼び出され(ステップS6−3)、仮想計算機間の優先度比較を行う。仮想計算機#1(10)の保留割込み記録手段306に記録されている割込みハンドラ#12の優先度が3であるので、仮想計算機#1(10)の優先度は3である。一方、仮想計算機#2(20)の次に実行する処理は優先度4のタスク#23であるので、仮想計算機#2(20)の優先度は4である。したがって、優先度が高い仮想計算機#1(10)に切り替え(ステップS6−4)、仮想計算機スケジュール手段305は仮想計算機#1(10)に通知し、仮想計算機#1(10)の割込みハンドラ#12の実行がされる。
その後、割込みハンドラ#12の処理が終わったら、仮想計算機#1(10)は優先度7のタスク#14に切り替えるので、切替え通知受取手段302から通知を受けた優先度更新手段303が、仮想計算機#1(10)の優先度を切り替える前の優先度7に戻す(ステップS6−2)。そして、優先度更新手段303から通知された仮想計算機スケジュール手段305が呼び出され(ステップS6−3)、仮想計算機間の優先度比較を行う。仮想計算機#2(20)の優先度は4であるので、優先度が高い仮想計算機#2(20)に切り替える(ステップS6−4)。その後、仮想計算機スケジュール手段305は仮想計算機#2(20)に通知し、仮想計算機#2(20)のタスク#23の実行が再開される。
図9の例では、仮想計算機#1(10)は、優先度7のタスク#14が実行される予定であったが、優先度5の割込みハンドラ#13を有する割込みが発生した状態を表している。一方、仮想計算機#2(20)は、優先度4のタスク#23と優先度6のタスク#24が実行される予定である。そして、仮想計算機#1(10)の優先度は、仮想計算機#1(10)が次に実行するタスク#14の優先度7が設定され、仮想計算機#2(20)の優先度は、仮想計算機#2(20)が次に実行するタスク#23の優先度4となっている。そして、仮想計算機#2(20)の方が仮想計算機#1(10)より優先度が高いので、仮想計算機#2(20)が選択され、タスク#23が実行されている。その後、仮想計算機#1(10)に対する割込みが発生(ステップS4−1)し、割込み通知受取手段301が割込み通知を受け取り、割込み要因から対象の仮想計算機#1(10)を特定する(ステップS4−2)。そして、この割込み通知を優先度更新手段303に通知し、優先度更新手段303は、仮想計算機#1(10)の優先度を、割込みに対応する割込みハンドラ#13の優先度5に更新し(ステップS4−3、ステップS4−4)、仮想計算機スケジュール手段305を呼び出し(ステップS4−5)、仮想計算機スケジュール手段305が仮想計算機間の優先度比較を行う。ここで、仮想計算機#2(20)の方が仮想計算機#1(10)より優先度が高いので、切り替えは発生せず、仮想計算機#2(20)に引き続き実行させる(ステップS4−6、ステップS4−7)。ここで、発生した割込みの対象である仮想計算機#1(10)は、次に実行されると判断されなかったので、自分の優先度を次に実行する割込みハンドラ#13の優先度5に更新し、割込みハンドラ#13を保留割込み記録手段306に記録する(ステップS4−9)。
タスク#23の実行終了後は、仮想計算機#2(20)の実行する対象が切り替わるので、仮想計算機制御装置30の切替え通知受取手段302が仮想計算機#2(20)から切替え通知を受け取り、切替え通知を受けた場合の処理が動作する(ステップS6−1)。仮想計算機#2(20)が優先度6のタスク#24に切り替えるので、切替え通知受取手段302から通知を受けた優先度更新手段303が、仮想計算機#2(20)の優先度を、次の処理であるタスク#24の優先度6に更新する(ステップS6−2)。そして、優先度更新手段303から通知された仮想計算機スケジュール手段305が呼び出され(ステップS6−3)、仮想計算機間の優先度比較を行う。仮想計算機#1(10)の保留割込み記録手段306に記録されている割込みハンドラ#13の優先度が5であるので、仮想計算機#1(10)の優先度は5である。一方、仮想計算機#2(20)の次に実行する処理は優先度6のタスク#24であるので、仮想計算機#2(20)の優先度は6である。したがって、優先度が高い仮想計算機#1(10)に切り替え(ステップS6−4)、仮想計算機スケジュール手段305は仮想計算機#1(10)に通知し、仮想計算機#1(10)の割込みハンドラ#13の実行がされる。
その後、割込みハンドラ#13の処理が終わったら、仮想計算機#1(10)は優先度7のタスク#14に切り替えるので、切替え通知受取手段302から通知を受けた優先度更新手段303が、仮想計算機#1(10)の優先度を切り替える前の優先度7に戻す(ステップS6−2)。その後、優先度更新手段303から通知された仮想計算機スケジュール手段305が呼び出され(ステップS6−3)、仮想計算機間の優先度比較を行う。仮想計算機#2(20)の優先度は6であるので、優先度が高い仮想計算機#2(20)に切り替える(ステップS6−4)。仮想計算機スケジュール手段305は仮想計算機#2(20)に通知し、仮想計算機#2(20)のタスク#24の実行が再開される。
なお、本実施の形態では、仮想計算機スケジュール手段305は、直ちに仮想計算機を切り替えるが、必ずしもその必要はない。切替えの有無のみを判定し、実際の切替えは、仮想計算機の実行が再開するまでに行なえば良い。また、割込み発生の通知も、仮想計算機の実行の再開までに行なえば良い。
(実施の形態2)
図10は、本発明の実施の形態における仮想計算機制御装置30を備えた情報処理装置の構成を示す図であり、実施の形態1の切替え通知受取手段302の代わりに、仮想計算機の割込み処理が終了する旨の通知を受取る割込み終了通知受取手段307と、タスクを切り替える旨の通知を受け取るタスク切替え通知受取手段308とを設けたものである。
本実施の形態においても実施の形態1と同様に、情報処理装置はCPU1と、割込みコントローラ2と、周辺デバイス3と、メモリ4を備えている。メモリ4には、実施の形態1と同様に、仮想計算機10、仮想計算機20と、仮想計算機制御装置30が格納されている。また、実施の形態1と同じ符号で表すタスク100、OS110、タスクスケジューラ111、割込み処理手段112、割込みハンドラ120、タスク200、OS210、タスクスケジューラ211、割込み処理手段212、割込みハンドラ220、割込み通知受取手段301、優先度更新手段303、優先度記録手段304、仮想計算機スケジュール手段305、保留割込み記録手段306、タスク切替え通知受取手段308、割込み終了通知受取手段307とからなる。タスク切替え通知受取手段308と割込み終了通知受取手段307以外は、前述した実施の形態1のものと同一である。
図11は、仮想計算機#1(10)の処理の遷移と、仮想計算機制御装置30の各構成要素の動作の関係を模式的に示している。なお、図11の破線は、条件によって呼び出される場合とそうでない場合があることを示す。また、図11では仮想計算機#1(10)について示したが、仮想計算機#2(20)に関しても同様である。仮想計算機#1(10)は、一例として、割込みハンドラ#11、タスク#13、タスク#14の順で処理が遷移しているものとする。
割込み通知受取手段301は、割込みが発生した時に割込み発生通知を受け取り、優先度更新手段303に割込み発生通知を通知する。優先度更新手段303は、仮想計算機#1(10)の優先度に割込みハンドラ#11の優先度を設定し、仮想計算機スケジュール手段305は、仮想計算機#1(10)が動作する(割込みハンドラ#11が処理される)と決定し、仮想計算機#1(10)に割込み発生通知をする。割込み発生通知を受けた仮想計算機#1(10)は割込みハンドラ#11を実行する。
なお、一時的に割込みハンドラ#11の実行が保留される場合には、保留割込み記録手段306に、割込みハンドラ#11が記録されることになる。
次に、割込みハンドラ#11が終了するタイミングで、割込み終了通知受取手段307は、割込み終了通知を受け取り、優先度更新手段303に割込み終了通知を通知する。優先度更新手段303は、仮想計算機#1(10)の優先度に仮想計算機#1(10)の次処理であるタスク#13の優先度を設定し、仮想計算機スケジュール手段305は、仮想計算機#1(10)が動作する(タスク#13が処理される)と決定し、仮想計算機#1(10)にタスク切替え通知をする。タスク切替え通知を受けた仮想計算機#1(10)はタスク#13を実行する。なお、仮想計算機#1(10)が継続して実行するため、保留割込み記録手段306から記録中の割込みハンドラを取得する処理を行わなくてよい。
最後に、タスク#13が終了するタイミングで、タスク切替え通知受取手段308は、タスク切替え通知を受け取り、優先度更新手段303にタスク切替え通知を通知する。優先度更新手段303は、仮想計算機#1(10)の優先度に仮想計算機#1(10)の次処理であるタスク#14の優先度を設定し、仮想計算機スケジュール手段305は、仮想計算機#1(10)が動作する(タスク#14が処理される)と決定し、仮想計算機#1(10)は仮想計算機#1(10)がタスク#14を実行する。
以下、割込み終了通知受取手段307とタスク切替え通知受取手段308とを設けたことによって、実施の形態1と異なる動作になる部分について説明する。
図12は、割込み処理が終了して、割込み終了通知受取手段307が仮想計算機(10または20)から割込み終了通知を受け付けたときの動作の一例を説明するフローチャートである。
本発明の実施の形態における割込み終了通知受取手段307が、割込み処理を終了する仮想計算機(10または20)から割込み終了通知を受け取り、処理を開始する(ステップS12−1)。例えば、OS内の割込み処理手段112、212から割込みハンドラ終了時に仮想計算機制御装置30に通知するようにし、それを契機に動作させれば良い。割込み終了通知を受けた割込み終了通知受取手段307は、割込み終了通知を優先度更新手段303に通知し、優先度更新手段303は、優先度記録手段304に記録されている割込み処理を終了する仮想計算機(10または20)の優先度を、割込み前の処理の優先度に更新する(ステップS12−2)。
次に、優先度更新手段303は仮想計算機スケジュール手段305を呼び出し、仮想計算機スケジュール手段305は、仮想計算機10と仮想計算機20との優先度を比較し、優先度の高い仮想計算機(10または20)に切り替える(ステップS12−3)。
仮想計算機スケジュール手段305が切り替えた仮想計算機(10または20)が割込みに対応する割込みハンドラ(120または220)を保留割込み記録手段306に記録しているかを判断する(ステップS12−4)。切り替わった仮想計算機(10または20)の保留割込み記録手段306に割込みハンドラ(120または220)が記録されている場合、保留割込み記録手段306に記録されている割込みハンドラ(120または220)を実行する(ステップS12−5)。割込みハンドラ(120または220)が保留割込み記録手段306に記録されているということは、割込み発生時(ステップS12−1)に、割込んだ仮想計算機(10または20)が仮想計算機スケジュール手段305に選択されなかったことを意味する。そして、割込み発生時(ステップS12−1)に、割込みの対象の仮想計算機(10または20)の優先度が、その割込みに対応する割込みハンドラ(120または220)の優先度に設定される(ステップS12−4、ステップS12−5)ので、仮想計算機スケジュール手段305が、割込みを保留している仮想計算機(10または20)を次に実行すると判断した場合(ステップS12−4)、保留されている割込み処理は、もう一方の仮想計算機(10または20)が次に実行する処理より高いことを意味する。つまり、ここで保留されている割込み処理を実行することが、優先度に従った実行となる。そして、切り替わった仮想計算機(10または20)の保留割込み記録手段306に割込みハンドラ(120または220)が記録されていない場合には、切替え通知受取手段302が仮想計算機(10または20)から切替え通知を受け付けたときの動作は終了(ステップS12−6)し、ステップS12−3で決定した仮想計算機(10または20)が実行される。
なお、上述したように、仮想計算機(10または20)の内部に保留割込み記録手段306がある場合には、仮想計算機10と仮想計算機20がそれぞれ保留割込み記録手段306を持っていることになるので、仮想計算機スケジュール手段305は、仮想計算機(10または20)に割込み通知を行い、これを受けた仮想計算機(10または20)が保留割込み記録手段306に記録している割込みハンドラ(120または220)を実行するようにしてもよい。
さらに、上述したように、仮想計算機(10または20)の内部に保留割込み記録手段306がある場合には、仮想計算機10と仮想計算機20がそれぞれ保留割込み記録手段306を持っていることになるので、仮想計算機スケジュール手段305は、仮想計算機(10または20)に割込み通知を行い、これを受けた仮想計算機(10または20)が保留割込み記録手段306に記録している割込みハンドラ(120または220)を実行するようにしてもよい。この場合、仮想計算機(10または20)が保留割込み記録手段306を持っているので、仮想計算機スケジュール手段305は、仮想計算機(10または20)に割込み通知を行い、これを受けた仮想計算機(10または20)が保留割込み記録手段306に記録してある割込みハンドラ(120または220)を実行する。例えば、前述したように仮想計算機(10または20)のOS(110または210)に割込みハンドラ(120または220)の実行命令を受け取るインターフェイスを設ければ、このインターフェイスを用いることで割込み発生をOS(110または210)に通知し、割込みハンドラ(120または220)を実行させることが可能である。あるいは、ハードウェアを操作することで割込みを発生させることができるなら、実際に割込みを再発生させても良い。あるいは、別の方法として割込み時のハードウェアの動作をエミュレートしてもよい。例えば、割込み発生時にはハードウェアにより、割込み発生の番地などをレジスタやスタックに記録し、CPUを割込みモードにして処理にジャンプするという動作が行なわれる。
従って、割込み発生時と同じレジスタやスタック状態、CPUモードにして、OS(110または210)内の割込み処理手段にジャンプすれば、その時点で割込みが発生したかの様にOS(110または210)に割込みハンドラ(120または220)を実行させることができるので、OS(110または210)に対する割込みの通知として用いることが出来る。あるいは、割込みコントローラ2の機能によりハードウェア的に割込みを保留している場合は、ここで保留を解除して割込みの発生をCPU1に通知させてもよい。
図13は、タスクが切り替わり、タスク切替え通知受取手段308が仮想計算機(10または20)からタスク切替え通知を受け付けたときの動作の一例を説明するフローチャートである。
本発明の実施の形態におけるタスク切替え通知受取手段308が、タスク処理を切り替える仮想計算機(10または20)からタスク切替え通知を受け取り、処理を開始する(ステップS13−1)。例えば、OS内のタスクスケジューラ111、211からタスクスイッチ時に仮想計算機制御装置30に通知するようにし、それを契機に動作させれば良い。タスク切替え通知を受けたタスク切替え通知受取手段308は、タスク切替え通知を優先度更新手段303に通知し、優先度更新手段303は、優先度記録手段304に記録されているタスクを切り替える仮想計算機(10または20)の優先度を、次に実行するタスクの優先度に変更する(ステップS13−2)。
次に、優先度更新手段303は仮想計算機スケジュール手段305を呼び出し、仮想計算機スケジュール手段305は、仮想計算機10と仮想計算機20との優先度を比較し、優先度の高い仮想計算機(10または20)に切り替える(ステップS13−3)。仮想計算機スケジュール手段305が切り替えた仮想計算機(10または20)が割込みに対応する割込みハンドラを保留割込み記録手段306に記録しているかを判断する(ステップS13−4)。切り替わった仮想計算機(10または20)の保留割込み記録手段306に割込みハンドラ(120または220)が記録されている場合、保留割込み記録手段306に記録されている割込みハンドラ(120または220)を実行する(ステップS13−5)。割込みハンドラ(120または220)が保留割込み記録手段306に記録されているということは、割込み発生時(ステップS4−1)に、割込んだ仮想計算機(10または20)が仮想計算機スケジュール手段305に選択されなかったことを意味する。そして、割込み発生時(ステップS4−1)に、割込みの対象の仮想計算機(10または20)の優先度が、その割込みに対応する割込みハンドラ(120または220)の優先度に設定される(ステップS4−4、ステップS4−5)ので、仮想計算機スケジュール手段305が、割込みを保留している仮想計算機(10または20)を次に実行すると判断した場合(ステップS13−4)、保留されている割込み処理は、もう一方の仮想計算機が次に実行する処理より高いことを意味する。つまり、ここで保留されている割込み処理を実行することが、優先度に従った実行となる。そして、切り替わった仮想計算機(10または20)の保留割込み記録手段306に割込みハンドラ(120または220)が記録されていない場合には、切替え通知受取手段302が仮想計算機から切替え通知を受け付けたときの動作は終了(ステップS13−6)し、ステップS13−3で決定した仮想計算機(10または20)が実行される。
なお、上述したように、仮想計算機(10または20)の内部に保留割込み記録手段306がある場合には、仮想計算機10と仮想計算機20がそれぞれ保留割込み記録手段306を持っていることになるので、仮想計算機スケジュール手段305は、仮想計算機(10または20)に割込み通知を行い、これを受けた仮想計算機(10または20)が保留割込み記録手段306に記録している割込みハンドラ(120または220)を実行するようにしてもよい。
さらに、上述したように、仮想計算機(10または20)の内部に保留割込み記録手段306がある場合には、仮想計算機10と仮想計算機20がそれぞれ保留割込み記録手段306を持っていることになるので、仮想計算機スケジュール手段305は、仮想計算機(10または20)に割込み通知を行い、これを受けた仮想計算機(10または20)が保留割込み記録手段306に記録している割込みハンドラ(120または220)を実行するようにしてもよい。この場合、仮想計算機(10または20)が保留割込み記録手段306を持っているので、仮想計算機スケジュール手段305は、仮想計算機(10または20)に割込み通知を行い、これを受けた仮想計算機(10または20)が保留割込み記録手段306に記録してある割込みハンドラ(120または220)を実行する。例えば、前述したように仮想計算機(10または20)のOS(110または210)に割込みハンドラ(120または220)の実行命令を受け取るインターフェイスを設ければ、このインターフェイスを用いることで割込み発生をOS(110または210)に通知し、割込みハンドラを実行させることが可能である。あるいは、ハードウェアを操作することで割込みを発生させることができるなら、実際に割込みを再発生させても良い。あるいは、別の方法として割込み時のハードウェアの動作をエミュレートしてもよい。例えば、割込み発生時にはハードウェアにより、割込み発生の番地などをレジスタやスタックに記録し、CPUを割込みモードにして処理にジャンプするという動作が行なわれる。
従って、割込み発生時と同じレジスタやスタック状態、CPUモードにして、OS(110または210)内の割込み処理手段にジャンプすれば、その時点で割込みが発生したかの様にOS(110または210)に割込みハンドラ(120または220)を実行させることができるので、OS(110または210)に対する割込みの通知として用いることが出来る。あるいは、割込みコントローラ2の機能によりハードウェア的に割込みを保留している場合は、ここで保留を解除して割込みの発生をCPU1に通知させてもよい。
図14、図15、図16に本実施の形態の情報処理装置の実際の動作の例を示す。図14、図15、図16では仮想計算機10について示したが、仮想計算機20に関しても同様である。
なお、図14、図15と図16を見ると、割込み通知受取手段301と割込み終了通知受取手段307、タスク切替え通知受取手段308が仮想計算機(10または20)に通知しているが、優先度更新手段303、仮想計算機スケジュール手段305の動作が省略してあり、本来であれば、割込み通知受取手段301または割込み終了通知受取手段307、タスク切替え通知受取手段308が仮想計算機(10または20)から通知を受け取ると、この通知を優先度更新手段303に通知し、優先度更新手段303は仮想計算機スケジュール手段305を呼び出し、呼び出された仮想計算機スケジュール手段305が次に実行すると決定した仮想計算機(10または20)に通知する。
図14の例では、仮想計算機#1(10)は、優先度7のタスク#14が実行される予定であったが、優先度1の割込みハンドラ#11を有する割込みが発生した状態を表している。一方、仮想計算機#2(20)は、次に優先度4のタスク#23が実行される予定である。そして、仮想計算機#1(10)の優先度は、仮想計算機#1(10)が次に実行するタスク#14の優先度7が設定され、仮想計算機#2(20)の優先度は、仮想計算機#2(20)が次に実行するタスク#23の優先度4となっている。そして、仮想計算機#2(20)の方が仮想計算機#1(10)より優先度が高いので、仮想計算機#2(20)が選択され、タスク#23が実行されている。その後、仮想計算機#1(10)に対する割込みが発生(ステップS4−1)し、割込み通知受取手段301が割込み通知を受け取り、割込み要因から対象の仮想計算機#1(10)を特定する(ステップS4−2)。そして、この割込み通知を優先度更新手段303に通知し、優先度更新手段303は、仮想計算機#1(10)の優先度を、割込みに対応する割込みハンドラ#11の優先度1に更新し(ステップS4−3、ステップS4−4)、仮想計算機スケジュール手段305を呼び出し、仮想計算機スケジュール手段305が仮想計算機間の優先度比較を行い、仮想計算機#1(10)に切り替える(ステップS4−6)。
発生した割込みの対象である仮想計算機#1(10)が次に実行されるので、割込みの発生が仮想計算機#1(10)に通知され(ステップS4−8)、割込み発生の動作処理終了(ステップS4−10)後、仮想計算機#1(10)が動作し、割込みハンドラ#11が実行される。割込みハンドラ#11の実行終了後は、仮想計算機#1(10)の実行する対象が切り替わるので、仮想計算機制御装置30の割込み終了通知受取手段307が仮想計算機#1(10)から割込み終了通知を受け取り、割込み終了通知を受けた場合の処理が動作する(ステップS12−1)。仮想計算機#1(10)が割込みハンドラ#11の実行終了後に、優先度7のタスク#14に切り替えるので、割込み終了通知受取手段307から通知を受けた優先度更新手段303が、仮想計算機#1(10)の優先度を切り替える前の優先度7に戻す(ステップS12−2)。そして、優先度更新手段303から通知された仮想計算機スケジュール手段305が呼び出され(ステップS12−3)、仮想計算機間の優先度比較を行い、優先度が高い仮想計算機#2(20)に切り替える(ステップS12−4)。その後、仮想計算機スケジュール手段305は仮想計算機#2(20)に通知し、仮想計算機#2(20)のタスク#23の実行が再開される。
図15の例では、仮想計算機#1(10)は、優先度7のタスク#14が実行される予定であったが、優先度3の割込みハンドラ#12を有する割込みが発生した状態を表している。一方、仮想計算機#2(20)は、優先度2の割込みハンドラ#21と優先度4のタスク#23が実行される予定である。そして、仮想計算機#1(10)の優先度は、仮想計算機#1(10)が次に実行するタスク#14の優先度7が設定され、仮想計算機#2(20)の優先度は、仮想計算機#2(20)が次に実行する割込みハンドラ#21の優先度2となっている。そして、仮想計算機#2(20)の方が仮想計算機#1(10)より優先度が高いので、仮想計算機#2(20)が選択され、割込みハンドラ#21が実行されている。その後、仮想計算機#1(10)に対する割込みが発生(ステップS4−1)し、割込み通知受取手段301が割込み通知を受け取り、割込み要因から対象の仮想計算機#1(10)を特定する(ステップS4−2)。そして、この割込み通知を優先度更新手段303に通知し、優先度更新手段303は、仮想計算機#1(10)の優先度を、割込みに対応する割込みハンドラ#12の優先度3に更新し(ステップS4−3、ステップS4−4)、仮想計算機スケジュール手段305を呼び出し(ステップS4−5)、仮想計算機スケジュール手段305が仮想計算機間の優先度比較を行う。ここで、仮想計算機#2(20)の方が仮想計算機#1(10)より優先度が高いので、切り替えは発生せず、仮想計算機#2(20)に引き続き実行させる(ステップS4−6、ステップS4−7)。ここで、発生した割込みの対象である仮想計算機#1(10)は、次に実行されると判断されなかったので、自分の優先度を次に実行する割込みハンドラ#12の優先度に更新し、割込みハンドラ#12を保留割込み記録手段306に記録する(ステップS4−9)。
割込みハンドラ#21の実行終了後は、仮想計算機制御装置30の割込み終了通知受取手段307が仮想計算機#2(20)から割込み終了通知を受け取り、割込み終了通知を受けた場合の処理が動作する(ステップS12−1)。仮想計算機#2(20)が割込みハンドラ#21の実行終了後、優先度4のタスク#23に切り替えるので、割込み終了通知受取手段307から通知を受けた優先度更新手段303が、仮想計算機#2(20)の優先度を切り替える前の優先度4に戻す(ステップS12−2)。そして、優先度更新手段303から通知された仮想計算機スケジュール手段305が呼び出され(ステップS12−3)、仮想計算機間の優先度比較を行う。仮想計算機#1(10)の保留割込み記録手段306に記録されている割込みハンドラ#12の優先度が3であるので、仮想計算機#1(10)の優先度は3である。一方、仮想計算機#2(20)の次に実行する処理は優先度4のタスク#23であるので、仮想計算機#2(20)の優先度は4である。したがって、優先度が高い仮想計算機#1(10)に切り替え(ステップS12−4)、仮想計算機スケジュール手段305は仮想計算機#1(10)に通知し、仮想計算機#1(10)の割込みハンドラ#12の実行がされる。
その後、割込みハンドラ#12の処理が終わったら、仮想計算機#1(10)は優先度7のタスク#14に切り替えるので、割込み終了通知受取手段307から通知を受けた優先度更新手段303が、仮想計算機#1(10)の優先度を切り替える前の優先度7に戻す(ステップS12−2)。そして、優先度更新手段303から通知された仮想計算機スケジュール手段305が呼び出され(ステップS12−3)、仮想計算機間の優先度比較を行う。仮想計算機#2(20)の優先度は4であるので、優先度が高い仮想計算機#2(20)に切り替える(ステップS12−4)。その後、仮想計算機スケジュール手段305は仮想計算機#2(20)に通知し、仮想計算機#2(20)のタスク#23の実行が再開される。
図16の例では、仮想計算機#1(10)は、優先度7のタスク#14が実行される予定であったが、優先度5の割込みハンドラ#13を有する割込みが発生した状態を表している。一方、仮想計算機#2(20)は、優先度4のタスク#23と優先度6のタスク#24が実行される予定である。そして、仮想計算機#1(10)の優先度は、仮想計算機#1(10)が次に実行するタスク#14の優先度7が設定され、仮想計算機#2(20)の優先度は、仮想計算機#2(20)が次に実行するタスク#23の優先度4となっている。そして、仮想計算機#2(20)の方が仮想計算機#1(10)より優先度が高いので、仮想計算機#2(20)が選択され、タスク#23が実行されている。その後、仮想計算機#1(10)に対する割込みが発生(ステップS4−1)し、割込み通知受取手段301が割込み通知を受け取り、割込み要因から対象の仮想計算機#1(10)を特定する(ステップS4−2)。そして、この割込み通知を優先度更新手段303に通知し、優先度更新手段303は、仮想計算機#1(10)の優先度を、割込みに対応する割込みハンドラ#13の優先度5に更新し(ステップS4−3、ステップS4−4)、仮想計算機スケジュール手段305を呼び出し(ステップS4−5)、仮想計算機スケジュール手段305が仮想計算機間の優先度比較を行う。ここで、仮想計算機#2(20)の方が仮想計算機#1(10)より優先度が高いので、切り替えは発生せず、仮想計算機#2(20)に引き続き実行させる(ステップS4−6、ステップS4−7)。ここで、発生した割込みの対象である仮想計算機#1(10)は、次に実行されると判断されなかったので、自分の優先度を次に実行する割込みハンドラ#13の優先度5に更新し、割込みハンドラ#13を保留割込み記録手段306に記録する(ステップS4−9)。
タスク#23の実行終了後は、仮想計算機#2(20)の実行する対象が切り替わるので、仮想計算機制御装置30のタスク切替え通知受取手段308が仮想計算機#2(20)からタスク切替え通知を受け取り、タスク切替え通知を受けた場合の処理が動作する(ステップS13−1)。仮想計算機#2(20)が優先度6のタスク#24に切り替えるので、タスク切替え通知受取手段308から通知を受けた優先度更新手段303が、仮想計算機#2(20)の優先度を、次の処理であるタスク#24の優先度6に更新する(ステップS13−2)。そして、優先度更新手段303から通知された仮想計算機スケジュール手段305が呼び出され(ステップS13−3)、仮想計算機間の優先度比較を行う。仮想計算機#1(10)の保留割込み記録手段306に記録されている割込みハンドラ#13の優先度が5であるので、仮想計算機#1(10)の優先度は5である。一方、仮想計算機#2(20)の次に実行する処理は優先度6のタスク#24であるので、仮想計算機#2(20)の優先度は6である。したがって、優先度が高い仮想計算機#1(10)に切り替え(ステップS13−4)、仮想計算機スケジュール手段305は仮想計算機#1(10)に通知し、仮想計算機#1(10)の割込みハンドラ#13の実行がされる。
その後、割込みハンドラ#13の処理が終わったら、割込み終了通知受取手段307から割込み終了通知を受けた優先度更新手段303が、仮想計算機#1(10)の優先度を割込み前の優先度7に戻す(ステップS13−2)。その後、優先度更新手段303から通知された仮想計算機スケジュール手段305が呼び出され(ステップS13−3)、仮想計算機間の優先度比較を行う。仮想計算機#2(20)の優先度は6であるので、優先度が高い仮想計算機#2(20)に切り替える(ステップS13−4)。仮想計算機スケジュール手段305は仮想計算機#2(20)に通知し、仮想計算機#2(20)のタスク#24の実行が再開される。
なお、本実施の形態では、仮想計算機スケジュール手段305は、直ちに仮想計算機を切り替えるが、必ずしもその必要はない。切替えの有無のみを判定し、実際の切替えは、仮想計算機の実行が再開するまでに行なえば良い。また、割込み発生の通知も、仮想計算機の実行の再開までに行なえば良い。
以上、本実施の形態では、割込み発生時、割込み終了通知時、タスク切替え時の3箇所で、仮想計算機(10または20)の優先度を割込み処理の優先度、割込み前の処理の優先度、次に実行するタスク処理の優先度に変更して比較し、切替えを行なう。仮想計算機間での優先度を比較することにより、割込みハンドラの実行が保留された場合には、その保留された割込みハンドラを記録する。そして割込み発生時、割込み終了通知、タスク切替えの時点で仮想計算機(10または20)が切り替わり、仮想計算機スケジュール手段305の働きにより保留していた割込みハンドラの実行が行なわれる。これにより、タスク、割込みハンドラの優先度に従った実行が実現される。
なお、本実施の形態では、仮想計算機スケジュール手段305は、直ちに仮想計算機(10または20)を切り替えるが、必ずしもその必要はない。切替えの有無のみを判定し、実際の切替えは、仮想計算機(10または20)の実行が再開するまでに行なえば良い。また、割込み発生の通知も、仮想計算機(10または20)の実行の再開までに行なえば良い。
(実施の形態3)
図17は、本発明の第3の実施の形態の仮想計算機制御装置である情報処理装置を示す図であり、実施の形態2に優先度調整手段309を付け加えたものである。本実施の形態においても実施の形態2と同様に、情報処理装置はCPU1と、割込みコントローラ2と、周辺デバイス3と、メモリ4を備えている。メモリ4には、実施の形態2と同様に、仮想計算機10、仮想計算機20と、仮想計算機制御装置30が格納されている。また、実施の形態2と同じ符号で表すタスク100、OS110、タスクスケジューラ111、割込み処理手段112、割込みハンドラ120、タスク200、OS210、タスクスケジューラ211、割込み処理手段210、割込みハンドラ220、割込み通知受取手段301、優先度更新手段303、優先度記録手段304、仮想計算機スケジュール手段305、保留割込み記録手段306、割込み終了通知受取手段307、タスク切替え通知受取手段308は、前述した実施の形態2のものと同一である。
優先度調整手段309は、各種の要求を受け、タスク100、割込みハンドラ120、タスク200、割込みハンドラ220に付与されている優先度を変更する。実際に本発明を用いる場合、状況によってタスク(100、200)や割込みハンドラ(110、210)に付与している優先度を変更したい場合がある。例えば、仮想計算機10で外部とデータ交換を行ない、仮想計算機20ではユーザと対話的な処理を行う場合を考える。この場合、ユーザに対するレスポンスの為、仮想計算機20に属するタスク200や割込みハンドラ220の優先度を高く設定することが考えられる。しかし、データ交換が追いつかなくなった場合は、一時的にユーザへのレスポンスを犠牲にしても、データ交換の優先度を上げたいことがある。このような場合に、優先度調整手段309に通知し、仮想計算機10に属するタスク100や割込みハンドラ120の優先度を上げる。その結果、データ交換の優先度を上げることが出来る。
本実施の形態を用いる別の例として、仮想計算機10、仮想計算機20になるべく均等にCPU時間を割り振りたい場合がある。この場合、例えば仮想計算機10、仮想計算機20の実行時間の記録を取り、一定の時間ごとに実行時間の短い仮想計算機に属する処理(タスク、割込みハンドラ)の優先度から一定の値を引く。優先度の変化の例を図18に示す。
図18では、まず仮想計算機#1(10)の方が仮想計算機#2(20)よりも実行時間が長いと判断された場合、実行時間の短い仮想計算機#2(20)に属する割込みハンドラ#21、タスク#22、タスク#23およびタスク#24の優先度をそれぞれ−1して優先度を上げる。次に実行時間の長い仮想計算機#1(10)に属する割込みハンドラ#11、割込みハンドラ#12、割込みハンドラ#13およびタスク#14の優先度をそれぞれ+1して、優先度を下げる。同様に仮想計算機#1(10)の方が仮想計算機#2(20)よりも実行時間が短いと判断されれば、仮想計算機#1(10)に属する処理の優先度をそれぞれ−1して優先度を上げ、仮想計算機#2(20)に属する割込みハンドラ#21、タスク#22、タスク#23およびタスク#24の優先度をそれぞれ+1して、優先度を下げる。そして、時間が経過し、仮想計算機#1(10)の方が仮想計算機#2(20)よりも実行時間が長いと判断された場合、実行時間の短い仮想計算機#2(20)に属する割込みハンドラ#21、タスク#22、タスク#23およびタスク#24の優先度をそれぞれ−1して優先度を上げる。次に実行時間の長い仮想計算機#1(10)に属する割込みハンドラ#11、割込みハンドラ#12、割込みハンドラ#13およびタスク#14の優先度をそれぞれ+1して、優先度を下げる。そして、この動作を繰り返すことで、動作時間をなるべく均等にする。
なお、優先度を変化させる契機は、情報処理装置の利用目的に合わせて任意ものを用いても良い。例えば、データ取得のスループットなどを定期的に取得し、優先度変化の必要性を判断しても良い。
また、本実施の形態を用いる更に別の例として、一方の仮想計算機を、一時的にもう一方より完全に優先したい場合がある。例えば、電波状況などの条件を監視し、データ交換が可能になった時に、極力早くデータ交換を完了したい場合などである。この場合、電波状況などの変化を契機にし、データ交換をする仮想計算機に属する全ての処理の優先度を十分高くすれば実現できる。データ交換が終了すれば、優先度を元に戻す。図19にこの場合の例を示す。
図19では、仮想計算機#1(10)が、データ交換をする仮想計算機である場合、データ交換可能な電波状態になったときには、一時的に仮想計算機#2(20)の割込みハンドラ#21、タスク#22、タスク#23およびタスク#24の優先度に+10することで、それぞれの優先度を下げ、仮想計算機#1(10)の処理を優先させる。そしてデータ交換が終了すれば、仮想計算機#2(20)の割込みハンドラ#21、タスク#22、タスク#23およびタスク#24の優先度を−10して元に戻している。
また、本実施の形態を用いる更に別の例として、一方の仮想計算機に属する処理を完全に停止したい場合がある。この場合、停止したい仮想計算機に属する処理の優先度の全てがもう一方の仮想計算機のアイドルタスクより低い優先度に変化させれば良い。アイドルタスクは、何も仕事が無い時のタスクをいい、最低の優先度になる。本発明では、割込みも含み優先度に従った順で処理を実行させることができるので、一方の仮想計算機に属するタスク、割込みハンドラを優先度の調整により、完全に実行されない状態にすることが簡単に可能である。図20に例を示す。
図20では、仮想計算機#1(10)に属する処理を完全に停止するために、仮想計算機#1(10)に属する割込みハンドラ#11、割込みハンドラ#12、割込みハンドラ#13およびタスク#14の優先度に+100をする。この場合、優先度比較の結果、この間は仮想計算機#1(10)はどうなっても動作しないので、仮想計算機#1(10)は停止状態になる。そして、仮想計算機#1(10)を再開させるときには、仮想計算機#1(10)に属する割込みハンドラ#11、割込みハンドラ#12、割込みハンドラ#13およびタスク#14の優先度に−100をして、元に戻している。
なお、優先度は相対的なものなので、一方の仮想計算機の処理の優先度に一定値を加える代わりに、もう一方の仮想計算機の処理の優先度から同じ値を引いても良い。図18、図19、図20の例でも同様である。
以上、本実施の形態では、状況に応じ優先度の変更を行なうことで、より状況に応じた仮想計算機の制御が可能である。
なお、保留割込み記録手段306を仮想計算機(10または20)の方に設けても良い。この場合は、実施の形態1、2と同様に仮想計算機スケジュール手段305が仮想計算機(10または20)に割込み発生通知を通知し、あとは仮想計算機(10または20)の方で保留割込み処理を実行させるようにする。
(実施の形態4)
図21は、本発明の実施の形態4の仮想計算機制御装置である情報処理装置を示す図であり、実施の形態2に割込みハンドラ121、割込みハンドラ221、第2割込み通知受取手段310、実割込み通知手段311と実保留割込み記録手段312を付け加えたものである。本実施の形態においても実施の形態2と同様に、情報処理装置はCPU1と、割込みコントローラ2と、周辺デバイス3と、とメモリ4とを備えている。メモリ4には、実施の形態2と同様に、仮想計算機10、仮想計算機20と、仮想計算機制御装置30が格納されている。
また、実施の形態2と同じ符号で表すタスク100、OS110、タスクスケジューラ111、割込み処理手段112、タスク200、OS210、タスクスケジューラ211、割込み処理手段212、優先度更新手段303、優先度記録手段304、仮想計算機スケジュール手段305、割込み終了通知受取手段307、タスク切替え通知受取手段308は、前述した実施の形態2のものと同一である。
本実施の形態での割込みハンドラ121、221は図22に示すように、先に実行される先頭ハンドラと、先頭ハンドラの後に続いて実行される実ハンドラの2つに分かれる。つまり本発明では、割込み発生時の処理は、先頭ハンドラ、実ハンドラが順に実行されることで実現される。
図23は、仮想計算機#1(10)の処理の遷移と、仮想計算機制御装置30の各構成要素の動作の関係を模式的に示している。なお、図23の破線は、条件によって呼び出される場合とそうでない場合があることを示す。なお、図23では仮想計算機#1(10)について示したが、仮想計算機#2(20)に関しても同様である。仮想計算機#1(10)は、一例として、割込みハンドラ#11、タスク#13、タスク#14の順で処理が遷移しているものとする。割込みハンドラ#11は、図22で示したように、先頭ハンドラと実ハンドラに分かれる。
第2割込み通知受取手段310は、割込みが発生した時に割込みの対象である仮想計算機#1(10)に割込み発生通知をする。割込み発生通知を受けた仮想計算機#1(10)は、割込みハンドラ#11の先頭ハンドラを実行する。
先頭ハンドラの実行が終了すると、実割込み処理通知受取手段310に仮想計算機#1(10)で先頭ハンドラの実行が終了した旨の通知と、仮想計算機#1(10)が現在実行しているか否かを表すフラグとを含む、先頭ハンドラ終了通知をする。先頭ハンドラ終了通知を受け取った実割込み処理通知受取手段311についての詳細な動作は後述する。
次に、割込みハンドラ#11の実ハンドラが終了するタイミングで、割込み終了通知受取手段307は、割込み終了通知を受け取り、優先度更新手段303に割込み終了通知を通知する。優先度更新手段303は、仮想計算機#1(10)の優先度に仮想計算機#1(10)の次処理であるタスク#13の優先度を設定し、仮想計算機スケジュール手段305は、仮想計算機#1(10)が動作する(タスク#13が処理される)と決定し、仮想計算機#1(10)がタスク#13を実行する。なお、仮想計算機#1(10)が継続して実行するため、保留割込み記録手段306から記録中の割込みハンドラを取得する処理を行わなくてよい。
最後に、タスク#13が終了するタイミングで、タスク切替え通知受取手段308は、タスク切替え通知を受け取り、優先度更新手段303にタスク切替え通知を通知する。優先度更新手段303は、仮想計算機#1(10)の優先度に仮想計算機#1(10)の次処理であるタスク#14の優先度を設定し、仮想計算機スケジュール手段305は、仮想計算機#1(10)が動作する(タスク#14が処理される)と決定し、仮想計算機#1(10)がタスク#14を実行する。
図24は、割込みが発生した場合の動作の一例を示すフローチャートである。
本発明の実施の形態における仮想計算機制御装置を備える情報処理装置に割込みが発生し、処理を開始する(ステップS24−1)。割込みが発生すると、第2割込み通知受取手段310が、割込み発生通知を受け取る。例えば、CPU1が、割込みコントローラ2から割込みの発生通知を受けて割込みを検知した時にジャンプする先である割込みベクターを仮想計算機制御装置30に設けることで、割込み発生時に、割込み通知受取手段301を動作させることが可能である。
第2割込み通知受取手段310は、受け取った割込み通知に含まれている割込み要因を取得し、この割込み要因から、どちらの仮想計算機(10または20)を対象にした割込みかを決定する(ステップS24−2)。この決定は、割込み要因情報を用いて行うものとする。図5に、割込み要因情報の一例を示した通り、割込み発生要因と、その割込み発生が対象にしている仮想計算機(#1または#2)を組にして保持している。ここでは、テーブルで示しているが、関数やリンク形式など、対象の仮想計算機が一意に決定すればよい。そして、第2割込み通知受取手段310は、対象となる仮想計算機(10または20)に割込み発生通知をする(ステップS24−3)。割込み発生通知を受けた仮想計算機(10または20)は、先頭ハンドラの処理を行い、先頭ハンドラの処理実行後に、先頭ハンドラの処理が終了した旨の通知を実割込み通知受取手段311に行う(ステップS24−4)。そして、対象となる仮想計算機(10または20)が現在実行中でなければ、割込みの対象の仮想計算機(10または20)に切り替える(ステップS24−5、ステップS24−6)。ステップS24−6は、例えば割込みの対象である仮想計算機(10または20)の優先度を十分高く設定して、仮想計算機スケジュール手段305を呼び出せば良い。あるいは優先度に関係なく仮想計算機(10または20)を切り替える機構を設けても良い。その後、割込みの対象である仮想計算機(10または20)が実行に移され割込み処理が開始され、実割込みハンドラの処理が終了する(ステップS24−10)。また、対象となる仮想計算機(10または20)が現在実行中であれば、先頭ハンドラの処理が終了した旨の通知を受けた実割込み通知受取手段311は、決定した対象仮想計算機の情報と共に先頭ハンドラ終了通知を、優先度更新手段303に通知し、優先度更新手段303は、仮想計算機スケジュール手段305を呼び出す(ステップS24−5、ステップS24−7)。仮想計算機スケジュール手段305は、実行すると決定した仮想計算機(10または20)が割込みの対象であれば、そのまま実ハンドラを実行し、処理を終了する(ステップS24−10)。仮想計算機スケジュール手段305が実行すると決定した仮想計算機(10または20)が割込みの対象でなければ、実保留割込み記録手段312に割込みに対応する割込みハンドラの実ハンドラと割込みハンドラの優先度を記録して、処理を終了する(ステップS24−10)。
図25は、割込み処理が終了して、割込み終了通知受取手段307が仮想計算機#1(10)から割込み終了通知を受け付けたときの動作の一例を説明するフローチャートである。
本発明の実施の形態における割込み終了通知受取手段307が、割込み処理を終了する仮想計算機(10または20)から割込み終了通知を受け取り、処理を開始する(ステップS25−1)。例えば、OS内の割込み処理手段112、212から割込みハンドラ終了時に仮想計算機制御装置30に通知するようにし、それを契機に動作させれば良い。割込み終了通知を受けた割込み終了通知受取手段307は、割込み終了通知を優先度更新手段303に通知し、優先度更新手段303は、優先度記録手段304に記録されている割込み処理を終了する仮想計算機(10または20)の優先度を、割込み前の処理の優先度に更新する(ステップS25−2)。
次に、優先度更新手段303は仮想計算機スケジュール手段305を呼び出し、仮想計算機スケジュール手段305は、仮想計算機10と仮想計算機20との優先度を比較し、優先度の高い仮想計算機(10または20)に切り替える(ステップS25−3)。切り替えた仮想計算機(10または20)の実保留割込み記録手段312に実ハンドラが記録されていれば、その実ハンドラを実行させ、処理を終了する(ステップS25−6)。切り替えた仮想計算機(10または20)の実保留割込み記録手段312に実ハンドラが記録されていなければ、そのまま処理を終了する(ステップS25−6)。
図26は、タスク処理が終了して、タスク切替え通知受取手段308が仮想計算機#1(10)からタスク切替え通知を受け付けたときの動作の一例を説明するフローチャートである。
本発明の実施の形態におけるタスク切替え通知受取手段308が、タスク処理を終了する仮想計算機(10または20)からタスク切替え通知を受け取り、処理を開始する(ステップS26−1)。タスク切替え終了通知を受けたタスク切替え通知受取手段308は、タスク切替え通知を優先度更新手段303に通知し、優先度更新手段303は、優先度記録手段304に記録されているタスク処理を終了する仮想計算機(10または20の優先度を、次のタスク処理の優先度に更新する(ステップS26−2)。
次に、優先度更新手段303は仮想計算機スケジュール手段305を呼び出し、仮想計算機スケジュール手段305は、仮想計算機10と仮想計算機20との優先度を比較し、優先度の高い仮想計算機(10または20に切り替える(ステップS26−3)。切り替えた仮想計算機(10または20)の実保留割込み記録手段312に実ハンドラが記録されていれば、その実ハンドラを実行させ、処理を終了する(ステップS26−6)。切り替えた仮想計算機(10または20)の実保留割込み記録手段312に実ハンドラが記録されていなければ、そのまま処理を終了する(ステップS26−6)。
以上、本実施の形態では、割込み発生時において、割込みの対象である仮想計算機#1(10)が割込み処理を始めた後、実ハンドラの実行前に仮想計算機の優先度比較、及び切替えが発生する。従って、割込みの優先度が低い場合においても、OSに割込みの通知を行い、OSが割込み処理のコンテキストに入った状態で待ち状態になる。従って、待ち状態から復帰すれば割込みの通知がなくても、割込みの処理が再開される。その為、本実施の形態では、仮想計算機切替えの際に、OS110、210に改めて割込みの通知を行なう必要は無い。
本実施の形態において、先頭ハンドラの実行に費やす時間を十分短くし、実質的な割込みの処理を実ハンドラ手段として実装すれば、実質的にタスク、割込みハンドラの優先度に従った仮想計算機の実行が可能である。
なお、割込みハンドラを、比較的短く即時の処理が必要なトップハーフと、それ以外のボトムハーフに分けることが一般に行なわれている。トップハーフを本実施の形態の先頭ハンドラ、ボトムハーフを実ハンドラとして利用しても良い。この場合、トップハーフは常に最優先で処理し、ボトムハーフとタスクを優先度の順に実行させるスケジュールを行なうことになる。
なお、本実施の形態においても、実施の形態2の優先度調整手段309を設けても良い。実施の形態3で記述した利用の例も、本実施の形態において同様に利用できる。また、実保留割込み記録手段312を仮想計算機の方に設けても良い。この場合は、実施の形態1、2、3と同様に仮想計算機スケジュール手段305が仮想計算機に割込み発生通知を通知し、あとは仮想計算機の方で保留割込み処理を実行させるようにする。
(実施の形態5)
図27は、本発明の実施の形態5の仮想計算機制御装置である情報処理装置を示す図であり、実施の形態2の、割込み通知受取手段301を第3割込み通知受取手段313に、割込み終了通知受取手段307を第2割込み終了通知受取手段314に、タスク切替え通知受取手段308を第2タスク切替え通知受取手段315に置き換えたものである。情報処理装置はCPU1と、周辺デバイス3と、メモリ4と、割込みコントローラ5を備えている。メモリ4には、仮想計算機10、仮想計算機20と、仮想計算機制御手段30が格納されている。また、実施の形態2と同じ符号で表すタスク100、OS110、タスクスケジューラ111、割込み処理手段112、割込みハンドラ120、タスク200、OS210、タスクスケジューラ211、割込み処理手段210、割込みハンドラ220、割込み通知受取手段301、優先度更新手段303、優先度記録手段304、仮想計算機スケジュール手段305、保留割込み記録手段306は、実施の形態2のものと同一である。
本実施の形態の割込みコントローラ5は、個々の割込みに対し割込みレベルを設定可能であり、特定のレベル以下の割込みのみをマスクする機能を持つ。つまり、割込みコントローラ5のレジスタの操作で特定のレベルをマスクレベルとして設定すると、マスクレベル以下に設定されている割込みは割込みコントローラ5からCPU1に通知されなくなる。これにより、設定レベルの低い割込みの通知を割込みコントローラ5でハードウェア的に遅延することができる。
本実施の形態では、タスク100、タスク200、割込みハンドラ120、割込みハンドラ220に付与する優先度と、割込みコントローラ5に設定可能な割込みレベルは一対一の対応が可能とする。つまり、優先度ごとに対応する割込みレベルが有り、優先度AとBにA>Bの関係があれば、対応する割込みレベルaとbにもa>bの関係が成り立つ。優先度と割込みレベルの関係は、例えば図28のようなテーブルを保持し参照すれば良い。本実施の形態では、後述するように、タスク、割込みハンドラ実行中には、その優先度に対応した割込みレベルのマスクが割込みコントローラ5に設定される。その為、現在実行中の処理より優先度の低い割込みの場合、割込みレベルが設定されているマスクレベルより低いので割込みコントローラ5で保留され、CPU1には割込みは発生しない。
図29は、仮想計算機#1(10)の処理の遷移と、仮想計算機制御装置30の各構成要素の動作の関係を模式的に示している。なお、図29の破線は、条件によって呼び出される場合とそうでない場合があることを示す。また、図29では仮想計算機#1(10)について示したが、仮想計算機#2(20)に関しても同様である。仮想計算機#1(10)は、一例として、割込みハンドラ#11、タスク#13、タスク#14の順で処理が遷移しているものとする。
なお、第3割込み通知受取手段313、第2割込み終了通知受取手段314、第2タスク切替え受取手段315は、割込みコントローラ5のレベルマスクを変更することができる。詳細は後述する。
第3割込み通知受取手段313は、割込みが発生した時に割込み発生通知を受け取り、優先度更新手段303に割込み発生通知を通知する。優先度更新手段303は、仮想計算機#1(10)の優先度に割込みハンドラ#11の優先度を設定し、仮想計算機スケジュール手段305は、仮想計算機#1(10)が動作する(割込みハンドラ#11が処理される)と決定し、仮想計算機#1(10)に割込み発生通知をする。割込み発生通知を受けた仮想計算機#1(10)は割込みハンドラ#11を実行する。なお、一時的に割込みハンドラ#11の実行が保留される場合には、保留割込み記録手段306に、割込みハンドラ#11が記録されることになる。
次に、割込みハンドラ#11が終了するタイミングで、第2割込み終了通知受取手段314は、割込み終了通知を受け取り、優先度更新手段303に割込み終了通知を通知する。優先度更新手段303は、仮想計算機#1(10)の優先度に仮想計算機#1(10)の次処理であるタスク#13の優先度を設定し、仮想計算機スケジュール手段305は、仮想計算機#1(10)が動作する(タスク#13が処理される)と決定し、仮想計算機#1(10)がタスク#13を実行する。なお、仮想計算機#1(10)が継続して実行するため、保留割込み記録手段306から記録中の割込みハンドラを取得する処理を行わなくてよい。
最後に、タスク#13が終了するタイミングで、第2タスク切替え通知受取手段315は、タスク切替え通知を受け取り、優先度更新手段303にタスク切替え通知を通知する。優先度更新手段303は、仮想計算機#1(10)の優先度に仮想計算機#1(10)の次処理であるタスク#14の優先度を設定し、仮想計算機スケジュール手段305は、仮想計算機#1(10)が動作する(タスク#14が処理される)と決定し、仮想計算機#1(10)がタスク#14を実行する。
図30は、割込みが発生した場合の動作の一例を示すフローチャートである。
本発明の実施の形態における仮想計算機制御装置30を備える情報処理装置に割込みが発生し、処理を開始する(ステップS30−1)。割込みが発生すると、第3割込み通知受取手段313が、割込み発生通知を受け取る。例えば、CPU1が、割込みコントローラ5から割込みの発生通知を受けて割込みを検知した時にジャンプする先である割込みベクターを仮想計算機制御装置30に設けることで、割込み発生時に、第3割込み通知受取手段313を動作させることが可能である。
第3割込み通知受取手段313は、図5のような割込み要因とその対象となる仮想計算機を示した割込みレベルのテーブルを保持しているので、これらを参照し、どちらの仮想計算機(10または20)を対象にした割込みかを決定し、さらに割込みコントローラ5に設定する割込みレベルを決定する(ステップS30−2)。そして、決定した割込みレベルを割込みコントローラ5に設定する(ステップS30−3)。
第3割込み通知受取手段313は、決定した対象仮想計算機(10または20)の情報と共に割込みの発生通知を、優先度更新手段303に通知し、優先度更新手段303は、受け取った対象仮想計算機(10または20)の情報を判断する(ステップS30−4)。
対象仮想計算機(10または20)が仮想計算機#1(10)である場合(ステップS30−4が#1)、優先度更新手段303は、仮想計算機#1(10)の優先度を、発生した割込みに対応する割込みハンドラ120の優先度に設定し、優先度記録手段304に記録されている優先度情報を更新する。一方、対象仮想計算機(10または20)が仮想計算機#2(20)である場合(ステップS30−4が#2)、優先度更新手段303は、仮想計算機#2(20)の優先度を、発生した割込みに対応する割込みハンドラ220の優先度に設定し、優先度記録手段304に記録されている優先度情報を更新する。これにより、対象の仮想計算機(10または20)は、次の処理である割込みハンドラ(120または220)の実行が完了するまでは、仮想計算機(10または20)の優先度を割込みハンドラ(120または220)の優先度と同じ値にすることができる。ただし、対象の仮想計算機(10または20)に対して既に割込みが発生しており、その割込みハンドラ(120または220)の実行中である場合、割込みハンドラ(120または220)の優先度に変化させると仮想計算機(10または20)の優先度が下がる場合がある。この場合には、優先度を変化(低下)させなくてもよい。
優先度更新手段303は、優先度記録手段304に記録されている優先度情報を更新した後、仮想計算機スケジュール手段305を呼び出す(ステップS30−7)。
仮想計算機スケジュール手段305は、優先度記録手段304を参照して、次に実行する仮想計算機(10または20)を決定し、実行中の仮想計算機(10または20)を切り替えるか否かを判断する(ステップS30−8)。
ステップS30−1で発生した割込みの対象の仮想計算機(10または20)を次に実行すると決定した場合(ステップS30−8が割込みの対象)、仮想計算機スケジュール手段305は、実行対象の仮想計算機(10または20)に、受け取った割込みの発生を通知する(ステップS30−9)。
なお、割込みの発生の通知は、例えば、OS(110、210)に、通知を受けるインターフェイスを設け、そのインターフェイスを利用すればよい。あるいは、割込み時のハードウェアの動作をエミュレートしてもよい。一般に、割込み発生時にはハードウェアにより、割込み発生の番地などをレジスタやスタックに記録し、割込み処理にジャンプするという動作が行なわれる。従って、割込み発生時と同じレジスタやスタックの状態にして、割込みの対象であるOS(110、210)内の割込み処理手段にジャンプすれば、割込みハンドラ(120または220)を実行させることができる。
一方、ステップS30−1で発生した割込みの対象の仮想計算機(10または20)を次に実行しないと決定した場合(ステップS30−8が割込みの対象ではない)、仮想計算機スケジュール手段305は、ステップS30−1で発生した割込みに対応する割込みハンドラ(120または220)を、保留割込み記録手段306に記録し(ステップS30−10)、処理を終了する(ステップS30−11)。
なお、保留割込み記録手段306は、仮想計算機(10または20)ごとの記録領域を備え、ソフトウェア的に記録すればよい。また、割込みコントローラ5が、レジスタ等の操作によってハードウェア的に割込みを保留する機能を備えるならば、そのような機能を用いてもよい。
最後に、仮想計算機スケジュール手段305は、実行中の仮想計算機(10または20)の切替えが必要な場合(例えば、実行中の仮想計算機(10または20)が仮想計算機20であり、実行対象の仮想計算機(10または20)が10である場合)、実行対象の仮想計算機10の切替えを行い、保持している現在実行中の仮想計算機20の情報を更新する。
図31は、割込み処理が終了して、第2割込み終了通知受取手段314が仮想計算機(10または20)から割込み終了通知を受け付けたときの動作の一例を説明するフローチャートである。
本発明の実施の形態における第2割込み終了通知受取手段314が、割込み処理を終了する仮想計算機(10または20)から割込み終了通知を受け取り、処理を開始する(ステップS31−1)。例えば、OS内の割込み処理手段112、212から割込みハンドラ終了時に仮想計算機制御装置30に通知するようにし、それを契機に動作させれば良い。割込み終了通知を受けた第2割込み終了通知受取手段314は、割込み終了通知を優先度更新手段303に通知し、優先度更新手段303は、優先度記録手段304に記録されている割込み処理を終了する仮想計算機(10または20)の優先度を、割込み前の処理の優先度に更新する(ステップS31−2)。
次に、優先度更新手段303は仮想計算機スケジュール手段305を呼び出し、仮想計算機スケジュール手段305は、仮想計算機10と仮想計算機20との優先度を比較し、優先度の高い仮想計算機に切り替える(ステップS31−3)。そして、次に実行する処理の優先度に応じた割込みレベルが設定される(ステップS31−4)。これにより、次に実行する処理より優先度の低い割込みはCPU1に通知されなくなる。本実施の形態では、デバイス3は割込みを起こしているが、割込みレベル(=優先度)が低い為にCPU1では割込みが発生してない場合がある。ステップS31−4で新たに設定される割込みレベルが、割込みコントローラ5で遅延されている割込みのレベルより低い場合、この時点でCPU1において割込みが発生する。これは、遅延されていた割込みの優先度が、次に実行される処理より優先度が高いことを意味する。従って、この場合、割込みの通知により第3割込み通知受取手段313が動作して、優先度に従った順で処理が行なわれる。
その後、仮想計算機スケジュール手段305が切り替えた仮想計算機(10または20)が割込みに対応する割込みハンドラ(120または220)を保留割込み記録手段306に記録しているかを判断する(ステップS31−5)。
切り替わった仮想計算機(10または20)の保留割込み記録手段306に割込みハンドラ(120または220)が記録されている場合、保留割込み記録手段306に記録されている割込みハンドラ(120または220)を実行する(ステップS31−6)。割込みハンドラ(120または220)が保留割込み記録手段306に記録されているということは、割込み発生時(ステップS4−1)に、割込んだ仮想計算機(10または20)が仮想計算機スケジュール手段305に選択されなかったことを意味する。そして、割込み発生時(ステップS30−1)に、割込みの対象の仮想計算機(10または20)の優先度が、その割込みに対応する割込みハンドラの優先度に設定される(ステップS30−5、ステップS30−6)ので、仮想計算機スケジュール手段305が、割込みを保留している仮想計算機(10または20)を次に実行すると判断した場合(ステップS31−5)、保留されている割込み処理は、もう一方の仮想計算機(10または20)が次に実行する処理より高いことを意味する。つまり、ここで保留されている割込み処理を実行することが、優先度に従った実行となる。そして、切り替わった仮想計算機(10または20)の保留割込み記録手段306に割込みハンドラ(120または220)が記録されていない場合には、第2タスク切替え通知受取手段315が仮想計算機(10または20)からタスク切替え通知を受け付けたときの動作は終了(ステップS31−7)し、ステップS31−3で決定した仮想計算機(10または20)が実行される。
なお、上述したように、仮想計算機(10または20)の内部に保留割込み記録手段306がある場合には、仮想計算機10と仮想計算機20がそれぞれ保留割込み記録手段306を持っていることになるので、仮想計算機スケジュール手段305は、仮想計算機(10または20)に割込み通知を行い、これを受けた仮想計算機(10または20)が保留割込み記録手段306に記録している割込みハンドラ(120または220)を実行するようにしてもよい。
さらに、上述したように、仮想計算機(10または20)の内部に保留割込み記録手段306がある場合には、仮想計算機10と仮想計算機20がそれぞれ保留割込み記録手段306を持っていることになるので、仮想計算機スケジュール手段305は、仮想計算機(10または20)に割込み通知を行い、これを受けた仮想計算機(10または20)が保留割込み記録手段306に記録している割込みハンドラ(120または220)を実行するようにしてもよい。この場合、仮想計算機(10または20)が保留割込み記録手段306を持っているので、仮想計算機スケジュール手段305は、仮想計算機(10または20)に割込み通知を行い、これを受けた仮想計算機(10または20)が保留割込み記録手段306に記録してある割込みハンドラ(120または220)を実行する。例えば、前述したように仮想計算機(10または20)のOS(110または210)に割込みハンドラ(120または220)の実行命令を受け取るインターフェイスを設ければ、このインターフェイスを用いることで割込み発生をOS(110または210)に通知し、割込みハンドラ(120または220)を実行させることが可能である。あるいは、ハードウェアを操作することで割込みを発生させることができるなら、実際に割込みを再発生させても良い。あるいは、別の方法として割込み時のハードウェアの動作をエミュレートしてもよい。例えば、割込み発生時にはハードウェアにより、割込み発生の番地などをレジスタやスタックに記録し、CPUを割込みモードにして処理にジャンプするという動作が行なわれる。
従って、割込み発生時と同じレジスタやスタック状態、CPUモードにして、OS(110または210)内の割込み処理手段にジャンプすれば、その時点で割込みが発生したかの様にOS(110または210)に割込みハンドラ(120または220)を実行させることができるので、OS(110または210)に対する割込みの通知として用いることが出来る。あるいは、割込みコントローラ5の機能によりハードウェア的に割込みを保留している場合は、ここで保留を解除して割込みの発生をCPU1に通知させてもよい。
図32は、タスクが切り替わり、第2タスク切替え通知受取手段315が仮想計算機(10または20)からタスク切替え通知を受け付けたときの動作の一例を説明するフローチャートである。
本発明の実施の形態における第2タスク切替え通知受取手段315が、タスク処理を切り替える仮想計算機(10または20)からタスク切替え通知を受け取り、処理を開始する(ステップS32−1)。例えば、OS内のタスクスケジューラ111、211からタスクスイッチ時に仮想計算機制御装置30に通知するようにし、それを契機に動作させれば良い。タスク切替え通知を受けた第2タスク切替え通知受取手段315は、タスク切替え通知を優先度更新手段303に通知し、優先度更新手段303は、優先度記録手段304に記録されているタスクを切り替える仮想計算機(10または20)の優先度を、次に実行するタスクの優先度に更新する(ステップS32−2)。
次に、優先度更新手段303は仮想計算機スケジュール手段305を呼び出し、仮想計算機スケジュール手段305は、仮想計算機10と仮想計算機20との優先度を比較し、優先度の高い仮想計算機(10または20)に切り替える(ステップS32−3)。そして、次に実行する処理の優先度に応じた割込みレベルが設定される(ステップS32−4)。これにより、次に実行する処理より優先度の低い割込みはCPU1に通知されなくなる。本実施の形態では、デバイス3は割込みを起こしているが、割込みレベル(=優先度)が低い為にCPU1では割込みが発生してない場合がある。ステップS32−4で新たに設定される割込みレベルが、割込みコントローラ5で遅延されている割込みのレベルより低い場合、この時点でCPU1において割込みが発生する。これは、遅延されていた割込みの優先度が、次に実行される処理より優先度が高いことを意味する。従って、この場合、割込みの通知により割込み通知受取手段301が動作して、優先度に従った順で処理が行なわれる。
仮想計算機スケジュール手段305が切り替えた仮想計算機(10または20)が割込みに対応する割込みハンドラ(120または220)を保留割込み記録手段306に記録しているかを判断する(ステップS32−5)。切り替わった仮想計算機(10または20)の保留割込み記録手段306に割込みハンドラ(120または220)が記録されている場合、保留割込み記録手段306に記録されている割込みハンドラ(120または220)を実行する(ステップS32−6)。そして、第2タスク切替え通知受取手段315が仮想計算機からタスク切替え通知を受け付けたときの動作は終了(ステップS32−7)し、ステップS32−3で決定した仮想計算機(10または20)が実行される。また、割込みハンドラが保留割込み記録手段306に記録されているということは、割込み発生時(ステップS30−1)に、割込んだ仮想計算機(10または20)が仮想計算機スケジュール手段305に選択されなかったことを意味する。
そして、割込み発生時(ステップS30−1)に、割込みの対象の仮想計算機(10または20)の優先度が、その割込みに対応する割込みハンドラ(120または220)の優先度に設定されるので、仮想計算機スケジュール手段305が、割込みを保留している仮想計算機(10または20)を次に実行すると判断した場合(ステップS32−3)、保留されている割込み処理は、もう一方の仮想計算機が次に実行する処理より高いことを意味する。つまり、ここで保留されている割込み処理を実行することが、優先度に従った実行となる。そして、切り替わった仮想計算機(10または20)の保留割込み記録手段306に割込みハンドラ(120または220)が記録されていない場合には、第2タスク切替え通知受取手段315が仮想計算機からタスク切替え通知を受け付けたときの動作は終了(ステップS32−7)し、ステップS32−3で決定した仮想計算機(10または20)が実行される。
なお、上述したように、仮想計算機(10または20)の内部に保留割込み記録手段306がある場合には、仮想計算機10と仮想計算機20がそれぞれ保留割込み記録手段306を持っていることになるので、仮想計算機スケジュール手段305は、仮想計算機(10または20)に割込み通知を行い、これを受けた仮想計算機(10または20)が保留割込み記録手段306に記録している割込みハンドラ(120または220)を実行するようにしてもよい。
さらに、上述したように、仮想計算機(10または20)の内部に保留割込み記録手段306がある場合には、仮想計算機10と仮想計算機20がそれぞれ保留割込み記録手段306を持っていることになるので、仮想計算機スケジュール手段305は、仮想計算機(10または20)に割込み通知を行い、これを受けた仮想計算機(10または20)が保留割込み記録手段306に記録している割込みハンドラ(120または220)を実行するようにしてもよい。この場合、仮想計算機(10または20)が保留割込み記録手段306を持っているので、仮想計算機スケジュール手段305は、仮想計算機(10または20)に割込み通知を行い、これを受けた仮想計算機(10または20)が保留割込み記録手段306に記録してある割込みハンドラ(120または220)を実行する。例えば、前述したように仮想計算機(10または20)のOS(110または210)に割込みハンドラ(120または220)の実行命令を受け取るインターフェイスを設ければ、このインターフェイスを用いることで割込み発生をOS(110または210)に通知し、割込みハンドラ(120または220)を実行させることが可能である。あるいは、ハードウェアを操作することで割込みを発生させることができるなら、実際に割込みを再発生させても良い。あるいは、別の方法として割込み時のハードウェアの動作をエミュレートしてもよい。例えば、割込み発生時にはハードウェアにより、割込み発生の番地などをレジスタやスタックに記録し、CPUを割込みモードにして処理にジャンプするという動作が行なわれる。
従って、割込み発生時と同じレジスタやスタック状態、CPUモードにして、OS(110または210)内の割込み処理手段にジャンプすれば、その時点で割込みが発生したかの様にOS(110または210)に割込みハンドラ(120または220)を実行させることができるので、OS(110または210)に対する割込みの通知として用いることが出来る。あるいは、割込みコントローラ5の機能によりハードウェア的に割込みを保留している場合は、ここで保留を解除して割込みの発生をCPU1に通知させてもよい。
以上の様に、本実施の形態では、処理の優先度に応じた割込みレベルを設定することで、割込みの優先度に従った順での実行が可能である。
なお、割込みコントローラが割込みレベルマスクの機能を持たない場合においても、割込み要因ごとのマスクが可能な割込みコントローラなら、擬似的に割込みレベルの設定が可能である。図33にその方法を記す。マスクレベルを設定する代わりに、マスクレベルより割込みレベルを低く設定した割込みを全てマスクする。図33では1がマスクされた状態であることを示す。これにより、特定の優先度より低い割込みのみを遅延させることが出来る。本実施の形態では、この方法を用いても良い。
なお、保留割込み記録手段306を仮想計算機(10または20)の方に設けても良い。この場合は、実施の形態1、2、3、4と同様に仮想計算機スケジュール手段305が仮想計算機に割込み発生通知を通知し、あとは仮想計算機(10または20)の方で保留割込み処理を実行させるようにする。
また、本実施の形態においても、実施の形態3の優先度調整手段309を設けても良い。また、本実施の形態では、優先度と割込みレベルは1対1の関係にあるが、割込みコントローラ5の仕様によっては設定できるレベルの数が十分でないこともある。このような場合は、優先度のある程度の範囲を一つの割込みレベルに対応させたり、優先度の一部の範囲のみに本実施の形態を適用し、他の範囲には実施の形態1を用いるといった形でも良い。
以上、本発明によれば、複数の仮想計算機に渡り情報処理装置の特性に合わせて設計された優先度に従って、タスク、割込み処理の実行が可能である。
なお、本明細書では仮想計算機が2つの場合を実施の形態として示したが、本発明はこれに限定するのではない。3つ以上の仮想計算機を設ける場合でも、同様に本発明を用いることが出来る。また、OSによっては、割込み処理終了時には必ずタスクスケジューリングを行なうものも有る。そのようなOSの場合は、割込み終了時には必ずタスク切替え通知受取手段308が呼ばれるので、割込み終了通知受取手段307の役割をタスク切替え通知受取手段308に統合してもよい。
また、本発明の各機能ブロックは典型的にはソフトウェアとして実現されるが、集積回路であるLSIとして実現しても良い。これらは個別に1チップ化されても良いし、一部又は全てを含むように1チップ化されても良い。ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field ProgrammableGate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
本発明にかかる仮想計算機制御装置、及び方法は、情報処理装置を用いるものであれば幅広い分野において有効である。例えば、大型計算機やパーソナルコンピュータのような形態のみならず、各種の家電機器、携帯電話のような通信機器、産業機器、乗用機器などでも利用可能である。
本発明の実施の形態における仮想計算機制御装置を備えた情報処理装置の構成を示すブロック図 本発明の実施の形態における仮想計算機制御装置の優先度記録手段のフォーマットの一例を示す図 本発明の実施の形態1における機能ブロックの動作の関係を示す図 本発明の実施の形態における仮想計算機制御装置の割込み発生時の処理の流れの一例を示すフローチャート 割込み要因と対象の仮想計算機の関係を記述するテーブルの例の図 本発明の実施の形態1における切替え通知受取時の動作を説明するフローチャート 本発明の実施の形態1における動作の一例を示す図 本発明の実施の形態1における動作の一例を示す図 本発明の実施の形態1における動作の一例を示す図 本発明の実施の形態2における仮想計算機制御装置を構築する情報処理装置の概略構成図 本発明の実施の形態2における機能ブロックの動作の関係を示す図 本発明の実施の形態2における割込み処理終了時の動作を説明するフローチャート 本発明の実施の形態2におけるタスクスイッチ時の動作を説明するフローチャート 本発明の実施の形態2における動作の一例を示す図 本発明の実施の形態2における動作の一例を示す図 本発明の実施の形態2における動作の一例を示す図 本発明の実施の形態3における仮想計算機制御装置を構築する情報処理装置の概略構成図 本発明の実施の形態3における優先度の調整の例を説明する図 本発明の実施の形態3における優先度の調整の例を説明する図 本発明の実施の形態3における優先度の調整の例を説明する図 本発明の実施の形態4における仮想計算機制御装置を構築する情報処理装置の概略構成図 本発明の実施の形態4における割込みハンドラ構成を示す図 本発明の実施の形態4における機能ブロックの動作の関係を示す図 本発明の実施の形態4における割込み発生時の動作を説明するフローチャート 本発明の実施の形態4における割込み処理終了時の動作を説明するフローチャート 本発明の実施の形態4におけるタスクスイッチ時の動作を説明するフローチャート 本発明の実施の形態5における仮想計算機制御装置を構築する情報処理装置の概略構成図 本発明の実施の形態5における優先度と割込みレベルの対応の一例を示す図 本発明の実施の形態5における機能ブロックの動作の関係を示す図 本発明の実施の形態5における割込み発生時の動作を説明するフローチャート 本発明の実施の形態5における割込み処理終了時の動作を説明するフローチャート 本発明の実施の形態5におけるタスクスイッチ時の動作を説明するフローチャート 擬似的に割込みレベルマスクを行なう場合の一例を示す図
符号の説明
1 CPU
2 割込みコントローラ
3 周辺デバイス
4 メモリ
5 割込みコントローラ
10 仮想計算機
20 仮想計算機
30 仮想計算機制御装置
100 タスク
110 OS
111 タスクスケジューラ
112 割込み処理手段
120 割込みハンドラ
121 実割込みハンドラ
200 タスク
210 OS
211 タスクスケジューラ
212 割込み処理手段
220 割込みハンドラ
221 実割込みハンドラ
301 割込み通知受取手段
302 切替え通知受取手段
303 優先度更新手段
304 優先度記録手段
305 仮想計算機スケジュール手段
306 保留割込み記録手段
307 割込み終了通知受取手段
308 タスク切替え通知受取手段
309 優先度調整手段
310 第2割込み通知受取手段
311 実割込み通知受取手段
312 実保留割込み記録手段
313 第3割込み通知受取手段
314 第2割込み終了通知受取手段
315 第2タスク切替え通知受取手段

Claims (5)

  1. タスクの優先度に基づきタスクのスケジューリングを行う複数の仮想計算機に対し、前記仮想計算機の切替えを制御する仮想計算機制御装置であって、
    前記仮想計算機の優先度を記録する優先度記録手段と、
    一時的に実行を保留する割込みに対応する割込みハンドラを記録する保留割込み記録手段と、
    前記仮想計算機への割込み通知を受け取り、前記割込みの発生を通知する割込み通知受取手段と、
    前記仮想計算機で実行中の処理が切り替わる場合に、前記仮想計算機から通知される切替え通知を受け取り、前記切替え通知を通知する切替え通知受取手段と、
    前記割込み通知受取手段が前記割込み発生通知を受け取ると、前記割込みを実行する前記仮想計算機に対応する前記優先度記録手段に記録された優先度を、前記受け取った割込みに対応する割込みハンドラの優先度に更新する優先度更新手段と、
    前記優先度更新手段が前記仮想計算機に対応する前記優先度記録手段に記録された優先度を更新した場合に、前記更新後の優先度を用いて実行中の前記仮想計算機を切替えるか否かを決定し、前記受け取った割込みを実行する前記仮想計算機に切替えないと決定した場合、前記割込みに対応する割込みハンドラを、前記仮想計算機の前記保留割込み記録手段に記録する仮想計算機スケジュール手段とを備え、
    前記優先度更新手段は、更に、前記切替え通知受取手段から前記切替え通知を受け取ると、前記切替え通知を送信した前記仮想計算機に対応する前記優先度記録手段に記録された優先度を、前記仮想計算機が切替える処理の優先度に更新し、
    前記仮想計算機スケジュール手段は、前記優先度更新手段が前記仮想計算機に対応する前記優先度記録手段に記録された優先度を更新する場合に、前記更新後の優先度を用いて実行中の前記仮想計算機を切替えるか否かを決定し、実行中の前記仮想計算機を切替えると決定し、さらに、前記仮想計算機の前記保留割込み記録手段に前記割込みハンドラが記録されているときには、前記割込みハンドラを取得し、切替え後の仮想計算機に実行を指示することを特徴とする仮想計算機制御装置。
  2. 前記切替え通知受取手段は、前記仮想計算機のタスクが切替わる場合にタスクが切替わる旨のタスク切替え通知を前記仮想計算機から受け取り、前記タスク切替え通知を通知するタスク切替え通知受取手段であり、
    前記優先度変更手段は、更に、前記タスク切替え通知受取手段から前記タスク切替え通知を受け取ると、前記切替え通知を送信した前記仮想計算機に対応する前記優先度記憶手段に記憶された優先度を、前記仮想計算機が次に実行すると決定しているタスクの優先度に変更することを特徴とする請求項2記載の仮想計算機制御装置。
  3. 前記切替え通知受取手段は、割込みの処理が終了する場合に前記割込みの処理が終了する旨の割込み終了通知を前記仮想計算機から受け取り、前記割込み終了通知を通知する割込み終了通知受取手段であり、
    前記優先度変更手段は、更に、前記割込み終了通知受取手段が前記割込み終了通知を受け取ると、前記割込み終了通知を送信した前記仮想計算機に対応する前記優先度記憶手段に記憶された優先度を、前記仮想計算機が前記割込みによって割込まれた処理の優先度に変更することを特徴とする請求項2記載の仮想計算機制御装置。
  4. 前記仮想計算機制御装置は、前記タスクと前記割込みハンドラに付与された優先度を変更する優先度調整手段を備えることを特徴とする請求項2記載の仮想計算機制御装置。
  5. 前記仮想計算機制御装置は、設定したレベル以下の割込みをマスクする機能を持つ割込みコントローラを備え、前記割込みコントローラに、前記仮想計算機が次に実行する処理の優先度に対応した割込みマスクレベルを設定し、前記仮想計算機に対して前記割込みマスクレベルより低い割込みがあった場合には、前記割込みをマスクすることを特徴とする請求項4記載の仮想計算機制御装置。
JP2007070154A 2007-03-19 2007-03-19 仮想計算機制御装置 Pending JP2008234116A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007070154A JP2008234116A (ja) 2007-03-19 2007-03-19 仮想計算機制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007070154A JP2008234116A (ja) 2007-03-19 2007-03-19 仮想計算機制御装置

Publications (1)

Publication Number Publication Date
JP2008234116A true JP2008234116A (ja) 2008-10-02

Family

ID=39906838

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007070154A Pending JP2008234116A (ja) 2007-03-19 2007-03-19 仮想計算機制御装置

Country Status (1)

Country Link
JP (1) JP2008234116A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010137092A1 (ja) * 2009-05-26 2010-12-02 パナソニック株式会社 マルチオペレーティングシステム制御方法及びプロセッサシステム
DE102010043569A1 (de) 2009-11-09 2011-05-26 Denso Corporation, Kariya-City Verfahren und Vorrichtung zum Planen von Aufgaben zur Steuerung von Hardwareeinrichtungen
JP2015041199A (ja) * 2013-08-21 2015-03-02 キヤノン株式会社 情報処理装置
CN109960567A (zh) * 2017-12-25 2019-07-02 瑞萨电子株式会社 半导体设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010137092A1 (ja) * 2009-05-26 2010-12-02 パナソニック株式会社 マルチオペレーティングシステム制御方法及びプロセッサシステム
DE102010043569A1 (de) 2009-11-09 2011-05-26 Denso Corporation, Kariya-City Verfahren und Vorrichtung zum Planen von Aufgaben zur Steuerung von Hardwareeinrichtungen
US8595746B2 (en) 2009-11-09 2013-11-26 Denso Corporation Method and apparatus for scheduling tasks to control hardware devices
DE102010043569B4 (de) 2009-11-09 2024-09-26 Denso Corporation Verfahren und Vorrichtung zum Planen von Aufgaben zur Steuerung von Hardwareeinrichtungen
JP2015041199A (ja) * 2013-08-21 2015-03-02 キヤノン株式会社 情報処理装置
CN109960567A (zh) * 2017-12-25 2019-07-02 瑞萨电子株式会社 半导体设备

Similar Documents

Publication Publication Date Title
JP5405320B2 (ja) 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム
JP5323828B2 (ja) 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路
JP4960237B2 (ja) 競合解決装置
KR100746797B1 (ko) 프로세서 및 정보처리 방법
JP6199477B2 (ja) ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法
JP6009529B2 (ja) マルチスレッドシステムの中でイベントを設定するための技術
JP4996519B2 (ja) 仮想マルチプロセッサ、システムlsi、携帯電話機器、及び仮想マルチプロセッサの制御方法
US20080140896A1 (en) Processor and interrupt controlling method
JP2009265963A (ja) 情報処理システム及びタスクの実行制御方法
JP2011164971A (ja) Biosとbmcとの間の通信パス強化方法、その装置及びそのプログラム
JP2010272076A (ja) マルチプロセッサシステム
US20040098722A1 (en) System, method, and computer program product for operating-system task management
JP4609113B2 (ja) プロセッサ
JP2008234116A (ja) 仮想計算機制御装置
JP2005190207A (ja) 割り込み制御装置、制御方法
JP2018088048A (ja) マルチプロセッサ及びマルチプロセッサシステム
JP4675891B2 (ja) タスクスケジューリング装置、タスクスケジューリング方法、タスクスケジューリングプログラム、記録媒体、及び伝送媒体
JP5819184B2 (ja) 情報処理装置及び情報処理装置の制御方法
JP2009020555A (ja) スワップ処理装置
JP5053109B2 (ja) 制御装置
JP2005092780A (ja) リアルタイムプロセッサシステム及び制御方法
JP2008537248A (ja) デジタルシグナルプロセッサ上でのマルチタスクの実施
JP2012137946A (ja) 半導体装置
KR20040101260A (ko) 가상 직접 메모리 액세스를 위한 방법 및 장치
JP2009020776A (ja) スワップアウト制御装置