(57)【要約】【課題】利用者が実際に操作を行ってから画面の描画が完了するまでの時間を短縮し、利用者の利便性の向上を実現させるシンクライアントシステムを提供する。【解決手段】クライアント２０のデスクトップの状態が、１つ以上の複製条件のうち、１つの条件を満たしたとき、サーバ１０の仮想マシン複製処理Ｓ１０８は、仮想マシン処理Ｓ１０６の複製として投機実行処理Ｓ１０７を作成する。該条件ごとに設定された動作が実際に行われたと仮定して、投機実行環境デスクトップ処理Ｓ１１３は、デスクトップの動作を投機実行する。画面転送処理Ｓ１０５は、投機動作後の画面データをクライアントへ２０に送信する。送信された画面データは、クライアント２０のバッファ部２０３にバッファされる。クライアント２０で該動作が実際に実行された場合、入出力制御処理Ｓ２０２は、バッファされた画面データを即座に画面部２０４に反映する。【選択図】図１
2013171545.tif 000002
【特許請求の範囲】
【請求項１】
クライアントと、該クライアントとネットワークを介して通信可能にされており、該クライアントの仮想マシンを生成し、該仮想マシンにより、該クライアントの入力情報に基づき該クライアントに表示する画像データを生成し該クライアントに該画像データを送信するサーバとを含み、該サーバは前記クライアントから受信した入力情報から前記クライアントのデスクトップの動作を実行したならば必要となる画面データを予め作成して前記クライアントに送信しておくシンクライアントシステムであって、
前記サーバは、
前記仮想マシンが処理する仮想マシン環境デスクトップの状態を複製すべき状態にあるか否かを判定する複製条件判定プログラムコードと、前記仮想マシンが実行する仮想マシン環境デスクトップを破棄すべき状態にあるか否かまたは前記仮想マシンを元に複製された複製仮想マシンの投機実行環境デスクトップを破棄すべき状態にあるか否かを判定する破棄条件判定プログラムコードと、を格納した記憶部と、
前記クライアントから入力情報を受信した際に、前記複製条件判定プログラムコードを実行し、複製を実施する条件に該当する場合、前記仮想マシンの複製として前記複製仮想マシンを生成するとともに、前記生成された複製仮想マシンにより前記投機実行環境デスクトップの画像データを生成し、前記生成された画像データに、前記破棄条件判定プログラムコードを添付して前記クライアントへ送信し、その後、前記クライアントから受信した入力情報が前記複製を実施する条件に合致した場合、前記複製された複製仮想マシンを、前記クライアントの仮想マシンとして扱い、元の仮想マシンを廃棄し、処理を継続する処理部とを、備え、
前記クライアントは、
前記受信した画面データおよび該受信した画面データに添付されている前記破棄条件判定プログラムコードを格納するバッファ部と、
前記破棄条件判定プログラムコードを実行し、前記仮想マシン環境デスクトップを破棄すべき状態にある場合、前記受信した画面データを表示部に反映し、前記投機実行環境デスクトップを破棄すべき状態にある場合、前記バッファ部の画像データを破棄するクライアント処理部とを備える
ことを特徴とするシンクライアントシステム。
【請求項２】
前記複製条件判定プログラムコードは、前記クライアントのデスクトップ内の、クリック可能なオブジェクトについて、該デスクトップにおける物理的な占有領域の位置を調べ、いずれかのオブジェクトの、該占有領域にマウスカーソルが入っているか調べるプログラムであり、
前記破棄条件判定プログラムコードは、前記占有領域で実行された場合、前記仮想マシンが実行する仮想マシン環境デスクトップを破棄する旨を出力し、前記占有領域からマウスカーソルが外れた場合、前記複製仮想マシンの投機実行環境デスクトップを破棄する旨を出力するプログラムである
ことを特徴とする請求項１に記載のシンクライアントシステム。
【請求項３】
クライアントとネットワークを介して通信可能にされており、該クライアントの仮想マシンを生成し、該仮想マシンにより、該クライアントの入力情報に基づき該クライアントに表示する画像データを生成し該クライアントに該画像データを送信するサーバであって、
前記サーバは、
前記仮想マシンが処理する仮想マシン環境デスクトップの状態を複製すべき状態にあるか否かを判定する複製条件判定プログラムコードを有する複製条件情報と、
前記仮想マシンが実行する仮想マシン環境デスクトップを破棄すべき状態にあるか否かを判定する仮想マシン破棄条件判定プログラムコードおよび前記仮想マシンを元に複製された複製仮想マシンの投機実行環境デスクトップを破棄すべき状態にあるか否かを判定する投機実行破棄条件判定プログラムコードを有する破棄条件情報と、を格納した記憶部と、
前記クライアントから入力情報を受信した際に、前記複製条件判定プログラムコードを実行し、
複製を実施する条件に該当する場合、前記仮想マシンの複製として前記複製仮想マシンを生成するとともに、前記生成された複製仮想マシンにより前記投機実行環境デスクトップの画像データを生成し、
前記生成された画像データに、前記仮想マシン破棄条件判定プログラムコードおよび投機実行破棄条件判定プログラムコードを添付して前記クライアントへ送信し、
その後、前記クライアントから受信した入力情報が前記複製を実施する条件に合致した場合、前記複製された複製仮想マシンを、前記クライアントの仮想マシンとして扱い、元の仮想マシンを廃棄し、処理を継続する処理部とを、備える
ことを特徴とするサーバ。
【請求項４】
前記複製条件判定プログラムコードは、前記クライアントのデスクトップ内の、クリック可能なオブジェクトについて、該デスクトップにおける物理的な占有領域の位置を調べ、いずれかのオブジェクトの、該占有領域にマウスカーソルが入っているか調べるプログラムであり、
前記仮想マシン破棄条件判定プログラムコードは、前記占有領域で実行された場合、前記仮想マシンが実行する仮想マシン環境デスクトップを破棄する旨を出力するプログラムであり、
前記投機実行破棄条件判定プログラムコードは、前記占有領域からマウスカーソルが外れた場合、前記複製仮想マシンの投機実行環境デスクトップを破棄する旨を出力するプログラムである
ことを特徴とする請求項３に記載のサーバ。
【請求項５】
請求項３に記載のサーバから受信した画面データに基づいて画面表示を行うクライアントであって、
前記受信した画面データおよび該受信した画面データに添付されている仮想マシン処理破棄条件判定プログラムコードおよび投機実行処理破棄条件判定プログラムコードを格納するバッファ部と、
前記仮想マシン破棄条件判定プログラムコードおよび前記投機実行破棄条件判定プログラムコードを実行し、前記仮想マシン環境デスクトップを破棄すべき状態にある場合、前記受信した画面データを表示部に表示し、前記投機実行環境デスクトップを破棄すべき状態にある場合、前記バッファ部の画像データを破棄するクライアント処理部とを備える
ことを特徴とするクライアント。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シンクライアントシステムを利用する利用者の体感速度を向上するための方法に関する。
【背景技術】
【０００２】
シンクライアントとは、アプリケーションソフトウェアや重要データをできるかぎり手元に蓄積しないディスクレスのクライアントのことであり、必要最低限の機能だけを搭載し、アプリケーションはネットワークを経由してサーバにアクセスして実行する形態をとるのが通常である。
【０００３】
シンクライアントシステムは、ＣＰＵと、メモリと、ハードディスクなどのコンピュータリソースを搭載したサーバと、必要最低限のコンピュータリソースを搭載し、該サーバとネットワークで接続されたクライアントで構成される。シンクライアントシステムでは画像転送方式が一般的である。画像転送方式は、クライアントで実施したキーボードやマウス操作の入力情報をサーバに送り、サーバで該入力情報に基づきアプリケーションの実行やデータの格納を行い、その実行画面データをクライアントに送る方式である。クライアントには、操作に伴う入力情報の受付と送信、およびサーバから送られる画面データの処理に必要な、最低限のコンピュータリソースなどが搭載される。
【０００４】
サーバの環境として、実ハードウェア方式と仮想ハードウェア方式がある。実ハードウェア方式とは、アプリケーションの実行環境となるサーバが、クライアント１台に対し、物理的に１台ずつ存在する方式である。仮想ハードウェア方式は、アプリケーションの実行環境となるサーバが、論理上は、クライアント１台に対し、実ハードウェア方式と同様に１台ずつ存在するが、実際は、１台の物理的なハードウェアが、仮想的にいくつもの仮想ハードウェアを起動し、各利用者は、該仮想ハードウェアにクライアントからアクセスする方式である。
【０００５】
仮想ハードウェア方式の場合、物理的には、複数台のクライアントに対し、１台のサーバのみが存在するため、パッチの適用やセキュリティポリシーなどの設定が一括して処理できるほか、最新ソフトウェアの自動インストールや自動バックアップによって運用管理にかかる負担を大幅に削減することができる。また、仮想ハードウェアに障害が発生した場合、物理的なハードウェア交換作業などを実施することなく、新たに仮想ハードウェアを起動し、該仮想ハードウェアで処理を続行できるため、業務停止の影響を最小限に抑えることができる。
【０００６】
シンクライアント環境においては、サーバとクライアント間のネットワーク容量の制約や通信のオーバーヘッドなどにより、要求から応答までに一般的に多くの時間がかかるため、利用者の体感速度が低下することがある。体感速度の低下は、利用者の利便性を著しく妨げる。なお、体感速度とは、利用者がクライアント端末にて入力情報を与えてから、サーバがクライアントに画面データを返すまでの利用者が主観的に感じる速度のことをいう。
【０００７】
シンクライアント環境利用者の体感速度を向上させる技術には、特許文献１、特許文献２および特許文献３が存在する。
【０００８】
特許文献１には、クライアント側の負荷を増大させることなく、サーバとクライアントとの間において送受信する描画データ列のデータ量を大幅に削減してＧＵＩ（Graphical User Interface）の反応速度を向上させることが可能なリモートデスクトップシステムのサーバ装置およびクライアント装置を提供する技術を施したものが開示されている。
【０００９】
特許文献２には、通信を行うコンピュータはそれぞれが通信状況とデータの通信レートを取得することが可能であり、相互に通信する際にその情報を用いて転送する情報を変化させることでデスクトップ画面のようなデータを送受信する場合に使用者の利便を損なわないように共有を行うことを可能にする技術を施したものが開示されている。
【００１０】
特許文献３には、リンクが設定されている画面に対して先読み指示の指定があれば、その画面を表示するのに必要なデータは、キャッシュメモリに記憶される。これにより、この画面を表示する場合には、キャッシュメモリから必要なデータが読み出され、表示要求から表示までの時間を短くする技術を施したものが開示されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００７−２２６６３５号公報（段落００４９）
【特許文献２】特開２００４−３５５３０３号公報（段落０００５）
【特許文献３】特開２０００−５７０７８号公報（段落００１６）
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、シンクライアント環境において、クライアント端末に与えた入力情報が、ネットワークを介してサーバに到達し、サーバで処理された画面データが再びネットワークを介してクライアント端末に届き、表示されるまでの時間は、データ量や通信容量だけではなく、サーバとクライアント間の通信経路の距離にも依存する。すなわち、サーバとクライアント間の通信経路が長いと利用者が実際に操作を行ってから、その結果が画面に表示されるまでの時間が長くなり、体感速度が低下するという課題がある。
【００１３】
例えば、サーバは日本に設置されており、日本から地球の真裏に位置する場所でクライアント端末を使用した場合、サーバとクライアント端末間が光ファイバーケーブルで直結していたとしても、光速度から計算すると上記時間は約０．１秒となる。実際は、光ファイバーケーブルで直結されずルータを経由するなど通信経路は複雑になっており、上記時間は０．１秒より長い。この課題は、特許文献１〜３のいずれにおいても解決できない。したがって、より体感速度を向上させる技術が求められている。
【００１４】
本発明は、前記の課題を解決するための発明であって、サーバとクライアント間の通信経路が長い場合に、利用者が実際に操作を行ってから、画面の描画が完了するまでの時間を短縮し、利用者の利便性の向上を実現させるシンクライアントシステム、サーバ、およびクライアントを提供することを目的とする。
【課題を解決するための手段】
【００１５】
前記の目的を達成するため、本発明においては、サーバ環境は仮想ハードウェア方式であることを前提とし、仮想マシン環境と投機実行環境を備える。本発明において、投機実行とは、プログラムが途中で条件分岐している場合に、分岐した先の処理を仮定してあらかじめ実行しておくことをいう。
【００１６】
クライアントのデスクトップの状態が、１つ以上の複製条件のうち、１つの条件（例えばマウスカーソルが、クリック可能な箇所に乗った）を満たしたとき、サーバの仮想マシン複製処理は、仮想マシン処理（例えば、仮想マシン処理Ｓ１０６）の複製として投機実行処理（例えば、投機実行処理Ｓ１０７）を作成する。該条件ごとに設定された動作（例えばクリックを実行）が実際に行われたと仮定して、作成した投機実行処理の投機実行環境デスクトップ処理は、デスクトップの動作を投機実行する。画面転送処理は、動作実行後の画面データのクライアントへの送信を開始する。送信された画面データは、クライアントのバッファ部にバッファされる。クライアントで該動作が実際に実行された場合、入出力制御処理は、バッファされた画面データを即座に画面部に反映する。
【００１７】
併せてサーバでは、作成した投機実行処理を、仮想マシン処理として扱い、以後の処理を継続する。該動作が実行されなかった場合、仮想マシン破棄処理は、複製元の仮想マシン処理を、その後も仮想マシン処理として扱い、以後の処理を継続する。以上により、利用者のクライアントの操作実施後、操作状態のサーバへの送信、およびサーバからの操作後の画面データの受信にかかる時間を待つことなく、ただちにクライアントの画面部に操作結果を反映させることができる。その結果、サーバとクライアント間の通信経路が長い場合に、利用者が実際に操作を行ってから、その結果が画面部に表示されるまでの時間が短縮できる。
【発明の効果】
【００１８】
本発明によれば、利用者の体感速度を向上し、利用者の利便性を向上させることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態に係るシンクライアントシステムの構成を示す図である。
【図２】サーバのハードウェア構成を示す図である。
【図３】クライアントのハードウェア構成を示す図である。
【図４】判定情報保管部に登録されている利用者の複製条件テーブルおよび破棄条件テーブルのデータ構造を例示する図である。
【図５】画像データを受信した場合の入出力制御処理を例示するフローチャートである。
【図６】入力情報を受信した場合の入出力制御処理を例示するフローチャートである。
【図７】入力転送処理を例示するフローチャートである。
【図８】画面転送処理を例示するフローチャートである。
【図９】仮想マシン処理を例示するフローチャートである。
【図１０】仮想マシン環境デスクトップ処理を例示するフローチャートである。
【図１１】仮想マシン環境複製判定処理を例示するフローチャートである。
【図１２】仮想マシン環境破棄判定処理を例示するフローチャートである。
【図１３】投機実行環境デスクトップ処理を例示するフローチャートである。
【図１４】仮想マシン複製処理を例示するフローチャートである。
【図１５】仮想マシン破棄処理を例示するフローチャートである。
【図１６】複製条件判定プログラムコード実行処理を例示するフローチャートである。
【図１７】仮想マシン処理破棄条件判定プログラムコード実行処理を例示するフローチャートである。
【図１８】投機実行処理破棄条件判定プログラムコード実行処理を例示するフローチャートである。
【図１９】投機実行処理が仮想マシン処理として処理を実行する場合のシンクライアントシステムの構成を示す図である。
【図２０】クライアントの遷移画面の一例を示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態について、図面を参照して詳細に説明する。
図１は、本発明の実施形態に係るシンクライアントシステムの構成を示す図である。該シンクライアントシステムは、サーバ１０と、クライアント２０とを有し、サーバ１０とクライアント２０とは、ネットワークを介して接続されている。
【００２１】
最初に、本発明での処理概要について、図２０を参照して説明する。図２０は、クライアントの遷移画面の一例を示す図である。図２０（ａ）は、クライアント２０のデスクトップ上の画面例である。クライアント２０を利用する利用者（ユーザ）は、ウィンドウに表示されたソフトウェアボタンである［次へ］、［戻る］、［詳細表示］のうち、マウスなどの入力デバイスを使用して、［次へ］を押下すると、図２０（ｂ）の次の画面が表示される。そして、ユーザは、図２０（ｂ）に示すウィンドウに表示されたソフトウェアボタンである［登録］、［戻る］ボタンをうち、［登録］を押下すると、図２０（ｃ）の登録完了の画面が表示される。
【００２２】
ユーザは、デスクトップ上に表示された画面をみながら、マウスのポインタ（矢印）を移動させる場合がある。このとき、例えば、図２０（ａ）において、［次へ］にポインタが置かれた場合、サーバ１０側では、［次へ］が押下された場合に表示する画面を準備し、クライアント２０側に送信しておく。その後、ユーザが［次へ］を押下した場合に、クライアント２０は、バッファ部２０３に記憶しておいた画面を即座に表示することができる。このように、本発明では、利用者の体感速度を向上し、利用者の利便性を向上させることができる。
【００２３】
利用者の体感速度の向上のための、処理内容としては下記のようになる。
処理Ｓ１：サーバ１０は、クライアント２０からポインタの入力情報を受信する。入力情報としては、例えば、クライアント２０のマウスの１ミリ秒間の移動距離を表すベクトル値（ｘ軸増分、ｙ軸増分をそれぞれ表す２個の組み合わせ）を表す電文、クライアント２０のキーボードで打鍵されたキーの文字コードを示す電文がある。
【００２４】
処理Ｓ２：サーバ１０は、サーバ１０は受信した入力情報をもとに仮想マシン処理にて、ポインタの入力情報が所定条件を満たすか否かを判定し、所定条件を満たしている場合（例えば、図２０（ａ）の場合）、サーバ１０は仮想マシン処理Ｓ１０６（クライアント２０の仮想マシン）の複製として投機実行処理Ｓ１０７（クライアント２０の複製仮想マシン）を作成する。そして、サーバ１０は、投機実行処理Ｓ１０７で、現在のポインタ（［次へ］ボタン）でクリック操作（押下操作）を行うプログラムコードを実行し、図２０（ｂ）の画面データを作成する。
【００２５】
処理Ｓ３：サーバ１０は、作成した図２０（ｂ）の画面データに破棄条件判定プログラムコードを添付してクライアント２０に送信する。画面データは、例えば、液晶ディスプレイなどのデバイスに表示される画面を、予め設定された解像度(例えば、横1024ピクセル×縦768ピクセル)に分割して画像化したときの、各ピクセルの色を表すベクトル値(赤成分・青成分・緑成分をそれぞれ表す3個の数字の組み合わせ)を表す画像データである。
【００２６】
処理Ｓ４：クライアント２０は、図２０（ｂ）の画面データを受信し、バッファ部に格納するとともに、受信した破棄条件判定プログラムコードを実行する。実際にクライアントで図２０（ａ）の状態で［次へ］ボタンがクリックされた場合、クライアント２０はバッファ部に格納した図２０（ｂ）の画面データを画面部に反映する。図２０（ａ）の状態で［次へ］ボタンからポインタが外れた場合、クライアント２０はバッファ部に格納した図２０（ｂ）の画面データを破棄する。
【００２７】
処理Ｓ５：処理Ｓ４と並行して、サーバ１０は、破棄条件プログラムコードを実行する。図２０（ａ）の状態で［次へ］ボタンがクリックされた場合、投機実行処理Ｓ１０７を仮想マシン処理Ｓ１０６Ａ（図１９参照）として以後の処理を継続する。［次へ］ボタンからポインタが外れた場合、元の仮想マシン処理Ｓ１０６を継続する。
以後、処理Ｓ１〜処理Ｓ５を繰り返すことになる。
【００２８】
図１に戻り、前記処理内容を実現するシステム構成について説明する。
サーバ１０は、通信部１０１と、仮想マシン管理部１０２、判定情報保管部１０３を備える。通信部１０１は、サーバ１０からクライアント２０への画面データの送信、および、クライアント２０からサーバ１０へ送信された入力情報の受信を行う。
【００２９】
判定情報保管部１０３は、複製条件テーブル１１６（図４参照）、および破棄条件テーブル１１７（図４参照）を備える。該複製条件テーブル１１６、および該破棄条件テーブル１１７が保持するデータの読み出しまたは変更は、仮想マシン環境複製判定処理Ｓ１１１、または仮想マシン環境破棄判定処理Ｓ１１２から、関係データベース操作の電文を送信することによって行われる。
【００３０】
仮想マシン管理部１０２は、入力転送処理Ｓ１０４と、画面転送処理Ｓ１０５、クライアント２０ごとの仮想マシン処理Ｓ１０６、クライアント２０ごとの仮想マシン処理Ｓ１０６の複製である投機実行処理Ｓ１０７、仮想マシン複製処理Ｓ１０８、および仮想マシン破棄処理Ｓ１０９を備える。なお、仮想マシン処理Ｓ１０６と投機実行処理Ｓ１０７との関係については後記する。
【００３１】
前記したように、仮想ハードウェア方式の場合、クライアント２０の実行環境は仮想化ソフトウェア上に展開されているので、物理的には１対複数になる。仮想ハードウェアである仮想サーバからクライアント２０に対しては、リモートデスクトップなどを使って画像情報を転送する。
【００３２】
（入力転送処理Ｓ１０４）
入力転送処理Ｓ１０４は、通信部１０１にてクライアント２０から受信した入力情報の、仮想マシン処理Ｓ１０６が有する仮想マシン環境デスクトップ処理Ｓ１１０への送信を行う。また、入力転送処理Ｓ１０４は、仮想マシン複製処理Ｓ１０８から送信されたプログラムコードの、投機実行処理Ｓ１０７が有する投機実行環境デスクトップ処理Ｓ１１３への送信を行う。
【００３３】
（画面転送処理Ｓ１０５）
画面転送処理Ｓ１０５は、仮想マシン処理Ｓ１０６が有する仮想マシン環境デスクトップ処理Ｓ１１０から画面データの受信を行う。また、画面転送処理Ｓ１０５は、投機実行処理Ｓ１０７が有する投機実行環境デスクトップ処理Ｓ１１３から画面データの受信を行う。また、画面転送処理Ｓ１０５は、仮想マシン複製処理Ｓ１０８からプログラムコードを画面データに添付する指示の受信を行う。次に、画面転送処理Ｓ１０５は、受信した画面データおよびプログラムコードの通信部１０１への送信を行う。
【００３４】
（仮想マシン処理Ｓ１０６）
仮想マシン処理Ｓ１０６は、仮想マシン環境デスクトップ処理Ｓ１１０、仮想マシン環境複製判定処理Ｓ１１１、仮想マシン環境破棄判定処理Ｓ１１２を有する。
【００３５】
仮想マシン環境デスクトップ処理Ｓ１１０は、入力転送処理Ｓ１０４から入力情報を受信する。また、仮想マシン環境デスクトップ処理Ｓ１１０は、該入力情報の、仮想マシン処理Ｓ１０６が実行するオペレーティングシステムへの転送を行う。また、仮想マシン環境デスクトップ処理Ｓ１１０は、仮想マシン処理Ｓ１０６が実行するオペレーティングシステムが生成する画面データの、画面転送処理Ｓ１０５への送信を行う。
【００３６】
仮想マシン環境複製判定処理Ｓ１１１は、判定情報保管部１０３が有する複製条件テーブル１１６から、仮想マシン処理Ｓ１０６の内部状態が、仮想マシン処理Ｓ１０６を投機実行処理として複製すべき条件に該当するか否かを判定するための複製条件判定プログラムコード１１６１１（図４参照）、および、複製が実行された場合に、複製先の環境において実行する複製時実行プログラムコード１１６１２（図４参照）を読み込む。
【００３７】
また、仮想マシン環境破棄判定処理Ｓ１１２は、破棄条件テーブル１１７から、クライアントで実行された入力操作が、サーバで実行されている仮想マシン処理を破棄すべき条件に該当するか否かを判定する仮想マシン処理破棄条件判定プログラムコード１１７１１（図４参照）、および該操作が、同様にサーバで実行されている投機実行処理を破棄すべき条件に該当するか否かを判定する投機実行処理破棄条件判定プログラムコード１１７１２（図４参照）を読み込む。
【００３８】
次に、仮想マシン環境複製判定処理Ｓ１１１は、読み込んだ複製条件判定プログラムコード１１６１１を実行し、複製を実行するか否かの判定を行う。複製を実施する条件に該当する状況であった場合、仮想マシン複製処理Ｓ１０８に、複製時実行プログラムコード１１６１２、仮想マシン処理破棄条件判定プログラムコード１１７１１、投機実行処理破棄条件判定プログラムコード１１７１２が含まれた、複製生成を依頼する電文を送信する。
【００３９】
仮想マシン環境破棄判定処理Ｓ１１２は、判定情報保管部１０３が有する破棄条件テーブル１１７から、仮想マシン破棄処理Ｓ１０９に破棄を依頼する電文を送信するか否かを判定する破棄フラグ１１７２（図４参照）を読み込む。破棄フラグ１１７２は、仮想マシン処理を破棄すべき条件を満たした場合は０、投機実行処理を破棄すべき条件を満たした場合は１が登録される。
【００４０】
次に、仮想マシン環境破棄判定処理Ｓ１１２は、読み込んだ破棄フラグ１１７２が０の場合は、仮想マシン破棄処理Ｓ１０９に仮想マシン処理Ｓ１０６の破棄を依頼する電文を送信する。仮想マシン処理Ｓ１０６が破棄された場合、投機実行処理Ｓ１０７を仮想マシン処理Ｓ１０６Ａ（図１９参照）として扱い、以後の処理を継続する。
【００４１】
図１９は、投機実行処理が仮想マシン処理として処理を実行する場合のシンクライアントシステムの構成を示す図である。投機実行環境デスクトップ処理Ｓ１１３は仮想マシン環境デスクトップ処理Ｓ１１０として、投機実行環境複製判定処理Ｓ１１４は仮想マシン環境複製判定処理Ｓ１１１として、投機実行環境破棄判定処理Ｓ１１５は仮想マシン環境破棄判定処理Ｓ１１２として処理する。
【００４２】
図１に戻り、仮想マシン環境破棄判定処理Ｓ１１２は、読み込んだ破棄フラグ１１７２（図４参照）が１の場合、仮想マシン破棄処理Ｓ１０９に投機実行処理Ｓ１０７の破棄を依頼する電文を送信する。投機実行処理Ｓ１０７が破棄された場合、複製元の仮想マシン処理Ｓ１０６を、その後も仮想マシン処理Ｓ１０６として扱い、以後の処理を継続する。
【００４３】
（投機実行処理Ｓ１０７）
投機実行処理Ｓ１０７は、投機実行環境デスクトップ処理Ｓ１１３、投機実行環境複製判定処理Ｓ１１４、投機実行環境破棄判定処理Ｓ１１５を有する。
【００４４】
投機実行環境デスクトップ処理Ｓ１１３は、入力転送処理Ｓ１０４から複製時実行プログラムコード１１６１２（図４参照）を受信する。また、投機実行環境デスクトップ処理Ｓ１１３は、受信した複製時実行プログラムコード１１６１２（図４参照）を実行する。また、投機実行環境デスクトップ処理Ｓ１１３は、投機実行処理Ｓ１０７が実行する複製時実行プログラムコード１１６１２が生成する画面データの、画面転送処理Ｓ１０５への送信を行う。
【００４５】
投機実行環境複製判定処理Ｓ１１４は、図１９に示すように、判定情報保管部１０３が有する複製条件テーブル１１６から、仮想マシン処理Ｓ１０６Ａの内部状態が、仮想マシン処理Ｓ１０６Ａを投機実行処理として複製すべき条件に該当するか否かを判定するための複製条件判定プログラムコード１１６１１（図４参照）、および、複製が実行された場合に、複製先の環境において実行する複製時実行プログラムコード１１６１２（図４参照）を読み込む。
【００４６】
また、投機実行環境破棄判定処理Ｓ１１５は、破棄条件テーブル１１７から、クライアントで実行された入力操作が、サーバで実行されている仮想マシン処理を破棄すべき条件に該当するか否かを判定する仮想マシン処理破棄条件判定プログラムコード１１７１１（図４参照）、および該操作が、同様にサーバで実行されている投機実行処理を破棄すべき条件に該当するか否かを判定する投機実行処理破棄条件判定プログラムコード１１７１２（図４参照）を読み込む。
【００４７】
次に、投機実行環境複製判定処理Ｓ１１４は、読み込んだ複製条件判定プログラムコード１１６１１（図４参照）を実行し、複製を実行するか否かの判定を行う。複製を実施する条件に該当する状況であった場合、仮想マシン複製処理Ｓ１０８に、複製時実行プログラムコード１１６１２（図４参照）、仮想マシン処理破棄条件判定プログラムコード１１７１１（図４参照）、投機実行処理破棄条件判定プログラムコード１１７１２（図４参照）が含まれた、複製生成を依頼する電文を送信する。
【００４８】
投機実行環境破棄判定処理Ｓ１１５は、判定情報保管部１０３が有する破棄条件テーブル１１７から、仮想マシン破棄処理Ｓ１０９に破棄を依頼する電文を送信するか否かを判定する破棄フラグ１１７２（図４参照）を読み込む。破棄フラグ１１７２は、仮想マシン処理を破棄すべき条件を満たした場合は０、投機実行処理を破棄すべき条件を満たした場合は１が登録される。
【００４９】
次に、投機実行環境破棄判定処理Ｓ１１５は、読み込んだ破棄フラグ１１７２が０の場合は、仮想マシン破棄処理Ｓ１０９に仮想マシン処理Ｓ１０６Ａの破棄を依頼する電文を送信する。
【００５０】
（仮想マシン複製処理Ｓ１０８）
仮想マシン複製処理Ｓ１０８は、仮想マシン環境複製判定処理Ｓ１１１から、複製生成を依頼する電文を受信する。次に、仮想マシン複製処理Ｓ１０８は、仮想マシン処理Ｓ１０６が有する仮想ハードウェアが保持する仮想ＣＰＵ、仮想メモリ、仮想補助記憶装置といった仮想ハードウェアに格納された全データを、投機実行処理Ｓ１０７が有する仮想ハードウェアが保持する、同種の仮想ハードウェアに対し複製する。
【００５１】
次に、仮想マシン複製処理Ｓ１０８は、複製生成を依頼する電文に添付された複製時実行プログラムコード１１６１２（図４参照）を、投機実行処理１０７に投入するよう入力転送処理Ｓ１０４に転送する。仮想マシン複製処理Ｓ１０８は、仮想マシン処理破棄条件判定プログラムコード１１７１１（図４参照）、および投機実行処理破棄条件判定プログラムコード１１７１２（図４参照）の、該投機実行処理Ｓ１０７から受信した画面データへの添付を、画面転送処理Ｓ１０５に依頼する電文を送信する。
【００５２】
（仮想マシン破棄処理Ｓ１０９）
仮想マシン破棄処理Ｓ１０９は、仮想マシン環境破棄判定処理Ｓ１１２から破棄を依頼する電文を受信する。次に、仮想マシン破棄処理Ｓ１０９は、サーバ１０で稼働している、仮想マシン処理Ｓ１０６、または投機実行処理Ｓ１０７の実行を中断し、該仮想マシン処理Ｓ１０６、または、該投機実行処理Ｓ１０７が保持していた仮想ハードウェアを、すべて破棄する。
【００５３】
（クライアント２０）
クライアント２０は、通信部２０１と、入出力制御処理Ｓ２０２、バッファ部２０３、画面部２０４、入力デバイス部２０５を備える。
【００５４】
通信部２０１は、サーバ１０が備える通信部１０１と同様、サーバから送信された画面データの受信、および入力デバイス部２０５から入力された入力情報の送信を行う。
【００５５】
入出力制御処理Ｓ２０２は、通信部２０１から仮想マシンの画面データを受信する。また、入出力制御処理Ｓ２０２は、受信した該画面データに、仮想マシン処理破棄条件判定プログラムコード１１７１１（図４参照）または投機実行処理破棄条件判定プログラムコード１１７１２（図４参照）が含まれる場合、該画面データを、投機実行処理Ｓ１０７から送出された画面データと見なし、該画面データを、バッファ部に格納すると共に、仮想マシン処理破棄条件判定プログラムコード１１７１１または投機実行処理破棄条件判定プログラムコード１１７１２の実行を開始する。該画面データに、仮想マシン処理破棄条件判定プログラムコード１１７１１または投機実行処理破棄条件判定プログラムコード１１７１２が含まれない場合、画面部に、該画面データを表示する。
【００５６】
また、入出力制御処理Ｓ２０２は、入力デバイス部２０５から入力情報を受信する。入出力制御処理Ｓ２０２は、仮想マシン処理破棄条件判定プログラムコード１１７１１（図４参照）または投機実行処理破棄条件判定プログラムコード１１７１２（図４参照）を実行中の場合、該プログラムコードからの戻り値を確認する。該プログラムコードからの戻り値は、クライアントで実行された入力操作が、サーバで実行されている仮想マシン処理Ｓ１０６を破棄すべき条件に該当した場合「確定」、クライアントで実行された入力操作が、サーバで実行されている投機実行処理Ｓ１０７を破棄すべき条件に該当した場合「破棄」ステータスとなる。
【００５７】
入出力制御処理Ｓ２０２は、該プログラムコードからの戻り値において「確定」ステータスが返される場合、バッファ部２０３の画面データ２０６に格納された画面データを、画面部２０４に表示し、バッファ部２０３の画面データ２０６に格納された画面データを破棄する。
【００５８】
入出力制御処理Ｓ２０２は、該プログラムコードからの戻り値において「破棄」ステータスが返される場合、バッファ部に格納された画面データを破棄する。入出力制御処理Ｓ２０２は、該プログラムコードからの戻り値において「確定」および「破棄」以外のステータスが返される場合、あるいは、仮想マシン処理破棄条件判定プログラムコード１１７１１（図４参照）または投機実行処理破棄条件判定プログラムコード１１７１２（図４参照）が実行中でない場合、該入力情報による操作内容を、通信部２０１に送信する。
【００５９】
バッファ部２０３は、画面データ２０６、および破棄条件テーブル２０７を格納し、必要に応じ、参照、および破棄可能な、ファイルシステムである。画面データ２０６には、入出力制御処理Ｓ２０２から受信した仮想マシン画面データが登録される。破棄条件テーブル２０７には、受信した該画面データに仮想マシン処理破棄条件判定プログラムコード１１７１１（図４参照）または投機実行処理破棄条件判定プログラムコード１１７１２（図４参照）が含まれる場合、該プログラムコードが登録される。
【００６０】
画面部２０４は、例えば、液晶ディスプレイ、入力デバイス部２０５は、例えば、キーボードやマウスが接続される。
【００６１】
図２は、サーバのハードウェア構成を示す図である。サーバ１０は、プログラムの実行、演算、および入出力処理を実行するＣＰＵ３０１と、主記憶装置であるメモリ３０２と、ネットワークを介して他装置と通信を行うための通信装置３０３と、補助記憶装置である外部記憶装置３０４と、以上の装置（ＣＰＵ３０１と、メモリ３０２と、通信装置３０３と、外部記憶装置３０４）を電気的に接続する内部通信線３０５を有する。
【００６２】
外部記憶装置３０４は、仮想マシン管理部１０２に含まれる各処理（入力転送処理Ｓ１０４、画面転送処理Ｓ１０５、仮想マシン処理Ｓ１０６、投機実行処理Ｓ１０７、仮想マシン複製処理Ｓ１０８、仮想マシン破棄処理Ｓ１０９）を実現するプログラムと、その他の処理（通信部１０１）を実現するプログラムと、判定情報保管部１０３のデータ保管領域と、判定情報保管部１０３の動作に必要なプログラムを保持する。
【００６３】
ＣＰＵ３０１は、該プログラムをメモリにロードし、実行する処理を有する。以後、「Ａ処理」という記述は、メモリにロードされ、ＣＰＵによって実行されることによって実現される処理を指すこととする。また、「プログラムを実行する」および「Ａ処理を実行する」という記述は、ＣＰＵが、メモリにロードした該処理を実現したプログラムを実行する操作、を指すこととする。
【００６４】
通信装置３０３は、サーバと、ネットワークと、を物理的、電気的に結線するためのインターフェイスを有する。
【００６５】
図３は、クライアントのハードウェア構成を例示する図である。クライアント２０は、プログラムの実行、演算、および入出力処理を実行するＣＰＵ４０１と、主記憶装置であるメモリ４０２と、ネットワークを介して他装置と通信を行うための通信装置４０３と、補助記憶装置である外部記憶装置４０４と、オペレータなどからキーボード、マウスなどを介しデータ入力を受け付ける入力装置４０５と、オペレータなどにディスプレイなどを介しデータを出力する出力装置４０６と、以上の装置（ＣＰＵ４０１と、メモリ４０２と、通信装置４０３と、外部記憶装置４０４と、入力装置４０５と、出力装置４０６）を電気的に接続する内部通信線４０７と、を有する。
【００６６】
外部記憶装置４０４は、入出力制御処理Ｓ２０２を実現するプログラムと、その他の処理（通信部２０１、画面部２０４、入力デバイス部２０５）を実現するプログラムと、バッファ部２０３のデータ保管領域と、バッファ部２０３の動作に必要なプログラムを保持する。
【００６７】
ＣＰＵ４０１は、該プログラムをメモリにロードし、実行する処理を有する。通信装置４０３は、サーバと、ネットワークと、を物理的、電気的に結線するためのインターフェイスを有する。入力装置４０５は、クライアントと、入力デバイス部を物理的、電気的に結線するためのインターフェイスを有する。出力装置４０６は、クライアントと、画面部などと、を物理的、電気的に結線するためのインターフェイスを有する。
【００６８】
図４は、判定情報保管部に登録されている利用者の複製条件テーブルおよび破棄条件テーブルのデータ構造を例示する図である。判定情報保管部１０３には、複製条件テーブル１１６および破棄条件テーブル１１７が格納されている。
【００６９】
複製条件テーブル１１６は、複製実行条件１１６１および複製フラグ１１６２で構成される。複製実行条件１１６１は、複製条件判定プログラムコード１１６１１と複製時実行プログラムコード１１６１２の組で構成される。複製条件判定プログラムコード１１６１１は、仮想マシン処理Ｓ１０６の内部状態が、仮想マシン処理Ｓ１０６を投機実行処理Ｓ１０７として複製すべき条件に該当するか否かを判定するためのプログラムコードである。複製時実行プログラムコード１１６１２は、複製が実行された場合に、投機実行処理Ｓ１０７において実行するプログラムコードである。複製フラグ１１６２は、仮想マシン複製処理Ｓ１０８に複製生成を依頼する電文を送信するか否かを判定するためのフラグである。複製フラグ１１６２が０の場合、該電文を送信せず、複製フラグ１１６２が１の場合、該電文を送信する。
【００７０】
例えば、複製実行条件１１６１は、仮想マシン処理が実行中のオペレーティングシステムについて、デスクトップ内の、クリック可能な矩形のオブジェクト全てについて、デスクトップにおける物理的な占有領域の位置を調べ、いずれかのオブジェクトの、該占有領域内部にマウスカーソルが入っているか調べ、真の場合、該マウスカーソルの座標を返し、偽の場合、ＮＵＬＬを返すプログラムコードと、現在のマウスカーソルの座標でクリック操作を行ったと同等の効果を、オペレーティングシステムに投入するプログラムコードが登録される。
【００７１】
複製フラグ１１６２には、該複製実行条件１１６１においてＮＵＬＬが返ってきた場合は０、該カーソルの座標が返ってきた場合は１が登録される。
【００７２】
破棄条件テーブル１１７は、破棄実行条件１１７１および破棄フラグ１１７２で構成される。破棄実行条件１１７１は、仮想マシン処理破棄条件判定プログラムコード１１７１１と投機実行処理破棄条件判定プログラムコード１１７１２の組で構成される。仮想マシン処理破棄条件判定プログラムコード１１７１１は、クライアントで実行された入力操作が、サーバで実行されている仮想マシン処理Ｓ１０６を破棄すべき条件に該当するかを判定するためのプログラムコードである。投機実行処理破棄条件判定プログラムコード１１７１２は、該操作が、同様にサーバで実行されている投機実行処理Ｓ１０７を破棄すべき条件に該当するかを判定するためのプログラムコードである。破棄フラグ１１７２は、仮想マシン破棄処理Ｓ１０９に仮想マシン処理Ｓ１０６の破棄を依頼する電文を送信するか、投機実行処理Ｓ１０７の破棄を依頼する電文を送信するかを判定するためのフラグである。破棄フラグ１１７２が０の場合、仮想マシン処理Ｓ１０６の破棄を依頼する電文を送信し、破棄フラグ１１７２が１の場合、投機実行処理Ｓ１０７の破棄を依頼する電文を送信する。
【００７３】
例えば、破棄実行条件１１７１は、複製条件判定プログラムコード１１６１１の戻り値で作る矩形の範囲内がクリックされたか否かを判定するプログラムコードと、複製条件判定プログラムコード１１６１１の戻り値で作る矩形の範囲内からマウスカーソルが外れたか否かを判定するプログラムコードが登録される。
【００７４】
破棄フラグ１１７２には、複製条件判定プログラムコード１１６１１の戻り値で作る矩形の範囲内がクリックされた場合は０、複製条件判定プログラムコード１１６１１の戻り値で作る矩形の範囲内からマウスカーソルが外れた場合は１が登録される。
【００７５】
図５は、画像データを受信した場合の入出力制御処理を例示するフローチャートである。図５を参照して、クライアント２０の入出力制御処理Ｓ２０２における、画像データを受信した場合の処理Ｓ１０について説明する。
【００７６】
最初に、入出力制御処理Ｓ２０２は、サーバ１０の仮想マシン処理Ｓ１０６または投機実行処理Ｓ１０７で生成された仮想マシンの画面データをクライアント２０の通信部２０１から受信する（処理Ｓ１１）。
【００７７】
次に、入出力制御処理Ｓ２０２は、受信した仮想マシン画面データに仮想マシン処理破棄条件判定プログラムコード１１７１１または投機実行処理破棄条件判定プログラムコード１１７１２が含まれているか否か判定する（処理Ｓ１２）。処理Ｓ１２において仮想マシン処理破棄条件判定プログラムコード１１７１１または投機実行処理破棄条件判定プログラムコード１１７１２が含まれる場合（処理Ｓ１２のＹｅｓ）、入出力制御処理Ｓ２０２は、受信した仮想マシン画面データをバッファ部２０３の画面データ２０６に格納する（処理Ｓ１３）。次に、入出力制御処理Ｓ２０２は、受信した仮想マシン画面データに含まれていた仮想マシン処理破棄条件判定プログラムコード１１７１１または投機実行処理破棄条件判定プログラムコード１１７１２を実行し（処理Ｓ１４）、処理Ｓ１０を終了する。
【００７８】
処理Ｓ１２において仮想マシン処理破棄条件判定プログラムコード１１７１１または投機実行処理破棄条件判定プログラムコード１１７１２が含まれない場合（処理Ｓ１２のＮｏ）、受信した仮想マシン画面データを画面部２０４に表示し（処理Ｓ１５）、処理Ｓ１０を終了する。
【００７９】
図６は、入力情報を受信した場合の入出力制御処理を例示するフローチャートである。図６を参照して、クライアント２０の入出力制御処理Ｓ２０２における、入力情報を受信した場合の処理Ｓ２０について説明する。
【００８０】
最初に、入出力制御処理Ｓ２０２は、入力デバイス部２０５から入力情報を受信する（処理Ｓ２１）。次に、入出力制御処理Ｓ２０２は、仮想マシン処理破棄条件判定プログラムコード１１７１１または投機実行処理破棄条件判定プログラムコード１１７１２を実行しているか否か判定する（処理Ｓ２２）。処理Ｓ２２において仮想マシン処理破棄条件判定プログラムコード１１７１１または投機実行処理破棄条件判定プログラムコード１１７１２を実行している場合（処理Ｓ２２のＹｅｓ）、実行したプログラムコードの戻り値を判定する（処理Ｓ２３）。実行したプログラムコードの戻り値は、クライアントで実行された入力操作が、サーバで実行されている仮想マシン処理Ｓ１０６を破棄すべき条件に該当した場合「確定」ステータス、クライアントで実行された入力操作が、サーバで実行されている投機実行処理Ｓ１０７を破棄すべき条件に該当した場合「破棄」ステータスとなる。処理Ｓ２３において、実行したプログラムコードの戻り値が「確定」ステータスでも「破棄」ステータスでもない場合、処理Ｓ２６に進む。
【００８１】
処理Ｓ２３において実行したプログラムコードの戻り値が「確定」ステータスの場合、入出力制御処理Ｓ２０２は、バッファ部２０３の画面データ２０６を画面部２０４に表示し（処理Ｓ２４）、処理Ｓ２０を終了する。処理Ｓ２３において実行したプログラムコードの戻り値が「破棄」ステータスの場合、入出力制御処理Ｓ２０２は、バッファ部２０３の画面データ２０６を破棄し（処理Ｓ２５）、処理Ｓ２０を終了する。
【００８２】
処理Ｓ２２において仮想マシン処理破棄条件判定プログラムコード１１７１１または投機実行処理破棄条件判定プログラムコード１１７１２を実行していない場合（処理Ｓ２２のＮｏ）、受信した入力情報を通信部２０１に送信し（処理Ｓ２６）、処理Ｓ２０を終了する。
【００８３】
図７は、入力転送処理を例示するフローチャートである。図７を参照して、サーバ１０の入力転送処理Ｓ１０４の詳細について説明する。最初に、入力転送処理Ｓ１０４は、通信部１０１から入力情報を受信する（処理Ｓ３０１）。次に、入力転送処理Ｓ１０４は、仮想マシン環境デスクトップ処理Ｓ１１０に入力情報を送信する（処理Ｓ３０２）。
【００８４】
次に、入力転送処理Ｓ１０４は、複製条件テーブル１１６から読み出した複製時実行プログラムコード１１６１２を仮想マシン複製処理Ｓ１０８から受信する（処理Ｓ３０３）。次に、入力転送処理Ｓ１０４は受信した複製時実行プログラムコード１１６１２を投機実行処理Ｓ１０７の投機実行環境デスクトップ処理Ｓ１１３に投入し（処理Ｓ３０４）、入力転送処理Ｓ１０４を終了する。
【００８５】
図８は、画面転送処理を例示するフローチャートである。図８を参照して、サーバ１０の画面転送処理Ｓ１０５の詳細について説明する。最初に、画面転送処理Ｓ１０５は、仮想マシン環境デスクトップ処理Ｓ１１０または投機実行環境デスクトップ処理Ｓ１１３で生成された画面データを受信する（処理Ｓ４０１）。
【００８６】
次に、画面転送処理Ｓ１０５は、破棄条件テーブル１１７から読み出した仮想マシン処理破棄条件判定プログラムコード１１７１１および投機実行処理破棄条件判定プログラムコード１１７１２を画面データに添付する指示を仮想マシン複製処理Ｓ１０８から受信する（処理Ｓ４０２）。
【００８７】
次に、受信した画面データおよび、仮想マシン処理破棄条件判定プログラムコード１１７１１および投機実行処理破棄条件判定プログラムコード１１７１２を通信部１０１に送信し（処理Ｓ４０３）、画面転送処理Ｓ１０５を終了する。
【００８８】
図９は、仮想マシン処理を例示するフローチャートである。図９を参照して、サーバ１０の仮想マシン処理Ｓ１０６の詳細について説明する。最初に、仮想マシン処理Ｓ１０６は仮想マシン環境デスクトップ処理Ｓ１１０を実行する（処理Ｓ５０１）。なお、仮想マシン環境デスクトップ処理Ｓ１１０の詳細は図１０を参照して後記する。
【００８９】
次に、仮想マシン処理Ｓ１０６は仮想マシン環境複製判定処理Ｓ１１１を実行する（処理Ｓ５０２）。なお、仮想マシン環境複製判定処理Ｓ１１１の詳細は図１１を参照して後記する。
【００９０】
次に、仮想マシン処理Ｓ１０６は仮想マシン環境破棄判定処理Ｓ１１２を実行し（処理Ｓ５０３）、仮想マシン処理Ｓ１０６を終了する。なお、仮想マシン環境破棄判定処理Ｓ１１２の詳細は図１１を参照して後記する。
【００９１】
図１０は、仮想マシン環境デスクトップ処理を例示するフローチャートである。図１０を参照して、サーバ１０の仮想マシン処理Ｓ１０６の仮想マシン環境デスクトップ処理Ｓ１１０の詳細（処理Ｓ５０１の詳細）について説明する。最初に、仮想マシン環境デスクトップ処理Ｓ１１０は、入力転送処理Ｓ１０４から入力情報を受信する（処理Ｓ５０１１）。
【００９２】
次に、仮想マシン環境デスクトップ処理Ｓ１１０は、受信した入力情報を基に仮想マシンにおいて入力操作を行い（処理Ｓ５０１２）、入力操作に基づき、仮想マシンにおいて画面データを生成する（処理Ｓ５０１３）。そして、仮想マシン環境デスクトップ処理Ｓ１１０は、生成した画面データを画面転送処理Ｓ１０５に送信し（処理Ｓ５０１４）、仮想マシン環境デスクトップ処理Ｓ１１０を終了する。
【００９３】
図１１は、仮想マシン環境複製判定処理を例示するフローチャートである。図１１を参照して、サーバ１０の仮想マシン処理Ｓ１０６の仮想マシン環境複製判定処理Ｓ１１１の詳細（処理Ｓ５０２の詳細）について説明する。
【００９４】
最初に、仮想マシン環境複製判定処理Ｓ１１１は、判定情報保管部１０３に格納されている複製条件テーブル１１６から複製条件判定プログラムコード１１６１１を、破棄条件テーブル１１７から仮想マシン処理破棄条件判定プログラムコード１１７１１および投機実行処理破棄条件判定プログラムコード１１７１２を読み込む（処理Ｓ５０２１）。次に、仮想マシン環境複製判定処理Ｓ１１１は、読み込んだ複製条件判定プログラムコード１１６１１を実行する（処理Ｓ５０２２）。なお、処理Ｓ５０２２の詳細については、図１６を参照して後記する。
【００９５】
次に、仮想マシン環境複製判定処理Ｓ１１１は、複製フラグ１１６２が０か１の判定を行う（処理Ｓ５０２３）。処理Ｓ５０２３において複製フラグ１１６２が０の場合、読み込んだ複製条件判定プログラムコード１１６１１の実行（処理Ｓ５０２２）を繰り返す。処理Ｓ５０２３において複製フラグ１１６２が１の場合、仮想マシン複製処理Ｓ１０８に複製条件テーブル１１６から読み出した複製時実行プログラムコード１１６１２と破棄条件テーブル１１７から読み出した仮想マシン処理破棄条件判定プログラムコード１１７１１および投機実行処理破棄条件判定プログラムコード１１７１２を添付して複製を依頼し（処理Ｓ５０２４）、仮想マシン環境複製判定処理Ｓ１１１を終了する。
【００９６】
図１２は、仮想マシン環境破棄判定処理を例示するフローチャートである。図１２を参照して、サーバ１０の仮想マシン処理Ｓ１０６の仮想マシン環境破棄判定処理Ｓ１１２の詳細（処理Ｓ５０３の詳細）について説明する。
【００９７】
最初に、仮想マシン環境破棄判定処理Ｓ１１２は、仮想マシン処理破棄条件判定プログラムコード１１７１１および投機実行処理破棄条件判定プログラムコード１１７１２を実行する（処理Ｓ５０３１）。なお、処理Ｓ５０３１の詳細については、図１７、図１８を参照して後記する。
【００９８】
次に、仮想マシン環境破棄判定処理Ｓ１１２は、破棄フラグ１１７２が０か１かまだわからないかの判定を行う（処理Ｓ５０３２）。処理Ｓ５０３２において破棄フラグ１１７２が０でも１でもない場合（まだわからない場合）、仮想マシン処理破棄条件判定プログラムコード１１７１１および投機実行処理破棄条件判定プログラムコード１１７１２の実行（処理Ｓ５０３１）を繰り返す。処理Ｓ５０３２において破棄フラグ１１７２が０の場合、仮想マシン破棄処理Ｓ１０９に仮想マシン処理Ｓ１０６の破棄を依頼し（処理Ｓ５０３３）、仮想マシン環境破棄判定処理Ｓ１１２を終了する。処理Ｓ５０３２において破棄フラグ１１７２が１の場合、仮想マシン破棄処理Ｓ１０９に投機実行処理Ｓ１０７の破棄を依頼し（処理Ｓ５０３４）、仮想マシン環境破棄判定処理Ｓ１１２を終了する。
【００９９】
図１３は、投機実行環境デスクトップ処理を例示するフローチャートである。図１３を参照してサーバ１０の投機実行処理Ｓ１０７の投機実行環境デスクトップ処理Ｓ１１３の詳細について説明する。
【０１００】
最初に、投機実行環境デスクトップ処理Ｓ１１３は、入力転送処理Ｓ１０４から複製時実行プログラムコード１１６１２を受信する（処理Ｓ６０１）。次に、投機実行環境デスクトップ処理Ｓ１１３は、受信した複製時実行プログラムコード１１６１２を実行する（処理Ｓ６０２）。
【０１０１】
次に、投機実行環境デスクトップ処理Ｓ１１３は、投機実行された場合の画面データを生成する（処理Ｓ６０３）。そして、投機実行環境デスクトップ処理Ｓ１１３は、生成した画面データを画面転送処理Ｓ１０５に送信し（処理Ｓ６０４）、投機実行環境デスクトップ処理Ｓ１１３を終了する。
【０１０２】
図１４は、仮想マシン複製処理を例示するフローチャートである。図１４を参照して、サーバ１０の仮想マシン複製処理Ｓ１０８の詳細について説明する。最初に、仮想マシン複製処理Ｓ１０８は、仮想マシン環境複製判定処理Ｓ１１１から複製の依頼を受信する（処理Ｓ７０１）。次に、仮想マシン複製処理Ｓ１０８は、仮想マシン処理Ｓ１０６の複製として投機実行処理Ｓ１０７を生成する（処理Ｓ７０２）。
【０１０３】
次に、仮想マシン複製処理Ｓ１０８は、複製条件テーブル１１６から読み出した複製時実行プログラムコード１１６１２を投機実行処理Ｓ１０７に投入するよう、入力転送処理Ｓ１０４に指示する（処理Ｓ７０３）。
【０１０４】
次に、仮想マシン複製処理Ｓ１０８は、破棄条件テーブル１１７から読み出した仮想マシン処理破棄条件判定プログラムコード１１７１１および投機実行処理破棄条件判定プログラムコード１１７１２を投機実行処理Ｓ１０７から受信した画面データに添付するよう、画面転送処理Ｓ１０５に指示し（処理Ｓ７０４）、一連の処理を終了する。
【０１０５】
図１５は、仮想マシン破棄処理を例示するフローチャートである。図１５を参照して、サーバ１０の仮想マシン破棄処理Ｓ１０９の詳細について説明する。最初に、仮想マシン破棄処理Ｓ１０９は、仮想マシン処理Ｓ１０６の仮想マシン環境破棄判定処理Ｓ１１２から仮想マシン処理Ｓ１０６または投機実行処理Ｓ１０７の破棄の依頼を受信する（処理Ｓ８０１）。
【０１０６】
次に、仮想マシン破棄処理Ｓ１０９は、仮想マシン処理Ｓ１０６または投機実行処理Ｓ１０７を破棄し（処理Ｓ８０２）、仮想マシン破棄処理Ｓ１０９を終了する。
【０１０７】
図１６は、複製条件判定プログラムコード実行処理を例示するフローチャートである。図１６を参照して、複製条件判定プログラムコード１１６１１の処理Ｓ５０２２について説明する。最初に、仮想マシン環境複製判定処理Ｓ１１１は、デスクトップ内のクリック可能なオブジェクトすべてについて、領域を調べる（処理Ｓ５０２２１）。次に、仮想マシン環境複製判定処理Ｓ１１１は、デスクトップ内のクリック可能なオブジェクトすべてについて、領域の左上および右下の座標を調べる（処理Ｓ５０２２２）。
【０１０８】
次に、仮想マシン環境複製判定処理Ｓ１１１は、デスクトップ内のクリック可能なオブジェクトすべてについて、範囲内にマウスカーソルが入っているか確認する（処理Ｓ５０２２３）。処理Ｓ５０２２３において条件を満たす場合（処理Ｓ５０２２４のＹｅｓ）、デスクトップ内のクリック可能なオブジェクトすべてについて、領域の左上および右下の座標を返す（処理Ｓ５０２２５）。次に、仮想マシン環境複製判定処理Ｓ１１１は、複製条件テーブル１１６の複製フラグ１１６２に１を登録し（処理Ｓ５０２２６）、処理Ｓ５０２２を終了する。
【０１０９】
処理Ｓ５０２２３において条件を満たさない場合（処理Ｓ５０２２４のＮｏ）、ＮＵＬＬを返す（処理Ｓ５０２２７）。次に、仮想マシン環境複製判定処理Ｓ１１１は、複製条件テーブル１１６の複製フラグ１１６２に０を登録し（処理Ｓ５０２２８）、処理Ｓ５０２２を終了する。
【０１１０】
図１７は、仮想マシン処理破棄条件判定プログラムコード実行処理を例示するフローチャートである。図１７を参照して、仮想マシン処理破棄条件判定プログラムコード１１７１１の処理Ｓ５０３１Ａについて説明する。最初に、仮想マシン環境破棄判定処理Ｓ１１２は、複製条件判定プログラムコード１１６１１の戻り値の座標で作る矩形の範囲内がクリックされたか否かを判定する（処理Ｓ５０３１１）。
【０１１１】
処理Ｓ５０３１１において条件を満たす場合（処理Ｓ５０３１１のＹｅｓ）、仮想マシン環境破棄判定処理Ｓ１１２は、破棄条件テーブル１１７の破棄フラグ１１７２に０を登録し（処理Ｓ５０３１２）、処理Ｓ５０３１Ａを終了する。一方、処理Ｓ５０３１１において条件を満たさない場合（処理Ｓ５０３１１のＮｏ）、仮想マシン環境破棄判定処理Ｓ１１２は、処理Ｓ５０３１Ａを終了する。
【０１１２】
図１８は、投機実行処理破棄条件判定プログラムコード実行処理を例示するフローチャートである。図１８を参照して、投機実行処理破棄条件判定プログラムコード１１７１２の処理Ｓ５０３１Ｂについて説明する。仮想マシン環境破棄判定処理Ｓ１１２は、複製条件判定プログラムコード１１６１１の戻り値の座標で作る矩形の範囲内からマウスカーソルが外れたか否かを判定する（処理Ｓ５０３１３）。
【０１１３】
処理Ｓ５０３１３において条件を満たす場合（処理Ｓ５０３１３のＹｅｓ）、仮想マシン環境破棄判定処理Ｓ１１２は、破棄条件テーブル１１７の破棄フラグ１１７２に１を登録し（処理Ｓ５０３１４）、処理Ｓ５０３１Ｂを終了する。処理Ｓ５０３１３において条件を満たさない場合（処理Ｓ５０３１３のＮｏ）、仮想マシン環境破棄判定処理Ｓ１１２は、処理Ｓ５０３１Ｂを終了する。
【０１１４】
本実施形態では、クライアント２０のデスクトップの状態が、１つ以上の複製条件のうち、１つの条件を満たしたとき、サーバ１０の仮想マシン複製処理Ｓ１０８は、仮想マシン処理Ｓ１０６の複製として投機実行処理Ｓ１０７を作成する。該条件ごとに設定された動作が実際に行われたと仮定して、投機実行環境デスクトップ処理Ｓ１１３は、デスクトップの動作を投機実行する。画面転送処理Ｓ１０５は、投機動作後の画面データをクライアントへ２０に送信する。送信された画面データは、クライアント２０のバッファ部２０３にバッファされる。クライアント２０で該動作が実際に実行された場合、入出力制御処理Ｓ２０２は、バッファされた画面データを即座に画面部２０４に反映することができる。すなわち、本実施形態のシンクライアントシステムでは、サーバ１０の仮想マシン環境の複製として投機実行環境を生成し、作成した投機実行環境にて処理を投機実行し、投機実行後の画面データをクライアントに先に転送することができる。
【符号の説明】
【０１１５】
１０    サーバ
２０    クライアント
１０１，２０１    通信部
１０２    仮想マシン管理部
１０３    判定情報保管部
１１６    複製条件テーブル（複製条件情報）
１１７    破棄条件テーブル（破棄条件情報）
２０３    バッファ部
２０４    画面部
２０５    入力デバイス部
３０１    ＣＰＵ（処理部）
３０２，４０２    メモリ
３０３，４０３    通信装置
３０４    外部記憶装置（記憶部）
３０５，４０７    内部通信線
４０１    ＣＰＵ（クライアント処理部）
４０４    外部記憶装置
１１６１１    複製条件判定プログラムコード
１１６１２    複製時実行プログラムコード
１１７１１    仮想マシン処理破棄条件判定プログラムコード（仮想マシン破棄条件判定プログラムコード）
１１７１２    投機実行処理破棄条件判定プログラムコード（投機実行破棄条件判定プログラムコード）
Ｓ１０４    入力転送処理
Ｓ１０５    画像転送処理
Ｓ１０６    仮想マシン処理（仮想マシン）
Ｓ１０７    投機実行処理（複製仮想マシン）
Ｓ１０８    仮想マシン複製処理
Ｓ１０９    仮想マシン破棄処理
Ｓ１１０    仮想マシン環境デスクトップ処理
Ｓ１１１    仮想マシン環境複製判定処理
Ｓ１１２    仮想マシン環境破棄判定処理
Ｓ１１３    投機実行環境デスクトップ処理
Ｓ１１４    投機実行環境複製判定処理
Ｓ１１５    投機実行環境破棄判定処理
Ｓ２０２    入出力制御処理
【図１】
2013171545.tif 000003
【図２】
2013171545.tif 000004
【図３】
2013171545.tif 000005
【図４】
2013171545.tif 000006
【図５】
2013171545.tif 000007
【図６】
2013171545.tif 000008
【図７】
2013171545.tif 000009
【図８】
2013171545.tif 000010
【図９】
2013171545.tif 000011
【図１０】
2013171545.tif 000012
【図１１】
2013171545.tif 000013
【図１２】
2013171545.tif 000014
【図１３】
2013171545.tif 000015
【図１４】
2013171545.tif 000016
【図１５】
2013171545.tif 000017
【図１６】
2013171545.tif 000018
【図１７】
2013171545.tif 000019
【図１８】
2013171545.tif 000020
【図１９】
2013171545.tif 000021
【図２０】
2013171545.tif 000022