以下、添付図面を参照して本発明に係る好適な第1〜第3の実施の形態及び第1、第2の変形例を順に詳細に説明する。なお本発明は、図示例に限定されるものではない。
(第1の実施の形態)
先ず図1〜図10を参照して、本発明に係る第1実施の形態を説明する。図1〜図3は、本実施の形態の装置構成である。図1に、本実施の形態のサーバベース・コンピューティング・システム1の全体構成を示す。図2に、サーバ装置10の内部構成を示す。図3にクライアント装置20Aの内部構成を示す。
図1に示すように、本実施の形態のシンクライアントシステムとしてのサーバベース・コンピューティング・システム1は、サーバ装置10と、複数のクライアント装置20(20A,20B)とを備えて構成され、各部が通信ネットワークnを介して接続される。通信ネットワークnには、アクセスポイント40が接続されている。
サーバ装置10は、シンクライアントシステムにおけるサーバ装置である。クライアント装置20(20A,20B)は、シンクライアント装置である。クライアント装置20は、例えば、PC(Personal Computer)であり、通信ネットワークnに有線で接続される。クライアント装置20A,20Bは、例えばそれぞれラップトップPC、携帯電話機であり、通信ネットワークnとアクセスポイント40を介して無線LAN(Local Area Network)方式で接続される。
通信ネットワークnは、例えば、LANであるとするが、WAN(Wide Area Network)等を含めてもよく、電話回線、専用線、移動体通信網、通信衛星網、CATV(Cable Television)回線、インターネットプロバイダ等を含めてもよい。また、クライアント装置20等の種類、台数等は、図1のサーバベース・コンピューティング・システム1の例に限定されるものではない。
図2に示すように、サーバ装置10は、CPU(Central Processing Unit)11と、入力部12と、RAM(Random Access Memory)13と、表示部14と、記憶部15と、送受信制御部16と、を備えて構成され、各部がバス17を介して接続される。
CPU11は、サーバ装置10の各部を中央制御する。CPU11は、記憶部15に記憶されているシステムプログラム及び各種アプリケーションプログラムの中から指定されたプログラムをRAM13に展開し、RAM13に展開されたプログラムとの協働で、各種処理を実行する。
CPU11は、後述するサーバ処理プログラムとの協働で、クライアント装置20と通信接続を確立し、通信接続確立中のクライアント装置の操作入力に応じて、画面情報の描画をそのクライアント装置20に指示する。また、CPU11は、通信接続確立中のクライアント装置20からキャッシュ再描画の要求がある場合に、要求対象の画面情報を要求元のクライアント装置20に送信する。ここでキャッシュ再描画の要求とは、クライアント装置20のキャッシュ領域261に格納される画面情報がJPEG等の非可逆圧縮がなされていた場合に、クライアント装置20がJPEG等の非可逆圧縮がなされていない画面情報の再送信をサーバ装置10に要求することである。
入力部12は、カーソルキー、文字、数字入力キー及び各種機能キーなどを備えたキーボードを含む構成とし、操作者により各キーが押下された操作信号をCPU11に出力する。また、入力部12は、マウス等のポインティングデバイスを含み、位置入力信号を受け付けてCPU11に送信することとしてもよい。
RAM13は、揮発性のメモリであり、実行される各種プログラムやこれら各種プログラムに係るデータ等を格納するワークエリアを有する。
表示部14は、LCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)等で構成され、CPU11からの表示制御信号に従って画面表示を行う。
記憶部15は、磁気記録媒体を有するHDD(Hard Disk Drive)等により構成され、各種プログラム及び各種データを記録媒体から読み出し及び書き込み可能に記憶する。記憶部15は、クライアント装置20の画面表示に関するデータを含むキャッシュ領域151を含む。キャッシュ領域151は、後述する管理テーブル1510及びそのキャッシュデータ(クライアント装置20側でキャッシュ中の画面情報(表示データ))を含む。また、記憶部15は、サーバ処理プログラムを記憶する。なお、本実施の形態では、キャッシュ領域は記憶部15に含ませているが、RAM13に含ませてもよい。
送受信制御部16は、モデム、TA(Terminal Adapter)、ルータ、ネットワークカード等により構成される。送受信制御部16は、接続される通信ネットワークn上のクライアント装置20(20A,20B)等の外部機器と情報を送受信する。
図3を参照して、クライアント装置20Aの内部構成を説明する。クライアント装置20は、クライアント装置20Aを有線通信接続にしたものと同様の構成を有する。クライアント装置20Bは、クライアント装置20Aと同様の構成を有し、さらに、通話部等を備える。
クライアント装置20Aは、CPU21と、記憶部22と、表示コントローラ23と、FB(Flame Buffer)メモリ24と、表示部25と、圧縮画面情報記憶手段、画面情報記憶手段としてのRAM26と、圧縮手段としてのJPEG(Joint Photographic Coding Experts Group)部27と、UART(Universal Asynchronous Receiver Transmitter)28と、画像情報受信手段としてのWiFi(Wireless Fidelity)部29と、キーボード30と、ポインタ31と、計時手段としてのRTC(Real Time Clock)32と、を備えて構成される。
記憶部22、表示コントローラ23、RAM26、JPEG部27、UART28、RTC32は、バス33を介して接続される。FBメモリ24及び表示部25は、表示コントローラ23に接続される。WiFi部29、キーボード30、ポインタ31は、UART28に接続される。
CPU21は、クライアント装置20Aの各部を中央制御する。CPU21は、記憶部22に記憶された後述するクライアント処理プログラムとの協働で、サーバ装置から受信したキャッシュ格納コマンドに応じて、サーバ装置10から受信した画面情報をキャッシュデータとしてRAM26のキャッシュ領域に格納する。また、CPU21は、サーバ装置10から受信したキャッシュ描画コマンドに応じて、RAM26のキャッシュ領域に格納されたキャッシュデータ(画面情報)を表示部25に表示し、そのキャッシュデータがJPEG部27により圧縮されていると、キャッシュ再描画要求をサーバ装置10へ送信する。
また、CPU21は、記憶部22に記憶された後述するTIMERタスクプログラムとの協働で、RAM26のキャッシュ領域に格納されてから所定時間経過したキャッシュデータをJPEG方式で圧縮して格納する。CPU21とプログラムとの協働の構成は、制御手段、出力回数計算手段として機能する。
記憶部22は、フラッシュメモリ等により構成され、各種プログラム及び各種データを書き込み及び読み出し可能に記憶する。記憶部22は、クライアント処理プログラム及びTIMERタスクプログラムを記憶する。
表示コントローラ23は、RAM26等から入力される画面情報をFBメモリ24に格納し、表示部25へ出力して表示させる。また、表示コントローラ23は、表示内容を変更する場合に、RAM26等から入力される変更後の画面情報で、FBメモリ24に格納された画面情報を更新する。この更新後の画面情報は、JPEG方式で圧縮済の又は未圧縮の表示用の画面情報である。
FBメモリ24は、画面情報を一時的に格納するRAM等のメモリである。表示部25は、LCD、ELD(ElectroLuminescent Display)等から構成され、表示コントローラ23から入力される画面情報に基づいて画面表示を行う。
RAM26は、RAM13と同様の構成であり、キャッシュ領域261を有する。キャッシュ領域261は、後述する管理テーブル2610と、キャッシュ中の画面情報としてのキャッシュデータとを含む。
JPEG部27は、CPU21の指示により、サーバ装置10から受信した画面情報をJPEG方式で圧縮するハードウエアアクセラレータである。なお本発明の課題を解決するための圧縮方式はJPEG方式に限定されず、他の圧縮方式であってもよいいが、本実施の形態では、キャッシュ領域の有効活用の観点から、lossy圧縮(非可逆圧縮)方式であって、比較的圧縮率が高いJPEG方式とする。
UART28は、バス33を介してCPU21等から入力される各種データとしてのパラレル信号をシリアル信号に変換してWiFi部29、キーボード30、ポインタ31に出力する。また、UART28は、WiFi部29、キーボード30、ポインタ31から入力されたシリアルデータをパラレルデータに変換してバス33を介してCPU21等に出力する。
WiFi部29は、無線LAN通信用のアンテナ291を備え、アンテナ291を介して外部機器と無線LAN通信を行う。本実施の形態において、WiFi部29は、アクセスポイント40を介してサーバ装置10と通信を行う。
キーボード30は、各種文字の入力キー及び各種機能キー等を備え、ユーザのキー入力を受け付けてUART28を介してCPU21に出力する。ポインタ31は、位置入力を受け付けるデバイスであり、例えば、タッチパッドや、表示部25と一体的に構成されるタッチパネルである。ポインタ31は、ユーザからのタッチ入力を受け付けて位置情報としてUART28を介してCPU21に出力する。RTC32は、現在の日時情報を計時して出力する計時回路を有する。
次に、図4及び図5を参照して、サーバ装置10及びクライアント装置20(20A,20B)に記憶される情報を説明する。図4に、サーバ装置10に記憶される管理テーブル1510の構成を示す。図5に、クライアント装置20に記憶される管理テーブル2610の構成を示す。
サーバ装置10の記憶部15のキャッシュ領域151には、管理テーブル1510と、管理テーブル1510に記載されるキャッシュデータ(画面情報)と、が格納される。管理テーブル1510は、サーバ装置10に接続されるクライアント装置20に格納されるキャッシュデータを管理するための管理テーブルである。このため、クライアント装置20におけるキャッシュデータの格納状態に応じてキャッシュ領域151が適宜更新される。
図4に示すように、管理テーブル1510は、クライアント識別子1511と、キャッシュ番号1512と、縦幅(H)1513と、横幅(W)1514と、キャッシュデータ1515との項目を含む。クライアント識別子1511は、クライアント装置20(20A,20B)の識別情報である。クライアント識別子1511は、例えば、クライアント装置20A,20Bを順に、A,Bで表す。
キャッシュ番号1512は、クライアント装置20毎に順に付与される各キャッシュデータを示す番号である。縦幅1513は、キャッシュ番号1512のキャッシュデータの縦幅を示すデータである。横幅1514は、キャッシュ番号1512のキャッシュデータの横幅を示すデータである。つまり、縦幅1513及び横幅1514がキャッシュ番号1512のキャッシュデータの縦横の二次元の大きさを示す。また、縦幅1513及び横幅1514の単位は、ドット等である。キャッシュデータ1515は、キャッシュ番号1512のキャッシュデータを示すファイル名等の識別情報である。
クライアント装置20のRAM26のキャッシュ領域261には、管理テーブル2610と、管理テーブル2610に記載されるキャッシュデータ(画面情報)と、が格納される。管理テーブル2610は、自機のクライアント装置20に格納されるキャッシュデータを管理するための管理テーブルである。
図5に示すように、管理テーブル2610は、キャッシュ番号2611と、縦幅(H)2612と、横幅(W)2613と、状態2614と、時間(sec)2615と、キャッシュデータ2616との項目を含む。キャッシュ番号2611は、自機のキャッシュ領域261に順に付与される各キャッシュデータの番号である。また、キャッシュ番号2611と、管理テーブル1510の自機のクライアント識別子1511におけるキャッシュ番号1512とは、同期が取られる。
縦幅2612は、キャッシュ番号2611のキャッシュデータの縦幅を示すデータである。横幅2613は、キャッシュ番号2611のキャッシュデータの横幅を示すデータである。縦幅2612及び横幅2613の単位は、ドット等である。状態2614は、キャッシュ番号2611のキャッシュデータがJPEG方式により圧縮されているか否かの状態を示す情報である。状態2614では、JPEG方式により圧縮されていない状態を “lossless”と表し、JPEG方式により圧縮されている状態を “lossy”と表すものとする。
時間2615は、キャッシュ番号2611のキャッシュデータがキャッシュされてからの経過時間の情報であり、その単位がsecであるものとする。キャッシュデータ2616は、キャッシュ番号2611のキャッシュデータを示すファイル名等の識別情報である。但し、本実施の形態では、時間2615を使用しないものとして説明する。
次に、図6〜図10を参照して、本第1の実施の形態におけるサーバベース・コンピューティング・システム1の動作を説明する。図6に、サーバ装置10で実行されるサーバ処理の流れを示す。図7〜図10に、クライアント装置20で実行されるクライアント処理の流れを示す。図8に、クライアント処理における第1の再描画要求処理の流れを示す。図9に、クライアント処理における第1のキャッシュ格納処理の流れを示す。図10に、クライアント処理におけるTIMERタスク処理の流れを示す。本第一の実施の形態のクライアント装置20では、サーバ装置10から画面情報を受信してから所定時間経過後に画面情報を圧縮する。
図6を参照して、サーバ装置10で実行されるサーバ処理を説明する。サーバ処理は、クライアント装置20のキャッシュデータの管理を行うとともに、クライアント装置20にキャッシュデータの表示に関する指示を行う(コマンドを送信する)処理である。サーバ装置10において、例えば、入力部12を介してユーザからサーバ処理の実行開始指示が入力されたことをトリガとして、記憶部15から読み出されて適宜RAM13に展開されたサーバ処理プログラムと、CPU11との協働でサーバ処理が実行される。
先ず、サーバ装置10とクライアント装置20との間の通信を確立するための接続要求信号を、送受信制御部16を介してクライアント装置20から受信したか否かが判別される(ステップS11)。接続要求信号が受信されていない場合(ステップS11;NO)、ステップS11に移行される。
接続要求信号が受信された場合(ステップS11;YES)、接続要求元のクライアント装置20との間の通信接続を確立する通信接続確立処理が実行される(ステップS12)。そして、送受信制御部16を介して通信接続確立中のクライアント装置20から情報が受信され、その受信された情報が、通信接続確立中のクライアント装置20との通信接続終了を要求する接続終了信号であるか否かが判別される(ステップS13)。接続終了信号が受信された場合(ステップS13;YES)、通信接続確立中のクライアント装置20との間の通信接続を終了する接続終了処理が実行され(ステップS14)、サーバ処理が終了する。
接続終了信号が受信されていない場合(ステップS13;NO)、ステップS13で受信された情報が、通信接続確立中のクライアント装置20のキーボード30のキー操作又はポインタ31の位置入力操作がなされたことを示す情報であるか否かが判別される(ステップS15)。キー操作又は位置入力操作の情報である場合(ステップS15;YES)、キー操作又は位置入力操作の情報に応じたサーバ装置10側の処理が実行される(ステップS16)。
そして、ステップS16の処理において、通信接続確立中のクライアント装置20のFBメモリ24の更新があるか(表示部25の表示画像を更新するか)否かが判別される(ステップS17)。FBメモリ24の更新がない場合(ステップS17;NO)、ステップS13に移行される。FBメモリ24の更新がある場合(ステップS17;YES)、記憶部15のキャッシュ領域151に記憶された管理テーブル1510が参照され、FBメモリ24の更新後に対応する画面情報がキャッシュ(済)データとしてキャッシュ領域151にあるか否かが判別される(ステップS18)。なお、管理テーブル1510において、FBメモリ24の更新があるクライアント装置20は、クライアント識別子1511により特定される。
キャッシュ済データがキャッシュ領域151にある場合(ステップS18;YES)、キャッシュ済データのキャッシュ描画コマンドが生成され、そのキャッシュ描画コマンドが送受信制御部16を介してFBメモリ24の更新があるクライアント装置20へ送信され(ステップS19)、ステップS13に移行される。
キャッシュ描画コマンドとは、FBメモリ24の更新があるクライアント装置20に、キャッシュ領域261からキャッシュ(済)データを読み出してFBメモリ24に格納して表示部25に表示させるコマンドであり、描画する画面情報の表示位置情報(表示部25のX座標及びY座標)と、描画指定するキャッシュデータのキャッシュ番号N(N:任意のキャッシュ番号)とを含む。
キャッシュ済データがキャッシュ領域151にない場合(ステップS18;NO)、FBメモリ24の更新後に対応する画面情報をキャッシュ化するか否かが判別される(ステップS20)。画面情報をキャッシュ化する場合(ステップS20;YES)、FBメモリ24の更新後に対応する画面情報が生成又は記憶部15から読み出され、その画面情報がキャッシュ番号Nでキャッシュ領域151に追加格納されるとともに、その画面情報の追加に応じて管理テーブル1510のレコードが追加更新される。また、そのキャッシュ番号Nと、その画面情報とを含むキャッシュ格納コマンドが生成され、そのキャッシュ格納コマンドが送受信制御部16を介してFBメモリ24の更新があるクライアント装置20へ送信される(ステップS21)。
ステップS21におけるキャッシュ番号Nは、管理テーブル1510において、通信接続確立中のクライアント装置20のクライアント識別子1511のレコードのうち、キャッシュ番号1512に使われていない番号とする。また、ステップS21におけるキャッシュ格納コマンドは、画面情報とキャッシュ番号とを含み、その画面情報を、その指定されたキャッシュ番号でキャッシュ領域261に格納させるコマンドである。また、キャッシュ格納コマンドは、格納する画面情報の縦幅、横幅及び画面情報名(ファイル名)を含む。
そして、キャッシュ番号Nを含むキャッシュ描画コマンドが送受信制御部16を介してFBメモリ24の更新があるクライアント装置20へ送信され(ステップS22)、ステップS13に移行される。
画面情報をキャッシュ化しない場合(ステップS20;NO)、FBメモリ24の更新後に対応する画面情報が生成又は記憶部15から読み出され、その画面情報のFB描画コマンドが生成され、そのFB描画コマンドが送受信制御部16を介してFBメモリ24の更新があるクライアント装置20へ送信され(ステップS23)、ステップS13に移行される。FB描画コマンドは、画面情報を含み、FBメモリ24の更新があるクライアント装置20に、その画面情報をキャッシュ領域261にキャッシュすることなくFBメモリ24に格納して表示部25に表示させるコマンドである。
キー操作又は位置入力操作の情報でない場合(ステップS15;NO)、ステップS13で受信された情報がキャッシュ再描画要求であるか否かが判別される(ステップS24)。キャッシュ再描画要求である場合(ステップS24;YES)、管理テーブル1510が参照され、キャッシュ再描画要求で指定されたキャッシュ番号N(N:任意の番号)のキャッシュデータがJPEG方式で圧縮されていない画面情報として読み出され、そのキャッシュ番号Nと、画面情報とを含むキャッシュ格納コマンドが生成され、そのキャッシュ格納コマンドが送受信制御部16を介してキャッシュ再描画要求元のクライアント装置20へ送信される(ステップS25)。
そして、ステップS25のキャッシュ格納コマンドに対応するキャッシュデータのキャッシュ描画コマンドが生成され、そのキャッシュ描画コマンドが送受信制御部16を介してキャッシュ再描画要求元のクライアント装置20へ送信され(ステップS26)、ステップS13に移行される。
キャッシュ再描画要求でない場合(ステップS24;NO)、ステップS13で受信された情報がキャッシュ破棄要求であるか否かが判別される(ステップS27)。キャッシュ破棄要求でない場合(ステップS27;NO)、ステップS13に移行される。
キャッシュ破棄要求である場合(ステップS27;YES)、管理テーブル1510が参照され、キャッシュ破棄要求で指定されたキャッシュ番号N(N:任意の番号)のキャッシュデータが破棄(削除)され、その破棄に応じて管理テーブル1510が更新され(ステップS28)、ステップS13に移行される。
なお、図6のサーバ処理のフローチャートでは表されていないが、例えば、サーバ装置10側で管理テーブル1510が壊れた等のトラブルが発生した場合等に、サーバ装置10においてキャッシュ破棄コマンドが生成され、そのキャッシュ破棄コマンドが、送受信制御部16を介してキャッシュ破棄要求先のクライアント装置20に送信される。キャッシュ破棄コマンドには、破棄するキャッシュデータのキャッシュ番号が含まれる。
次いで、図7〜図9を参照して、クライアント装置20で実行されるクライアント処理を説明する。クライアント処理は、表示部25に画面情報を表示させる処理である。クライアント装置20において、例えば、キーボード30を介してユーザからクライアント処理の実行指示が入力されたことをトリガとして、記憶部22から読み出されて適宜RAM26に展開されたクライアント処理プログラムと、CPU21との協働でクライアント処理が実行される。
図7に示すように、先ず、通信接続要求が通信部(WiFi部29に対応)を介してサーバ装置10に送信され、サーバ装置10との間の通信接続を確立する確立通信接続確立処理が実行される(ステップS31)。そして、サーバ処理のステップS19,S21,S22,S23,S25,S26等に対応して、各種情報が通信部を介してサーバ装置10から受信されたか否かが判別される(ステップS32)。
情報の受信がない場合(ステップS32;NO)、サーバ装置10との間の通信接続を終了するか否かが判別される(ステップS33)。通信接続を終了しない場合(ステップS33;NO)、ステップS32に移行される。通信接続を終了する場合(ステップS33;YES)、サーバ装置10との間の通信接続を終了する通信接続終了処理が実行され(ステップS34)、クライアント処理が終了する。
情報の受信がある場合(ステップS32;YES)、ステップS32で受信した情報が、サーバ処理のステップS19、S22又はS26に対応したキャッシュ描画コマンドであるか否かが判別される(ステップS35)。キャッシュ描画コマンドである場合(ステップS35;YES)、ステップS32で受信した情報のキャッシュ描画コマンドが解析され、その情報からキャッシュ番号N及びキャッシュ描画対象の表示位置情報が取得される(ステップS36)。
そして、ステップS36で取得されたキャッシュ番号Nに基づいて、RAM26のキャッシュ領域261に格納された管理テーブル2610が参照され、指定されたキャッシュ番号Nのキャッシュデータがキャッシュ領域261から読み出され、表示コントローラ23により、そのキャッシュデータがステップS36で取得された表示位置情報に基づいて表示部25に表示される(ステップS37)。そして、キャッシュ番号Nのキャッシュデータについての再描画要求処理が実行され(ステップS38)、ステップS32に移行される。ステップS38の再描画要求処理は、詳細に後述する。
キャッシュ描画コマンドでない場合(ステップS35;NO)、ステップS32で受信した情報が、サーバ処理のステップS21又はS25に対応したキャッシュ格納コマンドであるか否かが判別される(ステップS39)。キャッシュ格納コマンドである場合(ステップS39;YES)、ステップS32で受信した情報のキャッシュ格納コマンドが解析され、その情報からキャッシュ番号Nと、画面情報と、その画面情報の縦幅及び横幅と、画面情報名とが取得される(ステップS40)。そして、キャッシュ格納処理が実行され(ステップS41)、ステップS32に移行される。ステップS41のキャッシュ格納処理は、詳細に後述する。
キャッシュ格納コマンドでない場合(ステップS39;NO)、ステップS32で受信した情報が、キャッシュ破棄コマンドであるか否かが判別される(ステップS42)。キャッシュ破棄コマンドが含まれる場合(ステップS42;YES)、ステップS32で受信した情報のキャッシュ破棄コマンドが解析され、その情報から破棄するキャッシュ番号Nが取得される(ステップS43)。そして、管理テーブル2610が参照され、ステップS43で取得されたキャッシュ番号Nのキャッシュデータが破棄され、これに応じて管理テーブル2610が更新される(ステップS44)。
そして、ステップS44で破棄されたキャッシュ番号Nのキャッシュデータに対応するTIMERタスク処理が起動中であれば、そのTIMERタスク処理が破棄され(ステップS45)、ステップS32に移行される。TIMERタスク処理は、詳細に後述する。
キャッシュ破棄コマンドでない場合(ステップS42;NO)、ステップS32で受信した情報が、サーバ処理のステップS23に対応したFB描画コマンドであるか否かが判別される(ステップS46)。FB描画コマンドでない場合(ステップS46;NO)、ステップS32に移行される。
FB描画コマンドである場合(ステップS46;YES)、ステップS32で受信した情報のFB描画コマンドが解析され、その情報から表示する画面情報が取得される(ステップS47)。そして、表示コントローラ23により、ステップS47で取得された画面情報がFBメモリ24に格納されて表示部25に表示され(ステップS48)、ステップS32に移行される。
次いで、図8を参照して、クライアント処理のステップS38の再描画要求処理の一例としての第1の再描画要求処理を説明する。再描画要求処理は、JPEG方式で圧縮された画面情報の表示中に、再描画(表示)のため、その画面情報に対応するJPEG方式で圧縮されていない画面情報をサーバ装置10に要求する処理である。ここでは、キャッシュ番号Nのキャッシュデータについての第1の再描画要求処理を説明する。
以下、簡単のため、キャッシュ番号Nのキャッシュデータ(画面情報)をCache[N].dと表し、キャッシュ番号Nのキャッシュデータの状態(管理テーブル2610の状態2614)をCache[N].fと表す。
先ず、RAM26のキャッシュ領域261に格納された管理テーブル2610のキャッシュ番号2611及び状態2614が参照され、キャッシュ番号NのキャッシュデータについてのCache[N].fがlossy(JPEG方式の圧縮済)であるか否かが判別される(ステップS51)。Cache[N].f=lossless(JPEG方式の未圧縮)である場合(ステップS51;NO)、第1の再描画要求処理が終了する。
Cache[N].f=lossyである場合(ステップS51;YES)、サーバ処理のステップS13(及びステップS24;YES)に対応して、Cache[N].dのキャッシュ再描画要求が通信部を介してサーバ装置10へ送信され(ステップS52)、第1の再描画要求処理が終了する。
次いで、図9を参照して、クライアント処理のステップS41のキャッシュ格納処理の一例としての第1のキャッシュ格納処理を説明する。キャッシュ格納処理は、サーバ装置10から受信した画面情報をRAM26のキャッシュ領域261に格納する処理である。ここでは、キャッシュ番号Nのキャッシュデータについての第1のキャッシュ格納処理を説明する。
先ず、ステップS40で取得された画面情報がRAM26のキャッシュ領域261に格納され、その画面情報に対応しステップS40で取得されたキャッシュ番号N、縦幅、横幅、画面情報名が、新たなレコードとして、キャッシュ番号2611、縦幅2612、横幅2613、キャッシュデータ2616にセットされる(ステップS61)。そして、ステップS61における新たなレコードの状態2614(Cache[N].f)にlosslessがセットされる(ステップS62)。
そして、ステップS61,S62において、キャッシュ領域261への画面情報及び管理テーブル2610の格納が成功したか否かが判別される(ステップS63)。格納が成功した場合(ステップS63;YES)、TIMERタスク処理が起動(実行開始)され(ステップS64)、第1のキャッシュ格納処理が終了する。
格納が失敗した場合(ステップS63;NO)、ステップS61、S62の管理テーブル2610の更新が元に戻され、サーバ処理のステップS13(及びステップS27;YES)に対応して、Cache[N].dに対応するキャッシュ破棄コマンドが通信部を介してサーバ装置10へ送信され(ステップS65)、第1のキャッシュ格納処理が終了する。
次に、図10を参照して、クライアント装置20で実行されるTIMERタスク処理を説明する。TIMERタスク処理は、キャッシュ領域を有効に使用するため、キャッシュ領域261にキャッシュデータが格納されてから所定時間経過で、そのキャッシュデータをJPEG方式で圧縮する処理である。
クライアント装置20において、クライアント処理のステップS64が実行され、TIMERタスク処理の起動が指示されたことをトリガとして、記憶部22から読み出されて適宜RAM26に展開されたTIMERタスクプログラムと、CPU21との協働でTIMERタスク処理が実行される。ここでは、キャッシュ番号Nのキャッシュデータ(Cache[N].d)についてのTIMERタスク処理を説明する。また、TIMERタスク処理は、キャッシュ番号のキャッシュデータ毎に、別々に実行される。
先ず、RTC32から出力される現在日時情報に基づいて、TIMERタスク処理の実行開始から(キャッシュ領域261にキャッシュ番号Nのキャッシュデータが格納されてから)所定時間が経過したか否かが判別される(ステップS71)。ステップS71の所定時間は、予め設定されているものとする。所定時間が経過していない場合(ステップS71;NO)、ステップS71に移行される。
所定時間が経過した場合(ステップS71;YES)、RAM26のキャッシュ領域261からCache[N].dが読み出され、JPEG部27により、Cache[N].dがJPEG方式で圧縮され、圧縮済のCache[N].dがキャッシュ領域261に格納される(ステップS72)。そして、キャッシュ領域261に格納された管理テーブル2610の状態2614(Cache[N].f)にlossyが設定され(ステップS73)、TIMERタスク処理が終了する。
以上、本発明によれば、サーバ装置により生成された画面情報を受信し、受信された画面情報を圧縮し、圧縮された圧縮画面情報をキャッシュ領域に記憶し、記憶される圧縮画面情報を該クライアント装置の表示部へ出力すると共に、サーバ装置から圧縮画面情報に対応する画面情報を受信し、受信した画面情報を該クライアント装置の表示部へ出力するようにしたから、キャッシュ領域が十分確保されていないクライアント装置であっても、操作に対する表示レスポンスが早いサーバベース・コンピューティング・システムのクライアント装置、及びプログラムを提供できる。
なお本第1の実施の形態では、前記圧縮画面情報をキャッシュ領域に記憶する記憶手法を、画面情報をサーバ装置から受信してから所定時間経過後に画面情報を自動的に圧縮させて、記憶することにした。
(第2の実施の形態)
図11〜図13を参照して、本発明に係る第2の実施の形態を説明する。本第2の実施の形態では、前記圧縮画面情報のキャッシュ領域に記憶する記憶手法を、画面情報をキャッシュ領域261に記憶する際に、時間情報を合わせて記憶し、記憶される時間情報が古い画面情報を検索し、検索された画面情報を圧縮させて、記憶することにした。なお、本実施の形態の装置構成は、第1の実施の形態と同様にサーバベース・コンピューティング・システム1を用い、異なる部分を主として説明する。
本実施の形態では、クライアント装置20(20A,20B)において、RAM26のキャッシュ領域261に格納される管理テーブル2610の時間2615を使用する。
本実施の形態におけるサーバベース・コンピューティング・システム1の動作について図11〜図13を参照して説明する。図11に、本実施の形態のクライアント処理における第2の再描画要求処理の流れを示す。図12に、クライアント処理における第2のキャッシュ格納処理の流れを示す。図13に、第2のキャッシュ格納処理における第1のキャッシュJPEG化処理の流れを示す。
サーバ装置10においては、第1の実施の形態と同様に、サーバ処理が実行される。クライアント装置20においては、第1の実施の形態と同様に、クライアント処理が実行されるが、クライアント処理のステップS38の第1の再描画要求処理に代えて図11に示す第2の再描画要求処理が実行され、クライアント処理のステップS41の第1のキャッシュ格納処理に代えて図12に示す第2のキャッシュ格納処理が実行される。
図11に示すように、クライアント処理のステップS38の再描画要求処理の一例としての第2の再描画要求処理を説明する。ここでは、キャッシュ番号Nのキャッシュデータについての第2の再描画要求処理を説明する。
以下、簡単のため、キャッシュ番号Nのキャッシュデータの時間(管理テーブル2610の時間2615)をCache[N].fと表す。
先ず、RAM26のキャッシュ領域261に格納された管理テーブル2610のキャッシュ番号2611及び状態2614が参照され、キャッシュ番号NのキャッシュデータについてのCache[N].fがlossyであるか否かが判別される(ステップS81)。Cache[N].f=losslessである場合(ステップS81;NO)、Cache[N].dに対応する管理テーブル2610の時間2615(Cache[N].t)に、RTC32から出力される現在日時情報に基づくタイムスタンプが設定され(ステップS82)、第2の再描画要求処理が終了する。
Cache[N].f=lossyである場合(ステップS81;YES)、サーバ処理のステップS13(及びステップS24;YES)に対応して、Cache[N].dの再描画要求が通信部を介してサーバ装置10へ送信され(ステップS83)、第2の再描画要求処理が終了する。
次いで、図12を参照して、クライアント処理のステップS41のキャッシュ格納処理の一例としての第2のキャッシュ格納処理を説明する。ここでは、キャッシュ番号Nのキャッシュデータについての第2のキャッシュ格納処理を説明する。
先ず、RAM26のキャッシュ領域261に、クライアント処理のステップS40で取得されたキャッシュ番号Nの画面情報を格納するための空き容量がなく、キャッシュ領域261の容量が不足しているか否かが判別される(ステップS91)。キャッシュ領域261が不足している場合(ステップS91;YES)、キャッシュJPEG化処理が実行される(ステップS92)。ステップS92のキャッシュJPEG化処理は、詳細に後述する。
そして、ステップS40で取得された画面情報がRAM26のキャッシュ領域261に格納され、その画面情報に対応しステップS40で取得されたキャッシュ番号N、縦幅、横幅、画面情報名が、新たなレコードとして、キャッシュ番号2611、縦幅2612、横幅2613、キャッシュデータ2616にセットされる(ステップS93)。
キャッシュ領域261が不足していない場合(ステップS91;NO)、キャッシュ番号Nのキャッシュデータに対応する状態2614(Cache[N].f)にlosslessがセットされ(ステップS94)、ステップS93に移行される。
ステップS93の実行後、Cache[N].dに対応する管理テーブル2610の時間2615(Cache[N].t)に、RTC32から出力される現在日時情報に基づくタイムスタンプが設定される(ステップS95)。そして、ステップS93,S95において、キャッシュ領域261への画面情報及び管理テーブル2610の格納が成功したか否かが判別される(ステップS96)。格納が成功した場合(ステップS96;YES)、第2のキャッシュ格納処理が終了する。
格納が失敗した場合(ステップS96;NO)、ステップS93,S95の管理テーブル2610の更新が元に戻され、サーバ処理のステップS13(及びステップS27;YES)に対応して、Cache[N].dに対応するキャッシュ破棄コマンドが通信部を介してサーバ装置10へ送信され(ステップS97)、第2のキャッシュ格納処理が終了する。
次いで、図13を参照して、第2のキャッシュ格納処理のステップS92のキャッシュJPEG化処理の一例としての第1のキャッシュJPEG化処理を説明する。
先ず、RAM26のキャッシュ領域261の管理テーブル2610が参照され、状態2614(Cache[N].f)がlosslessであるレコードが検索される(ステップS101)。そして、ステップS101でlosslessであるレコードが検索されたか否かが判別される(ステップS102)。losslessであるレコードが検索されなかった場合(ステップS102;NO)、第1のキャッシュJPEG化処理が終了する。
losslessであるレコードが検索された場合(ステップS102;YES)、検索されたlosslessであるレコードのうち、一番古いタイムスタンプの時間2615(Cache[N].t)のレコードが検索される(ステップS103)。そして、ステップS103で検索されたlosslessで一番古いタイムスタンプのレコードに対応するキャッシュデータがCache[M].d(M:任意のキャッシュ番号)とされ、キャッシュ領域261からCache[M].dが読み出され、JPEG部27によりCache[M].dがJPEG方式で圧縮され、再度キャッシュ領域261に格納される(ステップS104)。
そして、Cache[M].dに対応する状態2614(Cache[M].f)にlossyがセットされ(ステップS105)、第1のキャッシュJPEG化処理が終了する。
以上、本第2の実施の形態によれば、クライアント装置20は、キャッシュ領域261に記憶された画面情報の表示時及び記憶時のタイムスタンプを時間2615として管理し、キャッシュ領域261に記憶された画面情報(キャッシュデータ)のうちタイムスタンプが最も古い画面情報を検索してJPEG部27で圧縮する。このため、タイムスタンプが古く表示に使用されない可能性が高い画面情報を圧縮してキャッシュ領域261に格納し、キャッシュ領域261をさらに効率的に使用できる。
(第3の実施の形態)
図14〜図16を参照して、本発明に係る第3の実施の形態を説明する。本第3の実施の形態では、前記圧縮画面情報のキャッシュ領域に記憶する記憶手法を、画面情報が出力される回数を計算し、画面情報と計算された回数とを対応付けて記憶し、計算された回数が少ない画面情報を検索し、検索された画面情報を圧縮させて、記憶することにした。
なお、本実施の形態の装置構成も、第1の実施の形態と同様にサーバベース・コンピューティング・システム1を用い、異なる部分を主として説明する。
本実施の形態では、クライアント装置20(20A,20B)において、RAM26のキャッシュ領域261に格納される管理テーブル2610で、時間2615に代えて、カウント数(図示略)の項目を設けるものとする。
本実施の形態におけるサーバベース・コンピューティング・システム1の動作について図14〜図16を参照して説明する。図14に、本実施の形態のクライアント処理における第3の再描画要求処理の流れを示す。図15に、クライアント処理における第3のキャッシュ格納処理の流れを示す。図16に、第3のキャッシュ格納処理における第2のキャッシュJPEG化処理の流れを示す。
サーバ装置10においては、第1の実施の形態と同様に、サーバ処理が実行される。クライアント装置20においては、第1の実施の形態と同様に、クライアント処理が実行されるが、クライアント処理のステップS38の第1の再描画要求処理に代えて図13に示す第3の再描画要求処理が実行され、クライアント処理のステップS41の第1のキャッシュ格納処理に代えて図14に示す第3のキャッシュ格納処理が実行される。
図13に示すように、クライアント処理のステップS38の再描画要求処理の一例としての第3の再描画要求処理を説明する。ここでは、キャッシュ番号Nのキャッシュデータについての第3の再描画要求処理を説明する。
以下、簡単のため、キャッシュ番号Nのキャッシュデータのカウント数(管理テーブル2610のカウント数の項目のデータ)をCache[N].cと表す。Cache[N].cの初期値は、0であるものとする。
先ず、RAM26のキャッシュ領域261に格納された管理テーブル2610のキャッシュ番号2611及び状態2614が参照され、キャッシュ番号NのキャッシュデータについてのCache[N].fがlossyであるか否かが判別される(ステップS111)。Cache[N].f=losslessである場合(ステップS111;NO)、Cache[N].dに対応する管理テーブル2610のカウント数(Cache[N].c)が1インクリメントされ(ステップS112)、第3の再描画要求処理が終了する。
Cache[N].f=lossyである場合(ステップS111;YES)、サーバ処理のステップS13(及びステップS24;YES)に対応して、Cache[N].dの再描画要求が通信部を介してサーバ装置10へ送信され(ステップS113)、第3の再描画要求処理が終了する。
次いで、図15を参照して、クライアント処理のステップS41のキャッシュ格納処理の一例としての第3のキャッシュ格納処理を説明する。ここでは、キャッシュ番号Nのキャッシュデータについての第3のキャッシュ格納処理を説明する。
先ず、RAM26のキャッシュ領域261に、クライアント処理のステップS40で取得されたキャッシュ番号Nの画面情報を格納するための空き容量がなく、キャッシュ領域261の容量が不足しているか否かが判別される(ステップS121)。キャッシュ領域261が不足している場合(ステップS121;YES)、キャッシュJPEG化処理が実行される(ステップS122)。ステップS122のキャッシュJPEG化処理は、詳細に後述する。
そして、ステップS40で取得された画面情報がRAM26のキャッシュ領域261に格納され、その画面情報に対応しステップS40で取得されたキャッシュ番号N、縦幅、横幅、画面情報名が、新たなレコードとして、キャッシュ番号2611、縦幅2612、横幅2613、キャッシュデータ2616にセットされる(ステップS123)。
キャッシュ領域261が不足していない場合(ステップS121;NO)、キャッシュ番号Nのキャッシュデータに対応する状態2614(Cache[N].f)にlosslessがセットされ(ステップS124)、ステップS123に移行される。
ステップS123の実行後、Cache[N].dに対応する管理テーブル2610のカウント数(Cache[N].c)に0が設定される(ステップS125)。そして、ステップS123,S125において、キャッシュ領域261への画面情報及び管理テーブル2610の格納が成功したか否かが判別される(ステップS126)。格納が成功した場合(ステップS126;YES)、第3のキャッシュ格納処理が終了する。
格納が失敗した場合(ステップS126;NO)、ステップS123,S125の管理テーブル2610の更新が元に戻され、サーバ処理のステップS13(及びステップS27;YES)に対応して、Cache[N].dに対応するキャッシュ破棄コマンドが通信部を介してサーバ装置10へ送信され(ステップS127)、第3のキャッシュ格納処理が終了する。
次いで、図16を参照して、第3のキャッシュ格納処理のステップS122のキャッシュJPEG化処理の一例としての第2のキャッシュJPEG化処理を説明する。
先ず、RAM26のキャッシュ領域261の管理テーブル2610が参照され、状態2614(Cache[N].f)がlosslessであるレコードが検索される(ステップS131)。そして、ステップS131でlosslessであるレコードが検索されたか否かが判別される(ステップS132)。losslessであるレコードが検索されなかった場合(ステップS132;NO)、第2のキャッシュJPEG化処理が終了する。
losslessであるレコードが検索された場合(ステップS132;YES)、検索されたlosslessであるレコードのうち、一番カウント数の項目が小さい値のレコードが検索される(ステップS133)。そして、ステップS133で検索されたlosslessで一番カウント数が少ないレコードに対応するキャッシュデータがCache[M].d(M:任意のキャッシュ番号)とされ、キャッシュ領域261からCache[M].dが読み出され、JPEG部27によりCache[M].dがJPEG方式で圧縮され、再度キャッシュ領域261に格納される(ステップS134)。
そして、Cache[M].dに対応する状態2614(Cache[M].f)にlossyがセットされ(ステップS135)、第2のキャッシュJPEG化処理が終了する。
以上、本第3の実施の形態によれば、クライアント装置20は、キャッシュ領域261に記憶された画面情報の使用頻度を管理テーブル2610のカウント数として管理し、キャッシュ領域261に記憶された画面情報(キャッシュデータ)のうちカウント数の最も少ない画面情報を検索してJPEG部27で圧縮する。このため、カウント数が少なく表示に使用されない可能性が高い画面情報を圧縮してキャッシュ領域261に格納し、キャッシュ領域261をさらに効率的に使用できる。
(第1の変形例)
図17を参照して、上記第2及び第3の実施の形態の第1の変形例を説明する。本第1の変形例では、前記圧縮画面情報のキャッシュ領域に記憶する記憶手法を、キャッシュ領域261に記憶される画面情報のサイズが最も大きい画面情報を圧縮させて、記憶することにした。図17に、本変形例の第3のキャッシュJPEG化処理の流れを示す。
本第1の変形例は、第2の実施の形態における第2のキャッシュ格納処理のステップS92の第2のキャッシュJPEG化処理に代えて、図17に示す第3のキャッシュJPEG化処理を実行するものとする。但し、第2の再描画要求処理のステップS82と、第2のキャッシュ格納処理のステップS95とは実行されない。
また、第3の実施の形態における第3のキャッシュ格納処理のステップS122の第2のキャッシュJPEG化処理に代えて、図17に示す第3のキャッシュJPEG化処理を実行するものとする。但し、第3の再描画要求処理のステップS112と、第3のキャッシュ格納処理のステップS125とは実行されない。
図17を参照して、第3のキャッシュJPEG化処理を説明する。以下、簡単のため、キャッシュ番号Nのキャッシュデータの縦幅(管理テーブル2610の縦幅2612)をCache[N].hと表し、キャッシュ番号Nのキャッシュデータの横幅(管理テーブル2610の横幅2613)をCache[N].wと表す。
先ず、RAM26のキャッシュ領域261の管理テーブル2610が参照され、状態2614(Cache[N].f)がlosslessであるレコードが検索される(ステップS141)。そして、ステップS141でlosslessであるレコードが検索されたか否かが判別される(ステップS142)。losslessであるレコードが検索されなかった場合(ステップS142;NO)、第3のキャッシュJPEG化処理が終了する。
losslessであるレコードが検索された場合(ステップS142;YES)、検索されたlosslessであるレコードのうち、管理テーブル2610の縦幅2612(Cache[N].h)及び横幅2613(Cache[N].w)が一番大きい値のレコードが検索される(ステップS143)。ステップS143では、例えば、Cache[N].h ×Cache[N].wの値が最も大きいレコードが検索される。
そして、ステップS143で検索されたlosslessでCache[N].h 、Cache[N].wが一番大きいレコードに対応するキャッシュデータがCache[M].d(M:任意のキャッシュ番号)とされ、キャッシュ領域261からCache[M].dが読み出され、JPEG部27によりCache[M].dがJPEG方式で圧縮され、再度キャッシュ領域261に格納される(ステップS144)。そして、Cache[M].dに対応する状態2614(Cache[M].f)にlossyがセットされ(ステップS145)、第3のキャッシュJPEG化処理が終了する。
以上、本第1の変形例によれば、クライアント装置20は、キャッシュ領域261に記憶された画面情報のサイズ(容量)を管理テーブル2610の縦幅2612及び横幅2613として管理し、キャッシュ領域261に記憶された画面情報(キャッシュデータ)のうち容量が最も大きい画面情報を検索してJPEG部27で圧縮する。このため、容量が大きく圧縮により空き容量を多くできる可能性が高い画面情報を圧縮してキャッシュ領域261に格納し、キャッシュ領域261をさらに効率的に使用できる。
(第2の変形例)
図18を参照して、上記第2及び第3の実施の形態の第2の変形例を説明する。本第2の変形例では、前記圧縮画面情報のキャッシュ領域に記憶する記憶手法を、圧縮手段で圧縮される画面情報の圧縮率を算出し、算出された圧縮率の高い画面情報を検索し、検索された画面情報を圧縮させて、記憶することにした。図18に、本変形例の第4のキャッシュJPEG化処理の流れを示す。
本第2の変形例は、第2の実施の形態における第2のキャッシュ格納処理のステップS92の第2のキャッシュJPEG化処理に代えて、図18に示す第4のキャッシュJPEG化処理を実行するものとする。但し、第2の再描画要求処理のステップS82と、第2のキャッシュ格納処理のステップS95とは実行されない。
また、第3の実施の形態における第3のキャッシュ格納処理のステップS122の第2のキャッシュJPEG化処理に代えて、図18に示す第4のキャッシュJPEG化処理を実行するものとする。但し、第3の再描画要求処理のステップS112と、第3のキャッシュ格納処理のステップS125とは実行されない。
図18を参照して、第4のキャッシュJPEG化処理を説明する。先ず、RAM26のキャッシュ領域261の管理テーブル2610が参照され、状態2614(Cache[N].f)がlosslessであるレコードが検索される(ステップS151)。そして、ステップS151でlosslessであるレコードが検索されたか否かが判別される(ステップS152)。losslessであるレコードが検索されなかった場合(ステップS152;NO)、第4のキャッシュJPEG化処理が終了する。
losslessであるレコードが検索された場合(ステップS152;YES)、検索されたlosslessである各レコードのキャッシュデータについて、画面情報サイズが取得され、各レコードのキャッシュデータがJPEG部27によりJPEG方式で圧縮され、各レコードのJPEG方式の圧縮後の画面情報サイズが取得される(ステップS153)。
そして、ステップS153で取得された各レコードのキャッシュデータにおけるJPEG方式の圧縮前と圧縮後との画面情報サイズに基づいて、各レコードのキャッシュデータにおけるJPEG方式の圧縮前に対する圧縮後の圧縮率(画面情報のデータサイズ比)が算出されて取得される(ステップS154)。そして、ステップS154で取得された各レコードのキャッシュデータのうち、一番圧縮率が高いレコードが検索される(ステップS155)。
JPEG方式による圧縮率は、画像の劣化度合いを同等とすれば、画面情報の画像内容により異なる。例えば、画面情報の画像内容が自然の風景の画像であれば、圧縮率が高くなり、画面情報の画像内容が文章等の画像であれば、圧縮率が低くなる。
そして、ステップS155で取得された一番圧縮率の高いレコードのJPEG方式の圧縮後のキャッシュデータがCache[M].d(M:任意のキャッシュ番号)とされ、一番圧縮率の高いレコード以外のキャッシュデータは、圧縮前の状態でキャッシュ領域261に格納される(ステップS156)。そして、Cache[M].dに対応する状態2614(Cache[M].f)にlossyがセットされ(ステップS157)、第4のキャッシュJPEG化処理が終了する。
以上、本第2の変形例によれば、クライアント装置20は、キャッシュ領域261に記憶された画面情報の圧縮率を算出し、キャッシュ領域261に記憶された画面情報(キャッシュデータ)のうち圧縮率が最も高い画面情報を検索してJPEG部27で圧縮する。このため、圧縮率が高く圧縮により空き容量が多く生成できる画面情報を圧縮してキャッシュ領域261に格納し、キャッシュ領域261をさらに効率的に使用できる。
なお、上記実施の形態における記述は、本発明に係るクライアント装置20及びプログラムの一例であり、これに限定されるものではない。
上記第2の変形例では、RAM26のキャッシュ領域261に格納された画面情報を実際に圧縮することで圧縮率を算出して取得する構成であるが、これに限定されるものではない。例えば、キャッシュ領域261に格納された画面情報を実際に圧縮することなく、その画像内容を判別することで圧縮率を判別(又は推定)して取得する構成としてもよい。
また、上記各実施の形態及び各変形例では、JPEG方式で画面情報を圧縮する構成としたが、これに限定されるものではない。例えば、JPEG200方式等の圧縮率が比較的大きい非可逆の他の圧縮方式で圧縮することとしてもよい。また、JPEG方式等の圧縮率の高い圧縮方式を、圧縮率の低い他の圧縮方式と組み合わせて使用する構成としてもよい。さらに、JPEG部27に代えて、CPU11で画面情報の圧縮を行う構成としてもよい。
また、上記各実施の形態及び各変形例の少なくとも2つを組み合わせた構成としてもよい。
また、上記実施の形態におけるサーバベース・コンピューティング・システム1の各構成要素の細部構成及び細部動作に関しては、本発明の趣旨を逸脱することのない範囲で適宜変更可能であることは勿論である。