(57)【特許請求の範囲】
【請求項１】
複数のＯＳ間で行われるプロセススイッチに関するプロセススイッチ情報をハードウェアに出力する情報処理システムであって、
ホストＯＳと、
前記ホストＯＳ上で動作するＶＭＭと、
前記ＶＭＭにより並列的に動作する複数のゲストＯＳと、
を備え、
前記各ゲストＯＳは、
自己のプロセスに関する前記プロセススイッチ情報を前記ホストＯＳに出力するプロセススイッチ情報出力部、
を含み、
前記ホストＯＳは、
前記プロセススイッチ情報と前記プロセススイッチ情報のタイミング情報とに基づいて複数の前記プロセススイッチ情報の出力順序を一元的に示す出力順序情報を生成するプロセススイッチ情報管理部と、
前記ハードウェアの種類毎に前記プロセススイッチ情報の出力処理に要した時間である出力処理時間を保持し、前記出力処理時間に基づいて前記出力処理の待ち時間が最小となるように前記プロセススイッチ情報の出力先となる前記ハードウェアを選択し、前記出力順序情報に基づいて複数の前記プロセススイッチ情報を前記出力順序に従って逐次的に前記ハードウェアに出力するハードウェア制御部と、
を含む、
情報処理システム。
【請求項２】
前記ホストＯＳは、
複数の前記プロセススイッチ情報を前記ホストＯＳ及び前記ゲストＯＳ毎に前記タイミング情報の順番で蓄積した個別ＦＩＦＯ情報を生成し、
前記個別ＦＩＦＯ情報に基づいて前記出力順序情報を生成する、
請求項１に記載の情報処理システム。
【請求項３】
前記タイミング情報は、システム時刻を基準とする情報である、
請求項１または２に記載の情報処理システム。
【請求項４】
複数のＯＳ間で行われるプロセススイッチに関するプロセススイッチ情報をハードウェアに出力するためのプログラムであって、
ホストＯＳと、前記ホストＯＳ上で動作するＶＭＭと、前記ＶＭＭにより並列的に動作する複数のゲストＯＳとを備えるコンピュータに、
前記各ゲストＯＳが自己のプロセスに関する前記プロセススイッチ情報を前記ホストＯＳに出力する処理と、
前記ホストＯＳが前記プロセススイッチ情報と前記プロセススイッチ情報のタイミング情報とに基づいて複数の前記プロセススイッチ情報の出力順序を一元的に示す出力順序情報を生成する処理と、
前記ホストＯＳが前記ハードウェアの種類毎に前記プロセススイッチ情報の出力処理に要した時間である出力処理時間に基づいて前記出力処理の待ち時間が最小となるように前記プロセススイッチ情報の出力先となる前記ハードウェアを選択する処理と、
前記ホストＯＳが前記出力順序情報に基づいて複数の前記プロセススイッチ情報を前記出力順序に従って逐次的に前記ハードウェアに出力する処理と、
を実行させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム及びプログラムに関する。
【背景技術】
【０００２】
物理的なコンピュータ上に１つ以上の仮想的なコンピュータ（仮想マシン）を動作させる仮想化技術が利用されている。仮想マシンは、例えばＶＭＭ（Virtual  Machine  Monitor）によりホストＯＳ（Operating  System）上で複数のゲストＯＳを並列的に動作させることにより実現される。
【０００３】
例えば、マルチコンピュータシステムにおいて、複数のアプリケーションプログラムの処理の同期を保証すると共に、デバッガの動作による処理の撹乱を防止することを目的として、各コンピュータ間で連携して動作する各アプリケーションプログラムの処理の同期を確立し、プロセス内部状態、プロセス間通信、プロセス間同期、及び共有リソース状態を入出力端末装置によって制御及び表示する技術がある（特許文献１）。
【０００４】
また、異なるＯＳ間の非同期イベント、人間の操作等に起因する障害を再現することを目的として、ＶＭＭ上で動作する各ＯＳの状態を全て記録し、全てのＯＳの状態を再現する技術がある（特許文献２）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
複数のＯＳ間でプロセススイッチが行われる場合、各ＯＳ上で動作するアプリケーション（プロセス）に関するプロセススイッチ情報がハードウェアに出力される。このとき、従来の技術では、異なるＯＳのプロセス間における通信の完了を検知することはできても、プロセス自身が切り替えられるタイミングを検知することはできない。例えば、プロセス間における通信の開始直後に送信側のＯＳのプロセスがスイッチし、他のＯＳのプロセスがシステムを長時間占有した場合には、通信を完了することができなくなる。従来の技術では、このような状況を検知することができず、複数のＯＳの各プロセスの動作状況に応じた制御を実現することが困難である。
【０００６】
本発明は、上記に鑑みてなされたものであって、仮想マシンを含むシステムにおいて複数のＯＳの各プロセスの動作状況に応じた制御を可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、複数のＯＳ間で行われるプロセススイッチに関するプロセススイッチ情報をハードウェアに出力する情報処理システムであって、ホストＯＳと、前記ホストＯＳ上で動作するＶＭＭと、前記ＶＭＭにより並列的に動作する複数のゲストＯＳとを備え、前記各ゲストＯＳは、自己のプロセスに関する前記プロセススイッチ情報を前記ホストＯＳに出力するプロセススイッチ情報出力部を含み、前記ホストＯＳは、前記プロセススイッチ情報と前記プロセススイッチ情報のタイミング情報とに基づいて複数の前記プロセススイッチ情報の出力順序を一元的に示す出力順序情報を生成するプロセススイッチ情報管理部と、前記ハードウェアの種類毎に前記プロセススイッチ情報の出力処理に要した時間である出力処理時間を保持し、前記出力処理時間に基づいて前記出力処理の待ち時間が最小となるように前記プロセススイッチ情報の出力先となる前記ハードウェアを選択し、前記出力順序情報に基づいて複数の前記プロセススイッチ情報を前記出力順序に従って逐次的に前記ハードウェアに出力するハードウェア制御部とを含むものである。
【発明の効果】
【０００８】
本発明によれば、複数のゲストＯＳの各プロセスの動作状況に応じた制御を実行することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態に係る情報処理システムの機能的構成を例示する図である。
【図２】図２は、実施の形態に係るＰＳ情報管理部の機能的構成を例示する図である。
【図３】図３は、実施の形態に係るハードウェア制御部の機能的構成を例示する図である。
【図４】図４は、実施の形態に係る出力処理部からハードウェア群に出力されるＰＳ情報のデータ構造を例示する図である。
【図５】図５は、実施の形態に係るゲストＯＳにおけるシーケンスを例示するフローチャートである。
【図６】図６は、実施の形態に係るホストＯＳにおけるシーケンスを例示するフローチャートである。
【図７】図７は、実施の形態に係る共通出力部におけるシーケンスを例示するフローチャートである。
【図８】図８は、実施の形態に係る出力先選択部におけるシーケンスを例示するフローチャートである。
【図９】図９は、実施の形態に係る出力処理部におけるシーケンスを例示するフローチャートである。
【発明を実施するための形態】
【００１０】
図１は、本実施の形態に係る情報処理システム１の機能的構成を例示する図である。情報処理システム１は、ハードウェア群１１、ホストＯＳ（Operating  System）１２、ＶＭＭ（Virtual  Machine  Monitor）１３、複数（本実施の形態では２つ）のゲストＯＳ１４Ａ，１４Ｂを含む。
【００１１】
ハードウェア群１１は、コンピュータの一部を構成する物理的なデバイスであり、例えば内部記憶装置（メモリ、ＨＤＤ（Hard  Disc  Drive）等）、外部記憶装置接続用デバイス（ネットワーク、ＳＤポート等）等である。
【００１２】
ホストＯＳ１２は、ハードウェア群１１の制御を含む全体的な制御を司るＯＳであり、各種のプロセスを実行する。ＶＭＭ１３は、ホストＯＳ１２上で動作するアプリケーションであり、その上で第１のゲストＯＳ１４Ａ及び第２のゲストＯＳ１４Ｂを並列的に動作させる。第１のゲストＯＳ１４Ａ及び第２のゲストＯＳ１４Ｂは、それぞれ個別のプロセスを実行し、ＶＭＭ１３上で並列的に各プロセスを実行する。第１のゲストＯＳ１４Ａ、第２のゲストＯＳ１４Ｂ、及びホストＯＳ１２の間でＶＭＭ１３を介して各プロセスの切り替え（プロセススイッチ）が行われる。
【００１３】
ホストＯＳ１２、ＶＭＭ１３、及びゲストＯＳ１４Ａ，１４Ｂは、情報処理システム１に含まれる１つ以上のコンピュータにインストールされて実行される。当該コンピュータのＣＰＵ（Central  Processing  Unit）は、ＲＯＭ（Read  Only  Memory）等に記憶されたホストＯＳ１２、ＶＭＭ１３、及びゲストＯＳ１４Ａ，１４Ｂに従ってＲＡＭ（Random  Access  Memory）をワーキングエリアとして所定の演算処理を行う。
【００１４】
第１のゲストＯＳ１４Ａ及び第２のゲストＯＳ１４Ｂは、それぞれプロセススイッチ情報出力部（以下、ＰＳ情報出力部と略記する）３１Ａ，３１Ｂを含む。第１のゲストＯＳ１４ＡのＰＳ情報出力部３１Ａは、第１のゲストＯＳ１４Ａにおけるプロセススイッチに関するプロセススイッチ情報（以下、ＰＳ情報と略記する）を生成し、ＶＭＭ１３を介してホストＯＳ１２に出力する。第２のゲストＯＳ１４ＢのＰＳ情報出力部３１Ｂは、第２のゲストＯＳ１４Ｂにおけるプロセススイッチに関するＰＳ情報を生成し、ＶＭＭ１３を介してホストＯＳ１２に出力する。
【００１５】
ホストＯＳ１２は、プロセススイッチ情報管理部（以下、ＰＳ情報管理部と略記する）２１、時間情報保持部２２、及びハードウェア制御部２３を含む。
【００１６】
ＰＳ情報管理部２１は、第１のゲストＯＳ１４Ａ及び第２のゲストＯＳ１４Ｂから出力された各ＰＳ情報を入力し、複数のＰＳ情報の出力順序を一元的に示す出力順序情報を生成する。当該複数のＰＳ情報には、ゲストＯＳ１４Ａ，１４ＢのＰＳ情報だけでなく、ホストＯＳ１２自身におけるプロセススイッチに関するＰＳ情報も含まれる。ＰＳ情報管理部２１は、時間情報保持部２２に保持されている時間情報を用いて、入力された各ＰＳ情報とタイミング情報とを対応付ける。タイミング情報は、ゲストＯＳ１４Ａ，１４Ｂから出力された各ＰＳ情報がホストＯＳ１２に入力された時刻、ホストＯＳ１２のＰＳ情報が生成された時刻等であってもよい。タイミング情報は、例えば情報処理システム１のシステム時刻を基準とするものであってもよい。
【００１７】
ハードウェア制御部２３は、ハードウェア群１１を制御するための各種情報（信号）を生成し、出力する。ハードウェア制御部２３からハードウェア群１１に出力される情報にはＰＳ情報が含まれる。ハードウェア制御部２３は、ＰＳ情報管理部２１により生成された出力順序情報に基づいて複数のＰＳ情報を出力順序に従って逐次的にハードウェア群１１に出力する。
【００１８】
図２は、本実施の形態に係るＰＳ情報管理部２１の機能的構成を例示する図である。ＰＳ情報管理部２１は、ＰＳ情報ＦＩＦＯバッファ５１及び出力順序情報生成部５２を含む。
【００１９】
ＰＳ情報ＦＩＦＯバッファ５１は、各ＯＳ１２，１４Ａ，１４ＢのＰＳ情報をＯＳ１２，１４Ａ，１４Ｂ毎にタイミング情報に基づく順番で蓄積した個別ＦＩＦＯ情報５５を保持する。
【００２０】
出力順序情報生成部５２は、個別ＦＩＦＯ情報５５に基づいて、複数のＰＳ情報の出力順序を一元的に示す出力順序情報５７を生成する。本例の出力順序情報５７においては、ホストＯＳ１２の１番目のプロセス「ＨＯＳＴ＿０」、第１のゲストＯＳ１４Ａの２番目のプロセス「ＧＥＳＴ１＿１」、第２のゲストＯＳ１４Ｂの１番目のプロセス「ＧＥＳＴ２＿０」の順番でＰＳ情報が出力されることを示している。この場合、「ＨＯＳＴ＿０」のタイミング情報が示す時刻をＴ１、「ＧＥＳＴ１＿１」のタイミング情報が示す時刻をＴ２、「ＧＥＳＴ２＿０」のタイミング情報が示す時刻をＴ３とするとき、Ｔ１＜Ｔ２＜Ｔ３の関係が成り立つ。出力順序情報５７は、個別ＦＩＦＯ情報５５を保持する物理的バッファのアドレスを特定する情報であってもよい。本例の出力順序情報５７中、「ＴＯＰ」は一連のプロセススイッチの開始点を示し、「ＥＮＤ」は終了点を示し、「ＮＥＸＴ」は現在の出力位置を示している。「ＮＥＸＴ」の位置はＰＳ情報の出力処理が進むにつれて「ＥＮＤ」の方へ移動していく。「ＮＥＸＴ」が「ＥＮＤ」に達したら「ＴＯＰ」に戻ってもよい。
【００２１】
図３は、本実施の形態に係るハードウェア制御部２３の機能的構成を例示する図である。ハードウェア制御部２３は、共通出力部６１、出力先選択部６２、及び出力処理部６３を含む。
【００２２】
共通出力部６１は、ＰＳ情報がハードウェア群１１に出力される際に、ハードウェアの種類（本例ではメモリ、ＨＤＤ、ネットワーク等）毎に出力処理を共通化させる処理を行う。出力先選択部６２は、ＰＳ情報の出力先を選択する処理を行う。出力処理部６３は、共通出力部６１の処理結果及び出力先選択部６２の処理結果に基づいてＰＳ情報をハードウェア群１１に出力する処理を行う。出力処理部６３は、ハードウェアの種類毎に出力処理時間６６Ａ，６６Ｂ，６６Ｃを記憶したデータベースを有する。出力処理時間６６Ａ，６６Ｂ，６６Ｃは、過去にＰＳ情報４１を各ハードウェアに出力した際に要した時間を示す情報である。
【００２３】
図４は、本実施の形態に係る出力処理部６３からハードウェア群１１に出力されるＰＳ情報４１のデータ構造を例示する図である。本例のＰＳ情報４１は、ＯＳＩＤ、プロセスＩＤ、プロセス名、出力時刻、出力デバイスＴＹＰＥＩＤ、及び遅延時間を含む。ＯＳＩＤは、各ＯＳ１２，１４Ａ，１４Ｂを特定する数値、記号等の情報である。プロセスＩＤはプロセスを特定する数値、記号等の情報である。プロセス名はプロセスを特定する文字列等の情報であり、プロセスＩＤと対になる情報である。出力時刻はＰＳ情報がハードウェア制御部２３（出力処理部６３）から出力された時刻を示す情報であり、通常、ホストＯＳ１２により打刻される情報である。出力デバイスＴＹＰＥＩＤはＰＳ情報の出力先のハードウェアの種類を特定する数値、記号等の情報である。遅延時間は、前回のＰＳ情報の出力処理に要した時間を示す情報である。なお、ＰＳ情報４１のデータ構造はこれに限られるものではない。
【００２４】
図５は、本実施の形態に係るゲストＯＳ１４Ａ，１４Ｂにおけるシーケンスを例示するフローチャートである。各ゲストＯＳ１４Ａ，１４Ｂはプロセススイッチが発生すると（Ｓ１０１）、ＰＳ情報４１のうちＯＳＩＤ、プロセスＩＤ、及びプロセス名を設定する（Ｓ１０２）。その後、各ゲストＯＳ１４Ａ，１４ＢはホストＯＳ１２を呼び出す処理を行い（Ｓ１０３）、ホストＯＳ１２へＰＳ情報を出力する（Ｓ１０４）。
【００２５】
図６は、本実施の形態に係るホストＯＳ１２におけるシーケンスを例示するフローチャートである。ホストＯＳ１２はゲストＯＳ１４Ａ，１４Ｂからの呼出しが入力されたと判定した場合（Ｓ２０１：ＹＥＳ）、当該呼出しを行ったゲストＯＳ１４Ａ，１４ＢからのＰＳ情報を入力すると共に設定し（Ｓ２０２）、出力順序情報５７に基づく排他制御を開始する（Ｓ２０３）。ホストＯＳ１２はゲストＯＳ１４Ａ，１４Ｂからの呼出しが入力されていないと判定した場合（Ｓ２０１：ＮＯ）、排他制御を開始する（Ｓ２０３）。
【００２６】
その後、ホストＯＳ１２は出力順序情報５７における「ＮＥＸＴ」の位置を取得し（Ｓ２０４）、「ＮＥＸＴ」の位置を「ＥＮＤ」側に進める（Ｓ２０５）。その後、ホストＯＳ１２はシステム時刻を取得し、これをＰＳ情報４１に出力時刻として追加する（Ｓ２０６）。その後、ホストＯＳ１２は排他制御を終了し（Ｓ２０７）、ハードウェア制御部２３を呼び出す処理を行う（Ｓ２０８）。
【００２７】
図７は、本実施の形態に係る共通出力部６１におけるシーケンスを例示するフローチャートである。共通出力部６１はＰＳ情報４１をハードウェア群１１に出力する際の待ち時間を最小化するための処理を実行するか否かを判定する（Ｓ３０１）。この判定は所定の基準に基づいて行われ、その基準は特に限定されるべきものでないが、例えばプロセススイッチの回数、ゲストＯＳの数、ハードウェアの種類の数等に基づく基準であってもよい。共通出力部６１は待ち時間を最小化するための処理を実行すると判定した場合（Ｓ３０１：ＹＥＳ）、出力先選択部６２による処理の呼出しを行い（Ｓ３０２）、その後、出力処理部６３による処理の呼出しを行う（Ｓ３０３）。一方、共通出力部６１は待ち時間を最小化するための処理を実行しないと判定した場合（Ｓ３０１：ＮＯ）、出力処理部６３による処理の呼出しのみを行う（Ｓ３０３）。
【００２８】
図８は、本実施の形態に係る出力先選択部６２におけるシーケンスを例示するフローチャートである。出力先選択部６２は、共通処理部６１からの呼出し（Ｓ３０２）を受けると、出力処理部６３が有しているデータベースを参照し、現在ＰＳ情報４１の出力先になっているハードウェアの出力処理時間６６Ａ，６６Ｂ，６６Ｃ（図３参照）が閾値より大きいか否かを判定する（Ｓ４０１）。出力先選択部６２は出力処理時間６６Ａ，６６Ｂ，６６Ｃが閾値より大きくないと判定した場合（Ｓ４０１：ＮＯ）、当該シーケンスを終了する、すなわち現在設定されている出力先を変更しない。
【００２９】
一方、出力先選択部６２は出力処理時間６６Ａ，６６Ｂ，６６Ｃが閾値より大きいと判定した場合（Ｓ４０１：ＹＥＳ）、この出力処理時間６６Ａ，６６Ｂ，６６Ｃが閾値以下である他のハードウェアがあるか否かを判定する（Ｓ４０２）。出力先選択部６２は出力処理時間６６Ａ，６６Ｂ，６６Ｃが閾値以下である他のハードウェアがあると判定した場合（Ｓ４０２：ＹＥＳ）、当該他のハードウェアを出力先のハードウェアとして設定する（Ｓ４０３）。一方、出力先選択部６２は出力処理時間６６Ａ，６６Ｂ，６６Ｃが閾値以下である他のハードウェアがないと判定した場合（Ｓ４０２：ＮＯ）、出力先のハードウェアはないものとして設定する（Ｓ４０４）。上記出力先選択部６２のシーケンスが完了すると、図７のシーケンスに戻り、共通処理部６１による出力処理部６３の呼出しが行われる（Ｓ３０３）。
【００３０】
図９は、本実施の形態に係る出力処理部６３におけるシーケンスを例示するフローチャートである。出力処理部６３は、共通出力部６１からの呼出し（Ｓ３０３）を受けると、排他制御を開始し（Ｓ５０１）、このときのシステム時刻Ｔ１を取得する（Ｓ５０２）。その後、出力処理部６３は、設定された出力先のハードウェアに対応する出力処理時間６６Ａ，６６Ｂ，６６ＣをＰＳ情報４１の遅延時間に設定する（Ｓ５０３）。
【００３１】
その後、出力処理部６３は設定された出力先のハードウェアにＰＳ情報４１を出力し（Ｓ５０４）、このときのシステム時刻Ｔ２を取得する（Ｓ５０５）。その後、出力処理部６３はＴ２−Ｔ１を新たな出力処理時間６６Ａ，６６Ｂ，６６Ｃとして記憶し（Ｓ５０６）、排他制御を終了する（Ｓ５０７）。
【００３２】
情報処理システム１に含まれるコンピュータに上記のような処理を実現させるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供され得る。
【００３３】
プログラムをインターネット等のネットワークに接続されたコンピュータ（サーバ）に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。プログラムをネットワーク経由で提供又は配布するように構成してもよい。プログラムをコンピュータのＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００３４】
プログラムは、上記処理を実現するための各種機能部を含むモジュール構成であってもよい。この場合、コンピュータ内のＣＰＵがプログラムをＲＯＭから読み出して実行することにより、機能部がＲＡＭ上にロードされ、機能部がＲＡＭ上に生成される。
【００３５】
上記実施の形態によれば、複数のＯＳが並列的に動作する仮想マシンを含むシステムにおいて、各ＯＳから出力される複数のＰＳ情報が一元的に管理され、出力順序に従ってハードウェアに逐次的に出力される。これにより、複数のＯＳの各プロセスの動作状況を正確に把握することができ、当該動作状況に応じた最適化制御、例えば待ち時間の最小化等を実現することが可能となる。
【００３６】
以上、本発明の実施の形態を説明したが、上記実施の形態は例として提示したものであり、発明の範囲を限定することを意図するものではない。この新規な実施の形態はその他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。この実施の形態及びその変形は発明の範囲及び要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００３７】
１  情報処理システム
１１  ハードウェア群
１２  ホストＯＳ
１３  ＶＭＭ
１４Ａ，１４Ｂ  ゲストＯＳ
２１  プロセススイッチ情報管理部
２２  時間情報保持部
２３  ハードウェア制御部
３１Ａ，３１Ｂ  プロセススイッチ情報出力部
４１  プロセススイッチ情報
５１  プロセススイッチ情報ＦＩＦＯバッファ
５２  出力順序情報生成部
５５  個別ＦＩＦＯ情報
５７  出力順序情報
６１  共通出力部
６２  出力選択部
６３  出力処理部
６６Ａ，６６Ｂ，６６Ｃ  出力処理時間
【先行技術文献】
【特許文献】
【００３８】
【特許文献１】特開平８−１７１４９８号公報
【特許文献２】特開２０１１−１８２３５号公報
【図１】
0006658093.tif 000002
【図２】
0006658093.tif 000003
【図３】
0006658093.tif 000004
【図４】
0006658093.tif 000005
【図５】
0006658093.tif 000006
【図６】
0006658093.tif 000007
【図７】
0006658093.tif 000008
【図８】
0006658093.tif 000009
【図９】
0006658093.tif 000010