(57)【特許請求の範囲】
【請求項１】
複数の仮想計算機が動作するサーバ装置とクライアント装置とがネットワークを介して通信可能に接続するシンクライアント・システムにおけるサーバ装置であって、
前記仮想計算機から発行される描画命令を前記仮想計算機ごとに保存する描画命令バッファと、
前記仮想計算機ごとに保存された描画命令バッファの中から、実行すべき前記描画命令を保存する描画命令バッファを選択する選択手段と、
選択された前記描画命令バッファが保存する前記描画命令に基づいて画面データを生成する描画装置と、
生成した前記画面データを伝送路に適した形式に変換するエンコーダと、
前記描画命令を発行した前記仮想計算機に、変換された前記画面データを、関連付ける描画・エンコード制御手段と、
前記変換された前記画面データを、関連付けられた前記仮想計算機と対応付けられた前記クライアント装置へ送信する通信手段と、
を備えることを特徴とする、サーバ装置。
【請求項２】
前記描画装置と前記エンコーダが、ハードウェアであることを特徴とする、請求項１に記載のサーバ装置。
【請求項３】
複数の仮想計算機が動作するサーバ装置とクライアント装置とがネットワークを介して通信可能に接続するシンクライアント・システムにおける画面データの送信方法であって、
前記仮想計算機から発行される描画命令を前記仮想計算機ごとに保存し、
前記仮想計算機ごとに保存された前記描画命令の中からいずれかを選択し、
選択された前記描画命令に基づいて画面データを生成し、
生成した前記画面データを伝送路に適した形式に変換し、
前記描画命令を発行した前記仮想計算機に、変換された前記画面データを関連付け、
前記変換された前記画面データを、関連付けられた前記仮想計算機と対応付けられた前記クライアント装置へ送信することを特徴とする、画面データの送信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ装置及び画面データの送信方法に関し、特に、シンクライアント・システムにおけるサーバ装置で動作する仮想計算機の画面出力をクライアント装置に送信する技術に関する。
【背景技術】
【０００２】
本発明の背景技術としては、シンクライアント技術、仮想化技術、前記の２つを組み合わせたデスクトップ仮想化技術が挙げられる。
【０００３】
シンクライアント技術とは、ユーザがシステムを利用して情報を処理するときに、ユーザが利用するクライアント装置では、ユーザ・インターフェースなどに関する処理だけを実行し、主な処理をサーバ装置で実行させるシステムを構築する技術である。また、そのようなシステムをシンクライアント・システムという。一方、仮想化技術とは、物理的な電子計算機上で、仮想的な電子計算機を構築する技術である。これらシンクライアント・システムと仮想化技術を組み合わせることは、「デスクトップ仮想化」として知られている。
【０００４】
本発明に関連する技術が記載された文献として特許文献１を挙げる。特許文献１には、デスクトップ仮想化とシンクライアント方式との組み合わせを実現する手段として、複数のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）から出力される画面の描画指示信号を受け付けて表示画面の画像信号を生成し、生成した画像信号を端末装置へ送信する画像送信装置を備えた発明を提供することが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−００９３３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記の特許文献１には、高々画像送信装置の台数分しか仮想計算機をシンクライアント・サーバとして動作させられないという問題点があった。
【０００７】
また、従来からのデスクトップ仮想化では、例えば、仮想計算機内部でシンクライアント・サーバを動作させる方法や、ＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）でシンクライアント・サーバを動作させる方法が採られてきた。
【０００８】
しかしながら、サーバの画面出力をエンコードしてクライアントに送信するシンクライアント方式と仮想化技術を組み合わせたデスクトップ仮想化は、従来、一般的でなかった。サーバの画面出力をエンコードしてクライアントに送信するシンクライアント方式とは、実計算機であるサーバ装置においてサーバ装置のＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）からの画面出力をキャプチャしてエンコーダでエンコードし、クライアント装置のデコーダでデコードして表示する方式である。
【０００９】
サーバの画面出力をエンコードしてクライアントに送信するシンクライアント方式においては、シンクライアント・サーバは、実計算機で動作することが想定されている。そのため、ＧＰＵやエンコーダは、実計算機上で動作するシンクライアント・サーバから、直接利用されることのみに対応していた。
【００１０】
そこで本発明は、上記実情に鑑みて、実計算機であるサーバ装置で生成された仮想計算機の画面出力をクライアント装置に送信するシンクライアント・システムを実現するサーバ装置及び画面データの送信方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明は、第１の態様として、複数の仮想計算機が動作するサーバ装置とクライアント装置とがネットワークを介して通信可能に接続するシンクライアント・システムにおけるサーバ装置であって、前記仮想計算機の描画命令を前記仮想計算機ごとに保存する描画命令バッファと、前記仮想計算機ごとに保存された描画命令バッファの中から前記描画命令を実行する描画命令バッファを選択する選択手段と、選択された前記描画命令バッファの前記描画命令に基づいて画面データを生成する描画装置と、生成した前記画面データを伝送路に適した形式に変換するエンコーダと、前記描画命令を発行した前記仮想計算機に、変換された前記画面データを、関連付ける描画・エンコード制御手段と、前記変換された前記画面データを、関連付けられた前記仮想計算機と対応付けられた前記クライアント装置へ送信する通信手段と、を備えることを特徴とする、サーバ装置を提供するものである。
【００１２】
また、上記目的を達成するために、本発明は、第２の態様として、複数の仮想計算機が動作するサーバ装置とクライアント装置とがネットワークを介して通信可能に接続するシンクライアント・システムにおける画面データの送信方法であって、前記仮想計算機の描画命令を前記仮想計算機ごとに保存し、前記仮想計算機ごとに保存された前記描画命令の中からいずれかを選択し、選択された前記描画命令に基づいて画面データを生成し、生成した前記画面データを伝送路に適した形式に変換し、前記描画命令を発行した前記仮想計算機に、変換された前記画面データを関連付け、前記変換された前記画面データを、関連付けられた前記仮想計算機と対応付けられた前記クライアント装置へ送信することを特徴とする、画面データの送信方法を提供するものである。
【発明の効果】
【００１３】
本発明によれば、実計算機であるサーバ装置で生成された仮想計算機の画面出力をクライアント装置に送信するシンクライアント・システムを、仮想計算機の台数を描画装置とエンコーダの台数によって制限されることなく、実現することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態のハードウェア構成を示す図である。
【図２】本発明の第１の実施形態のソフトウェア構成を示す図である。
【図３】本発明の第１の実施形態の対応表を示す図である。
【図４】本発明の第１の実施形態の動作を示すフローチャート図（その１）である。
【図５】本発明の第１の実施形態の動作を示すフローチャート図（その２）である。
【図６】図５の変形実施形態を説明するための図である。
【発明を実施するための形態】
【００１５】
本発明を実施するための形態について以下で説明する。
【００１６】
（第１の実施形態）
図１を参照すると、本実施形態のハードウェア構成が示されている。図示のように、本実施形態に係るシンクライアント・システムは、サーバ装置１とクライアント装置２と、これら２つの装置を通信可能に接続するネットワーク３とを含む構成である。クライアント装置２の台数は、複数であってもよい。
【００１７】
サーバ装置１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と、メモリ制御部１０２と、メイン・メモリ１０３と、Ｉ／Ｏ（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）制御部１０４と、ＧＰＵ１０５と、ＧＰＵ用メモリ１０６と、エンコーダ１０７と、通信部１０９とを有する構成である。ＣＰＵ１０１，メモリ制御部１０２，メイン・メモリ１０３，Ｉ／Ｏ制御部１０４は、一般的なコンピュータ・アーキテクチャでよく用いられているものを利用することができる。
【００１８】
ＧＰＵ１０５は、ＣＰＵ１０１からの描画命令に基づいて、描画処理を実行する。
ＧＰＵ用メモリ１０６は、ＧＰＵ１０５の使用するメモリであって、例えば、フレーム・バッファとして使用されるメモリである。ＧＰＵ用メモリ１０６は、メイン・メモリ１０３の一部の領域であってもよい。
【００１９】
ＧＰＵ１０５は、ＣＰＵ１０１からの命令に基づいて、描画命令を処理し、画面データを生成する。ＧＰＵ１０５は、仮想計算機ごとに使用するＧＰＵ用メモリ１０６の領域を分けなくてはならない。ＧＰＵ１０５は、ＣＰＵ１０１から、ＣＰＵ１０１上で動作するＶＭＭ２０１（後述）から、どの仮想計算機の描画命令を発行したか、若しくは、具体的に、ＧＰＵ用メモリ１０６のうち、どの領域を使用するかを指定される。
【００２０】
エンコーダ１０７は、ＧＰＵ１０５から出力される画面データをバッファ１０８に保存し、エンコードする。ここで「エンコードする」とは、伝送路に適した形式に変換することである。エンコードされたデータは、メイン・メモリ１０３に保存される。
【００２１】
通信部１０９は、メイン・メモリ１０３に保存されたエンコードされたデータを含むパケットを、ＣＰＵ１０１上で動作するシンクライアント・サーバ・プログラム２０３（後述）によって指定されたクライアント装置２に送信する。
【００２２】
クライアント装置２やネットワーク３の構成は、本発明の本質ではなく、当業者には明らかであるので、説明を省略する。
【００２３】
図２を参照すると、本実施形態のソフトウェア構成が示されている。図示のように、サーバ装置１のソフトウェアは、ＣＰＵ１０１上で動作する仮想計算機２０２、ＶＭＭ２０１、シンクライアント・サーバ・プログラム２０３を含む。なお、図２には、説明の便宜のため、ハードウェアであるＧＰＵ１０５、エンコーダ１０７、通信部１０９も記載されている。また、図２において、上記各ソフトウェアがＣＰＵに含まれているように描かれているが、メイン・メモリ１０４や補助記憶装置（不図示）に含まれることもある。一般的な電子計算機で、ソフトウェアがどのように処理されるかは、当業者には明らかである。
【００２４】
ＶＭＭ２０１には、切替部２０８、エミュレータ２０７、描画命令バッファ２０６が含まれる。ＶＭＭ２０１には、仮想計算機２０２を動作させるために、この他にも多くの構成要素が存在するが、本発明の本質ではないので説明を省略する。
【００２５】
切替部２０８は、仮想計算機２０２から発行される描画命令を、サーバ装置１のＧＰＵ１０５及びクライアント装置２の画像表示部（不図示）に適合するようにエミュレートする必要があるか否かを判定し、必要があると判定した場合、エミュレータ２０７に描画命令を転送する。エミュレートが必要であると判断される場合として、例えば、仮想計算機２０２に含まれる仮想的なＧＰＵとサーバ装置１のＧＰＵ１０５とで命令セットが異なる場合や、サーバ装置１のモニタとクライアント装置２のモニタのサイズが異なる場合などが考えられる。
【００２６】
エミュレータ２０７は、切替部２０８で、仮想計算機２０２から送られた描画命令をエミュレートする必要があると判断されたなどの場合に、描画命令のエミュレートを実行する。
【００２７】
描画命令バッファ２０６は、仮想計算機２０２の画面表示のための描画命令を、仮想計算機ごとに保存する。
【００２８】
描画命令バッファ２０６は、一般的な時分割方式にとって常には必要でないが、本実施形態のように仮想計算機間でＧＰＵを共有する場合、必要である。一般に、実計算機上で動作するプログラムが描画プログラム・インターフェースを呼び出すとき、その戻り値を取得することで、描画完了を前記のプログラムは検知する。一方、仮想計算機上で動作するプログラムによるプログラムが描画プログラム・インターフェースを呼び出し、且つ、ＶＭＭでの制御無く、直接、ＧＰＵに描画命令を発行するとき、ＶＭＭは、戻り値の取得などによる描画の完了を検知できない。このため、本実施形態においては、仮想計算機２０２の描画命令をＶＭＭ２０１がフックし、一度、ＶＭＭ２０１が描画命令バッファ２０６に仮想計算機２０２からの描画命令を保存し、ＶＭＭ２０１の制御の下で、描画命令を発行することで、ＶＭＭ２０１は、描画・エンコード制御部２０４に、どの仮想計算機の描画命令を発行したかを通知できる。
【００２９】
ＶＭＭ２０１がどの仮想計算機の描画命令を、どの描画命令バッファ２０６に保存するかは、描画・エンコード制御部２０４によって通知される、もしくは、描画・エンコード制御部に問い合わせることで、決定される。
【００３０】
ＶＭＭ２０１は、選択した描画命令バッファ２０６の内容に基づいて、ＧＰＵ１０５に対して描画命令を発行する。ＧＰＵ１０５が何らかの処理を実行している場合、ＶＭＭ２０１からの描画命令は、ＧＰＵ１０５から当該処理を完了した旨、ＣＰＵ１０１に通知され、ＶＭＭ２０１が描画命令を発行できる状態になったあと、発行される。ＧＰＵ１０５からＣＰＵ１０１への通知には、例えば、割り込み信号が利用される。
【００３１】
ＶＭＭ２０１は、描画命令をＧＰＵ１０５に発行するときに、どの仮想計算機の描画命令バッファを選択するかを指示する機能と、エンコーダ１０７に対して、そのエンコードされたデータをメイン・メモリ１０３のどの領域に保存するかを指示する機能を備える。後者の指示の内容は、描画・エンコード制御部２０４によって通知される、もしくは、描画・エンコード制御部に問い合わせることで、決定される。前者の指示の結果は、描画命令発行のタイミングに、描画・エンコード制御部２０４に通知される。
【００３２】
ＶＭＭ２０１は、描画命令バッファ２０６の選択に関し、それぞれの描画命令バッファを均等に選択しても、描画命令を頻繁に発行する仮想計算機の描画命令バッファを選択する回数が多くなるように重みづけして選択しても、仮想計算機の重要度に応じて重みづけして選択してもよく、本発明の実施者は、本発明の目的を逸脱しない範囲で、実施の対象に応じて変更できる。
【００３３】
シンクライアント・サーバ・プログラム２０３は、描画・エンコード制御部２０４と、送信制御部２０５を含む。描画・エンコード制御部２０４は、エンコーダ１０７から出力されたデータがどの仮想計算機から発行された描画命令によるものであるかを対応付ける。
【００３４】
描画・エンコード制御部２０４は、描画命令を発行した仮想計算機とエンコーダ１０７から出力される画面データとを対応付けるために存在する。描画・エンコード制御部２０４は、描画命令を発行した仮想計算機とエンコーダ１０７から出力される画面データを、例えば、図３に示される対応表を活用して対応付ける。
【００３５】
対応表に記載の「仮想計算機」の列には、仮想計算機の識別情報を記載する。仮想計算機の識別情報として、例えば、ＶＭＭ２０１から仮想計算機を見たときのプロセスＩＤを活用できる。対応表に記載の「描画命令バッファ」の列には、描画命令バッファの識別情報を記載する。描画命令バッファの識別情報として、例えば、描画命令バッファのメイン・メモリ１０３内での開始アドレスを活用できる。対応表に記載の「エンコード・データ書込み領域」の列には、エンコード・データ書込み領域の識別情報を記載する。エンコード・データ書込み領域の識別情報として、例えば、エンコード・データ書込み領域のメイン・メモリ１０３内での開始アドレスを活用できる。対応表に記載の「クライアント装置」の列には、エンコード・データの送信先となるクライアント装置の識別情報を記載する。クライアント装置の識別情報として、例えば、クライアント装置の名前、ＩＰアドレスを活用できる。
【００３６】
対応表の各行は、仮想計算機がシンクライアント・サーバとして設定されたときに、作成される。
【００３７】
描画・エンコード制御部２０４は、前記のＶＭＭ２０１から通知された、どの描画命令バッファの選択したかという情報と、対応表に記載のエンコード・データの書込み領域の情報を、後述するエンコーダ１０７からのエンコード完了の信号の受信後に、描画命令を発行した仮想計算機とエンコードされたデータを対応付ける。
【００３８】
描画・エンコード制御部２０４は、エンコーダが完了したことを、どの仮想計算機の画面データがエンコードされたかという情報とともに、送信制御部２０５に通知する。なお、どの仮想計算機の画面データがエンコードされたかという情報に関し、前記の対応表のいずれの行であるかが判別できればよく、どの列の情報が通知されてもよい。
【００３９】
送信制御部２０５は、通信部１０９に対して、エンコーダから出力された画面データを、どのクライアント装置に送信するかを通信部１０９に指示する機能を持つ。送信制御部２０５は、通信部１０９がメイン・メモリ１０３に保存されたエンコーダ１０７からの画面データをクライアント装置２に送信するように制御する。前記の指示の内容は、描画・エンコード制御部２０４によって通知される、もしくは、描画・エンコード制御部２０４に問い合わせることで、決定される。
【００４０】
なお、本実施の形態に記載のサーバ装置１が、エンコーダ１０７からのデータが、エンコーダ１０７から次の画面データが出力される前に、通信部１０９によって取得されるようになっている場合、メイン・メモリ１０３の特定の領域にエンコーダ１０７が出力した画面データを書き込んでも、通信部１０９が画面データを取得する前に次の画面データによって上書きされることがないため、エンコーダからのデータの書込み先を、仮想計算機ごとに分ける必要がなくなる。この場合においては、前記の対応表に関して、エンコード・データ書込み領域の列がなくともよい。この列がない場合、VMM２０１に含まれる、エンコーダ１０７に対してエンコードされたデータをメイン・メモリ１０３のどの領域に保存するかを指示する機能を省略できる。また、描画・エンコード制御部２０４は、前記のＶＭＭ２０１から通知された、どの描画命令バッファの選択したかという情報と、後述するエンコーダ１０７からのエンコード完了の信号から、描画命令を発行した仮想計算機とエンコードされたデータを対応付ける。
【００４１】
以上、図２を参照しながら本実施形態のソフトウェア構成を説明したが、以下では、上述した仮想計算機２０２による描画命令の発行から通信部１０９によるクライアント装置２への画面データの送信までの流れを整理して説明する。
【００４２】
仮想計算機２０２から発行された描画命令は、仮想計算機ごとに描画命令バッファ２０６に保存される。ＶＭＭ２０１が実行状態になると、ＶＭＭ２０１は、描画命令バッファ２０６に保存された１つの画面を生成する分だけの描画命令を実行するため、実計算機の描画プログラミング・インターフェースを呼び出す。このとき、ＶＭＭ２０１は、どの描画命令バッファ（どの仮想計算機）の描画命令を実行したかを示す識別符号を、シンクライアント・サーバ・プログラム２０３の描画・エンコード制御部２０４に通知する。また、ＧＰＵ１０５に対して、仮想計算機ごとに使用するメモリ領域を指定する。
【００４３】
実計算機の描画プログラミング・インターフェースが呼び出されることで、ＧＰＵ１０５は描画処理を実行し、出力された画面データは、そのままエンコーダ１０７に送られ、エンコードされる。エンコードされた画面データは、メイン・メモリ１０３に書き出される。
【００４４】
エンコーダ１０７は、メイン・メモリ１０３への書込みが完了すると、例えば、割り込み信号を利用して、シンクライアント・サーバ・プログラム２０３の描画・エンコード制御部２０４にエンコード完了を通知する。当該通知を受け取った描画・エンコード制御部２０４は、シンクライアント・サーバ・プログラム２０３の送信制御部２０５に、仮想計算機の識別符号と、エンコードが完了した旨を通知する。送信制御部２０５は、通信部１０９に、エンコーダ１０７がメイン・メモリ１０３に書き込んだ画面データを読み出し、クライアント装置２に送信させる。
【００４５】
図４及び図５を参照して、上述した仮想計算機２０２による描画命令の発行から通信部１０９によるクライアント装置２への画面データの送信までの流れをさらに詳細に説明する。図４は、ＶＭＭ２０１により実行される描画命令バッファ２０６への描画命令の格納処理の流れを示すフローチャート図である。図５は、描画・エンコード制御部２０４を中心とする本実施形態の各部により実行される描画命令の実行処理から描画された画面データの送信処理までの流れを示すフローチャート図である。
【００４６】
図４において、ＶＭＭ２０１は、仮想計算機２０２のうちいずれか少なくとも一つの仮想計算機から描画命令をキャプチャしたと判断すると（ステップＳ１０１／Ｙｅｓ）、切替部２０８が描画のエミュレーションが必要であるか否かを判断し（ステップＳ１０２）、判断の結果、描画のエミュレーションが必要である場合にエミュレータ２０７が描画のエミュレーションを行い（ステップＳ１０３）、仮想計算機ごとに描画命令を描画命令バッファ２０６に格納する（ステップＳ１０４）。
【００４７】
なお、ステップＳ１０３で描画のエミュレーションを行った場合、ステップＳ１０４で格納される描画命令は、エミュレートされた描画命令である。
【００４８】
図５に示す描画命令の実行処理から描画された画面データの送信処理までの流れは、描画命令バッファ２０６に描画命令が無くなるまで繰り返して実行される（ステップＳ１０５）。
【００４９】
図５において、描画命令バッファ２０６に描画命令がある場合は、まず、ＧＰＵ１０５が描画処理を実行可能になるまで待つ（ステップＳ１０６）。次に、ＶＭＭ２０１は、複数の描画命令バッファ２０６の中から、これから描画命令を発行する描画命令バッファを選択する。これは、ＶＭＭ２０１は、描画命令バッファ２０６に描画命令が格納されている仮想計算機の中から、描画命令を実行する仮想計算機を選択することと同義である（ステップＳ１０７）。次に、ＶＭＭ２０１は、選択した仮想計算機の描画命令を実行するための領域をＧＰＵ用メモリ１０６の中から指定する（ステップＳ１０８）。次に、ＧＰＵ１０５は、描画処理を実行する（ステップＳ１０９）。次に、ＶＭＭ２０１は、エンコードされた画面データの保存先をメイン・メモリ１０３の中から指定し、エンコーダ１０７は、エンコード処理を実行する（ステップＳ１１０）。なお、装置によっては、ステップＳ１０９とステップＳ１１０が同時に実行されてもよい。
【００５０】
次に、描画・エンコード制御部２０４は、選択された仮想計算機とエンコードされた画面データの関連付けを行う（ステップＳ１１１）。次に、送信制御部２０５は、通信部１０９がデータの送信処理を実行可能であるか否かを調べ（ステップＳ１１２）、エンコードされた画面データの送信先（本実施形態においてはクライアント装置２）を指定する（ステップＳ１１３）。通信部１０９は、送信制御部２０５の制御にしたがい、メイン・メモリ１０３からエンコードされた画面データを読み出し、指定された送信先に向け送信する（ステップＳ１１４）。
【００５１】
図５に示した描画命令の実行処理から描画された画面データの送信処理までの流れは、説明のための一例である。例えば、図６に示すような、ＧＰＵ１０５による描画処理、エンコーダ１０７によるエンコード処理、通信部１０９による送信処理をパイプラインで処理する場合などには、図５に示した流れを変形させて実施すればよい。
【００５２】
上記実施形態によれば、ＶＭＭ２０１で仮想計算機の描画命令をエミュレート、バッファリングし、バッファされた描画命令のＶＭＭ２０１からの発行と、エンコーダ１０７からの出力、及び、通信部１０９によるクライアント装置２への送信を、シンクライアント・サーバ・プログラム２０３が制御することにより、サーバ装置１のＧＰＵ１０５とエンコーダ１０７を仮想計算機間で、時分割により共有することができるようになる。
【００５３】
すなわち、仮想計算機の画面出力をクライアント装置に送信するシンクライアント・システムが実現する。また、特に、ＧＰＵ（描画装置）やエンコーダとして、物理的なハードウェアを用いるため、高速処理が可能となる。また、ＧＰＵ１０５とエンコーダ１０７を仮想計算機間で、時分割により共有できるため、シンクライアント・サーバとして動作させる仮想計算機の台数がＧＰＵやエンコーダの台数によって制限されない。
【００５４】
上記実施形態における描画命令バッファ２０６は、一般的な時分割方式にとって常には必要でないが、本実施形態のように仮想計算機間でＧＰＵを共有する場合、常に必要である。一般に、実計算機上で動作するプログラムが描画プログラミング・インターフェースを呼び出すとき、その戻り値を取得することで、描画完了を前記のプログラムは検知する。一方、仮想計算機上で動作するプログラムによるプログラムが描画プログラミング・インターフェースを呼び出し、且つ、ＶＭＭでの制御無く、直接、ＧＰＵに描画命令を発行するとき、ＶＭＭは、戻り値の取得などによる描画の完了を検知できない。このため、本実施形態においては、仮想計算機２０２の描画命令をＶＭＭ２０１がフックし、一度、ＶＭＭ２０１が描画命令バッファ２０６に仮想計算機２０２からの描画命令を保存し、ＶＭＭ２０１の制御の下で、描画命令を発行することで、ＶＭＭ２０１は、描画・エンコード制御部２０４に、どの仮想計算機の描画命令を発行したかを通知できる。
【００５５】
上記実施形態における描画・エンコード制御部２０４は、時分割方式において、データそのものに識別符号がある場合は不要である。しかしながら、本実施形態における方式のように、処理されるデータそのものに識別子がない場合、エンコーダ１０７から出力されたデータは、どの仮想計算機の画面データをエンコードしたデータであるかがわからない。上記実施形態においては、描画・エンコード制御部２０４が仮想計算機からＧＰＵ１０５へ入力される描画命令とエンコーダ１０７から出力されるエンコードされた画面データを関連付ける構成である。描画・エンコード制御部２０４は、ＶＭＭ２０１からＧＰＵ１０５へどの仮想計算機の描画命令が入力されたかを通知され、エンコーダ１０７からエンコードの完了を通知されるため、描画命令を発行した仮想計算機とエンコードされた画面データとを関連付けられる。そのため、上記実施形態によれば、一般的なハードウェアを関連付けに関して改造することなくほぼそのまま利用できる。
【符号の説明】
【００５６】
１    サーバ装置
２    クライアント装置
３    ネットワーク
１０１    ＣＰＵ
１０２    メモリ制御部
１０３    メイン・メモリ
１０４    Ｉ／Ｏ制御部
１０５    ＧＰＵ
１０６    ＧＰＵ用メモリ
１０７    エンコーダ
１０８    バッファ
１０９    通信部
２０１    ＶＭＭ
２０２    仮想計算機
２０３    シンクライアント・サーバ・プログラム
２０４    描画・エンコード制御部
２０５    送信制御部
２０６    描画命令バッファ
２０７    エミュレータ
２０８    切替部
【図１】
0005515520.tif 000002
【図２】
0005515520.tif 000003
【図３】
0005515520.tif 000004
【図４】
0005515520.tif 000005
【図５】
0005515520.tif 000006
【図６】
0005515520.tif 000007