(57)【特許請求の範囲】
【請求項１】
ホストＯＳ（Operating System）上でハードウェアをエミュレートするエミュレータと、前記エミュレータ上で動作するゲストＯＳと、前記ゲストＯＳ上で動作して１つのシステムとして機能する複数のサブシステムとを実行するコンピュータであって、
前記ホストＯＳは、前記エミュレータを制御するエミュレータ操作コマンドを実行するコマンド実行手段を有し、
前記ゲストＯＳは、前記複数のサブシステムの何れかの停止が指示された場合に、前記ホストＯＳにシステムを停止させるためのコマンドを前記ホストＯＳに送信する送信手段を有し、
前記ホストＯＳは、前記送信手段により送信されたコマンドを受信し、この受信したコマンドに応じて、前記エミュレータによりシステムを停止させるためのエミュレータ操作コマンドを実行し、
前記エミュレータは、前記エミュレータ操作コマンドに応じて、前記ゲストＯＳ上で動作している前記複数のサブシステムの動作を停止させることを特徴とするコンピュータ。
【請求項２】
前記エミュレータは、前記エミュレータ操作コマンドに含まれるスナップショット取得コマンドに応じて、前記複数のサブシステムを停止させると共に、前記システムの動作状況を表すスナップショットを取得することを特徴とする請求項１記載のコンピュータ。
【請求項３】
前記複数のサブシステムのそれぞれの動作状況を表示する複数の表示領域を画面中に設け、
前記複数の表示領域の何れかに対するクローズ操作に応じて、クローズ操作された表示領域に対応するサブシステムは、前記ゲストＯＳにより前記ホストＯＳへのコマンド送信を実行させることを特徴とする請求項１記載のコンピュータ。
【請求項４】
ホストＯＳ上でハードウェアをエミュレートするエミュレータと、前記エミュレータ上で動作するゲストＯＳと、前記ゲストＯＳ上で動作して１つのシステムとして機能する複数のサブシステムとを実行するコンピュータを、
前記エミュレータを制御するエミュレータ操作コマンドを実行するコマンド実行手段と、
前記複数のサブシステムの何れかの停止が指示された場合に、前記ホストＯＳにシステムを停止させるためのコマンドを前記ゲストＯＳから前記ホストＯＳに送信する送信手段と、
前記送信手段により送信されたコマンドを受信し、この受信したコマンドに応じて、前記エミュレータによりシステムを停止させるためのエミュレータ操作コマンドを実行する実行手段と、
前記エミュレータ操作コマンドに応じて、前記ゲストＯＳ上で動作している前記複数のサブシステムの動作を前記エミュレータにより停止させる手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ホストＯＳ（Operating System）上でゲストＯＳを動作させるコンピュータ、及び同コンピュータで実行されるプログラムに関する。
【背景技術】
【０００２】
一般に、コンピュータは、ＯＳ（Operating System）上で複数のサブシステムを実行させ、１つのシステムとして機能させることができる。コンピュータのディスプレイには、例えば各サブシステムに対応するウィンドウが表示され、それぞれのウィンドウにサブシステムによる処理状況等が表示される。複数のサブシステムは、１つのシステムとして機能するために、互いにデータを通信しながら動作している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−６６２６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数のサブシステムが１つのシステムとして動作している場合、ユーザは、例えばウィンドウを閉じるためのクローズボタンを押すことにより、サブシステムの動作の停止を指示することができる。サブシステムは、ウィンドウを閉じる操作がされると終了処理を実行する。
【０００５】
この際、サブシステムが個別に動作を停止してしまうと、処理途中のデータが失われてしまう場合がある。このため、動作の停止が指示されたサブシステムが正常終了するように、他のサブシステムの処理を待たせる機能などを実装する必要がある。しかしながら、各サブシステムに個別に停止するための機能を実装しなければならず、多数のサブシステムを実装する場合にはシステムの開発負担が大きくなってしまう。
【０００６】
このため従来では、各サブシステムに個別に停止するための機能を実装することなく、個別にサブシステムの動作停止が指示された場合であっても正常にシステムを停止させることができる仕組みが望まれていた。
【０００７】
本発明の目的は、複数のサブシステムを１つのシステムとして機能させている状態において、個々にサブシステムの動作の停止が指示される場合であっても、正常にシステムを終了させることができるコンピュータ、及びプログラムを提供することである。
【課題を解決するための手段】
【０００８】
実施形態によれば、コンピュータは、ホストＯＳ上でハードウェアをエミュレートするエミュレータと、前記エミュレータ上で動作するゲストＯＳと、前記ゲストＯＳ上で動作して１つのシステムとして機能する複数のサブシステムとを実行するコンピュータであって、前記ホストＯＳは、前記エミュレータを制御するエミュレータ操作コマンドを実行するコマンド実行手段を有し、前記ゲストＯＳは、前記複数のサブシステムの何れかの停止が指示された場合に、前記ホストＯＳにシステムを停止させるためのコマンドを前記ホストＯＳに送信する送信手段を有し、前記ホストＯＳは、前記送信手段により送信されたコマンドを受信し、この受信したコマンドに応じて、前記エミュレータによりシステムを停止させるためのエミュレータ操作コマンドを実行し、前記エミュレータは、前記エミュレータ操作コマンドに応じて、前記ゲストＯＳ上で動作している前記複数のサブシステムの動作を停止させることを特徴とする。
【図面の簡単な説明】
【０００９】
【図１】本実施形態におけるコンピュータのハードウェア構成を示すブロック図。
【図２】本実施形態におけるコンピュータのシステム構成の概略を示す図。
【図３】本実施形態におけるコンピュータの機能構成を示すブロック図。
【図４】本実施形態における仮想マシンへのサブシステムのインストールを示すフローチャート。
【図５】本実施形態におけるサブシステムを動作させている時のコンピュータの表示画面の一例を示す図。
【図６】本実施形態におけるコンピュータにおいて仮想マシンを動作させる場合の初期設定処理を示すフローチャート。
【図７】本実施形態におけるゲストＯＳによるコマンド実行プログラムの概略を示すフローチャート。
【図８】本実施形態におけるサブシステムの動作中に何れかのサブシステムの停止が指示された場合の動作を示すフローチャート。
【図９】本実施形態におけるクローズボタン操作と処理（メソッド）の呼び出しを説明するための図。
【図１０】本実施形態におけるレジューム時の処理を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、実施形態について説明する。  
図１は、本実施形態におけるコンピュータ１０のハードウェア構成を示すブロック図である。図１に示すように、コンピュータ１０は、ＣＰＵ１１、メインメモリ１２、記録装置１３、入力部１４、出力部１５、及びネットワークインターフェイス１６等が設けられている。ＣＰＵ１１と、メインメモリ１２、記録装置１３、入力部１４、出力部１５及びネットワークインターフェイス１６とは、アドレスバス，データバス等のバスライン１７で接続される。
【００１１】
メインメモリ１２は、ＣＰＵ１１が実行するプログラムやデータを格納するための記憶領域であって、例えばＲＡＭ（Random Access Memory）が用いられる。記録装置１３は、不揮発性の記録メディアにデータやプログラムを記録するものであり、例えばＨＤＤ（Hard Disk Drive）装置が用いられる。入力部１４は、データやコマンドを入力するもので、キーボード、ポインティングデバイス等が用いられる。
【００１２】
出力部１５は、入力データやＣＰＵ１１の処理データ等を出力するもので、例えばディスプレイが用いられる。ネットワークインターフェイス１６は、ＬＡＮ（Local Area Network）、インターネット等のネットワークを介して接続される外部コンピュータシステムとの間のデータ通信を司るものである。
【００１３】
図２は、本実施形態におけるコンピュータ１０のシステム構成の概略を示す図である。  
図２に示すように、コンピュータ１０は、ホストハードウェア２０（実マシン）上でホストＯＳ２１を実行させる。コンピュータ１０は、ホストＯＳ２１上で動作するエミュレータ２２によりハードウェア資源をエミュレートして仮想的な計算機環境を提供する。ホストＯＳ２１とエミュレータ２２によって提供される仮想的な計算機は、現実の計算機すなわち実マシンに対して、仮想マシンと呼ばれる。エミュレータ２２上で動作する仮想マシン上のＯＳをゲストＯＳ２３とする。ホストＯＳ２１およびエミュレータ２２によって実現される仮想マシンへの実マシンのハードウェア資源割り当て等を制御する機構を仮想マシンモニタと呼ぶ。すなわち、仮想マシンは、仮想マシンモニタによって制御される。
【００１４】
本実施形態におけるコンピュータ１０は、仮想マシンモニタを制御する仮想マシンモニタ操作プログラムをＣＰＵ１１により実行することにより、以下に説明する各種機能を実現する。
【００１５】
エミュレータ２２には、ゲストＯＳ２３（サブシステム２４Ａ，２４Ｂ）のメモリやレジスタ、ディスク等の記録媒体に記録されているデータの状態、ネットワーク状態等をスナップショットイメージとして記録するスナップショット記録部２２ａが設けられている。また、エミュレータ２２は、ホストＯＳ２１のレジューム起動部２１ａからの指示に応じて、ゲストＯＳ２３（サブシステム２４Ａ，２４Ｂ）の状態をスナップショット取得時の状態から動作を再開させる機能が設けられている。
【００１６】
本実施形態におけるコンピュータ１０は、ゲストＯＳ２３上で動作するサブシステム２４Ａ，２４Ｂの何れかについて動作停止が指示された場合、ホストＯＳ２１によりエミュレータ操作コマンドを実行させて、ゲストＯＳ２３上で動作している全てのサブシステム２４Ａ，２４Ｂをエミュレータ２２を通じて停止させると共に、エミュレータ２２のスナップショット記録部２２ａにより仮想マシンのスナップショットを記録させる。従って、複数のサブシステム２４Ａ，２４Ｂは、動作停止が指示された場合に、他のサブシステムとして連携して個別に動作を停止するための機能が不要となる。
【００１７】
エミュレータ２２は、ホストＯＳ２１のレジューム起動部２１ａによりレジューム起動が指示された場合、スナップショット記録部２２ａにより記録したスナップショットイメージをもとにして、スナップショット取得時の状態からゲストＯＳ２３を通じてサブシステム２４Ａ，２４Ｂの動作を再開させることができる。
【００１８】
図３は、本実施形態におけるコンピュータ１０の機能構成を示すブロック図である。  
ホストＯＳ２１には、マウント部３０、アドレス書き込み部３１、及び受信コマンド実行部３２が設けられる。  
マウント部３０及びアドレス書き込み部３１は、ゲストＯＳ２３がホストＯＳ２１と通信できるようにするために、ホストＯＳ２１のアドレスをゲストＯＳ２３に受け渡すために機能する。本実施形態では、ホストＯＳ２１とゲストＯＳ２３との間を、例えばＴＣＰ（transmission control protocol）／ＩＰ（internet protocol）により通信するものとし、ホストＯＳ２１のＩＰアドレスをゲストＯＳ２３に受け渡す。初期設定処理において、マウント部３０は、記録メディア４０を使用できるようにソフトウェア的に接続する。アドレス書き込み部３１は、マウントされた記録メディア４０にホストＯＳ２１のＩＰアドレスを書き込む。
【００１９】
受信コマンド実行部３２は、エミュレータ２２を制御するエミュレータ操作コマンド３４を実行する。受信コマンド実行部３２は、サブシステム２４Ａ，２４Ｂの何れかの停止が指示された場合に、ネットワーク通信部３３を通じて、ゲストＯＳ２３のコマンド送信部３７から送信されるコマンドを受信し、この受信したコマンドに応じて、エミュレータによりシステムを停止させるためのエミュレータ操作コマンドを実行する。本実施形態では、サブシステム２４Ａ，２４Ｂの何れかの停止が指示された場合、例えばシステム停止（ｓｔｏｐ）、スナップショットの記録（ｓａｖｅｖｍ）、システム終了（ｑｕｉｔ）のエミュレータ操作コマンドを実行するものとする。
【００２０】
エミュレータ２２は、ホストＯＳ２１上で実行させ、さらにゲストＯＳ２３は、エミュレータ２２上で実行される。  
ゲストＯＳ２３には、マウント部３５、アドレス読み出し部３６、及びコマンド送信部３７が設けられる。  
マウント部３５及びアドレス読み出し部３６は、ゲストＯＳ２３がホストＯＳ２１と通信できるようにするために、ホストＯＳ２１のアドレスを取得するために機能する。初期設定処理において、マウント部３５は、記録メディア４０を使用できるようにソフトウェア的に接続する。アドレス読み出し部３６は、コマンド送信部３７によりホストＯＳ２１（受信コマンド実行部３２）に対してシステムを停止させるためのコマンドを送信する際に、記録メディア４０からホストＯＳ２１のアドレスを読み出す。
【００２１】
コマンド送信部３７は、サブシステム２４Ａ，２４Ｂの何れかにおいて動作の停止が指示されることにより、エミュレータ２２によりシステム全体を安全に停止させるための処理（メソッド）が呼び出される。コマンド送信部３７は、ネットワーク通信部３８を通じて、アドレス読み出し部３６により読み出されたコマンドをもとにホストＯＳ２１（受信コマンド実行部３２）に対して、システムを停止させるためのコマンドを送信する。
【００２２】
次に、本実施形態におけるコンピュータ１０の動作について説明する。  
図４は、本実施形態における仮想マシンへのサブシステムのインストールを示すフローチャートである。  
コンピュータ１０は、エミュレータ２２上でゲストＯＳ２３を動作させている状態において、サブシステム２４Ａを動作させるためのサブシステムプログラムＡ、サブシステム２４Ｂを動作させるためのサブシステムプログラムＢをコピーする（ステップＡ１，Ａ２）。例えば、ゲストＯＳ２３のファイルシステムを操作するプログラム（「ｌｉｂｇｕｅｓｔｆｓ」等）を使って、サブシステムプログラムＡ，Ｂをコピーすることができる。
【００２３】
本実施形態では、仮想マシン（ゲストＯＳ２３）上においてサブシステムプログラムＡ，Ｂが実行されることにより、サブシステム２４Ａ，２４Ｂが動作する。
【００２４】
なお、本実施形態の説明では、２つのサブシステム２４Ａ，２４ＢがゲストＯＳ２３上で動作しているものと説明しているが、３つ以上のサブシステムが動作して１つのシステムとして機能するように構成されていても良い。
【００２５】
図５は、本実施形態におけるサブシステム２４Ａ，２４Ｂを動作させている時のコンピュータ１０の表示画面の一例を示している。  
サブシステム２４Ａ，２４Ｂは、ゲストＯＳ２３上で同時に動作することにより、１つのシステムとして機能するために互いにデータを通信しながら動作する。図５に示すように、サブシステム２４Ａの処理状況は、サブシステム２４Ａ用のウィンドウにおいて表示され、サブシステム２４Ｂの処理状況は、サブシステム２４Ｂ用のウィンドウにおいて表示される。
【００２６】
ユーザは、画面中に表示されたウィンドウを閉じるためのクローズボタンを入力部１４（ポインティングデバイス等）を用いて押すことにより、そのウィンドウに処理状況を表示しているサブシステムの動作の停止を指示することができる。本実施形態におけるコンピュータ１０では、１つのサブシステムのウィンドウをクローズすることにより、全てのサブシステムを安全に、すなわち再起動により正常に動作を再開できるように停止させることができる。
【００２７】
図６は、本実施形態におけるコンピュータ１０において仮想マシンを動作させる場合の初期設定処理を示すフローチャートである。  
初期設定処理では、ゲストＯＳ２３がホストＯＳ２１と通信することができるように、ホストＯＳ２１のアドレス（ＩＰアドレス）をゲストＯＳ２３に受け渡せるようにする。
【００２８】
ホストＯＳ２１は、起動されると（ステップＢ１）、自身に割り当てられたＩＰアドレスを取得する（ステップＢ２）。ホストＯＳ２１は、マウント部３０により記録メディア４０をマウントし、アドレス書き込み部３１によりＩＰアドレスを書き込む（ステップＢ３）。なお、記録メディア４０は、ＩＳＯイメージ、ＦＡＴ３２ディスクなどマウントできるもので、物理的なメディアに限らず、仮想的なメディアであっても良い。
【００２９】
ホストＯＳ２１は、記録メディア４０をマウントできる状態でエミュレータ２２を起動し（ステップＢ４）、エミュレータ２２からゲストＯＳ２３を起動する（ステップＢ５）。なお、ゲストＯＳ２３は、ホストＯＳ２１において実行させるソフトウェアを実行可能な環境を有するものとする。
【００３０】
ゲストＯＳ２３は、マウント部３５により記録メディア４０をマウントして、記録メディア４０に記録されたデータにアクセスできるようにする。
【００３１】
図７は、ホストＯＳ２１に対してエミュレータ２２を制御するコマンドを実行させる、ゲストＯＳ２３によるコマンド実行プログラムの概略を示すフローチャートである。
【００３２】
ゲストＯＳ２３は、サブシステム２４Ａ，２４Ｂの動作中に何れかの停止が指示された場合に、コマンド実行プログラムが呼び出されて処理を開始する。ゲストＯＳ２３は、マウント部３５によりマウントされている記録メディア４０からホストＯＳ２１のＩＰアドレスをアドレス読み出し部３６によって読み出す（ステップＣ１）。なお、ＩＰアドレスはキャッシュしておき、記録メディア４０から読み出す替わりに利用するようにしても良い。また、ＩＰアドレスの取得は、通信を開始する前であればいつでも良い。
【００３３】
ゲストＯＳ２３は、コマンド送信部３７により、記録メディア４０から読み出されたＩＰアドレスを送信先（すなわちホストＯＳ２１）として、ネットワーク通信部３８を介して、仮想マシン上で動作しているシステムを停止させるためのエミュレータ２２に実行させるコマンドを転送する（ステップＣ２）。
【００３４】
ゲストＯＳ２３は、ネットワーク通信部３８を介して、ホストＯＳ２１に転送したコマンドの実行を指示する（ステップＣ３）。
【００３５】
次に、サブシステム２４Ａ，２４Ｂの動作中に何れかのサブシステムの停止が指示された場合の動作について、図８に示すフローチャートを参照しながら説明する。  
サブシステム２４Ａ，２４Ｂは、図５に示すように、それぞれのウィンドウにおいて処理状況を表示している。サブシステム２４Ａ，２４Ｂは、ウィンドウのクローズ操作に応じて、システムを停止するための処理を呼び出す。
【００３６】
例えば、図９（Ａ）に示すように、サブシステム２４Ａ用のウィンドウのクローズボタンが押されたものとする（ステップＤ１）。サブシステム２４Ａは、ウィンドウのクローズにより動作の停止が指示されると、システムを安全に停止させるための処理（メソッド）を呼び出す（ステップＤ２）。
【００３７】
例えば、図９（Ｂ）には、ウィンドウのクローズにより読み出される処理（メソッド）の具体例を示している。すなわち、クローズボタンが押されることにより、ゲストＯＳ２３の「ｗｉｎｄｏｗＣｌｏｓｉｎｇ（）」メソッドを呼び出し、さらに「Ｓａｆｅ＿ｅｘｉｔ（）」を呼び出す。ゲストＯＳ２３は、「Ｓａｆｅ＿ｅｘｉｔ（）」が呼び出されることにより、前述したコマンド実行プログラムを使って、システムを安全に停止させるための処理を実行する。
【００３８】
ゲストＯＳ２３のコマンド送信部３７は、ホストＯＳ２１のＩＰアドレスを取得し（ステップＤ３）、ネットワーク通信部３８を通じて、例えばシステム停止（ｓｔｏｐ）、スナップショットの記録（ｓａｖｅｖｍ）、システム終了（ｑｕｉｔ）のコマンドをホストＯＳ２１（受信コマンド実行部３２）へ転送する（ステップＤ４）。
【００３９】
ゲストＯＳ２３のコマンド送信部３７は、ネットワーク通信部３８を通じて、ホストＯＳ２１の受信コマンド実行部３２に転送したコマンドの実行を指示する（ステップＤ５）。
【００４０】
ホストＯＳ２１の受信コマンド実行部３２は、ゲストＯＳ２３から転送されたエミュレータ操作コマンドを実行する（ステップＤ６）。すなわち、エミュレータ２２に対して、システム停止（ｓｔｏｐ）、スナップショットの記録（ｓａｖｅｖｍ）、システム終了（ｑｕｉｔ）を実行させる。
【００４１】
エミュレータ２２は、ゲストＯＳ２３を通じて、ゲストＯＳ２３上で動作している全てのサブシステム２４Ａ，２４Ｂ、ゲストＯＳ２３を停止させると共に、スナップショット記録部２２ａにより仮想マシンの状態、すなわちメモリやレジスタ、ディスク等の記録媒体に記録されているデータの状態、ネットワーク状態等をスナップショットイメージとして記録する。その後、エミュレータ２２は、強制終了する（ステップＤ７）。
【００４２】
このようにして、ゲストＯＳ２３上で動作しているサブシステム２４Ａ，２４Ｂの何れかに対する停止指示（ウィンドウクローズ）に応じて、ホストＯＳ２１によりシステム全体を停止させるためのエミュレータ操作コマンドを実行させることにより、エミュレータ２２によりシステム全体を安全に停止してスナップショットを取得することができる。従って、複数のサブシステム２４Ａ，２４Ｂに、個別に停止するための機能を設けることなく安全にシステム停止することができる。
【００４３】
こうして、仮想マシンのスナップショットを取得しているため、ホストＯＳ２１に設けられたレジューム起動部２１ａにより、システム停止時の状態から再起動させることができる。
【００４４】
図１０は、レジューム時の処理を示すフローチャートである。  
ホストＯＳ２１は、例えばユーザ操作によって仮想マシンの再起動が指示された場合に、レジューム起動部２１ａによりエミュレータ操作コマンド（例えばｌｏａｄｖｍ）を実行してエミュレータ２２を起動させる（ステップＥ１）。
【００４５】
エミュレータ２２は、システム停止時に記録したスナップショットにより記録したデータ（スナップショットイメージ）をもとに、ゲストＯＳ２３、各サブシステム２４Ａ，２４Ｂを再起動させる。これにより、１つのサブシステムに対する停止指示に応じて停止された時のシステム状態に復旧して動作を再開することができる。
【００４６】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【００４７】
また、前述した実施の形態において記載した処理は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク（フレキシブルディスク、ハードディスク等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ等）、半導体メモリなどの記録媒体に書き込んで各種装置に提供することができる。また、通信媒体により伝送して各種装置に提供することも可能である。コンピュータは、記録媒体に記録されたプログラムを読み込み、または通信媒体を介してプログラムを受信し、このプログラムによって動作が制御されることにより、上述した処理を実行する。
【符号の説明】
【００４８】
１０…コンピュータ、１１…ＣＰＵ、２０…ホストハードウェア、２１…ホストＯＳ、２２…エミュレータ、２３…ゲストＯＳ、２４Ａ，２４Ｂ…サブシステム、３０，３５…マウント部、３１…アドレス書き込み部、３２…受信コマンド実行部、３３，３８…ネットワーク通信部、３４…エミュレータ操作コマンド、３６…アドレス読み出し部、３７…コマンド送信部。
【図１】
0005492721.tif 000002
【図２】
0005492721.tif 000003
【図３】
0005492721.tif 000004
【図４】
0005492721.tif 000005
【図５】
0005492721.tif 000006
【図６】
0005492721.tif 000007
【図７】
0005492721.tif 000008
【図８】
0005492721.tif 000009
【図９】
0005492721.tif 000010
【図１０】
0005492721.tif 000011