シンクライアントサーバシステム、通信システム及び画面情報送信方法
【課題】クライアント装置での画面表示の遅延を抑制しうるようにシンクライアントサーバの負荷分散を実現する。
【解決手段】クライアント装置40は受け付けた操作に応じた操作情報を送信する(SB1,SB2)。第1サーバ装置10aは、受信した操作情報が示す操作に応じた処理を実行して(SB5)、処理の実行後に表示される画像を表す画面情報を生成するための演算処理を規定した処理情報を送信する(SB6)。第2サーバ装置20aは、受信した処理情報に従って演算処理を実行して画面情報を生成し(SB10)、画面情報をクライアント装置40宛てに送信する(SB12)。クライアント装置40は、第2サーバ装置20aから受信した画面情報に応じて画像を表示する(SB14)。以上のようにして、クライアント装置40に対する操作に応じた処理を第1サーバ装置10aが司り、画面情報を生成し送信する処理を第2サーバ装置20aが司る。
【解決手段】クライアント装置40は受け付けた操作に応じた操作情報を送信する(SB1,SB2)。第1サーバ装置10aは、受信した操作情報が示す操作に応じた処理を実行して(SB5)、処理の実行後に表示される画像を表す画面情報を生成するための演算処理を規定した処理情報を送信する(SB6)。第2サーバ装置20aは、受信した処理情報に従って演算処理を実行して画面情報を生成し(SB10)、画面情報をクライアント装置40宛てに送信する(SB12)。クライアント装置40は、第2サーバ装置20aから受信した画面情報に応じて画像を表示する(SB14)。以上のようにして、クライアント装置40に対する操作に応じた処理を第1サーバ装置10aが司り、画面情報を生成し送信する処理を第2サーバ装置20aが司る。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シンクライアントを利用して画面表示を行う技術に関する。
【背景技術】
【0002】
シンクライアントを利用してクライアント装置の画面表示を行う技術では、シンクライアントサーバが、ユーザによりクライアント装置に対して行われた操作を示す操作情報を受信して、受信した操作情報が示す操作に応じた処理を実行して画面情報を生成し、生成した画面情報をクライアント装置宛に送信する、という複数の処理を繰り返し実行する。このような技術では、クライアント装置に行われた操作に対して画面表示が遅延することがある。画面表示の遅延は、クライアント装置においてユーザの誤操作の原因となったり、画面表示を見るユーザに違和感を与える原因となったりする。特許文献1から特許文献3は、シンクライアントを利用したシステムにおいて、画面表示の遅延による影響を抑えるための技術を開示している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2011−28530号公報
【特許文献2】特開2008−211639号公報
【特許文献3】特開2008−210113号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、特許文献1に記載された発明は、画面表示の遅延の影響による画面上のボタン押下間違いを抑えるために、ポインタ座標を補正するものであるが、クライアント装置での画面表示の遅延を継続して抑えるものではない。特許文献2及び特許文献3に記載された発明では、一台のシンクライアントサーバで、操作情報の受信、操作情報が示す操作に応じた処理の実行、画面情報の生成及び画面情報の送信という一連の処理が実行されるとともに、更に、画面情報を複数のブロックに分割するための画像処理も実行される。
【0005】
以上の特許文献1から特許文献3に記載された発明では、一台のシンクライアントサーバに様々な処理に起因する負荷が集中する。よって、一台のシンクライアントサーバが、画面表示の遅延を抑制しつつ、多数のクライアント装置に対して個別の画面表示を行わせる処理を並行して行うことが困難であった。
これに対し、本発明は、クライアント装置での画面表示の遅延を抑制しうるようにシンクライアントサーバの負荷分散を実現することである。
【課題を解決するための手段】
【0006】
上述した課題を解決するため、本発明のシンクライアントサーバシステムは、第1サーバ装置と第2サーバ装置とを備え、前記第1サーバ装置は、受信した画面情報に応じた画像を表示するクライアント装置により受け付けられた操作を示す操作情報を受信する第1受信部と、前記第1受信部により受信された操作情報が示す操作に応じた処理を実行する処理実行部と、前記処理実行部による処理の実行後に表示される画像を表す画面情報を生成するための演算処理を規定した処理情報を送信する第1送信部とを有し、前記第2サーバ装置は、前記第1送信部により送信された処理情報を受信する第2受信部と、前記第2受信部により受信された処理情報に従って演算処理を実行し、前記画面情報を生成する画面情報生成部と、前記画面情報生成部により生成された画面情報を前記クライアント装置宛てに送信する第2送信部とを有することを特徴とする。
【0007】
本発明のシンクライアントサーバシステムにおいて、前記第1サーバ装置を複数有し、前記クライアント装置から前記第1サーバ装置に送信されるデータを中継するクライアント管理サーバを備え、前記クライアント管理サーバは、前記クライアント装置のユーザを識別するユーザIDと、いずれか1の前記第1サーバ装置を識別する第1サーバIDとを対応付けて記憶する第1記憶部と、前記クライアント装置により送信された操作情報を受信する第3受信部と、前記第3受信部により受信された操作情報の送信元であるクライアント装置の前記ユーザIDに対応付けて、前記第1記憶部に第1サーバIDが記憶された前記第1サーバ装置宛てに、当該操作情報を送信する第3送信部とを有し、前記第1受信部は、前記第3送信部により送信された操作情報を受信するようにしてもよい。
【0008】
本発明のシンクライアントサーバシステムにおいて、前記第2サーバ装置を複数有し、前記クライアント管理サーバは、更に、前記第1サーバ装置から前記第2サーバ装置に送信されるデータを中継し、前記ユーザIDと、いずれか1の前記第2サーバ装置を識別する第2サーバIDとを対応付けて記憶する第2記憶部と、前記第1送信部により送信された処理情報を受信する第4受信部と、前記画面情報の送信先となるクライアント装置の前記ユーザIDに対応付けて、前記第2記憶部に第2サーバIDが記憶された前記第2サーバ装置宛てに、前記第4受信部が受信した処理情報を送信する第4送信部とを有するようにしてもよい。
【0009】
本発明のシンクライアントサーバシステムにおいて、前記処理実行部は、前記第1サーバ装置で実行されているオペレーティングシステム上で、前記クライアント装置毎に独立したプロセスの前記処理を実行することが好ましい。また、本発明のシンクライアントサーバシステムにおいて、前記処理実行部は、仮想マシンで実行されたオペレーティングシステム上で、前記クライアント装置毎に独立したプロセスの前記処理を実行するようにしてもよい。
これらのシンクライアントサーバシステムにおいては、前記処理実行部は、前記クライアント装置で動作するプロセッサを用いて処理を実行するようにしてもよい。また、このシンクライアントサーバシステムにおいて、前記オペレーティングシステムは、前記クライアント装置が有するプロセッサで動作するオペレーティングシステムであるようにしてもよい。
【0010】
本発明の通信システムは、上記いずれかの構成のシンクライアントサーバシステムと、クライアント装置とを備える通信システムであって、前記クライアント装置は、前記シンクライアントサーバシステムと通信する通信部と、画像を表示する表示部と、自装置に対して行われた操作を受け付ける受付部と、前記受付部が受け付けた操作を示す操作情報を前記通信部により送信する送信制御部と、前記送信制御部の制御により送信された操作情報に基づいて前記シンクライアントサーバシステムにより生成されて前記第2送信部により送信された画面情報が、前記通信部により受信されると、受信された画面情報に応じて前記表示部に画像を表示させる表示制御部とを有することを特徴とする。
【0011】
本発明の画面情報送信方法は、第1サーバ装置と第2サーバ装置とを備えるシンクライアントサーバシステムの画面情報送信方法であって、前記第1サーバ装置が、受信した画面情報に応じた画像を表示するクライアント装置により受け付けられた操作を示す操作情報を受信する第1受信ステップと、前記第1サーバ装置が、前記第1受信ステップで受信した操作情報が示す操作に応じた処理を実行する処理実行ステップと、前記第1サーバ装置が、前記処理実行ステップでの処理の実行後に表示される画像を表す画面情報を生成するための演算処理を規定した処理情報を送信する第1送信ステップと、前記第2サーバ装置が、前記第1送信ステップで送信された処理情報を受信する第2受信ステップと、前記第2サーバ装置が、前記第2受信ステップで受信した処理情報に従って演算処理を実行し、前記画面情報を生成する画面情報生成ステップと、前記第2サーバ装置が、前記画面情報生成ステップで生成した画面情報を前記クライアント装置宛てに送信する第2送信ステップとを有することを特徴とする。
【発明の効果】
【0012】
本発明によれば、クライアント装置での画面表示の遅延を抑制しうるようにシンクライアントサーバの負荷分散を実現することができる。
【図面の簡単な説明】
【0013】
【図1】通信システムの全体構成を示す図。
【図2】第1サーバ装置のハードウェア構成を示す図。
【図3】第2サーバ装置のハードウェア構成を示す図。
【図4】クライアント管理サーバのハードウェア構成を示す図。
【図5】第1管理テーブルのデータ構造を示す図。
【図6】第2管理テーブルのデータ構造を示す図。
【図7】クライアント装置のハードウェア構成を示す図。
【図8】通信システムの機能的構成を示す機能ブロック図。
【図9】通信システムのソフトウェア構成を示す図。
【図10】通信システムの処理の流れを示すシーケンスチャート。
【図11】第1管理テーブル及び第2管理テーブルの更新の様子を示す説明図。
【図12】通信システムの処理の流れを示すシーケンスチャート。
【図13】通信システムのソフトウェア構成を示す図。
【図14】従来のシンクライアントサーバのソフトウェア構成を示す図。
【発明を実施するための形態】
【0014】
以下、図面を参照しつつ本発明の実施形態を説明する。
図1は、通信システム100の全体構成を示す図である。
通信システム100は、シンクライアントサーバシステム1と、クライアント装置40とを備えるクライアント−サーバシステムである。通信システム100では、シンクライアントサーバシステム1で管理されるソフトウェア資源等に基づく画面表示を、クライアント装置40に行わせるためのサービスが提供される。シンクライアントサーバシステム1は、詳細には、第1サーバ装置10と、第2サーバ装置20と、クライアント管理サーバ30という複数サーバの組み合わせで構成される。シンクライアントサーバシステム1が、どのようなソフトウェア資源に関する画面表示をクライアント装置40に行わせるかについては、本実施形態においては特に問わない。
【0015】
図1には、第1サーバ装置10のうち第1サーバ装置10a,10bのみを図示し、第2サーバ装置20のうち第2サーバ装置20a,20bのみを図示しているが、実際にはより多数存在している。また、図1には、クライアント装置40を1台のみ図示しているが、実際より多数存在している。クライアント装置40は、ネットワークNW経由で、第2サーバ装置20及びクライアント管理サーバ30と通信可能に接続されている。ネットワークNWは、ここでは、移動体通信網、ゲートウェイ及びインターネットを含む通信網である。また、クライアント管理サーバ30は専用の通信路を介して、第1サーバ装置10及び第2サーバ装置20と通信可能に接続されている。
【0016】
第1サーバ装置10及び第2サーバ装置20は、クライアント装置40での画面表示に必要な処理を実行するが、それぞれ異なる処理を実行する。クライアント管理サーバ30は、クライアント装置40と、第1サーバ装置10と、第2サーバ装置20との間でデータを中継する中継サーバとして機能する。クライアント装置40は、ここでは移動機たるスマートフォンであり、通信システム100においてサービスの提供を受けるための加入契約を行ったユーザにより所有される。
【0017】
図2は、第1サーバ装置10のハードウェア構成を示すブロック図である。図2に示すように、第1サーバ装置10は、制御部11と、通信部12と、記憶部13とを備える。
制御部11は、CPU(Central Processing Unit)、ROM(Read Only Memory)、及びRAM(Random Access Memory)を備えるマイクロプロセッサである。CPUは、ROMや記憶部13に記憶されたプログラムをRAMに読み出して実行することにより、第1サーバ装置10の各部を制御する。ここでは、CPUは、移動機向けに作成されたプロセッサであり、要するに、クライアント装置40で動作するプロセッサである。通信部12は、ネットワークNWに接続するためのインタフェースである。記憶部13は、例えばハードディスク装置を備え、ホストOS(Operating System)131やゲストOS132を含むソフトウェアを記憶する。ホストOS131は、制御部11のプロセッサで動作し、第1サーバ装置10において仮想マシン上でソフトウェアを動作させる基盤となるOSである。ゲストOS132は、ホストOS131の実行により第1サーバ装置10において仮想マシンが動作させられたときに、仮想マシン上で実行されるOSである。ゲストOS132は、ここでは移動機向けに作成されたOSであり、クライアント装置40が有するプロセッサでも動作する。
【0018】
図3は、第2サーバ装置20のハードウェア構成を示すブロック図である。図3に示すように、第2サーバ装置20は、制御部21と、ネットワーク通信部22と、サーバ通信部23と、記憶部24と、GPU(Graphics Processing Unit)25とを備える。
制御部21は、CPU、ROM、及びRAMを備えるマイクロプロセッサである。CPUは、ROMや記憶部24に記憶されたプログラムをRAMに読み出して実行することにより、第2サーバ装置20の各部を制御する。ネットワーク通信部22は、ネットワークNWに接続するためのインタフェースである。サーバ通信部23は、クライアント管理サーバ30に接続するためのインタフェースである。記憶部24は、例えばハードディスク装置を備え、OS241を含むソフトウェアを記憶する。OS241は、第2サーバ装置20でソフトウェアを動作させる基盤となるOSである。GPU25は、画像処理に関する演算処理を行うプロセッサであり、第2サーバ装置20で実行される画像処理を司る。
【0019】
図4は、クライアント管理サーバ30は、制御部31と、ネットワーク通信部32と、第1サーバ通信部33と、第2サーバ通信部34と、記憶部35とを備える。
制御部31は、CPU、ROM、及びRAMを備えるマイクロプロセッサである。CPUは、ROMや記憶部35に記憶されたプログラムをRAMに読み出して実行することにより、クライアント管理サーバ30の各部を制御する。ネットワーク通信部32は、ネットワークNWに接続するためのインタフェースである。第1サーバ通信部33は、第1サーバ装置10に接続するためのインタフェースである。第2サーバ通信部34は、第2サーバ装置20に接続するためのインタフェースである。
【0020】
記憶部35は、例えばハードディスク装置を備え、各種ソフトウェアのほか、第1管理テーブル351及び第2管理テーブル352を記憶する。第1管理テーブル351及び第2管理テーブル352は、それぞれ、クライアント管理サーバ30がデータの転送先を選択する際に参照される。より詳細には、第1管理テーブル351には、データの転送先とする第1サーバ装置10を定める情報が記述されている。第2管理テーブル352には、データの転送先とする第2サーバ装置20を定める情報が記述されている。
なお、第1管理テーブル351及び第2管理テーブル352には、シンクライアントサーバシステム1によるサービスの提供中にデータが記述され、このサービスが提供されていない期間にはデータは記述されていないものとする。第1管理テーブル351を記憶する記憶部35が第1記憶部に相当する。また、第2管理テーブル352を記憶する記憶部35が第2記憶部に相当する。
【0021】
図5は、第1管理テーブル351のデータ構造を示す図である。
図5に示すように、第1管理テーブル351は、「ユーザID」と、「第1サーバID」と、「プロセスID」とで示される各情報が対応付けられたデータテーブルである。ユーザIDは、各クライアント装置40のユーザを識別する識別情報であるが、ここでは、各クライアント装置40を識別する識別情報でもある。本実施形態のユーザIDは、クライアント装置40に割り当てられた電話番号であるが、例えば、SIM(Subscriber Identity Module)カードから特定される端末識別情報や、各ユーザに排他的に付与された識別番号であってもよい。第1サーバIDは、各第1サーバ装置10を識別する識別情報である。プロセスIDは、クライアント装置40毎に独立して実行される処理の各プロセスを識別する識別情報である。
なお、本実施形態において、クライアント装置40のユーザIDは「090aaaa0001」である。第1サーバ装置10aの第1サーバIDは「001」であり、第1サーバ装置10bの第1サーバIDは「002」である。また、各第1サーバIDは、それぞれ対応する第1サーバ装置10にも予め記憶されている。また、第1サーバIDは、第1サーバ装置10に割り当てられたIP(Internet Protocol)アドレス等の通信アドレス等で代用することもできる。
【0022】
図6は、第2管理テーブル352のデータ構造を示す図である。
図6に示すように、第1管理テーブル351は、「ユーザID」と、「第2サーバID」とで示される各情報が対応付けられたデータテーブルである。ユーザIDは、第1管理テーブル351に記述されたユーザIDと同じである。第2サーバIDは、各第2サーバ装置20を識別する識別情報である。
なお、本実施形態において、第2サーバ装置20aの第2サーバIDは「00a」であり、第2サーバ装置20bの第2サーバIDは「00b」である。第2サーバIDは、第2サーバ装置20に割り当てられたIPアドレス等の通信アドレス等で代用することもできる。
【0023】
図7は、クライアント装置40のハードウェア構成を示すブロック図である。図7に示すように、クライアント装置40は、制御部41と、音声入出力部42と、無線通信部43と、UI(User Interface)部44と、記憶部45とを備える。
制御部41は、CPU、ROM、及びRAMを備えるマイクロプロセッサである。CPUは、移動機向けに作成されたプロセッサであり、例えば低消費電力化に優れたものが用いられる。CPUは、ROMや記憶部45に記憶されたソフトウェアをRAMに読み出して実行することにより、クライアント装置40の各部を制御する。音声入出力部42は、受話音声等を収音するマイクロホンと送話音声を放音するスピーカとを備え、音声の入出力に関する機能を実現する。無線通信部43は、無線通信回路やアンテナを備え、ネットワークNWに無線通信により接続するためのインタフェースである。UI部44は、画像を表示する表示面と、表示面に重ねられたタッチパネルとを備え、GUI(Graphical User Interface)を提供する。すなわち、UI部44は、タッチパネルのようなユーザによって操作される操作部と、表示面に表示する画像により情報を報知する表示部としての機能を実現する。記憶部45は、例えばEEPROM(Electronically Erasable and Programmable ROM)を備え、OS451を含むソフトウェアを記憶する。OS451は、移動機向けに作成されたOSであり、ここではゲストOS132と同じオペレーティングシステムである。
なお、クライアント装置40は、操作部と表示部とが別々のハードウェアデバイスで構成されていてもよい。また、クライアント装置40は、ユーザにより行われた操作を受け付けるためのハードウェアデバイスとして、上記以外に、クライアント装置40を傾けたり振動させたりする等の筐体に対する操作を受け付けるための加速度センサを有している。
【0024】
図8は、通信システム100の機能的構成を示す機能ブロック図である。まず、クライアント装置40の機能的構成を説明する。
クライアント装置40の制御部41は、プログラムを実行することにより、受付部411と、送信制御部412と、表示制御部413とに相当する機能を実現する。
受付部411は、クライアント装置40に対する操作を受け付ける。受付部411は、UI部44を用いて行われた操作のほか、クライアント装置40を傾けたり振動させたりする等のクライアント装置40の筐体に対して行われた操作、音声入出力部42を介した音声入力で行われた操作等を含む。要するに、受付部411は、クライアント装置40に対してユーザにより行われたあらゆる操作を受け付ける。
送信制御部412は、受付部411が受け付けた操作を示す操作情報を、無線通信部43により送信する。ここでは、送信制御部412は、クライアント管理サーバ30宛てに操作情報を送信する。操作情報は、クライアント装置40に対して行われた操作の識別機能を持った情報である。
表示制御部413は、送信制御部412の制御により送信された操作情報に基づいてシンクライアントサーバシステム1で生成された画面情報が、無線通信部43により受信されると、受信された画面情報に応じてUI部44に画像を表示する。
クライアント装置40の機能的構成の説明は以上である。次に、クライアント管理サーバ30及び第1サーバ装置10の機能的構成を説明する。
【0025】
クライアント管理サーバ30は、第3受信部301と、第1サーバ選択部302と、第3送信部303と、第4受信部304と、第2サーバ選択部305と、第4送信部306とに相当する機能を実現する。第1サーバ装置10は、第1受信部101と、処理実行部102と、第1送信部103とに相当する機能を実現する。
第3受信部301は、クライアント装置40により送信された操作情報を受信する。
第1サーバ選択部302は、第1管理テーブル351を参照して、第3受信部301により受信された操作情報の送信先(転送先)を選択する。具体的には、第1サーバ選択部302は、操作情報の送信元であるクライアント装置40のユーザIDに対応付けて、第1管理テーブル351に第1サーバIDが記憶された第1サーバ装置10を選択する。
第3送信部303は、第3受信部301が受信した操作情報を、第1サーバ選択部302により選択された第1サーバ装置10宛てに送信する。
なお、第3送信部303は、第1サーバ選択部302により第1管理テーブル351から取得されたプロセスIDを送信することがある。
【0026】
第1受信部101は、第3送信部303により送信された操作情報を受信する。
処理実行部102は、第1受信部が受信した操作情報が示す操作に応じた処理を実行する。ここでは、処理実行部102は、クライアント装置40に画面表示を行わせるサービスの提供に必要な処理(以下、「プロセス処理」という。)を操作情報が示す操作に応じて実行する。
第1送信部103は、処理実行部102による処理の実行後にクライアント装置40で表示される画像を表す画面情報を生成するための処理情報を送信する。処理情報は、画面情報を生成するために実行すべき演算処理を規定したデータで、演算処理のアルゴリズムが記述されている。
【0027】
第4受信部304は、第1送信部103により送信された処理情報を受信する。
第2サーバ選択部305は、第2管理テーブル352を参照して、第4受信部304により受信された処理情報の送信先(転送先)を選択する。具体的には、第2サーバ選択部305は、処理情報の送信元であるクライアント装置40のユーザIDに対応付けて、第2管理テーブル352に第2サーバIDが記憶された第2サーバ装置20を選択する。
第4送信部306は、第4受信部304が受信した処理情報を、第2サーバ選択部305により選択された第2サーバ装置20宛てに送信する。
クライアント管理サーバ30及び第1サーバ装置10の機能的構成の説明は以上である。次に、第2サーバ装置20の機能的構成を説明する。
【0028】
第2サーバ装置20は、第2受信部201と、画面情報生成部202と、第2送信部203に相当する機能を実現する。
第2受信部201は、第4送信部306より送信された処理情報を受信する。
画面情報生成部202は、第2受信部201により受信された処理情報に従って演算処理を実行し、画面情報を生成する。画面情報生成部202は、例えば、処理情報を解釈して画像処理を含む演算処理を実行することにより、画面情報を生成する。
第2送信部203は、画面情報生成部202により生成された画面情報をクライアント装置40宛てに送信(転送)する。第2送信部203は、画面情報生成部202により生成された画面情報に圧縮処理及びエンコード処理を施してから、画面情報を送信する。第2送信部203が送信した画面情報は、クライアント装置40の無線通信部43によって受信される。
第2サーバ装置20の機能的構成の説明は以上である。次に、通信システム100のソフトウェア構成を説明する。
【0029】
図9は、通信システム100のソフトウェア構成を示す図である。詳細には、図9には、第1サーバ装置10、第2サーバ装置20及びクライアント装置40のソフトウェア構成が図示されている。
まず、第1サーバ装置10のソフトウェア構成を説明する。
ホストOS131は、第1サーバ装置10における基本的な機能を提供し、第1サーバ装置10全体を管理する基本ソフトウェアである。仮想化ソフトウェア133は、ホストOS131上で動作し、第1サーバ装置10上に仮想マシン134を形成するためのソフトウェアである。仮想マシンとは、物理的に単一のコンピュータ装置内に仮想的に形成されるコンピュータ環境をいう。仮想マシン134は、仮想化ソフトウェア133上で複数並列して動作する(図9には4つの仮想マシン134を示す。)。詳細には、仮想マシン134は、仮想化ソフトウェア133上で動作するゲストOS132と、ゲストOS132上で動作するサービスプロセス135とを動作させる。各仮想マシン134は、1のクライアント装置40に対応するプロセス処理をサービスプロセス135により実行する。サービスプロセス135は、画面情報の生成に必要な演算処理を規定した処理情報を供給するためのソフトウェアである。
更に、ホストOS131には、処理情報IF(Interface)131aの機能が実装されている。処理情報IF131aは、サービスプロセス135により供給された処理情報を、第2サーバ装置20に転送するためのソフトウェアインタフェースである。
次に、第2サーバ装置20のソフトウェア構成を説明する。
【0030】
OS241は、第2サーバ装置20における基本的な機能を提供し、第2サーバ装置20全体を管理する基本ソフトウェアである。画面情報生成プロセス242は、OS241上で動作し、処理情報に従って演算処理を実行するプロセスを実現するソフトウェアである。図9に示すように、OS241にはGPUIF241aの機能が実装されている。GPUIF241aは、画面情報生成プロセス242で画面情報が生成される際に、GPU25との間でデータの授受を行うためのソフトウェアインタフェースである。画面転送プロセス243は、OS241上で動作し、画面情報生成プロセス242で生成された画面情報を、クライアント装置40に転送するプロセスを実現するソフトウェアである。画面転送プロセス243は、例えば、画面情報生成プロセス242から供給された画面情報に圧縮処理及びエンコード処理を施して転送するものである。
次に、クライアント装置40のソフトウェア構成を説明する。
【0031】
OS451は、クライアント装置40における基本的な機能を提供し、クライアント装置40全体を管理する基本ソフトウェアである。画像ビューア452は、OS451上で動作し、第2サーバ装置20から転送された画面情報に応じた画像を表示するためのソフトウェアである。
以上が、通信システム100のソフトウェア構成の説明である。
【0032】
上述したように、シンクライアントサーバシステム1では、第1サーバ装置10が、主操作情報の受信、操作情報が示す操作に応じたプロセス処理の実行、及び処理情報の送信という処理を司り、第2サーバ装置20が、処理情報に従った画面情報の生成、及び画面情報の転送という処理を司る。このように、シンクライアントサーバシステム1では、サービスの提供に必要な処理の一部と残りとが、それぞれ異なるサーバで実行される。このようにして、シンクライアントサーバシステム1では、サービスの提供に起因して生じる処理負荷が複数サーバに分散されるわけであるが、このような仕組みにより効率良く負荷分散が実現される、という知見を発明者は得た。この根拠について、図14に示す従来のシンクライアントサーバのソフトウェア構成と対比しつつ説明する。
【0033】
図14に示すように、従来の通信システムでは、通信システム100と同様、ホストOS上で仮想化ソフトウェアが動作し、仮想化ソフトウェア上でゲストOS及びサービスプロセスを動作させる仮想マシンが動作する。このサービスプロセスは、シンクライアントサーバシステム1とは異なり、操作情報が示す操作に応じた処理のほか、画面情報を生成する処理も含む。更に、従来の通信システムでは、仮想化ソフトウェアとは別に、ホストOS上で画面転送プロセスが動作する。この画面転送プロセスは、画面情報の圧縮処理及びエンコード処理、更に、画面情報の転送を実現するものである。このように、仮想化技術を用いたサービスプロセスと、画面転送プロセスとが同一ハードウェア上で実現された場合に、これら両プロセスの処理負荷の集中が問題となる、という知見を発明者は得た。このような問題点に対し、一台のシンクライアントサーバでこれらの両プロセスが実現された場合には、各プロセスでハードウェアを分離することが不可能である。その具体例として、仮想化技術では、複数の仮想マシンでGPUを共有するのが困難と言われていて、シンクライアントサーバのCPUで画面情報の生成を行わなければならず、処理効率が低くなる(つまり、処理負荷の高さに対して実行可能な演算処理量が少なくなる)原因となる。
以上のような理由から、従来の通信システムでは、一台のシンクライアントサーバが多数のクライアント装置を相手としてサービスを提供することが困難であった。
【0034】
これに対し、シンクライアントサーバシステム1では、サービスプロセスと画面転送プロセスとが、それぞれ異なるハードウェアで実現されるように、第1サーバ装置10と第2サーバ装置20とに分離されている。すなわち、処理負荷が相対的に高いプロセスが同一のハードウェア上で実現されないから、効果的に処理負荷を分散させることができるというわけである。例えば、第1サーバ装置10が処理情報を第2サーバ装置20に転送するための処理負荷は、画面情報を生成するための処理負荷や画面情報を転送するための処理負荷よりも十分に低い。
【0035】
更に、このように第1サーバ装置10と第2サーバ装置20とに分離されることで、サービスプロセスと画面転送プロセスとのそれぞれに適したハードウェアを選定して、シンクライアントサーバシステム1に実装することが容易になる。例えば、第1サーバ装置10では、操作情報が示す操作に応じたプロセス処理を実行するが、画面情報の生成及び転送を行わなくてよい。よって、例えば、CPUは、移動機向けに作成されたプロセッサであり、1台のシンライアントサーバでサービスの提供に係る全処理を実現する場合、移動機向けのプロセッサをシンクライアントサーバに実装することが難しい。これでは、シンクライアントサーバで移動機向けのOSを動作させるのが困難であり、処理効率の低下の原因になりうる。これに対し、シンクライアントサーバシステム1では、第1サーバ装置10が第2サーバ装置20から分離されているので、このような移動機向けのプロセッサを第1サーバ装置10に実装することを妨げる事情がない。よって、クライアント装置40とシンクライアントサーバシステム1とのOSの相違に起因して処理効率が低下することを抑制することができる。
【0036】
更に、第2サーバ装置20では、仮想化技術を用いていないし、クライアント装置40毎に独立したプロセスの処理を実行していない。よって、例えば、第2サーバ装置20では、一のクライアント装置40に関する画像処理を、GPU25を占有して実行することもできる。また、第1サーバ装置10と同じ理由により、第2サーバ装置20のハードウェアとして、画像処理の実行に適したハードウェア(プロセッサ)を適用することも容易である。よって、クライアント装置40とシンクライアントサーバシステム1とのプロセッサの相違に起因して処理効率が低下することも抑制することができる。
【0037】
以上が、シンクライアントサーバシステム1における負荷分散の仕組みが、効果的に負荷分散を実現できることの根拠の説明である。仮に、シンクライアントサーバシステム1を構成するサーバ装置を3台以上にすれば、各装置に強いられる処理負荷が分散される。しかしながら、以上の根拠に基づけば2台のサーバ装置に分離すれば十分な負荷分散の効果を奏するので、シンクライアントサーバシステム1によれば、サーバの台数を無駄に増加させなくて済むので、ハードウェア資源の節約にもなる。
次に、通信システム100の動作を説明する。
【0038】
図10は、通信システム100においてサービスの提供を開始するときの処理の流れを示す。図11は、第1管理テーブル351及び第2管理テーブル352の更新の様子を説明する図である。
クライアント装置40の制御部41は、UI部44によりユーザにより利用したサービスを指定する操作を受け付けると、記憶部45から必要なソフトウェアを読み出して実行することにより、サービスを起動する(ステップSA1)。サービスを起動するということは、クライアント装置40がサービスの提供を受けるための動作状態になることを意味する。そこで、制御部41は、まず、サービスの起動を指示するための起動指示を、無線通信部43によりクライアント管理サーバ30宛てに送信する(ステップSA2)。この起動指示は、クライアント装置40のユーザがサービスの起動を開始させるための操作を行ったことを示すデータであり、送信元のクライアント装置40のユーザID(ここでは、「090aaaa0001」)を含む。
【0039】
クライアント管理サーバ30の制御部31は、ネットワーク通信部32によりクライアント装置40から起動指示を受信すると、サービスの提供に用いられる第1サーバ装置10を選択する(ステップSA3)。制御部31は、例えば、現時点で利用中のクライアント装置40数が最も少ない第1サーバ装置10を選択したり、予め決められた選択順に従って第1サーバ装置10を選択したりすればよく、この選択方法については特に問わない。ここでは、制御部31は、第1サーバ装置10aを選択したものとする。
【0040】
ところで、一般にシンクライアントサーバでは、例えばユーザの認証に必要な認証情報やアプリケーションプログラムの実行に用いられる情報等の、ユーザ毎に個別に管理されるユーザデータが保持されている。本実施形態のシンクライアントサーバシステム1には、プロセス処理を実行する第1サーバ装置10が複数含まれているが、以下のような仕組みでユーザデータが保持されていればよい。例えば、シンクライアントサーバシステム1に含まれるすべての第1サーバ装置10が、全ユーザのユーザデータを記憶部13に保持する。また、ユーザデータを一括して保持する管理サーバが別途設けられ、各第1サーバ装置10がこの管理サーバにアクセスしてユーザデータを取得してもよい。また、特定の第1サーバ装置10だけがユーザデータを記憶部13に保持し、且つ、このユーザデータを保持する第1サーバ10を特定するための所在情報をすべての第1サーバ装置10が記憶部13に保持する構成であってもよい。この場合、ステップSA3の処理で、クライアント装置40のユーザのユーザデータを保持しない第1サーバ装置10が選択されたときには、選択された第1サーバ装置10が所在情報に基づいてユーザデータを保持する第1サーバ装置10を特定し、特定した第1サーバ装置10にアクセスしてユーザデータを取得すればよい。
【0041】
図10に戻って説明する。
次に、制御部31は、記憶部35に記憶された第1管理テーブル351を更新する(ステップSA4)。ここでは、制御部31は、図11(a)に示すようにして、起動指示に含まれるユーザID「090aaaa0001」と、ステップSA3の処理で選択した第1サーバ装置10aに割り当てられた第1サーバID「001」とを対応付けて、第1管理テーブル351に新たに記述する。ただし、制御部31は、ここではプロセスIDの更新を行わず、第1管理テーブル351をブランク(図11では「−」(ハイフン)で図示。)にしておく。
【0042】
次に、制御部31は、第1管理テーブル351を参照して、ステップSA3の処理で選択した第1サーバ装置10宛てに、第1サーバ通信部33によりサービスの起動指示を送信する(ステップSA5)。ここでは、制御部31は、第1サーバ装置10a宛てに起動指示を送信する。
【0043】
第1サーバ装置10aの制御部11は、通信部12により起動指示を受信すると、受信した起動指示に従ってサービスを起動する(ステップSA6)。ここでサービスを起動するということは、第1サーバ装置10aがサービスを提供するための動作状態になることを意味する。そこで、制御部11は、まず、未使用のプロセスIDを起動指示の送信元のクライアント装置40に割り当て、サービスの提供に必要なソフトウェアを記憶部13から読み出して実行する。これにより、第1サーバ装置10aでは、起動指示の送信元のクライアント装置40に対応して、図9に示したようなソフトウェア構成が実現される。
【0044】
次に、制御部11は、起動完了したことを示す起動応答を、通信部12によりクライアント管理サーバ30宛てに送信する(ステップSA7)。起動応答には、ステップSA6の処理で制御部11が割り当てたプロセスIDが含まれる。
クライアント管理サーバ30の制御部31は、第1サーバ通信部33により起動応答を受信すると、受信した起動応答に応じて第1管理テーブル351を更新する(ステップSA8)。ここでは、制御部31は、起動応答に含まれていたプロセスIDを、起動指示の送信元であるクライアント装置40のユーザIDに対応付けて、第1管理テーブル351に記述する。ここでは、制御部31は、図11(b)に示すようにして、第1管理テーブル351に記憶されたユーザID「090aaaa0001」と、第1サーバID「001」とに対応付けて、プロセスID「0001」を新たに記述する。
【0045】
次に、第1サーバ装置10aの制御部11は、起動指示に応じたプロセス処理を実行する(ステップSA9)。ここでは、制御部11は、プロセスID「0001」が示すプロセスについて、ユーザにより行われた操作情報が示す操作(ここでは、サービスの起動を指示する操作)に応じた処理を実行する。ここでのプロセス処理は、例えば、クライアント装置40に表示させる画像の画面情報を生成するための演算処理を規定した処理情報を供給する処理を含む。そして、制御部11は、この処理情報と、自装置に割り当てられた第1サーバID(ここでは、「001」)と、プロセスIDとのセット(ここでは、「0001」)を、通信部12によりクライアント管理サーバ30宛てに送信する(ステップSA10)。送信完了すると、制御部11は、送信完了したこと旨の応答を、処理情報IF131aの機能によって取得することができる。
【0046】
クライアント管理サーバ30の制御部31は、ステップSA10の処理で送信されたデータのセットを第1サーバ通信部33により受信すると、第1管理テーブル351に記述された、起動指示の送信元となったクライアント装置40のユーザIDを参照する(ステップSA11)。ここでは、制御部31は、第1管理テーブル351に記述されたユーザID「090aaaa0001」を参照する。
【0047】
次に、制御部31は、サービスの提供に用いられる第2サーバ装置20を選択する(ステップSA12)。制御部31は、例えば、現時点で利用中のクライアント装置40数が最も少ない第2サーバ装置20を選択したり、予め決められた選択順に従って第2サーバ装置20を選択したりすればよいが、この選択方法については特に問わない。ここでは、制御部31は、第2サーバ装置20aを選択したものとする。
【0048】
次に、制御部31は、記憶部35に記憶された第2管理テーブル352を更新する(ステップSA13)。ここでは、制御部31は、図11(c)に示すようにして、起動指示に含まれていたユーザID「090aaaa0001」と、ステップSA12の処理で選択した第2サーバ装置20aに割り当てられた第1サーバID「00a」とを対応付けて、第2管理テーブル352に新たに記述する。
【0049】
次に、制御部31は、第2管理テーブル352を参照して、処理情報とユーザIDとのセットを、このユーザIDに対応付けられた第2サーバIDの第2サーバ装置20宛てに、第2サーバ通信部34により送信する(ステップSA14)。ここでは、制御部31は、処理情報とユーザID「090aaaa0001」とのセットを、第2サーバ装置20a宛てに送信させる。
【0050】
第2サーバ装置20aの制御部21は、ステップSA14の処理で送信されたデータのセットをサーバ通信部23により受信すると、受信した処理情報が示す演算処理を実行し、画面情報を生成する(ステップSA15)。ここでは、制御部21は、処理情報が示す演算処理としてGPU25を用いた画像処理(例えば、レンダリング処理)を実行して、例えばビットマップ形式の画像情報を生成する。
なお、画面情報は、クライアント装置40が画像の表示に用いることのできる形式のデータであればよい。
【0051】
次に、制御部21は、ステップSA15の処理で生成した画面情報に圧縮処理及びエンコード処理を施す(ステップSA16)。そして、制御部21は、処理後の画面情報を、ネットワーク通信部22によりクライアント装置40宛てに送信する(ステップSA17)。ここでは、制御部21は、ユーザIDで識別されるクライアント装置40宛に画面情報を送信すればよい。
【0052】
クライアント装置40の制御部41は、無線通信部43により画面情報を受信すると、受信した画面情報にデコード処理や伸張処理を施す(ステップSA18)。そして、制御部41は、画面情報に応じた画像をUI部44に表示させる(ステップSA19)。
以上が、サービスの提供を開始するときの通信システム100での処理の流れの説明である。次に、通信システム100でのサービスの提供中における処理の流れを、図12を参照しつつ説明する。
【0053】
図12は、通信システム100においてサービスの提供中における処理の流れを示すシーケンス図である。
クライアント装置40の制御部41は、ユーザにより行われた操作をUI部44等によって受け付けると(ステップSB1)、受け付けた操作を示す操作情報と、自装置のユーザのユーザIDとのセットを、無線通信部43によりクライアント管理サーバ30宛てに送信する(ステップSB2)。ここでは、制御部41は、操作情報とユーザID「090aaaa0001」とのセットを送信させる。
【0054】
クライアント管理サーバ30の制御部31は、ステップSB2の処理で送信されたデータのセットをネットワーク通信部32により受信すると、第1サーバ装置10を選択する(ステップSB3)。制御部31は、受信したユーザIDに第1管理テーブル351において対応付けられた第1サーバIDを特定し、特定した第1サーバIDの第1サーバ装置10を選択する。制御部31は、ユーザID「090aaaa0001」を受信したから、ここでは、第1サーバ装置10aを選択する。
次に、制御部31は、操作情報と、第1管理テーブル351においてユーザIDに対応付けられたプロセスIDとのセットを、第1サーバ通信部33により、ステップSB3の処理で選択した第1サーバ装置10宛てに送信する(ステップSB4)。ここでは、制御部31は、操作情報とプロセスID「0001」とのセットを、第1サーバ装置10a宛てに送信させる。
【0055】
第1サーバ装置10aの制御部11は、ステップSB4の処理で送信されたデータのセットを通信部12により受信すると、これらの情報に応じてプロセス処理を実行する(ステップSB5)。具体的には、制御部11は、プロセスIDで識別されるプロセスにおいて、操作情報が示す操作に応じた処理を実行する。次に、制御部11は、ステップSB5の処理の実行後に表示される画像を表す画面情報を生成するための演算処理を規定した処理情報と、自装置の第1サーバID(ここでは、「001」)と、プロセスID(ここでは、「0001」)とのセットを、通信部12によりクライアント管理サーバ30宛てに送信する(ステップSB6)。
【0056】
クライアント管理サーバ30の制御部31は、ステップSB6の処理で送信されたデータのセットを第1サーバ通信部33により受信すると、第1管理テーブル351に記述された、操作情報の送信元となったクライアント装置40のユーザIDを参照する(ステップSB7)。ここでは、制御部31は、第1管理テーブル351のユーザID「090aaaa0001」を参照する。
【0057】
次に、制御部31は、サービスの提供に用いられる第2サーバ装置20を選択する(ステップSB8)。ここでは、制御部31は、受信したユーザIDに第2管理テーブル352において対応付けられた第2サーバIDを特定し、特定した第2サーバIDの第2サーバ装置20を選択する。ここでは、制御部31は、第2サーバ装置20aを選択する。
次に、制御部31は、第2管理テーブル352を参照して、処理情報とユーザIDとのセットを、このユーザIDに対応付けられた第2サーバIDの第2サーバ装置20宛てに、第2サーバ通信部34により送信する(ステップSB9)。ここでは、制御部31は、第2サーバ装置20a宛てに処理情報とユーザIDとのセットを送信させる。
【0058】
第2サーバ装置20aの制御部21は、ステップSB9の処理で送信されたデータのセットをサーバ通信部23により受信すると、処理情報に従って演算処理を実行し画面情報を生成する(ステップSB10)。次に、制御部21は、生成した画面情報に圧縮処理及びエンコード処理を施す(ステップSB11)。そして、制御部21は、処理後の画面情報をネットワーク通信部22によりクライアント装置40宛てに送信する(ステップSB12)。
【0059】
クライアント装置40の制御部41は、無線通信部43により画面情報を受信すると、受信した画面情報にデコード処理や伸張処理等の処理を施す(ステップSB13)。そして、制御部41は、画面情報に応じた画像をUI部44に表示させる(ステップSB14)。以上のステップSB9からSB14までの各処理ステップは、上述したステップSA14からSA19までの各処理ステップと同じ方法で実行される。
以上が、通信システム100でのサービスの提供の開始後における処理の流れの説明である。以上の処理ステップは、クライアント装置40がユーザにより行われた操作を受け付けるたびに実行される。また、サービスの提供を受けるクライアント装置40は、クライアント管理サーバ30の管理により、サービスを受けている期間中は、同一の第1サーバ装置10及び同一の第2サーバ装置20を経由してデータの授受を行うこととなる。
【0060】
以上説明した実施形態によれば、シンクライアントサーバシステム1においては、プロセス処理を実行する第1サーバ装置10と、画面情報の生成及び画面情報の転送を行う第2サーバ装置20とが分離されるので、効果的にシンクライアントサーバの負荷分散を実現することができる。通信システム100によれば、第1サーバ装置10と第2サーバ装置20とのそれぞれにおいて、実行すべき処理に適した設備設計が可能となるし、前掲した複数の作用の協働によって、クライアント装置40における画面表示の遅延を抑制しつつ、多数のクライアント装置40に個別の画面表示を行わせるための処理を並行して行うことができる。
【0061】
第1サーバ装置10のプロセッサ(CPU)として、クライアント装置40で動作するプロセッサでなく、一般のサーバ向けに作成されたプロセッサを適用した場合、仮想マシンにおいてはこのプロセッサで動作するOSが適用されることにより、前掲の作用効果を同等に奏する。
したがって、シンクライアントサーバステム1では、第1サーバ装置10に適用するプロセッサの種類に応じて、プロセス処理によって提供可能なサービスの幅が、従来構成のシンクライアントサーバよりも広がることも期待できる。
【0062】
また、通信システム100によれば、クライアント装置40におけるバッファ機能が実質的に不要である。これによりバッファリングされたデータをファイル化するアプリケーションプログラムが用いられても、画面情報がファイル化されることがないので、著作物の保護の観点からも好適である。
また、通信システム100において、クライアント装置40よりも高品質なハードウェア資源やソフトウェア資源をシンクライアントサーバシステム1に実装することで、クライアント装置40を安価で提供しつつ、クライアント装置40に高いサービスを提供することができる。
【0063】
[変形例]
本発明は、上述した実施形態と異なる形態で実施することが可能である。本発明は、例えば、以下のような形態で実施することも可能である。また、以下に示す変形例は、各々を適宜に組み合わせてもよい。
[変形例1]
上述した実施形態では、第1サーバ装置10は仮想マシンを動作させて、クライアント装置40毎のプロセス処理を実行していた。これに代えて、第1サーバ装置10が仮想化技術を用いないようにしてもよい。
図13は、仮想化技術を用いない場合の通信システム100のソフトウェア構成の一例を示す図である。図13(a)は、この変形例の通信システム100のソフトウェア構成を示し、図13(b)は従来の通信システムのソフトウェア構成を示す。
図13(a)に示すように、この変形例のソフトウェア構成は、図9(a)に示すものから、仮想化ソフトウェア133及びゲストOS132に相当するものがなく、OS上で各ソフトウェアが動作する構成に等しい。一方、図13(b)に示すように、従来の通信システムのソフトウェア構成にあっては、やはり、一台のサーバにおいて、画面情報を生成するまでのプロセスと画面転送プロセスとが実現される。このような仕組みでも、やはり、画面情報の生成及び画面転送プロセスに係る処理負荷が高いが故に、画面表示の遅延の原因になる。これに対し、本変形例では、シンクライアントサーバシステム1において、操作情報が示す操作に応じてプロセス処理を実行する第1サーバ装置10と、画面情報の生成及び画面情報の転送を行う第2サーバ装置20とが分離されている。よって、上述した実施形態と同等の作用により、クライアント装置40での画面表示の遅延を抑制しうるようにシンクライアントサーバの負荷分散を実現することができる。
本変形例ような第1サーバ装置10に仮想化技術を用いない構成は、第1サーバ装置10全体を管理するOS(サーバOS)上でサービス処理を行う場合に適用することができる。もちろん、本変形例においても、第1サーバ装置10のプロセッサとして、クライアント装置40で動作するプロセッサ、及びサーバ向けに作成されたプロセッサのどちらも適用することができる。
なお、一台の第1サーバ装置10において、仮想化マシンを用いたプロセス処理と、仮想マシンを用いないプロセス処理とが並列して実現されてもよい。
【0064】
[変形例2]
上述した実施形態では、クライアント管理サーバ30は、ステップSA12の処理で選択した第2サーバ装置20を、サービスが提供される期間中において継続して利用していた。これに代えて、クライアント管理サーバ30は、このような継続利用をしなくてもよい。第2サーバ装置20では、受信した処理情報に従って画面情報を生成しそれを転送すればよく、クライアント装置40毎のプロセスを管理する必要がないからである。そこで、クライアント管理サーバ30は、処理情報を受信すると、いずれか1の第2サーバ装置20を選択するという具合に、ユーザにより操作が行われるたびに第2サーバ装置20を選択してもよい。
この構成であっても、上述した第1実施形態と同等の効果を奏する。また、この構成では、第2管理テーブル352が不要である。
【0065】
[変形例3]
上述した実施形態で、クライアント管理サーバ30は、サービスの提供のたびにステップSA3の処理で第1サーバ装置10を選択していた。これに代えて、各クライアント装置40と第1サーバ装置10との関係を予め決めておいてもよい。この構成であれば、クライアント管理サーバ30は、ステップSA4の処理で第1管理テーブル351を更新しなくてよい。同様に、クライアント管理サーバ30は、サービスの提供のたびにステップSA12の処理で第2サーバ装置20を選択していた。これに代えて、各クライアント装置40と第2サーバ装置20との対応関係を予め決めておいてもよい。この構成であれば、クライアント管理サーバ30は、ステップSA12の処理で第2管理テーブル352を更新しなくてよい。
上述した実施形態では、第1サーバ装置10は、ステップSA7の処理で、起動応答にプロセスIDを含めてクライアント管理サーバ30宛てに送信していた。これに代えて、第1サーバ装置10は、ステップSA10の処理で、処理情報及びプロセスIDのセットを送信してもよい。また、クライアント管理サーバ30は、ステップSA5の処理でプロセスIDを送信して、起動指示の送信元のクライアント装置40に対応したプロセスを実現させてもよいし、実現させるプロセスの内容を指定したデータを送信してもよい。
【0066】
[変形例4]
上述した実施形態では、シンクライアントサーバシステム1は、第1サーバ装置10と、第2サーバ装置20と、クライアント管理サーバ30とにより構成されていたが、クライアント管理サーバ30を有しない構成としてもよい。この場合、クライアント装置40が、起動指示や操作情報をいずれか1の第1サーバ装置10宛てに送信する。そして、第1サーバ装置10は、操作情報が示す操作に応じてプロセス処理を実行し、画面情報を生成するための処理情報を、第2サーバ装置20宛てに送信する。そして、第2サーバ装置20は、処理情報で規定される演算処理を実行して画面情報を生成し、起動指示の送信元のクライアント装置40宛てに画面情報を送信する。
このように、シンクライアントサーバシステム1においては、操作情報が示す操作に応じてプロセス処理を実行する第1サーバ装置と、画面情報の生成及び画面情報の転送を行う第2サーバ装置とに分離されていれば、上述の実施形態と同等の効果を奏する。
なお、シンクライアントサーバシステム1では、第1サーバ装置10と、第2サーバ装置20とがそれぞれ少なくとも1台ずつあればよい。
【0067】
[変形例5]
上述した実施形態において、シンクライアントサーバシステム1では、第1サーバ装置10と第2サーバ装置20とに分離されていた。上述した発明者の知見によれば、シンクライアントサーバシステム1にあっては、プロセス処理を実行するハードウェア資源と、画面情報の生成及び転送を実行するハードウェア資源とが分離されていればよいと考えられる。よって、図8を用いれば、少なくとも処理実行部102構成するハードウェア資源は、画面情報生成部202及び第2送信部203を構成するハードウェア資源とが分離されていればよいとも言える。ここでハードウェア資源が分離されているということは、例えば、上記機能ブロックの実現において、共通するハードウェアデバイスが用いられないことである。
また、通信システム100において、上述した第1サーバ装置10と第2サーバ装置20とが同一筐体内に設けられたシンクライアントサーバシステム1が構成されてもよい。
【0068】
[変形例6]
上述した実施形態において、第1サーバ装置10が実行するOSと、クライアント装置40が実行するOSとが同一でなくてもよい。また、第1サーバ装置10のプロセッサは、必ずしもクライアント装置40で動作するように作成されたものでなくてもよいが、プロセス処理の実行に適したプロセッサであることが好ましい。
また、本発明は、OS上で各プロセスを実現することを必須とするものでない。
また、第2サーバ装置20でGPU25が画像処理を司る画像処理部として機能していたが、他のプロセッサが用いられてもよい。
【0069】
[変形例7]
クライアント装置40はスマートフォンに限らず、例えば携帯電話端末やタブレット端末、パーソナルコンピュータ、PDA(Personal Digital Assistant)等の他のクライアント装置であってもよく、移動機であるか否かも問わない。
また、第1サーバ装置10、第2サーバ装置20、クライアント管理サーバ30及びクライアント装置40の制御部41が実現する各機能は、複数のプログラムの組み合わせによって実現され、又は、複数のハードウェア資源の協働によって実現されうる。
【符号の説明】
【0070】
1…シンクライアントサーバシステム、10,10a,10b…第1サーバ装置、100…通信システム、101…第1受信部、102…処理実行部、103…第1送信部、11…制御部、12…通信部、13…記憶部、131…ホストOS、131a…処理情報IF、132…ゲストOS、133…仮想化ソフトウェア、134…サービスプロセス、135…仮想マシン、20,20a,20b…第2サーバ装置、201…第2受信部、202…画面情報生成部、203…第2送信部、21…制御部、22…ネットワーク通信部、23…サーバ通信部、24…記憶部、241…OS、241a…GPUIF、242…画面情報生成プロセス、243…画面転送プロセス、30…クライアント管理サーバ、301…第3受信部、302…第1サーバ選択部、303…第3送信部、304…第4受信部、305…第2サーバ選択部、306…第4送信部、31…制御部、32…ネットワーク通信部、33…第1サーバ通信部、34…第2サーバ通信部、35…記憶部、131…第1管理テーブル、132…第2管理テーブル、40…クライアント装置、41…制御部、411…受付部、412…送信制御部、413…表示制御部、42…音声入出力部、43…無線通信部、44…UI部、45…記憶部、451…OS
【技術分野】
【0001】
本発明は、シンクライアントを利用して画面表示を行う技術に関する。
【背景技術】
【0002】
シンクライアントを利用してクライアント装置の画面表示を行う技術では、シンクライアントサーバが、ユーザによりクライアント装置に対して行われた操作を示す操作情報を受信して、受信した操作情報が示す操作に応じた処理を実行して画面情報を生成し、生成した画面情報をクライアント装置宛に送信する、という複数の処理を繰り返し実行する。このような技術では、クライアント装置に行われた操作に対して画面表示が遅延することがある。画面表示の遅延は、クライアント装置においてユーザの誤操作の原因となったり、画面表示を見るユーザに違和感を与える原因となったりする。特許文献1から特許文献3は、シンクライアントを利用したシステムにおいて、画面表示の遅延による影響を抑えるための技術を開示している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2011−28530号公報
【特許文献2】特開2008−211639号公報
【特許文献3】特開2008−210113号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、特許文献1に記載された発明は、画面表示の遅延の影響による画面上のボタン押下間違いを抑えるために、ポインタ座標を補正するものであるが、クライアント装置での画面表示の遅延を継続して抑えるものではない。特許文献2及び特許文献3に記載された発明では、一台のシンクライアントサーバで、操作情報の受信、操作情報が示す操作に応じた処理の実行、画面情報の生成及び画面情報の送信という一連の処理が実行されるとともに、更に、画面情報を複数のブロックに分割するための画像処理も実行される。
【0005】
以上の特許文献1から特許文献3に記載された発明では、一台のシンクライアントサーバに様々な処理に起因する負荷が集中する。よって、一台のシンクライアントサーバが、画面表示の遅延を抑制しつつ、多数のクライアント装置に対して個別の画面表示を行わせる処理を並行して行うことが困難であった。
これに対し、本発明は、クライアント装置での画面表示の遅延を抑制しうるようにシンクライアントサーバの負荷分散を実現することである。
【課題を解決するための手段】
【0006】
上述した課題を解決するため、本発明のシンクライアントサーバシステムは、第1サーバ装置と第2サーバ装置とを備え、前記第1サーバ装置は、受信した画面情報に応じた画像を表示するクライアント装置により受け付けられた操作を示す操作情報を受信する第1受信部と、前記第1受信部により受信された操作情報が示す操作に応じた処理を実行する処理実行部と、前記処理実行部による処理の実行後に表示される画像を表す画面情報を生成するための演算処理を規定した処理情報を送信する第1送信部とを有し、前記第2サーバ装置は、前記第1送信部により送信された処理情報を受信する第2受信部と、前記第2受信部により受信された処理情報に従って演算処理を実行し、前記画面情報を生成する画面情報生成部と、前記画面情報生成部により生成された画面情報を前記クライアント装置宛てに送信する第2送信部とを有することを特徴とする。
【0007】
本発明のシンクライアントサーバシステムにおいて、前記第1サーバ装置を複数有し、前記クライアント装置から前記第1サーバ装置に送信されるデータを中継するクライアント管理サーバを備え、前記クライアント管理サーバは、前記クライアント装置のユーザを識別するユーザIDと、いずれか1の前記第1サーバ装置を識別する第1サーバIDとを対応付けて記憶する第1記憶部と、前記クライアント装置により送信された操作情報を受信する第3受信部と、前記第3受信部により受信された操作情報の送信元であるクライアント装置の前記ユーザIDに対応付けて、前記第1記憶部に第1サーバIDが記憶された前記第1サーバ装置宛てに、当該操作情報を送信する第3送信部とを有し、前記第1受信部は、前記第3送信部により送信された操作情報を受信するようにしてもよい。
【0008】
本発明のシンクライアントサーバシステムにおいて、前記第2サーバ装置を複数有し、前記クライアント管理サーバは、更に、前記第1サーバ装置から前記第2サーバ装置に送信されるデータを中継し、前記ユーザIDと、いずれか1の前記第2サーバ装置を識別する第2サーバIDとを対応付けて記憶する第2記憶部と、前記第1送信部により送信された処理情報を受信する第4受信部と、前記画面情報の送信先となるクライアント装置の前記ユーザIDに対応付けて、前記第2記憶部に第2サーバIDが記憶された前記第2サーバ装置宛てに、前記第4受信部が受信した処理情報を送信する第4送信部とを有するようにしてもよい。
【0009】
本発明のシンクライアントサーバシステムにおいて、前記処理実行部は、前記第1サーバ装置で実行されているオペレーティングシステム上で、前記クライアント装置毎に独立したプロセスの前記処理を実行することが好ましい。また、本発明のシンクライアントサーバシステムにおいて、前記処理実行部は、仮想マシンで実行されたオペレーティングシステム上で、前記クライアント装置毎に独立したプロセスの前記処理を実行するようにしてもよい。
これらのシンクライアントサーバシステムにおいては、前記処理実行部は、前記クライアント装置で動作するプロセッサを用いて処理を実行するようにしてもよい。また、このシンクライアントサーバシステムにおいて、前記オペレーティングシステムは、前記クライアント装置が有するプロセッサで動作するオペレーティングシステムであるようにしてもよい。
【0010】
本発明の通信システムは、上記いずれかの構成のシンクライアントサーバシステムと、クライアント装置とを備える通信システムであって、前記クライアント装置は、前記シンクライアントサーバシステムと通信する通信部と、画像を表示する表示部と、自装置に対して行われた操作を受け付ける受付部と、前記受付部が受け付けた操作を示す操作情報を前記通信部により送信する送信制御部と、前記送信制御部の制御により送信された操作情報に基づいて前記シンクライアントサーバシステムにより生成されて前記第2送信部により送信された画面情報が、前記通信部により受信されると、受信された画面情報に応じて前記表示部に画像を表示させる表示制御部とを有することを特徴とする。
【0011】
本発明の画面情報送信方法は、第1サーバ装置と第2サーバ装置とを備えるシンクライアントサーバシステムの画面情報送信方法であって、前記第1サーバ装置が、受信した画面情報に応じた画像を表示するクライアント装置により受け付けられた操作を示す操作情報を受信する第1受信ステップと、前記第1サーバ装置が、前記第1受信ステップで受信した操作情報が示す操作に応じた処理を実行する処理実行ステップと、前記第1サーバ装置が、前記処理実行ステップでの処理の実行後に表示される画像を表す画面情報を生成するための演算処理を規定した処理情報を送信する第1送信ステップと、前記第2サーバ装置が、前記第1送信ステップで送信された処理情報を受信する第2受信ステップと、前記第2サーバ装置が、前記第2受信ステップで受信した処理情報に従って演算処理を実行し、前記画面情報を生成する画面情報生成ステップと、前記第2サーバ装置が、前記画面情報生成ステップで生成した画面情報を前記クライアント装置宛てに送信する第2送信ステップとを有することを特徴とする。
【発明の効果】
【0012】
本発明によれば、クライアント装置での画面表示の遅延を抑制しうるようにシンクライアントサーバの負荷分散を実現することができる。
【図面の簡単な説明】
【0013】
【図1】通信システムの全体構成を示す図。
【図2】第1サーバ装置のハードウェア構成を示す図。
【図3】第2サーバ装置のハードウェア構成を示す図。
【図4】クライアント管理サーバのハードウェア構成を示す図。
【図5】第1管理テーブルのデータ構造を示す図。
【図6】第2管理テーブルのデータ構造を示す図。
【図7】クライアント装置のハードウェア構成を示す図。
【図8】通信システムの機能的構成を示す機能ブロック図。
【図9】通信システムのソフトウェア構成を示す図。
【図10】通信システムの処理の流れを示すシーケンスチャート。
【図11】第1管理テーブル及び第2管理テーブルの更新の様子を示す説明図。
【図12】通信システムの処理の流れを示すシーケンスチャート。
【図13】通信システムのソフトウェア構成を示す図。
【図14】従来のシンクライアントサーバのソフトウェア構成を示す図。
【発明を実施するための形態】
【0014】
以下、図面を参照しつつ本発明の実施形態を説明する。
図1は、通信システム100の全体構成を示す図である。
通信システム100は、シンクライアントサーバシステム1と、クライアント装置40とを備えるクライアント−サーバシステムである。通信システム100では、シンクライアントサーバシステム1で管理されるソフトウェア資源等に基づく画面表示を、クライアント装置40に行わせるためのサービスが提供される。シンクライアントサーバシステム1は、詳細には、第1サーバ装置10と、第2サーバ装置20と、クライアント管理サーバ30という複数サーバの組み合わせで構成される。シンクライアントサーバシステム1が、どのようなソフトウェア資源に関する画面表示をクライアント装置40に行わせるかについては、本実施形態においては特に問わない。
【0015】
図1には、第1サーバ装置10のうち第1サーバ装置10a,10bのみを図示し、第2サーバ装置20のうち第2サーバ装置20a,20bのみを図示しているが、実際にはより多数存在している。また、図1には、クライアント装置40を1台のみ図示しているが、実際より多数存在している。クライアント装置40は、ネットワークNW経由で、第2サーバ装置20及びクライアント管理サーバ30と通信可能に接続されている。ネットワークNWは、ここでは、移動体通信網、ゲートウェイ及びインターネットを含む通信網である。また、クライアント管理サーバ30は専用の通信路を介して、第1サーバ装置10及び第2サーバ装置20と通信可能に接続されている。
【0016】
第1サーバ装置10及び第2サーバ装置20は、クライアント装置40での画面表示に必要な処理を実行するが、それぞれ異なる処理を実行する。クライアント管理サーバ30は、クライアント装置40と、第1サーバ装置10と、第2サーバ装置20との間でデータを中継する中継サーバとして機能する。クライアント装置40は、ここでは移動機たるスマートフォンであり、通信システム100においてサービスの提供を受けるための加入契約を行ったユーザにより所有される。
【0017】
図2は、第1サーバ装置10のハードウェア構成を示すブロック図である。図2に示すように、第1サーバ装置10は、制御部11と、通信部12と、記憶部13とを備える。
制御部11は、CPU(Central Processing Unit)、ROM(Read Only Memory)、及びRAM(Random Access Memory)を備えるマイクロプロセッサである。CPUは、ROMや記憶部13に記憶されたプログラムをRAMに読み出して実行することにより、第1サーバ装置10の各部を制御する。ここでは、CPUは、移動機向けに作成されたプロセッサであり、要するに、クライアント装置40で動作するプロセッサである。通信部12は、ネットワークNWに接続するためのインタフェースである。記憶部13は、例えばハードディスク装置を備え、ホストOS(Operating System)131やゲストOS132を含むソフトウェアを記憶する。ホストOS131は、制御部11のプロセッサで動作し、第1サーバ装置10において仮想マシン上でソフトウェアを動作させる基盤となるOSである。ゲストOS132は、ホストOS131の実行により第1サーバ装置10において仮想マシンが動作させられたときに、仮想マシン上で実行されるOSである。ゲストOS132は、ここでは移動機向けに作成されたOSであり、クライアント装置40が有するプロセッサでも動作する。
【0018】
図3は、第2サーバ装置20のハードウェア構成を示すブロック図である。図3に示すように、第2サーバ装置20は、制御部21と、ネットワーク通信部22と、サーバ通信部23と、記憶部24と、GPU(Graphics Processing Unit)25とを備える。
制御部21は、CPU、ROM、及びRAMを備えるマイクロプロセッサである。CPUは、ROMや記憶部24に記憶されたプログラムをRAMに読み出して実行することにより、第2サーバ装置20の各部を制御する。ネットワーク通信部22は、ネットワークNWに接続するためのインタフェースである。サーバ通信部23は、クライアント管理サーバ30に接続するためのインタフェースである。記憶部24は、例えばハードディスク装置を備え、OS241を含むソフトウェアを記憶する。OS241は、第2サーバ装置20でソフトウェアを動作させる基盤となるOSである。GPU25は、画像処理に関する演算処理を行うプロセッサであり、第2サーバ装置20で実行される画像処理を司る。
【0019】
図4は、クライアント管理サーバ30は、制御部31と、ネットワーク通信部32と、第1サーバ通信部33と、第2サーバ通信部34と、記憶部35とを備える。
制御部31は、CPU、ROM、及びRAMを備えるマイクロプロセッサである。CPUは、ROMや記憶部35に記憶されたプログラムをRAMに読み出して実行することにより、クライアント管理サーバ30の各部を制御する。ネットワーク通信部32は、ネットワークNWに接続するためのインタフェースである。第1サーバ通信部33は、第1サーバ装置10に接続するためのインタフェースである。第2サーバ通信部34は、第2サーバ装置20に接続するためのインタフェースである。
【0020】
記憶部35は、例えばハードディスク装置を備え、各種ソフトウェアのほか、第1管理テーブル351及び第2管理テーブル352を記憶する。第1管理テーブル351及び第2管理テーブル352は、それぞれ、クライアント管理サーバ30がデータの転送先を選択する際に参照される。より詳細には、第1管理テーブル351には、データの転送先とする第1サーバ装置10を定める情報が記述されている。第2管理テーブル352には、データの転送先とする第2サーバ装置20を定める情報が記述されている。
なお、第1管理テーブル351及び第2管理テーブル352には、シンクライアントサーバシステム1によるサービスの提供中にデータが記述され、このサービスが提供されていない期間にはデータは記述されていないものとする。第1管理テーブル351を記憶する記憶部35が第1記憶部に相当する。また、第2管理テーブル352を記憶する記憶部35が第2記憶部に相当する。
【0021】
図5は、第1管理テーブル351のデータ構造を示す図である。
図5に示すように、第1管理テーブル351は、「ユーザID」と、「第1サーバID」と、「プロセスID」とで示される各情報が対応付けられたデータテーブルである。ユーザIDは、各クライアント装置40のユーザを識別する識別情報であるが、ここでは、各クライアント装置40を識別する識別情報でもある。本実施形態のユーザIDは、クライアント装置40に割り当てられた電話番号であるが、例えば、SIM(Subscriber Identity Module)カードから特定される端末識別情報や、各ユーザに排他的に付与された識別番号であってもよい。第1サーバIDは、各第1サーバ装置10を識別する識別情報である。プロセスIDは、クライアント装置40毎に独立して実行される処理の各プロセスを識別する識別情報である。
なお、本実施形態において、クライアント装置40のユーザIDは「090aaaa0001」である。第1サーバ装置10aの第1サーバIDは「001」であり、第1サーバ装置10bの第1サーバIDは「002」である。また、各第1サーバIDは、それぞれ対応する第1サーバ装置10にも予め記憶されている。また、第1サーバIDは、第1サーバ装置10に割り当てられたIP(Internet Protocol)アドレス等の通信アドレス等で代用することもできる。
【0022】
図6は、第2管理テーブル352のデータ構造を示す図である。
図6に示すように、第1管理テーブル351は、「ユーザID」と、「第2サーバID」とで示される各情報が対応付けられたデータテーブルである。ユーザIDは、第1管理テーブル351に記述されたユーザIDと同じである。第2サーバIDは、各第2サーバ装置20を識別する識別情報である。
なお、本実施形態において、第2サーバ装置20aの第2サーバIDは「00a」であり、第2サーバ装置20bの第2サーバIDは「00b」である。第2サーバIDは、第2サーバ装置20に割り当てられたIPアドレス等の通信アドレス等で代用することもできる。
【0023】
図7は、クライアント装置40のハードウェア構成を示すブロック図である。図7に示すように、クライアント装置40は、制御部41と、音声入出力部42と、無線通信部43と、UI(User Interface)部44と、記憶部45とを備える。
制御部41は、CPU、ROM、及びRAMを備えるマイクロプロセッサである。CPUは、移動機向けに作成されたプロセッサであり、例えば低消費電力化に優れたものが用いられる。CPUは、ROMや記憶部45に記憶されたソフトウェアをRAMに読み出して実行することにより、クライアント装置40の各部を制御する。音声入出力部42は、受話音声等を収音するマイクロホンと送話音声を放音するスピーカとを備え、音声の入出力に関する機能を実現する。無線通信部43は、無線通信回路やアンテナを備え、ネットワークNWに無線通信により接続するためのインタフェースである。UI部44は、画像を表示する表示面と、表示面に重ねられたタッチパネルとを備え、GUI(Graphical User Interface)を提供する。すなわち、UI部44は、タッチパネルのようなユーザによって操作される操作部と、表示面に表示する画像により情報を報知する表示部としての機能を実現する。記憶部45は、例えばEEPROM(Electronically Erasable and Programmable ROM)を備え、OS451を含むソフトウェアを記憶する。OS451は、移動機向けに作成されたOSであり、ここではゲストOS132と同じオペレーティングシステムである。
なお、クライアント装置40は、操作部と表示部とが別々のハードウェアデバイスで構成されていてもよい。また、クライアント装置40は、ユーザにより行われた操作を受け付けるためのハードウェアデバイスとして、上記以外に、クライアント装置40を傾けたり振動させたりする等の筐体に対する操作を受け付けるための加速度センサを有している。
【0024】
図8は、通信システム100の機能的構成を示す機能ブロック図である。まず、クライアント装置40の機能的構成を説明する。
クライアント装置40の制御部41は、プログラムを実行することにより、受付部411と、送信制御部412と、表示制御部413とに相当する機能を実現する。
受付部411は、クライアント装置40に対する操作を受け付ける。受付部411は、UI部44を用いて行われた操作のほか、クライアント装置40を傾けたり振動させたりする等のクライアント装置40の筐体に対して行われた操作、音声入出力部42を介した音声入力で行われた操作等を含む。要するに、受付部411は、クライアント装置40に対してユーザにより行われたあらゆる操作を受け付ける。
送信制御部412は、受付部411が受け付けた操作を示す操作情報を、無線通信部43により送信する。ここでは、送信制御部412は、クライアント管理サーバ30宛てに操作情報を送信する。操作情報は、クライアント装置40に対して行われた操作の識別機能を持った情報である。
表示制御部413は、送信制御部412の制御により送信された操作情報に基づいてシンクライアントサーバシステム1で生成された画面情報が、無線通信部43により受信されると、受信された画面情報に応じてUI部44に画像を表示する。
クライアント装置40の機能的構成の説明は以上である。次に、クライアント管理サーバ30及び第1サーバ装置10の機能的構成を説明する。
【0025】
クライアント管理サーバ30は、第3受信部301と、第1サーバ選択部302と、第3送信部303と、第4受信部304と、第2サーバ選択部305と、第4送信部306とに相当する機能を実現する。第1サーバ装置10は、第1受信部101と、処理実行部102と、第1送信部103とに相当する機能を実現する。
第3受信部301は、クライアント装置40により送信された操作情報を受信する。
第1サーバ選択部302は、第1管理テーブル351を参照して、第3受信部301により受信された操作情報の送信先(転送先)を選択する。具体的には、第1サーバ選択部302は、操作情報の送信元であるクライアント装置40のユーザIDに対応付けて、第1管理テーブル351に第1サーバIDが記憶された第1サーバ装置10を選択する。
第3送信部303は、第3受信部301が受信した操作情報を、第1サーバ選択部302により選択された第1サーバ装置10宛てに送信する。
なお、第3送信部303は、第1サーバ選択部302により第1管理テーブル351から取得されたプロセスIDを送信することがある。
【0026】
第1受信部101は、第3送信部303により送信された操作情報を受信する。
処理実行部102は、第1受信部が受信した操作情報が示す操作に応じた処理を実行する。ここでは、処理実行部102は、クライアント装置40に画面表示を行わせるサービスの提供に必要な処理(以下、「プロセス処理」という。)を操作情報が示す操作に応じて実行する。
第1送信部103は、処理実行部102による処理の実行後にクライアント装置40で表示される画像を表す画面情報を生成するための処理情報を送信する。処理情報は、画面情報を生成するために実行すべき演算処理を規定したデータで、演算処理のアルゴリズムが記述されている。
【0027】
第4受信部304は、第1送信部103により送信された処理情報を受信する。
第2サーバ選択部305は、第2管理テーブル352を参照して、第4受信部304により受信された処理情報の送信先(転送先)を選択する。具体的には、第2サーバ選択部305は、処理情報の送信元であるクライアント装置40のユーザIDに対応付けて、第2管理テーブル352に第2サーバIDが記憶された第2サーバ装置20を選択する。
第4送信部306は、第4受信部304が受信した処理情報を、第2サーバ選択部305により選択された第2サーバ装置20宛てに送信する。
クライアント管理サーバ30及び第1サーバ装置10の機能的構成の説明は以上である。次に、第2サーバ装置20の機能的構成を説明する。
【0028】
第2サーバ装置20は、第2受信部201と、画面情報生成部202と、第2送信部203に相当する機能を実現する。
第2受信部201は、第4送信部306より送信された処理情報を受信する。
画面情報生成部202は、第2受信部201により受信された処理情報に従って演算処理を実行し、画面情報を生成する。画面情報生成部202は、例えば、処理情報を解釈して画像処理を含む演算処理を実行することにより、画面情報を生成する。
第2送信部203は、画面情報生成部202により生成された画面情報をクライアント装置40宛てに送信(転送)する。第2送信部203は、画面情報生成部202により生成された画面情報に圧縮処理及びエンコード処理を施してから、画面情報を送信する。第2送信部203が送信した画面情報は、クライアント装置40の無線通信部43によって受信される。
第2サーバ装置20の機能的構成の説明は以上である。次に、通信システム100のソフトウェア構成を説明する。
【0029】
図9は、通信システム100のソフトウェア構成を示す図である。詳細には、図9には、第1サーバ装置10、第2サーバ装置20及びクライアント装置40のソフトウェア構成が図示されている。
まず、第1サーバ装置10のソフトウェア構成を説明する。
ホストOS131は、第1サーバ装置10における基本的な機能を提供し、第1サーバ装置10全体を管理する基本ソフトウェアである。仮想化ソフトウェア133は、ホストOS131上で動作し、第1サーバ装置10上に仮想マシン134を形成するためのソフトウェアである。仮想マシンとは、物理的に単一のコンピュータ装置内に仮想的に形成されるコンピュータ環境をいう。仮想マシン134は、仮想化ソフトウェア133上で複数並列して動作する(図9には4つの仮想マシン134を示す。)。詳細には、仮想マシン134は、仮想化ソフトウェア133上で動作するゲストOS132と、ゲストOS132上で動作するサービスプロセス135とを動作させる。各仮想マシン134は、1のクライアント装置40に対応するプロセス処理をサービスプロセス135により実行する。サービスプロセス135は、画面情報の生成に必要な演算処理を規定した処理情報を供給するためのソフトウェアである。
更に、ホストOS131には、処理情報IF(Interface)131aの機能が実装されている。処理情報IF131aは、サービスプロセス135により供給された処理情報を、第2サーバ装置20に転送するためのソフトウェアインタフェースである。
次に、第2サーバ装置20のソフトウェア構成を説明する。
【0030】
OS241は、第2サーバ装置20における基本的な機能を提供し、第2サーバ装置20全体を管理する基本ソフトウェアである。画面情報生成プロセス242は、OS241上で動作し、処理情報に従って演算処理を実行するプロセスを実現するソフトウェアである。図9に示すように、OS241にはGPUIF241aの機能が実装されている。GPUIF241aは、画面情報生成プロセス242で画面情報が生成される際に、GPU25との間でデータの授受を行うためのソフトウェアインタフェースである。画面転送プロセス243は、OS241上で動作し、画面情報生成プロセス242で生成された画面情報を、クライアント装置40に転送するプロセスを実現するソフトウェアである。画面転送プロセス243は、例えば、画面情報生成プロセス242から供給された画面情報に圧縮処理及びエンコード処理を施して転送するものである。
次に、クライアント装置40のソフトウェア構成を説明する。
【0031】
OS451は、クライアント装置40における基本的な機能を提供し、クライアント装置40全体を管理する基本ソフトウェアである。画像ビューア452は、OS451上で動作し、第2サーバ装置20から転送された画面情報に応じた画像を表示するためのソフトウェアである。
以上が、通信システム100のソフトウェア構成の説明である。
【0032】
上述したように、シンクライアントサーバシステム1では、第1サーバ装置10が、主操作情報の受信、操作情報が示す操作に応じたプロセス処理の実行、及び処理情報の送信という処理を司り、第2サーバ装置20が、処理情報に従った画面情報の生成、及び画面情報の転送という処理を司る。このように、シンクライアントサーバシステム1では、サービスの提供に必要な処理の一部と残りとが、それぞれ異なるサーバで実行される。このようにして、シンクライアントサーバシステム1では、サービスの提供に起因して生じる処理負荷が複数サーバに分散されるわけであるが、このような仕組みにより効率良く負荷分散が実現される、という知見を発明者は得た。この根拠について、図14に示す従来のシンクライアントサーバのソフトウェア構成と対比しつつ説明する。
【0033】
図14に示すように、従来の通信システムでは、通信システム100と同様、ホストOS上で仮想化ソフトウェアが動作し、仮想化ソフトウェア上でゲストOS及びサービスプロセスを動作させる仮想マシンが動作する。このサービスプロセスは、シンクライアントサーバシステム1とは異なり、操作情報が示す操作に応じた処理のほか、画面情報を生成する処理も含む。更に、従来の通信システムでは、仮想化ソフトウェアとは別に、ホストOS上で画面転送プロセスが動作する。この画面転送プロセスは、画面情報の圧縮処理及びエンコード処理、更に、画面情報の転送を実現するものである。このように、仮想化技術を用いたサービスプロセスと、画面転送プロセスとが同一ハードウェア上で実現された場合に、これら両プロセスの処理負荷の集中が問題となる、という知見を発明者は得た。このような問題点に対し、一台のシンクライアントサーバでこれらの両プロセスが実現された場合には、各プロセスでハードウェアを分離することが不可能である。その具体例として、仮想化技術では、複数の仮想マシンでGPUを共有するのが困難と言われていて、シンクライアントサーバのCPUで画面情報の生成を行わなければならず、処理効率が低くなる(つまり、処理負荷の高さに対して実行可能な演算処理量が少なくなる)原因となる。
以上のような理由から、従来の通信システムでは、一台のシンクライアントサーバが多数のクライアント装置を相手としてサービスを提供することが困難であった。
【0034】
これに対し、シンクライアントサーバシステム1では、サービスプロセスと画面転送プロセスとが、それぞれ異なるハードウェアで実現されるように、第1サーバ装置10と第2サーバ装置20とに分離されている。すなわち、処理負荷が相対的に高いプロセスが同一のハードウェア上で実現されないから、効果的に処理負荷を分散させることができるというわけである。例えば、第1サーバ装置10が処理情報を第2サーバ装置20に転送するための処理負荷は、画面情報を生成するための処理負荷や画面情報を転送するための処理負荷よりも十分に低い。
【0035】
更に、このように第1サーバ装置10と第2サーバ装置20とに分離されることで、サービスプロセスと画面転送プロセスとのそれぞれに適したハードウェアを選定して、シンクライアントサーバシステム1に実装することが容易になる。例えば、第1サーバ装置10では、操作情報が示す操作に応じたプロセス処理を実行するが、画面情報の生成及び転送を行わなくてよい。よって、例えば、CPUは、移動機向けに作成されたプロセッサであり、1台のシンライアントサーバでサービスの提供に係る全処理を実現する場合、移動機向けのプロセッサをシンクライアントサーバに実装することが難しい。これでは、シンクライアントサーバで移動機向けのOSを動作させるのが困難であり、処理効率の低下の原因になりうる。これに対し、シンクライアントサーバシステム1では、第1サーバ装置10が第2サーバ装置20から分離されているので、このような移動機向けのプロセッサを第1サーバ装置10に実装することを妨げる事情がない。よって、クライアント装置40とシンクライアントサーバシステム1とのOSの相違に起因して処理効率が低下することを抑制することができる。
【0036】
更に、第2サーバ装置20では、仮想化技術を用いていないし、クライアント装置40毎に独立したプロセスの処理を実行していない。よって、例えば、第2サーバ装置20では、一のクライアント装置40に関する画像処理を、GPU25を占有して実行することもできる。また、第1サーバ装置10と同じ理由により、第2サーバ装置20のハードウェアとして、画像処理の実行に適したハードウェア(プロセッサ)を適用することも容易である。よって、クライアント装置40とシンクライアントサーバシステム1とのプロセッサの相違に起因して処理効率が低下することも抑制することができる。
【0037】
以上が、シンクライアントサーバシステム1における負荷分散の仕組みが、効果的に負荷分散を実現できることの根拠の説明である。仮に、シンクライアントサーバシステム1を構成するサーバ装置を3台以上にすれば、各装置に強いられる処理負荷が分散される。しかしながら、以上の根拠に基づけば2台のサーバ装置に分離すれば十分な負荷分散の効果を奏するので、シンクライアントサーバシステム1によれば、サーバの台数を無駄に増加させなくて済むので、ハードウェア資源の節約にもなる。
次に、通信システム100の動作を説明する。
【0038】
図10は、通信システム100においてサービスの提供を開始するときの処理の流れを示す。図11は、第1管理テーブル351及び第2管理テーブル352の更新の様子を説明する図である。
クライアント装置40の制御部41は、UI部44によりユーザにより利用したサービスを指定する操作を受け付けると、記憶部45から必要なソフトウェアを読み出して実行することにより、サービスを起動する(ステップSA1)。サービスを起動するということは、クライアント装置40がサービスの提供を受けるための動作状態になることを意味する。そこで、制御部41は、まず、サービスの起動を指示するための起動指示を、無線通信部43によりクライアント管理サーバ30宛てに送信する(ステップSA2)。この起動指示は、クライアント装置40のユーザがサービスの起動を開始させるための操作を行ったことを示すデータであり、送信元のクライアント装置40のユーザID(ここでは、「090aaaa0001」)を含む。
【0039】
クライアント管理サーバ30の制御部31は、ネットワーク通信部32によりクライアント装置40から起動指示を受信すると、サービスの提供に用いられる第1サーバ装置10を選択する(ステップSA3)。制御部31は、例えば、現時点で利用中のクライアント装置40数が最も少ない第1サーバ装置10を選択したり、予め決められた選択順に従って第1サーバ装置10を選択したりすればよく、この選択方法については特に問わない。ここでは、制御部31は、第1サーバ装置10aを選択したものとする。
【0040】
ところで、一般にシンクライアントサーバでは、例えばユーザの認証に必要な認証情報やアプリケーションプログラムの実行に用いられる情報等の、ユーザ毎に個別に管理されるユーザデータが保持されている。本実施形態のシンクライアントサーバシステム1には、プロセス処理を実行する第1サーバ装置10が複数含まれているが、以下のような仕組みでユーザデータが保持されていればよい。例えば、シンクライアントサーバシステム1に含まれるすべての第1サーバ装置10が、全ユーザのユーザデータを記憶部13に保持する。また、ユーザデータを一括して保持する管理サーバが別途設けられ、各第1サーバ装置10がこの管理サーバにアクセスしてユーザデータを取得してもよい。また、特定の第1サーバ装置10だけがユーザデータを記憶部13に保持し、且つ、このユーザデータを保持する第1サーバ10を特定するための所在情報をすべての第1サーバ装置10が記憶部13に保持する構成であってもよい。この場合、ステップSA3の処理で、クライアント装置40のユーザのユーザデータを保持しない第1サーバ装置10が選択されたときには、選択された第1サーバ装置10が所在情報に基づいてユーザデータを保持する第1サーバ装置10を特定し、特定した第1サーバ装置10にアクセスしてユーザデータを取得すればよい。
【0041】
図10に戻って説明する。
次に、制御部31は、記憶部35に記憶された第1管理テーブル351を更新する(ステップSA4)。ここでは、制御部31は、図11(a)に示すようにして、起動指示に含まれるユーザID「090aaaa0001」と、ステップSA3の処理で選択した第1サーバ装置10aに割り当てられた第1サーバID「001」とを対応付けて、第1管理テーブル351に新たに記述する。ただし、制御部31は、ここではプロセスIDの更新を行わず、第1管理テーブル351をブランク(図11では「−」(ハイフン)で図示。)にしておく。
【0042】
次に、制御部31は、第1管理テーブル351を参照して、ステップSA3の処理で選択した第1サーバ装置10宛てに、第1サーバ通信部33によりサービスの起動指示を送信する(ステップSA5)。ここでは、制御部31は、第1サーバ装置10a宛てに起動指示を送信する。
【0043】
第1サーバ装置10aの制御部11は、通信部12により起動指示を受信すると、受信した起動指示に従ってサービスを起動する(ステップSA6)。ここでサービスを起動するということは、第1サーバ装置10aがサービスを提供するための動作状態になることを意味する。そこで、制御部11は、まず、未使用のプロセスIDを起動指示の送信元のクライアント装置40に割り当て、サービスの提供に必要なソフトウェアを記憶部13から読み出して実行する。これにより、第1サーバ装置10aでは、起動指示の送信元のクライアント装置40に対応して、図9に示したようなソフトウェア構成が実現される。
【0044】
次に、制御部11は、起動完了したことを示す起動応答を、通信部12によりクライアント管理サーバ30宛てに送信する(ステップSA7)。起動応答には、ステップSA6の処理で制御部11が割り当てたプロセスIDが含まれる。
クライアント管理サーバ30の制御部31は、第1サーバ通信部33により起動応答を受信すると、受信した起動応答に応じて第1管理テーブル351を更新する(ステップSA8)。ここでは、制御部31は、起動応答に含まれていたプロセスIDを、起動指示の送信元であるクライアント装置40のユーザIDに対応付けて、第1管理テーブル351に記述する。ここでは、制御部31は、図11(b)に示すようにして、第1管理テーブル351に記憶されたユーザID「090aaaa0001」と、第1サーバID「001」とに対応付けて、プロセスID「0001」を新たに記述する。
【0045】
次に、第1サーバ装置10aの制御部11は、起動指示に応じたプロセス処理を実行する(ステップSA9)。ここでは、制御部11は、プロセスID「0001」が示すプロセスについて、ユーザにより行われた操作情報が示す操作(ここでは、サービスの起動を指示する操作)に応じた処理を実行する。ここでのプロセス処理は、例えば、クライアント装置40に表示させる画像の画面情報を生成するための演算処理を規定した処理情報を供給する処理を含む。そして、制御部11は、この処理情報と、自装置に割り当てられた第1サーバID(ここでは、「001」)と、プロセスIDとのセット(ここでは、「0001」)を、通信部12によりクライアント管理サーバ30宛てに送信する(ステップSA10)。送信完了すると、制御部11は、送信完了したこと旨の応答を、処理情報IF131aの機能によって取得することができる。
【0046】
クライアント管理サーバ30の制御部31は、ステップSA10の処理で送信されたデータのセットを第1サーバ通信部33により受信すると、第1管理テーブル351に記述された、起動指示の送信元となったクライアント装置40のユーザIDを参照する(ステップSA11)。ここでは、制御部31は、第1管理テーブル351に記述されたユーザID「090aaaa0001」を参照する。
【0047】
次に、制御部31は、サービスの提供に用いられる第2サーバ装置20を選択する(ステップSA12)。制御部31は、例えば、現時点で利用中のクライアント装置40数が最も少ない第2サーバ装置20を選択したり、予め決められた選択順に従って第2サーバ装置20を選択したりすればよいが、この選択方法については特に問わない。ここでは、制御部31は、第2サーバ装置20aを選択したものとする。
【0048】
次に、制御部31は、記憶部35に記憶された第2管理テーブル352を更新する(ステップSA13)。ここでは、制御部31は、図11(c)に示すようにして、起動指示に含まれていたユーザID「090aaaa0001」と、ステップSA12の処理で選択した第2サーバ装置20aに割り当てられた第1サーバID「00a」とを対応付けて、第2管理テーブル352に新たに記述する。
【0049】
次に、制御部31は、第2管理テーブル352を参照して、処理情報とユーザIDとのセットを、このユーザIDに対応付けられた第2サーバIDの第2サーバ装置20宛てに、第2サーバ通信部34により送信する(ステップSA14)。ここでは、制御部31は、処理情報とユーザID「090aaaa0001」とのセットを、第2サーバ装置20a宛てに送信させる。
【0050】
第2サーバ装置20aの制御部21は、ステップSA14の処理で送信されたデータのセットをサーバ通信部23により受信すると、受信した処理情報が示す演算処理を実行し、画面情報を生成する(ステップSA15)。ここでは、制御部21は、処理情報が示す演算処理としてGPU25を用いた画像処理(例えば、レンダリング処理)を実行して、例えばビットマップ形式の画像情報を生成する。
なお、画面情報は、クライアント装置40が画像の表示に用いることのできる形式のデータであればよい。
【0051】
次に、制御部21は、ステップSA15の処理で生成した画面情報に圧縮処理及びエンコード処理を施す(ステップSA16)。そして、制御部21は、処理後の画面情報を、ネットワーク通信部22によりクライアント装置40宛てに送信する(ステップSA17)。ここでは、制御部21は、ユーザIDで識別されるクライアント装置40宛に画面情報を送信すればよい。
【0052】
クライアント装置40の制御部41は、無線通信部43により画面情報を受信すると、受信した画面情報にデコード処理や伸張処理を施す(ステップSA18)。そして、制御部41は、画面情報に応じた画像をUI部44に表示させる(ステップSA19)。
以上が、サービスの提供を開始するときの通信システム100での処理の流れの説明である。次に、通信システム100でのサービスの提供中における処理の流れを、図12を参照しつつ説明する。
【0053】
図12は、通信システム100においてサービスの提供中における処理の流れを示すシーケンス図である。
クライアント装置40の制御部41は、ユーザにより行われた操作をUI部44等によって受け付けると(ステップSB1)、受け付けた操作を示す操作情報と、自装置のユーザのユーザIDとのセットを、無線通信部43によりクライアント管理サーバ30宛てに送信する(ステップSB2)。ここでは、制御部41は、操作情報とユーザID「090aaaa0001」とのセットを送信させる。
【0054】
クライアント管理サーバ30の制御部31は、ステップSB2の処理で送信されたデータのセットをネットワーク通信部32により受信すると、第1サーバ装置10を選択する(ステップSB3)。制御部31は、受信したユーザIDに第1管理テーブル351において対応付けられた第1サーバIDを特定し、特定した第1サーバIDの第1サーバ装置10を選択する。制御部31は、ユーザID「090aaaa0001」を受信したから、ここでは、第1サーバ装置10aを選択する。
次に、制御部31は、操作情報と、第1管理テーブル351においてユーザIDに対応付けられたプロセスIDとのセットを、第1サーバ通信部33により、ステップSB3の処理で選択した第1サーバ装置10宛てに送信する(ステップSB4)。ここでは、制御部31は、操作情報とプロセスID「0001」とのセットを、第1サーバ装置10a宛てに送信させる。
【0055】
第1サーバ装置10aの制御部11は、ステップSB4の処理で送信されたデータのセットを通信部12により受信すると、これらの情報に応じてプロセス処理を実行する(ステップSB5)。具体的には、制御部11は、プロセスIDで識別されるプロセスにおいて、操作情報が示す操作に応じた処理を実行する。次に、制御部11は、ステップSB5の処理の実行後に表示される画像を表す画面情報を生成するための演算処理を規定した処理情報と、自装置の第1サーバID(ここでは、「001」)と、プロセスID(ここでは、「0001」)とのセットを、通信部12によりクライアント管理サーバ30宛てに送信する(ステップSB6)。
【0056】
クライアント管理サーバ30の制御部31は、ステップSB6の処理で送信されたデータのセットを第1サーバ通信部33により受信すると、第1管理テーブル351に記述された、操作情報の送信元となったクライアント装置40のユーザIDを参照する(ステップSB7)。ここでは、制御部31は、第1管理テーブル351のユーザID「090aaaa0001」を参照する。
【0057】
次に、制御部31は、サービスの提供に用いられる第2サーバ装置20を選択する(ステップSB8)。ここでは、制御部31は、受信したユーザIDに第2管理テーブル352において対応付けられた第2サーバIDを特定し、特定した第2サーバIDの第2サーバ装置20を選択する。ここでは、制御部31は、第2サーバ装置20aを選択する。
次に、制御部31は、第2管理テーブル352を参照して、処理情報とユーザIDとのセットを、このユーザIDに対応付けられた第2サーバIDの第2サーバ装置20宛てに、第2サーバ通信部34により送信する(ステップSB9)。ここでは、制御部31は、第2サーバ装置20a宛てに処理情報とユーザIDとのセットを送信させる。
【0058】
第2サーバ装置20aの制御部21は、ステップSB9の処理で送信されたデータのセットをサーバ通信部23により受信すると、処理情報に従って演算処理を実行し画面情報を生成する(ステップSB10)。次に、制御部21は、生成した画面情報に圧縮処理及びエンコード処理を施す(ステップSB11)。そして、制御部21は、処理後の画面情報をネットワーク通信部22によりクライアント装置40宛てに送信する(ステップSB12)。
【0059】
クライアント装置40の制御部41は、無線通信部43により画面情報を受信すると、受信した画面情報にデコード処理や伸張処理等の処理を施す(ステップSB13)。そして、制御部41は、画面情報に応じた画像をUI部44に表示させる(ステップSB14)。以上のステップSB9からSB14までの各処理ステップは、上述したステップSA14からSA19までの各処理ステップと同じ方法で実行される。
以上が、通信システム100でのサービスの提供の開始後における処理の流れの説明である。以上の処理ステップは、クライアント装置40がユーザにより行われた操作を受け付けるたびに実行される。また、サービスの提供を受けるクライアント装置40は、クライアント管理サーバ30の管理により、サービスを受けている期間中は、同一の第1サーバ装置10及び同一の第2サーバ装置20を経由してデータの授受を行うこととなる。
【0060】
以上説明した実施形態によれば、シンクライアントサーバシステム1においては、プロセス処理を実行する第1サーバ装置10と、画面情報の生成及び画面情報の転送を行う第2サーバ装置20とが分離されるので、効果的にシンクライアントサーバの負荷分散を実現することができる。通信システム100によれば、第1サーバ装置10と第2サーバ装置20とのそれぞれにおいて、実行すべき処理に適した設備設計が可能となるし、前掲した複数の作用の協働によって、クライアント装置40における画面表示の遅延を抑制しつつ、多数のクライアント装置40に個別の画面表示を行わせるための処理を並行して行うことができる。
【0061】
第1サーバ装置10のプロセッサ(CPU)として、クライアント装置40で動作するプロセッサでなく、一般のサーバ向けに作成されたプロセッサを適用した場合、仮想マシンにおいてはこのプロセッサで動作するOSが適用されることにより、前掲の作用効果を同等に奏する。
したがって、シンクライアントサーバステム1では、第1サーバ装置10に適用するプロセッサの種類に応じて、プロセス処理によって提供可能なサービスの幅が、従来構成のシンクライアントサーバよりも広がることも期待できる。
【0062】
また、通信システム100によれば、クライアント装置40におけるバッファ機能が実質的に不要である。これによりバッファリングされたデータをファイル化するアプリケーションプログラムが用いられても、画面情報がファイル化されることがないので、著作物の保護の観点からも好適である。
また、通信システム100において、クライアント装置40よりも高品質なハードウェア資源やソフトウェア資源をシンクライアントサーバシステム1に実装することで、クライアント装置40を安価で提供しつつ、クライアント装置40に高いサービスを提供することができる。
【0063】
[変形例]
本発明は、上述した実施形態と異なる形態で実施することが可能である。本発明は、例えば、以下のような形態で実施することも可能である。また、以下に示す変形例は、各々を適宜に組み合わせてもよい。
[変形例1]
上述した実施形態では、第1サーバ装置10は仮想マシンを動作させて、クライアント装置40毎のプロセス処理を実行していた。これに代えて、第1サーバ装置10が仮想化技術を用いないようにしてもよい。
図13は、仮想化技術を用いない場合の通信システム100のソフトウェア構成の一例を示す図である。図13(a)は、この変形例の通信システム100のソフトウェア構成を示し、図13(b)は従来の通信システムのソフトウェア構成を示す。
図13(a)に示すように、この変形例のソフトウェア構成は、図9(a)に示すものから、仮想化ソフトウェア133及びゲストOS132に相当するものがなく、OS上で各ソフトウェアが動作する構成に等しい。一方、図13(b)に示すように、従来の通信システムのソフトウェア構成にあっては、やはり、一台のサーバにおいて、画面情報を生成するまでのプロセスと画面転送プロセスとが実現される。このような仕組みでも、やはり、画面情報の生成及び画面転送プロセスに係る処理負荷が高いが故に、画面表示の遅延の原因になる。これに対し、本変形例では、シンクライアントサーバシステム1において、操作情報が示す操作に応じてプロセス処理を実行する第1サーバ装置10と、画面情報の生成及び画面情報の転送を行う第2サーバ装置20とが分離されている。よって、上述した実施形態と同等の作用により、クライアント装置40での画面表示の遅延を抑制しうるようにシンクライアントサーバの負荷分散を実現することができる。
本変形例ような第1サーバ装置10に仮想化技術を用いない構成は、第1サーバ装置10全体を管理するOS(サーバOS)上でサービス処理を行う場合に適用することができる。もちろん、本変形例においても、第1サーバ装置10のプロセッサとして、クライアント装置40で動作するプロセッサ、及びサーバ向けに作成されたプロセッサのどちらも適用することができる。
なお、一台の第1サーバ装置10において、仮想化マシンを用いたプロセス処理と、仮想マシンを用いないプロセス処理とが並列して実現されてもよい。
【0064】
[変形例2]
上述した実施形態では、クライアント管理サーバ30は、ステップSA12の処理で選択した第2サーバ装置20を、サービスが提供される期間中において継続して利用していた。これに代えて、クライアント管理サーバ30は、このような継続利用をしなくてもよい。第2サーバ装置20では、受信した処理情報に従って画面情報を生成しそれを転送すればよく、クライアント装置40毎のプロセスを管理する必要がないからである。そこで、クライアント管理サーバ30は、処理情報を受信すると、いずれか1の第2サーバ装置20を選択するという具合に、ユーザにより操作が行われるたびに第2サーバ装置20を選択してもよい。
この構成であっても、上述した第1実施形態と同等の効果を奏する。また、この構成では、第2管理テーブル352が不要である。
【0065】
[変形例3]
上述した実施形態で、クライアント管理サーバ30は、サービスの提供のたびにステップSA3の処理で第1サーバ装置10を選択していた。これに代えて、各クライアント装置40と第1サーバ装置10との関係を予め決めておいてもよい。この構成であれば、クライアント管理サーバ30は、ステップSA4の処理で第1管理テーブル351を更新しなくてよい。同様に、クライアント管理サーバ30は、サービスの提供のたびにステップSA12の処理で第2サーバ装置20を選択していた。これに代えて、各クライアント装置40と第2サーバ装置20との対応関係を予め決めておいてもよい。この構成であれば、クライアント管理サーバ30は、ステップSA12の処理で第2管理テーブル352を更新しなくてよい。
上述した実施形態では、第1サーバ装置10は、ステップSA7の処理で、起動応答にプロセスIDを含めてクライアント管理サーバ30宛てに送信していた。これに代えて、第1サーバ装置10は、ステップSA10の処理で、処理情報及びプロセスIDのセットを送信してもよい。また、クライアント管理サーバ30は、ステップSA5の処理でプロセスIDを送信して、起動指示の送信元のクライアント装置40に対応したプロセスを実現させてもよいし、実現させるプロセスの内容を指定したデータを送信してもよい。
【0066】
[変形例4]
上述した実施形態では、シンクライアントサーバシステム1は、第1サーバ装置10と、第2サーバ装置20と、クライアント管理サーバ30とにより構成されていたが、クライアント管理サーバ30を有しない構成としてもよい。この場合、クライアント装置40が、起動指示や操作情報をいずれか1の第1サーバ装置10宛てに送信する。そして、第1サーバ装置10は、操作情報が示す操作に応じてプロセス処理を実行し、画面情報を生成するための処理情報を、第2サーバ装置20宛てに送信する。そして、第2サーバ装置20は、処理情報で規定される演算処理を実行して画面情報を生成し、起動指示の送信元のクライアント装置40宛てに画面情報を送信する。
このように、シンクライアントサーバシステム1においては、操作情報が示す操作に応じてプロセス処理を実行する第1サーバ装置と、画面情報の生成及び画面情報の転送を行う第2サーバ装置とに分離されていれば、上述の実施形態と同等の効果を奏する。
なお、シンクライアントサーバシステム1では、第1サーバ装置10と、第2サーバ装置20とがそれぞれ少なくとも1台ずつあればよい。
【0067】
[変形例5]
上述した実施形態において、シンクライアントサーバシステム1では、第1サーバ装置10と第2サーバ装置20とに分離されていた。上述した発明者の知見によれば、シンクライアントサーバシステム1にあっては、プロセス処理を実行するハードウェア資源と、画面情報の生成及び転送を実行するハードウェア資源とが分離されていればよいと考えられる。よって、図8を用いれば、少なくとも処理実行部102構成するハードウェア資源は、画面情報生成部202及び第2送信部203を構成するハードウェア資源とが分離されていればよいとも言える。ここでハードウェア資源が分離されているということは、例えば、上記機能ブロックの実現において、共通するハードウェアデバイスが用いられないことである。
また、通信システム100において、上述した第1サーバ装置10と第2サーバ装置20とが同一筐体内に設けられたシンクライアントサーバシステム1が構成されてもよい。
【0068】
[変形例6]
上述した実施形態において、第1サーバ装置10が実行するOSと、クライアント装置40が実行するOSとが同一でなくてもよい。また、第1サーバ装置10のプロセッサは、必ずしもクライアント装置40で動作するように作成されたものでなくてもよいが、プロセス処理の実行に適したプロセッサであることが好ましい。
また、本発明は、OS上で各プロセスを実現することを必須とするものでない。
また、第2サーバ装置20でGPU25が画像処理を司る画像処理部として機能していたが、他のプロセッサが用いられてもよい。
【0069】
[変形例7]
クライアント装置40はスマートフォンに限らず、例えば携帯電話端末やタブレット端末、パーソナルコンピュータ、PDA(Personal Digital Assistant)等の他のクライアント装置であってもよく、移動機であるか否かも問わない。
また、第1サーバ装置10、第2サーバ装置20、クライアント管理サーバ30及びクライアント装置40の制御部41が実現する各機能は、複数のプログラムの組み合わせによって実現され、又は、複数のハードウェア資源の協働によって実現されうる。
【符号の説明】
【0070】
1…シンクライアントサーバシステム、10,10a,10b…第1サーバ装置、100…通信システム、101…第1受信部、102…処理実行部、103…第1送信部、11…制御部、12…通信部、13…記憶部、131…ホストOS、131a…処理情報IF、132…ゲストOS、133…仮想化ソフトウェア、134…サービスプロセス、135…仮想マシン、20,20a,20b…第2サーバ装置、201…第2受信部、202…画面情報生成部、203…第2送信部、21…制御部、22…ネットワーク通信部、23…サーバ通信部、24…記憶部、241…OS、241a…GPUIF、242…画面情報生成プロセス、243…画面転送プロセス、30…クライアント管理サーバ、301…第3受信部、302…第1サーバ選択部、303…第3送信部、304…第4受信部、305…第2サーバ選択部、306…第4送信部、31…制御部、32…ネットワーク通信部、33…第1サーバ通信部、34…第2サーバ通信部、35…記憶部、131…第1管理テーブル、132…第2管理テーブル、40…クライアント装置、41…制御部、411…受付部、412…送信制御部、413…表示制御部、42…音声入出力部、43…無線通信部、44…UI部、45…記憶部、451…OS
【特許請求の範囲】
【請求項1】
第1サーバ装置と第2サーバ装置とを備え、
前記第1サーバ装置は、
受信した画面情報に応じた画像を表示するクライアント装置により受け付けられた操作を示す操作情報を受信する第1受信部と、
前記第1受信部により受信された操作情報が示す操作に応じた処理を実行する処理実行部と、
前記処理実行部による処理の実行後に表示される画像を表す画面情報を生成するための演算処理を規定した処理情報を送信する第1送信部と
を有し、
前記第2サーバ装置は、
前記第1送信部により送信された処理情報を受信する第2受信部と、
前記第2受信部により受信された処理情報に従って演算処理を実行し、前記画面情報を生成する画面情報生成部と、
前記画面情報生成部により生成された画面情報を前記クライアント装置宛てに送信する第2送信部と
を有することを特徴とするシンクライアントサーバシステム。
【請求項2】
前記第1サーバ装置を複数有し、
前記クライアント装置から前記第1サーバ装置に送信されるデータを中継するクライアント管理サーバを備え、
前記クライアント管理サーバは、
前記クライアント装置のユーザを識別するユーザIDと、いずれか1の前記第1サーバ装置を識別する第1サーバIDとを対応付けて記憶する第1記憶部と、
前記クライアント装置により送信された操作情報を受信する第3受信部と、
前記第3受信部により受信された操作情報の送信元であるクライアント装置の前記ユーザIDに対応付けて、前記第1記憶部に第1サーバIDが記憶された前記第1サーバ装置宛てに、当該操作情報を送信する第3送信部と
を有し、
前記第1受信部は、前記第3送信部により送信された操作情報を受信する
ことを特徴とする請求項1に記載のシンクライアントサーバシステム。
【請求項3】
前記第2サーバ装置を複数有し、
前記クライアント管理サーバは、更に、前記第1サーバ装置から前記第2サーバ装置に送信されるデータを中継し、
前記ユーザIDと、いずれか1の前記第2サーバ装置を識別する第2サーバIDとを対応付けて記憶する第2記憶部と、
前記第1送信部により送信された処理情報を受信する第4受信部と、
前記画面情報の送信先となるクライアント装置の前記ユーザIDに対応付けて、前記第2記憶部に第2サーバIDが記憶された前記第2サーバ装置宛てに、前記第4受信部が受信した処理情報を送信する第4送信部と
を有することを特徴とする請求項2に記載のシンクライアントサーバシステム。
【請求項4】
前記処理実行部は、
前記第1サーバ装置で実行されているオペレーティングシステム上で、前記クライアント装置毎に独立したプロセスの前記処理を実行する
ことを特徴とする請求項1から3のいずれか1項に記載のシンクライアントサーバシステム。
【請求項5】
前記処理実行部は、
仮想マシンで実行されたオペレーティングシステム上で、前記クライアント装置毎に独立したプロセスの前記処理を実行する
ことを特徴とする請求項1から4のいずれか1項に記載のシンクライアントサーバシステム。
【請求項6】
前記処理実行部は、
前記クライアント装置で動作するプロセッサを用いて処理を実行する
ことを特徴とする請求項4又は5に記載のシンクライアントサーバシステム。
【請求項7】
前記オペレーティングシステムは、前記クライアント装置が有するプロセッサで動作するオペレーティングシステムである
ことを特徴とする請求項6に記載のシンクライアントサーバシステム。
【請求項8】
請求項1から7のいずれか1項に記載のシンクライアントサーバシステムと、クライアント装置とを備える通信システムであって、
前記クライアント装置は、
前記シンクライアントサーバシステムと通信する通信部と、
画像を表示する表示部と、
自装置に対して行われた操作を受け付ける受付部と、
前記受付部が受け付けた操作を示す操作情報を前記通信部により送信する送信制御部と、
前記送信制御部の制御により送信された操作情報に基づいて前記シンクライアントサーバシステムにより生成されて前記第2送信部により送信された画面情報が、前記通信部により受信されると、受信された画面情報に応じて前記表示部に画像を表示させる表示制御部と
を有することを特徴とする通信システム。
【請求項9】
第1サーバ装置と第2サーバ装置とを備えるシンクライアントサーバシステムの画面情報送信方法であって、
前記第1サーバ装置が、受信した画面情報に応じた画像を表示するクライアント装置により受け付けられた操作を示す操作情報を受信する第1受信ステップと、
前記第1サーバ装置が、前記第1受信ステップで受信した操作情報が示す操作に応じた処理を実行する処理実行ステップと、
前記第1サーバ装置が、前記処理実行ステップでの処理の実行後に表示される画像を表す画面情報を生成するための演算処理を規定した処理情報を送信する第1送信ステップと、
前記第2サーバ装置が、前記第1送信ステップで送信された処理情報を受信する第2受信ステップと、
前記第2サーバ装置が、前記第2受信ステップで受信した処理情報に従って演算処理を実行し、前記画面情報を生成する画面情報生成ステップと、
前記第2サーバ装置が、前記画面情報生成ステップで生成した画面情報を前記クライアント装置宛てに送信する第2送信ステップと
を有することを特徴とする画面情報送信方法。
【請求項1】
第1サーバ装置と第2サーバ装置とを備え、
前記第1サーバ装置は、
受信した画面情報に応じた画像を表示するクライアント装置により受け付けられた操作を示す操作情報を受信する第1受信部と、
前記第1受信部により受信された操作情報が示す操作に応じた処理を実行する処理実行部と、
前記処理実行部による処理の実行後に表示される画像を表す画面情報を生成するための演算処理を規定した処理情報を送信する第1送信部と
を有し、
前記第2サーバ装置は、
前記第1送信部により送信された処理情報を受信する第2受信部と、
前記第2受信部により受信された処理情報に従って演算処理を実行し、前記画面情報を生成する画面情報生成部と、
前記画面情報生成部により生成された画面情報を前記クライアント装置宛てに送信する第2送信部と
を有することを特徴とするシンクライアントサーバシステム。
【請求項2】
前記第1サーバ装置を複数有し、
前記クライアント装置から前記第1サーバ装置に送信されるデータを中継するクライアント管理サーバを備え、
前記クライアント管理サーバは、
前記クライアント装置のユーザを識別するユーザIDと、いずれか1の前記第1サーバ装置を識別する第1サーバIDとを対応付けて記憶する第1記憶部と、
前記クライアント装置により送信された操作情報を受信する第3受信部と、
前記第3受信部により受信された操作情報の送信元であるクライアント装置の前記ユーザIDに対応付けて、前記第1記憶部に第1サーバIDが記憶された前記第1サーバ装置宛てに、当該操作情報を送信する第3送信部と
を有し、
前記第1受信部は、前記第3送信部により送信された操作情報を受信する
ことを特徴とする請求項1に記載のシンクライアントサーバシステム。
【請求項3】
前記第2サーバ装置を複数有し、
前記クライアント管理サーバは、更に、前記第1サーバ装置から前記第2サーバ装置に送信されるデータを中継し、
前記ユーザIDと、いずれか1の前記第2サーバ装置を識別する第2サーバIDとを対応付けて記憶する第2記憶部と、
前記第1送信部により送信された処理情報を受信する第4受信部と、
前記画面情報の送信先となるクライアント装置の前記ユーザIDに対応付けて、前記第2記憶部に第2サーバIDが記憶された前記第2サーバ装置宛てに、前記第4受信部が受信した処理情報を送信する第4送信部と
を有することを特徴とする請求項2に記載のシンクライアントサーバシステム。
【請求項4】
前記処理実行部は、
前記第1サーバ装置で実行されているオペレーティングシステム上で、前記クライアント装置毎に独立したプロセスの前記処理を実行する
ことを特徴とする請求項1から3のいずれか1項に記載のシンクライアントサーバシステム。
【請求項5】
前記処理実行部は、
仮想マシンで実行されたオペレーティングシステム上で、前記クライアント装置毎に独立したプロセスの前記処理を実行する
ことを特徴とする請求項1から4のいずれか1項に記載のシンクライアントサーバシステム。
【請求項6】
前記処理実行部は、
前記クライアント装置で動作するプロセッサを用いて処理を実行する
ことを特徴とする請求項4又は5に記載のシンクライアントサーバシステム。
【請求項7】
前記オペレーティングシステムは、前記クライアント装置が有するプロセッサで動作するオペレーティングシステムである
ことを特徴とする請求項6に記載のシンクライアントサーバシステム。
【請求項8】
請求項1から7のいずれか1項に記載のシンクライアントサーバシステムと、クライアント装置とを備える通信システムであって、
前記クライアント装置は、
前記シンクライアントサーバシステムと通信する通信部と、
画像を表示する表示部と、
自装置に対して行われた操作を受け付ける受付部と、
前記受付部が受け付けた操作を示す操作情報を前記通信部により送信する送信制御部と、
前記送信制御部の制御により送信された操作情報に基づいて前記シンクライアントサーバシステムにより生成されて前記第2送信部により送信された画面情報が、前記通信部により受信されると、受信された画面情報に応じて前記表示部に画像を表示させる表示制御部と
を有することを特徴とする通信システム。
【請求項9】
第1サーバ装置と第2サーバ装置とを備えるシンクライアントサーバシステムの画面情報送信方法であって、
前記第1サーバ装置が、受信した画面情報に応じた画像を表示するクライアント装置により受け付けられた操作を示す操作情報を受信する第1受信ステップと、
前記第1サーバ装置が、前記第1受信ステップで受信した操作情報が示す操作に応じた処理を実行する処理実行ステップと、
前記第1サーバ装置が、前記処理実行ステップでの処理の実行後に表示される画像を表す画面情報を生成するための演算処理を規定した処理情報を送信する第1送信ステップと、
前記第2サーバ装置が、前記第1送信ステップで送信された処理情報を受信する第2受信ステップと、
前記第2サーバ装置が、前記第2受信ステップで受信した処理情報に従って演算処理を実行し、前記画面情報を生成する画面情報生成ステップと、
前記第2サーバ装置が、前記画面情報生成ステップで生成した画面情報を前記クライアント装置宛てに送信する第2送信ステップと
を有することを特徴とする画面情報送信方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2013−20553(P2013−20553A)
【公開日】平成25年1月31日(2013.1.31)
【国際特許分類】
【出願番号】特願2011−155190(P2011−155190)
【出願日】平成23年7月13日(2011.7.13)
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
【Fターム(参考)】
【公開日】平成25年1月31日(2013.1.31)
【国際特許分類】
【出願日】平成23年7月13日(2011.7.13)
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
【Fターム(参考)】
[ Back to top ]