(57)【特許請求の範囲】
【請求項１】
ユーザが使用する第１のコンピュータと、
前記第１のコンピュータに単位データを提供する第２のコンピュータと
を含み、
前記第１のコンピュータは、
仮想マシンを生成する仮想マシンモニタと、
前記第２のコンピュータから取得された単位データを格納する第１記憶手段と、
前記第１のコンピュータにおいて前記仮想マシン上で起動するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の動作前に単位データを前記第２のコンピュータから取得する事前単位データ取得手段と、
前記ＯＳの動作中に前記ＯＳが要求する単位データを前記第２のコンピュータから取得するオンデマンド単位データ取得手段と
を具備し、
前記第２のコンピュータは、
前記第１のコンピュータに提供される単位データを格納する第２記憶手段と、
前記事前単位データ取得手段により前記ＯＳの動作前に取得される単位データの情報が記載された送信ファイルリストを作成する単位データ判定手段と、
前記ＯＳの動作前に前記送信ファイルリストに情報が記載されている単位データを前記事前単位データ取得手段へ送信し、前記ＯＳの動作中に前記オンデマンド単位データ取得手段から要求された単位データを、前記オンデマンド単位データ取得手段へ送信する単位データ転送手段と
を具備し、
前記単位データは、ファイルであり、
前記事前単位データ取得手段は、前記仮想マシンの動作前にファイルを取得し、前記仮想マシンの動作前に取得しなかったファイルについて、ダミーデータを持つファイルを作成し、
前記オンデマンド単位データ取得手段は、前記仮想マシンの動作中に前記仮想マシンが要求するファイルのデータを取得し、前記取得されたデータで、前記作成されたファイルのダミーデータを差し替え、
前記単位データ判定手段は、前記送信ファイルリストに、前記事前単位データ取得手段により前記仮想マシンの動作前に取得されるファイルの情報を記載し、
前記単位データ転送手段は、前記仮想マシンの動作前に前記送信ファイルリストに情報が記載されているファイルを前記事前単位データ取得手段へ送信し、前記仮想マシンの動作中に前記オンデマンド単位データ取得手段から要求されたファイルを、前記オンデマンド単位データ取得手段へ送信する
ネットブート型シンクライアントシステム。
【請求項２】
請求項１に記載のシンクライアントシステムであって、
前記事前単位データ取得手段は、ファイル毎に特定パターンのダミーデータを作成し、ファイル毎にデータのパターンとファイル名とを対応付けて記録したシグネチャリストを作成し、
前記オンデマンド単位データ取得手段は、前記第１記憶手段から読み込まれたセクタのデータのパターンが前記シグネチャリストに記載されているか否か判定し、前記読み込まれたセクタのデータのパターンが前記シグネチャリストに記載されていた場合、前記シグネチャリストから前記データのパターンに対応するファイル名を検出し、前記検出されたファイル名に対応するファイルのデータを前記単位データ転送手段から取得する
ネットブート型シンクライアントシステム。
【請求項３】
請求項１又は２に記載のシンクライアントシステムであって、
前記単位データは、セクタのデータであり、
前記事前単位データ取得手段は、前記仮想マシンの動作前にセクタのデータを取得し、
前記オンデマンド単位データ取得手段は、前記仮想マシンの動作中に前記仮想マシンが要求するセクタのデータを取得し、
前記単位データ判定手段は、前記送信ファイルリストに、前記事前単位データ取得手段により前記仮想マシンの動作前に取得されるセクタの情報を記載し、
前記単位データ転送手段は、前記仮想マシンの動作前に前記送信ファイルリストに情報が記載されているセクタを前記事前単位データ取得手段へ送信し、前記仮想マシンの動作中に前記オンデマンド単位データ取得手段から要求されたセクタを、前記オンデマンド単位データ取得手段へ送信する
ネットブート型シンクライアントシステム。
【請求項４】
請求項３に記載のシンクライアントシステムであって、
前記事前単位データ取得手段は、前記仮想マシンの動作前に特定パターンのダミーデータを作成し、
前記オンデマンド単位データ取得手段は、前記仮想マシンの動作中に前記第２記憶手段から読み込まれたセクタのデータがパターンを含むか否かを判定し、前記第２記憶手段から読み込まれたセクタのデータがパターンを含む場合、前記読み込まれたセクタのデータのパターンと前記特定パターンとを比較し、前記読み込まれたセクタのデータがダミーデータか否かを判定し、前記読み込まれたセクタのデータがダミーデータである場合、前記読み込まれたセクタのデータを前記単位データ転送手段から取得する
ネットブート型シンクライアントシステム。
【請求項５】
ユーザが使用する第１のコンピュータと、
前記第１のコンピュータに、ファイル単位、セクタ単位、又はクラスタ単位のいずれかの単位で記憶手段に格納可能なデータである単位データを提供する第２のコンピュータと
を含み、
前記第１のコンピュータは、
前記第２のコンピュータから取得された単位データを格納する第１記憶手段と、
前記第１のコンピュータのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の動作前に単位データを前記第２のコンピュータから取得する事前単位データ取得手段と、
前記ＯＳの動作中に前記ＯＳが要求する単位データを前記第２のコンピュータから取得するオンデマンド単位データ取得手段と、
を具備し、
前記第２のコンピュータは、
前記第１のコンピュータに提供される単位データを格納する第２記憶手段と、
前記事前単位データ取得手段により前記ＯＳの動作前に取得される単位データの情報が記載された送信ファイルリストを作成する単位データ判定手段と、
前記ＯＳの動作前に前記送信ファイルリストに情報が記載されている単位データを前記事前単位データ取得手段へ送信し、前記ＯＳの動作中に前記オンデマンド単位データ取得手段から要求された単位データを、前記オンデマンド単位データ取得手段へ送信する単位データ転送手段と
を具備し、
前記事前単位データ取得手段は、前記ＯＳの動作前に、前記単位データ転送手段から取得していない単位データの情報が記載された未取得単位データリストを作成し、
前記オンデマンド単位データ取得手段は、前記ＯＳの動作中に、前記ＯＳによる前記単位データの読み込みの要求をフック（ｈｏｏｋ）し、前記未取得単位データリストに前記単位データが記録されていた場合、前記単位データ転送手段に対して、前記単位データの送信要求を送信し、前記単位データを取得すると、前記単位データの情報を前記未取得単位データリストから削除する
ネットブート型シンクライアントシステム。
【請求項６】
ユーザが使用する第１のコンピュータと、
前記第１のコンピュータに、ファイル単位、セクタ単位、又はクラスタ単位のいずれかの単位で記憶手段に格納可能なデータである単位データを提供する第２のコンピュータと
を含み、
前記第１のコンピュータは、
前記第２のコンピュータから取得された単位データを格納する第１記憶手段と、
前記第１のコンピュータのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の動作前に単位データを前記第２のコンピュータから取得する事前単位データ取得手段と、
前記ＯＳの動作中に前記ＯＳが要求する単位データを前記第２のコンピュータから取得するオンデマンド単位データ取得手段と、
を具備し、
前記第２のコンピュータは、
前記第１のコンピュータに提供される単位データを格納する第２記憶手段と、
前記事前単位データ取得手段により前記ＯＳの動作前に取得される単位データの情報が記載された送信ファイルリストを作成する単位データ判定手段と、
前記ＯＳの動作前に前記送信ファイルリストに情報が記載されている単位データを前記事前単位データ取得手段へ送信し、前記ＯＳの動作中に前記オンデマンド単位データ取得手段から要求された単位データを、前記オンデマンド単位データ取得手段へ送信する単位データ転送手段と
を具備し、
前記単位データ判定手段は、
前記オンデマンド単位データ取得手段から単位データの使用状況に関する情報を受信し、前記受信された情報に基づいて、使用頻度の高い単位データのリスト及び最近使用した単位データのリストのうち少なくとも１つのリストを作成し、前記作成されたリストを前記送信ファイルリストとして前記単位データ転送手段へ渡す手段と、
管理者が指定した日時よりも新しい更新日時の単位データのリストを作成し、前記作成されたリストを前記送信ファイルリストとして前記単位データ転送手段へ渡す手段と、
管理者から与えられたリストを前記送信ファイルリストとして前記単位データ転送手段へ渡す手段と、
前記単位データ転送手段へ渡すリストをマージ（統合）し、前記マージされたリストを前記送信ファイルリストとして前記単位データ転送手段へ渡す手段と、
のうち少なくとも１つを具備する
ネットブート型シンクライアントシステム。
【請求項７】
請求項１乃至６のいずれか一項に記載のシンクライアントシステムであって、
前記オンデマンド単位データ取得手段は、ファイルシステムの情報を書き換えずに、ファイルのデータを差し替える
ネットブート型シンクライアントシステム。
【請求項８】
請求項１乃至７のいずれか一項に記載のシンクライアントシステムであって、
前記単位データ転送手段は、前記ＯＳの動作前に、前記事前単位データ取得手段へ送信しなかった単位データの情報が記載された未送信単位データリストを作成して、前記未送信単位データリストを前記事前単位データ取得手段へ送信し、
前記事前単位データ取得手段は、前記ＯＳの動作前に、前記未送信単位データリストに記載されている単位データについて、ダミーデータを作成する
ネットブート型シンクライアントシステム。
【請求項９】
請求項１乃至８のいずれか一項に記載のネットブート型シンクライアントシステムで、第１のコンピュータ及び第２のコンピュータのうち少なくとも一方の機能を有するコンピュータ。
【請求項１０】
ネットブート型シンクライアントシステムにおいて、ユーザにより使用される第１のコンピュータが、第２のコンピュータから単位データを取得するためのシンクライアント実施方法であって、
前記第１のコンピュータが、仮想マシンモニタにより仮想マシンを生成することと、
前記第１のコンピュータが、前記第１のコンピュータにおいて前記仮想マシン上で起動するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の動作前に単位データを前記第２のコンピュータから取得することと、
前記第１のコンピュータが、前記ＯＳの動作中に前記ＯＳが要求する単位データを前記第２のコンピュータから取得することと、
前記第２のコンピュータが、前記第１のコンピュータにより前記ＯＳの動作前に取得される単位データの情報が記載された送信ファイルリストを作成することと、
前記第２のコンピュータが、前記ＯＳの動作前に前記送信ファイルリストに情報が記載されている単位データを前記第１のコンピュータへ送信し、前記ＯＳの動作中に前記第１のコンピュータから要求された単位データを、前記第１のコンピュータへ送信すること
を含み、
前記単位データは、ファイルであり、
前記第１のコンピュータが、前記仮想マシンの動作前にファイルを取得し、前記仮想マシンの動作前に取得しなかったファイルについて、ダミーデータを持つファイルを作成することと、
前記第１のコンピュータが、前記仮想マシンの動作中に前記仮想マシンが要求するファイルのデータを取得し、前記取得されたデータで、前記作成されたファイルのダミーデータを差し替えることと、
前記第２のコンピュータが、前記送信ファイルリストに、前記第１のコンピュータにより前記仮想マシンの動作前に取得されるファイルの情報を記載することと、
前記第２のコンピュータが、前記仮想マシンの動作前に前記送信ファイルリストに情報が記載されているファイルを前記第１のコンピュータへ送信し、前記仮想マシンの動作中に前記第１のコンピュータから要求されたファイルを、前記第１のコンピュータへ送信することと
を更に含む
シンクライアント実施方法。
【請求項１１】
請求項１０に記載のシンクライアント実施方法であって、
前記第１のコンピュータが、ファイル毎に特定パターンのダミーデータを作成し、ファイル毎にデータのパターンとファイル名とを対応付けて記録したシグネチャリストを作成することと、
前記第１のコンピュータが、前記第２のコンピュータから提供された前記ファイルに対応するセクタのデータのパターンが前記シグネチャリストに記載されているか否か判定し、前記提供されたセクタのデータのパターンが前記シグネチャリストに記載されていた場合、前記シグネチャリストから前記データのパターンに対応するファイル名を検出し、前記検出されたファイル名に対応するファイルのデータを前記第２のコンピュータから取得することと
を更に含む
シンクライアント実施方法。
【請求項１２】
請求項１０又は１１に記載のシンクライアント実施方法であって、
前記単位データは、セクタのデータであり、
前記第１のコンピュータが、前記仮想マシンの動作前にセクタのデータを取得することと、
前記第１のコンピュータが、前記仮想マシンの動作中に前記仮想マシンが要求するセクタのデータを取得することと、
前記第２のコンピュータが、前記送信ファイルリストに、前記第１のコンピュータにより前記仮想マシンの動作前に取得されるセクタの情報を記載し、
前記第２のコンピュータが、前記仮想マシンの動作前に前記送信ファイルリストに情報が記載されているセクタを前記第１のコンピュータへ送信し、前記仮想マシンの動作中に前記第１のコンピュータから要求されたセクタを、前記第１のコンピュータへ送信することと
を更に含む
シンクライアント実施方法。
【請求項１３】
請求項１２に記載のシンクライアント実施方法であって、
前記第１のコンピュータが、前記仮想マシンの動作前に特定パターンのダミーデータを作成することと、
前記第１のコンピュータが、前記仮想マシンの動作中に前記第２のコンピュータから提供されたセクタのデータがパターンを含むか否かを判定し、前記第２のコンピュータから提供されたセクタのデータがパターンを含む場合、前記提供されたセクタのデータのパターンと前記特定パターンとを比較し、前記提供されたセクタのデータがダミーデータか否かを判定し、前記提供されたセクタのデータがダミーデータである場合、前記提供されたセクタのデータを前記第２のコンピュータから取得することと
を更に含む
シンクライアント実施方法。
【請求項１４】
ネットブート型シンクライアントシステムにおいて、ユーザにより使用される第１のコンピュータが、第２のコンピュータから、ファイル単位、セクタ単位、又はクラスタ単位のいずれかの単位で記憶手段に格納可能なデータである単位データを取得するためのシンクライアント実施方法であって、
前記第１のコンピュータが、前記第１のコンピュータのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の動作前に単位データを前記第２のコンピュータから取得することと、
前記第１のコンピュータが、前記ＯＳの動作中に前記ＯＳが要求する単位データを前記第２のコンピュータから取得することと、
前記第２のコンピュータが、前記第１のコンピュータにより前記ＯＳの動作前に取得される単位データの情報が記載された送信ファイルリストを作成することと、
前記第２のコンピュータが、前記ＯＳの動作前に前記送信ファイルリストに情報が記載されている単位データを前記第１のコンピュータへ送信し、前記ＯＳの動作中に前記第１のコンピュータから要求された単位データを、前記第１のコンピュータへ送信すること
を含み、
前記第１のコンピュータが、前記ＯＳの動作前に、前記第２のコンピュータから取得していない単位データの情報が記載された前記未取得単位データリストを作成することと、
前記第１のコンピュータが、前記ＯＳの動作中に、前記ＯＳによる前記単位データの読み込みの要求をフック（ｈｏｏｋ）し、前記未取得単位データリストに前記単位データが記録されていた場合、前記第２のコンピュータに対して、前記単位データの送信要求を送信し、前記単位データを取得すると、前記単位データの情報を前記未取得単位データリストから削除すること
を更に含む
シンクライアント実施方法。
【請求項１５】
ネットブート型シンクライアントシステムにおいて、ユーザにより使用される第１のコンピュータが、第２のコンピュータから、ファイル単位、セクタ単位、又はクラスタ単位のいずれかの単位で記憶手段に格納可能なデータである単位データを取得するためのシンクライアント実施方法であって、
前記第１のコンピュータが、前記第１のコンピュータのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の動作前に単位データを前記第２のコンピュータから取得することと、
前記第１のコンピュータが、前記ＯＳの動作中に前記ＯＳが要求する単位データを前記第２のコンピュータから取得することと、
前記第２のコンピュータが、前記第１のコンピュータにより前記ＯＳの動作前に取得される単位データの情報が記載された送信ファイルリストを作成することと、
前記第２のコンピュータが、前記ＯＳの動作前に前記送信ファイルリストに情報が記載されている単位データを前記第１のコンピュータへ送信し、前記ＯＳの動作中に前記第１のコンピュータから要求された単位データを、前記第１のコンピュータへ送信すること
を含み、
前記第２のコンピュータが、
前記第１のコンピュータから単位データの使用状況に関する情報を受信し、前記受信された情報に基づいて、使用頻度の高い単位データのリスト及び最近使用した単位データのリストのうち少なくとも１つのリストを前記送信ファイルとして作成し、前記送信ファイルリストに応じて取得した単位データを第１のコンピュータに送信することと、
管理者が指定した日時よりも新しい更新日時の単位データのリストを前記送信ファイルとして作成し、前記送信ファイルリストに応じて取得した単位データを第１のコンピュータに送信することと、
管理者から与えられた前記送信ファイルリストに応じて取得した単位データを第１のコンピュータに送信することと、
前記第１のコンピュータへ送信するリストをマージ（統合）し、前記マージされたリストを前記送信ファイルとし、前記送信ファイルリストに応じて取得した単位データを第１のコンピュータに送信すること
のうち少なくとも１つを行うこと
を更に含む
シンクライアント実施方法。
【請求項１６】
請求項１０乃至１５のいずれか一項に記載のシンクライアント実施方法であって、
前記第１のコンピュータが、ファイルシステムの情報を書き換えずに、ファイルのデータを差し替えること
を更に含む
シンクライアント実施方法。
【請求項１７】
請求項１０乃至１６のいずれか一項に記載のシンクライアント実施方法であって、
前記第２のコンピュータが、前記ＯＳの動作前に、前記第１のコンピュータへ送信しなかった単位データの情報が記載された未送信単位データリストを作成して、前記未送信単位データリストを前記第１のコンピュータへ送信することと、
前記第１のコンピュータが、前記ＯＳの動作前に、前記未送信単位データリストに記載されている単位データについて、ダミーデータを作成することと
を更に含む
シンクライアント実施方法。
【請求項１８】
請求項１０乃至１７のいずれか一項に記載のシンクライアント実施方法における第１のコンピュータ及び第２のコンピュータのうち少なくとも一方の動作を、コンピュータに実行させるためのシンクライアント用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シンクライアントシステム、シンクライアント実施方法、及びシンクライアント用プログラムに関し、特に応答速度を向上させることができるシンクライアントシステム、シンクライアント実施方法、及びシンクライアント用プログラムに関する。
【背景技術】
【０００２】
従来のシンクライアントシステムは、画面転送型シンクライアントシステムと、ネットブート型シンクライアントシステムに分類される（非特許文献１）。【０００３】
画面転送型シンクライアントシステムは、サーバで動作しているＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の画面をクライアントへ転送し、クライアントのキーボードやマウスの入力をサーバへ転送する方式である。画面転送型は、サーバでＯＳが実行されるため、高速なＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央処理装置）や大きなメモリを備えたサーバシステムが必要である。【０００４】
一方、ネットブート型は、クライアントがサーバから、アプリケーション（アプリケーションソフトウェア）やユーザデータをダウンロードして実行し、変更されたファイルを、サーバへアップロードする方式である。ネットブート型シンクライアントシステムは、ストレージのみを備え、クライアントが直接ストレージのリードライトを行う。【０００５】
更に、ネットブート型シンクライアントシステムは、事前ダウンロード方式と、オンデマンド方式に分類される。【０００６】
事前ダウンロード方式は、非特許文献２のように、ＯＳ起動前に全てのファイルをダウンロードする方式である。事前ダウンロード方式は、普段使わないファイルも含め、全てのファイルをＯＳ起動前にダウンロードするため、ＯＳの起動開始までに時間がかかる。【０００７】
オンデマンド方式は、非特許文献３のように、実際にファイルを使うときに、ファイルをダウンロードする方式である。オンデマンド方式は、要求されたときにファイルをダウンロードするため、ＯＳ起動後のＯＳやアプリケーションの動作が遅い。【０００８】
また、両方式とも、ファイル取得による応答速度の低下（ボトルネック）が特定のステップに集中しており、ユーザからみると、ある瞬間にＰＣ（パソコン）が非常に遅くなるという課題がある。【０００９】
なお、関連する技術として、特開２００８−１９８０１６号公報（特許文献１）にシンクライアントシステム、装置及びプログラムが開示されている。この関連技術では、汎用ＰＣであるリッチクライアント（ｒｉｃｈ  ｃｌｉｅｎｔ）をシンクライアントとして利用可能なネットワークブート型シンクライアント方式について説明している。【００１０】
また、特開平０９−３１９６２４号公報（特許文献２）にファイル管理装置が開示されている。この関連技術では、複数のファイルとそれらのファイルの最終使用日時とその記憶位置とを第１の記憶媒体に記憶し、記憶された各ファイルごとの最終使用日時により、使用頻度の低いファイルを判定し、判定された使用頻度の低いファイルを第２の記憶媒体に記憶する。【００１１】
また、特開平１０−１３３９７６号公報（特許文献３）にオンデマンドファイルダウンロード方法及びシステムが開示されている。この関連技術では、複数の計算機間において、ファイルの内容、又はメモリの内容であるプログラム、又はデータを共有するために、該プログラム又は、該データを通信路を経由して転送し、該プログラムや該データを利用する計算機にダウンロードするオンデマンドファイルダウンロード方法について説明している。このオンデマンドファイルダウンロード方法では、第１の計算機からプログラム、又はデータが格納されているファイルのうち必要部分を指定して、該プログラムや該データの原本を有する第２の計算機に要求する。第２の計算機は、第１の計算機から要求されたファイルの必要部分を抽出及び複製して、パケット単位に該第１の計算機に転送する。第１の計算機は、転送された内容を所定の領域に格納し、プログラムの処理を再開する。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００８−１９８０１６号公報
【特許文献２】特開平０９−３１９６２４号公報
【特許文献３】特開平１０−１３３９７６号公報
【非特許文献】
【００１３】
【非特許文献１】ＩＴＰｒｏ  “シン・クライアント  ｖｓ  次世代ＰＣ”  ＜ｈｔｔｐ：／／ｉｔｐｒｏ．ｎｉｋｋｅｉｂｐ．ｃｏ．ｊｐ／ａｒｔｉｃｌｅ／ＣＯＬＵＭＮ／２００７０５２８／２７２６８１／＞
【非特許文献２】ＺＤＮｅｔ  “シンクライアントの仕組みを探る”  ＜ｈｔｔｐ：／／ｊａｐａｎ．ｚｄｎｅｔ．ｃｏｍ／ｐｒｉｎｔ／０，２００００８０６５７，２００８９６８５，００．ｈｔｍ？ｕ＝／ｚｄｎｅｔ／２００６／ｓｐ／ｆｅａｔｕｒｅ／ｎｅｔｓｅｃｕｒｉｔｙ１／ｓｔｏｒｙ／０，２００００５６６９６，２００８９６８５，００．ｈｔｍ＞
【非特許文献３】ＨＴＴＰ−ＦＵＳＥ−ＫＮＯＰＰＩＸ／Ｘｅｎｏｐｐｉｘ  ＜ｈｔｔｐ：／／ｕｎｉｔ．ａｉｓｔ．ｇｏ．ｊｐ／ｉｔｒｉ／ｋｎｏｐｐｉｘ／ｈｔｔｐ−ｆｕｓｅ／＞
【発明の概要】
【００１４】
本発明の目的は、ボトルネックを適切に分散させるネットブート型シンクライアントシステムを提供することである。
【００１５】
本発明のシンクライアントシステムは、ユーザが使用する第１のコンピュータと、第１のコンピュータに単位データを提供する第２のコンピュータとを含む。第１のコンピュータは、第１記憶手段と、事前単位データ取得手段と、オンデマンド単位データ取得手段とを具備する。第１記憶手段は、第２のコンピュータから取得された単位データを格納する。事前単位データ取得手段は、第１のコンピュータのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の動作前に単位データを第２のコンピュータから取得する。オンデマンド単位データ取得手段は、ＯＳの動作中にＯＳが要求する単位データを第２のコンピュータから取得する。第２のコンピュータは、第２記憶手段と、単位データ判定手段と、単位データ転送手段とを具備する。第２記憶手段は、第１のコンピュータに提供される単位データを格納する。単位データ判定手段は、事前単位データ取得手段によりＯＳの動作前に取得される単位データの情報が記載された送信ファイルリストを作成する。単位データ転送手段は、第１のコンピュータのＯＳの動作前に送信ファイルリストに情報が記載されている単位データを事前単位データ取得手段へ送信し、第１のコンピュータのＯＳの動作中にオンデマンド単位データ取得手段から要求された単位データを、オンデマンド単位データ取得手段へ送信する。
【００１６】
本発明のシンクライアント実施方法では、ユーザにより使用される第１のコンピュータが、第２のコンピュータから単位データを取得する。このとき、第１のコンピュータが、第１のコンピュータのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の動作前に単位データを第２のコンピュータから取得する。また、第１のコンピュータが、ＯＳの動作中にＯＳが要求する単位データを第２のコンピュータから取得する。また、第２のコンピュータが、第１のコンピュータによりＯＳの動作前に取得される単位データの情報が記載された送信ファイルリストを作成する。また、第２のコンピュータが、第１のコンピュータのＯＳの動作前に送信ファイルリストに情報が記載されている単位データを第１のコンピュータへ送信し、第１のコンピュータのＯＳの動作中に第１のコンピュータから要求された単位データを、第１のコンピュータへ送信する。
【００１７】
ネットブート型シンクライアントシステムを高速に動作させることが可能になる。
【図面の簡単な説明】
【００１８】
【図１】図１は、本発明の第１実施形態の構成を示すブロック図である。
【図２】図２は、本発明の第１実施形態の動作を示すシーケンス図である。
【図３】図３は、高使用頻度ファイルリストを説明する図である。
【図４】図４は、高使用頻度ファイルリストのアップデート方法を示す流れ図である。
【図５】図５は、統計情報の例を示す図である。
【図６】図６は、本発明の第２実施形態の構成を示すブロック図である。
【図７】図７は、本発明の第２実施形態の動作を示すシーケンス図である。
【図８】図８は、本発明の第２実施形態のダミーファイル生成の流れ図である。
【図９】図９は、本発明の第２実施形態のシグネチャリストの例を示す図である。
【図１０】図１０は、本発明の第２実施形態のオンデマンドファイル取得手段の動作を示す流れ図である。
【発明を実施するための形態】
【００１９】
＜第１実施形態＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
【００２０】
［基本構成］
図１を参照すると、本発明のシンクライアントシステムは、サーバ１０と、クライアント２０を含む。
【００２１】
シンクライアントシステムは、ほとんどの処理をサーバ１０側に集中させ、サーバ１０側でアプリケーションやファイル等の資源を管理し、クライアント２０に必要最小限の処理をさせるシステムである。サーバ１０及びクライアント２０は、プログラム制御により動作する。
【００２２】
サーバ１０の例として、シンクライアントサーバ、ＰＣ（パソコン）、メインフレーム、スーパーコンピュータ等を想定している。クライアント２０の例として、シンクライアント端末、モバイルノートＰＣ、携帯端末、ワークステーション、情報家電（ｉｎｆｏｒｍａｔｉｏｎ  ｈｏｍｅ  ａｐｐｌｉａｎｃｅ）、ＯＡ（Ｏｆｆｉｃｅ  Ａｕｔｏｍａｔｉｏｎ）機器等を想定している。なお、サーバ１０及びクライアント２０は、端末やサーバに限らず、中継機器や周辺機器でも良い。また、サーバ１０及びクライアント２０は、コンピュータに搭載される拡張ボードやソフトウェアでも良い。また、サーバ１０及びクライアント２０は、コンピュータに搭載された仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ（ＶＭ））環境でも良い。更に、サーバ１０及びクライアント２０は、車両や船舶、航空機等の移動体に搭載されていても良い。但し、実際には、これらの例に限定されない。
【００２３】
サーバ１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央処理装置）１１と、メモリ１２と、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ：ハードディスクドライブ）１３と、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ：ネットワークインターフェースカード）１４と、ファイル転送部１５と、ファイル判定部１６を備える。
【００２４】
クライアント２０は、ＣＰＵ２１と、メモリ２２と、ＨＤＤ２３と、ＮＩＣ２４と、事前ファイル取得部２５と、オンデマンドファイル取得部２６を備える。
【００２５】
ＣＰＵ１１及びＣＰＵ２１は、コンピュータ内外の各装置の制御やデータの計算・加工を行い、メモリに記憶されたプログラムを実行したり、入力装置や記憶装置からデータを受け取り、演算・加工した上で、出力装置や記憶装置に出力したりする。また、ＣＰＵ１１及びＣＰＵ２１は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を起動させ、稼動させる。ＣＰＵ１１及びＣＰＵ２１の例として、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、又は同様の機能を有するＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：半導体集積回路）等が考えられる。但し、実際には、これらの例に限定されない。
【００２６】
メモリ１２及びメモリ２２は、ＣＰＵが直接読み書きできるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、或いはフラッシュメモリ等の半導体記憶装置である。ここでは、メモリ１２及びメモリ２２は、主記憶装置（メインメモリ）を示す。但し、実際には、これらの例に限定されない。
【００２７】
ＨＤＤ１３及びＨＤＤ２３は、コンピュータ内外でデータやプログラムを格納する補助記憶装置である。ここでは、ＨＤＤ１３及びＨＤＤ２３は、外部記憶装置（ストレージ）を示す。なお、ＨＤＤ１３及びＨＤＤ２３は、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等のフラッシュメモリドライブでも良い。或いは、ＨＤＤ１３及びＨＤＤ２３は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）やＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等のリムーバブルディスクや記憶媒体（メディア）等でも良い。また、ＨＤＤ１３及びＨＤＤ２３は、サーバ１０及びクライアント２０に内蔵された記憶装置に限らず、周辺機器（外付けＨＤＤ等）や外部のサーバ（ストレージサーバ等）に設置された記憶装置、或いは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＦＣ−ＳＡＮ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＩＰ−ＳＡＮ（ＩＰ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）でも良い。但し、実際には、これらの例に限定されない。
【００２８】
ＮＩＣ１４及びＮＩＣ２４は、通信回線（ネットワーク）を介して、外部とデータの送受信を行うための通信装置である。ここでは、サーバ１０とクライアント２０は、ＮＩＣ１４とＮＩＣ２４を介して接続される。ＮＩＣ１４及びＮＩＣ２４の例として、ネットワークアダプタや、アンテナ、接続口（コネクタ）等の通信ポート等が考えられる。また、ＮＩＣ１４及びＮＩＣ２４が利用するネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。但し、実際には、これらの例に限定されない。
【００２９】
ファイル転送部１５は、事前ファイル取得部２５、及びオンデマンドファイル取得部２６から、ファイルの転送要求を受信する。ファイル転送部１５は、事前ファイル取得部２５からの要求の場合、ファイル判定部１６を呼び出し、良く使われるファイル（高使用頻度ファイル）の情報が記載されたリスト（送信ファイルリスト）を取得する。ファイルの情報とは、当該ファイルを特定するための識別情報である。ファイルの情報の例として、ファイル名や、ファイル名に含まれる固有のキーワード、或いは、当該ファイルに固有の拡張子等が考えられる。次に、ファイル転送部１５は、送信ファイルリストに記載されている全てのファイルをＨＤＤ１３より読み出し、読み出されたファイルを事前ファイル取得部２５に送信する。ファイル転送部１５は、オンデマンドファイル取得部２６からの要求の場合、要求されたファイルをＨＤＤ１３より読み出し、読み出されたファイルをオンデマンドファイル取得部２６に送信する。
【００３０】
ファイル判定部１６は、ＨＤＤ２３に記録されているファイルのうち、事前に良く使われるファイルを判定して送信ファイルリストを作成し、作成された送信ファイルリストをファイル転送部１５へ渡す。ここでは、事前に良く使われるファイルとは、ＯＳの起動前、又はＯＳの起動の際に使用されるファイルを指す。事前に良く使われるファイルの例として、ＯＳやアプリケーションの設定ファイルや、ＯＳの起動時に実行されるプログラム等が考えられる。但し、実際には、これらの例に限定されない。
【００３１】
事前ファイル取得部２５は、ＯＳの起動前に、ファイル転送部１５へファイルの送信要求を送信し、ファイル転送部１５から受信したファイルをＨＤＤ２３へ書き込む。すなわち、事前ファイル取得部２５は、ＯＳの起動前に、ファイル転送部１５から、事前に良く使われるファイルを取得し、取得されたファイルをＨＤＤ２３に格納する。
【００３２】
オンデマンドファイル取得部２６は、ＯＳの起動後に、ＯＳから要求されたファイルがＨＤＤ２３に保存されているか否かを判定する。更に、オンデマンドファイル取得部２６は、ＯＳから要求されたファイルがＨＤＤ２３に保存されていなかった場合に、ファイル転送部１５へ当該ファイルの送信要求を送信し、ファイル転送部１５からファイルを受信して、受信されたファイルをＨＤＤ２３に書き込む。すなわち、オンデマンドファイル取得部２６は、ＯＳから要求されたファイルが、ＨＤＤ２３に格納されていないファイルであって、ＨＤＤ１３に格納されているファイルである場合、ファイル転送部１５から、ＯＳから要求されたファイルであって、ＨＤＤ１３に格納されているファイルを取得し、取得されたファイルをＨＤＤ２３に格納する。
【００３３】
なお、ファイル転送部１５、ファイル判定部１６、事前ファイル取得部２５、及びオンデマンドファイル取得部２６は、コンピュータに搭載される拡張ボードでも良い。或いは、各々の機能をコンピュータやＣＰＵに実行させるためのプログラムでも良い。この場合、当該プログラムは、記憶装置や記憶媒体に格納することも可能である。但し、実際には、これらの例に限定されない。
【００３４】
［全体の動作］
次に、図２のシーケンス図を参照して、本発明のシンクライアントシステムの全体の動作について詳細に説明する。
【００３５】
（１）ステップＳ１
事前ファイル取得部２５は、ＯＳの起動前に、ファイル転送部１５へ、ファイルの送信要求を送信する。
【００３６】
（２）ステップＳ２
ファイル転送部１５は、ファイルの送信要求に応じて、ファイル判定部１６を呼び出す。ここでは、ファイル転送部１５は、ファイルの送信要求に応じて、ファイル判定部１６に対して、事前に良く使われるファイルのリスト（送信ファイルリスト）を要求する。
【００３７】
（３）ステップＳ３
ファイル判定部１６は、事前に良く使われるファイルのリスト（送信ファイルリスト）を取得し、取得されたリスト（送信ファイルリスト）をファイル転送部１５へ返す。ここでは、ファイル判定部１６は、ＨＤＤ２３に記録されているファイルのうち、事前に良く使われるファイルを判定して送信ファイルリストを作成し、作成された送信ファイルリストをファイル転送部１５へ通知する。ファイル判定部１６の詳しい動作については、後述する。
【００３８】
（４）ステップＳ４
ファイル転送部１５は、受け取ったリスト（送信ファイルリスト）に記載されているファイルをＨＤＤ１３から読み込み、読み込まれたファイルを事前ファイル取得部２５へ送信する。すなわち、ファイル転送部１５は、受け取ったリスト（送信ファイルリスト）に記載されているファイルのみを事前ファイル取得部２５へ送信する。
【００３９】
（５）ステップＳ５
事前ファイル取得部２５は、ファイル転送部１５からファイルを受信し、受信されたファイルをＨＤＤ２３へ書き込む。その後、ＯＳが起動する。
【００４０】
（６）ステップＳ６
オンデマンドファイル取得部２６は、ＯＳが起動すると、ＯＳのファイル読み込みを監視する。
【００４１】
（７）ステップＳ７
オンデマンドファイル取得部２６は、ＯＳがＨＤＤ２３からファイルを読み込もうとした際、ＯＳによるファイルの読み込みをフック（ｈｏｏｋ）し、ＯＳにより読み込まれようとしているファイルがＨＤＤ２３に記録されているか否かを判定する。
【００４２】
（８）ステップＳ８
オンデマンドファイル取得部２６は、ＯＳにより読み込まれようとしているファイルがＨＤＤ２３に記録されていないと判定した場合、ファイル転送部１５へ、当該ファイルの送信要求を送信する。
【００４３】
（９）ステップＳ９
ファイル転送部１５は、オンデマンドファイル取得部２６へ、送信要求のあったファイルを送信する。ここでは、ファイル転送部１５は、オンデマンドファイル取得部２６からの送信要求に応じて、ＨＤＤ１３に記録されているファイルのうち、送信要求のあったファイルをＨＤＤ１３から読み出し、読み出されたファイルをオンデマンドファイル取得部２６に送信する。オンデマンドファイル取得部２６は、ファイル転送部１５からファイルを受信する。
【００４４】
（１０）ステップＳ１０
オンデマンドファイル取得部２６は、受信されたファイルをＨＤＤ２３に書き込む。
【００４５】
（１１）ステップＳ１１
オンデマンドファイル取得部２６は、受信されたファイルの情報をＯＳへ渡す。
【００４６】
なお、オンデマンドファイル取得部２６は、受信されたファイルの情報をＯＳへ渡す動作を、ＨＤＤ２３への書き込みの後に行っても良いし、ＨＤＤ２３への書き込みの前に行っても良い。すなわち、ステップＳ１０とステップＳ１１の順番は入れ替えても良い。
【００４７】
［ファイル判定動作］
次に、ファイル判定部１６の動作について、詳細に説明する。
【００４８】
ファイル判定部１６は、次に示す動作のいずれか、もしくは、組み合わせによって、ＨＤＤ１３に記録されているファイルが、良く使われるファイルか否かを判定し、送信ファイルリストを作成する。
【００４９】
［第１の判定動作］
まず、ファイル判定部１６の、第１の判定動作について説明する。
【００５０】
ファイル判定部１６は、良く使われるファイルを定義するリスト（高使用頻度ファイルリスト）を持つ。高使用頻度ファイルリストでは、例えば、図３に示すように、ファイルのパス、ファイルの置かれているディレクトリ、或いは拡張子に基づいて、良く使われるファイルが定義されている。
【００５１】
ファイル判定部１６は、ファイル転送部１５から呼び出されると、ＨＤＤ１３をスキャン（走査）し、ＨＤＤ１３に記録されている全てのファイルの情報が記載されたリストを作成する。また、ファイル判定部１６は、ＨＤＤ１３に記録されている全てのファイルの情報が記載されたリストから、高使用頻度ファイルリストに含まれないファイルの情報を削除して送信ファイルリストとし、送信ファイルリストをファイル転送部１５へ渡す。すなわち、送信ファイルリストは、ＨＤＤ１３に記録されている全てのファイルのうち、高使用頻度ファイルリストに含まれるファイルのみの情報が記載されたリストである。
【００５２】
なお、高使用頻度ファイルリストは、サーバ１０の管理者がエディタを用いて作成しても良いし、次のように自動的に作成しても良い。
【００５３】
［高使用頻度ファイルリストの自動作成方法］
図４を参照して、高使用頻度ファイルリストの自動作成方法について説明する。
【００５４】
（１）ステップＴ１
オンデマンドファイル取得部２６は、ＯＳが起動を開始すると、ＯＳによるファイルの読み書きの要求を監視する。
【００５５】
（２）ステップＴ２
オンデマンドファイル取得部２６は、ＯＳによるファイルの読み書きの要求があった場合、フィードバックリストを作成し、読み書きの要求があったファイルをフィードバックリストへ記録する。例えば、オンデマンドファイル取得部２６は、読み書きの要求があったファイルに関して、フィードバックリストに、ファイル名、アクセス時間等の情報を記録する。
【００５６】
（３）ステップＴ３
オンデマンドファイル取得部２６は、フィードバックリストを、ファイル転送部１５へ送信する。例えば、オンデマンドファイル取得部２６は、ＯＳ起動から一定時間後、一定ファイル数を読み込んだ時、或いは、ＯＳ終了時に、フィードバックリストへの記録を打ち切り、フィードバックリストを送信するようにしても良い。但し、実際には、これらの例に限定されない。
【００５７】
（４）ステップＴ４
ファイル判定部１６は、ファイル転送部１５を介して、フィードバックリストを取得し、フィードバックリストを利用して、以下のいずれかのアップデート動作で、高使用頻度ファイルリストをアップデート（更新）する。
【００５８】
なお、高使用頻度ファイルリストをアップデート（更新）するタイミングについては、ＯＳ起動前に毎回、もしくは毎日や週一回等の一定期間毎、又は管理者が指定したときに行うようにしても良い。
【００５９】
［アップデート動作１］
ファイル判定部１６は、フィードバックリストを、そのまま高使用頻度ファイルリストとして使用する。すなわち、ファイル判定部１６は、次回以降のＯＳ起動において、前回の起動時に使用されたファイルを、事前に配付する。
【００６０】
［アップデート動作２］
ファイル判定部１６は、高使用頻度ファイルリスト及びフィードバックリストに記載されているファイルを、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）方式で、ソート（分類）する。更に、ファイル判定部１６は、高使用頻度ファイルリストの先頭から、記載されている順に、ファイルのサイズを足してゆき（加算してゆき）、ファイルのサイズの合計が管理者によって指定されたサイズを超えた場合、指定されたサイズを超えたファイル以降のファイルを、現在の高使用頻度ファイルリストから削除し、新たな高使用頻度ファイルリストとする。
【００６１】
［アップデート動作３］
ファイル判定部１６は、過去数回のフィードバックリストをマージ（統合）する。ファイル判定部１６は、マージされたリストのファイルについて、管理者が指定した期間内に使用されたファイルを最近使用されたファイルとし、高使用頻度ファイルリストに記録する。具体的には、ファイル判定部１６は、マージしたフィードバックリストに含まれるアクセス日時と、現在の時刻から管理者が指定した期間を引いた日時を比較し、フィードバックリストに含まれるアクセス日時が最近である場合に、当該ファイルを高使用頻度ファイルリストに追加する。
【００６２】
［アップデート動作４］
ファイル判定部１６は、過去数回のフィードバックリストから、統計情報を作成する。図５に示すように、統計情報には、ファイル名と、その使用回数が記録されている。すなわち、統計情報は、ファイル名と、その使用回数を含む。そして、ファイル判定部１６は、管理者が指定した回数よりも多く使われているファイルを、統計情報から抜き出し、高使用頻度ファイルリストとする。管理者は、何回分のフィードバックリストを利用して、統計情報を作成するかを指定する。使用回数によって指定するのではなく、使用回数の多い順にファイルをソートし、高使用頻度ファイルリストに記載されているファイルのサイズの合計が、管理者により指定されたファイルサイズになるまで、上位から順に、高使用頻度ファイルリストにファイルを追加しても良い。
【００６３】
なお、ファイル判定部１６は、管理者が事前配付必須であると考えて作成したリストと、アップデート動作１からアップデート動作４の動作よって自動で作成されたリストをマージし、高使用頻度ファイルリストとしても良い。例えば、ファイル判定部１６は、管理者により作成されたリストと、アップデート動作３によって作成されたリストを組み合わせる。例えば、ファイル判定部１６は、管理者が手動入力等で「ｃ：￥ｋｅｒｎｅｌ．ｅｘｅ；  ｃ：￥ｃｏｎｆｉｇ．ｉｎｉ」をリストに記述し、アップデート動作３によって作成されたリストに「ｃ：￥ｋｅｒｎｅｌ．ｅｘｅ；  ｃ：￥ｐａｔｅｎｔ．ｄｏｃ」が記述されている場合、２つのリストのマージすることによって、「ｃ：￥ｋｅｒｎｅｌ．ｅｘｅ；  ｃ：￥ｃｏｎｆｉｇ．ｉｎｉ；  ｃ：￥ｐａｔｅｎｔ．ｄｏｃ」が記述されたリストを作成し、このリストを高使用頻度ファイルリストとする。
【００６４】
［第２の判定動作］
次に、ファイル判定部１６の、第２の判定動作について説明する。
【００６５】
第２の判定動作では、更新日時が新しいファイルを、良く使われるファイルと見なす。
【００６６】
ファイル判定部１６は、ＨＤＤ２３のファイルシステムを解析し、全てのファイルの更新日時を得る。次に、ファイル判定部１６は、管理者が指定した日時以降に作成されたファイルを、良く使われるファイルとみなして、送信ファイルリストに追加する。
【００６７】
本発明の第１実施形態の効果は、ＯＳ動作前と動作中にボトルネックを適切に分散させることによって、高速に動作するネットブート型シンクライアントシステムを提供できることである。
【００６８】
≪実施例１≫
次に、本発明の第１実施形態の具体的な実施例について説明する。
【００６９】
［基本構成］
図１のサーバ１０は、ＣＰＵ１１、メモリ１２、ＨＤＤ１３、ＮＩＣ１４を備える一般的な計算機である。クライアント２０も同様に、一般的な計算機である。サーバ１０とクライアント２０は、ネットワークによって接続される。ネットワークの回線は、電話回線、ＬＡＮ、無線ＬＡＮ、インターネット等が上げられるが、特に限定されるものではない。
【００７０】
ファイル転送部１５は、サーバ１０上で動作するプログラムであり、例えば、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を用いて、ＨＤＤ１３に記録されているファイルを、事前ファイル取得部２５、もしくは、オンデマンドファイル取得部２６へファイルを送信する。なお、ＦＴＰの代わりに、ＳＳＨ（Ｓｅｃｕｒｅ  ＳＨｅｌｌ）やＳＣＰ（Ｓｅｃｕｒｅ  ＣｏＰｙ）を用いることも考えられる。
【００７１】
ファイル判定部１６は、サーバ１０上で動作するプログラムであり、後述する動作によって、ＨＤＤ１３に記録されているファイルが良く使われるか否かを判定し、送信ファイルリストを作成する。
【００７２】
事前ファイル取得部２５とオンデマンドファイル取得部２６は、クライアント２０上で動作するプログラムである。
【００７３】
［全体の動作］
次に、本発明のシンクライアントシステムの全体の動作について説明する。
【００７４】
ＰＣ（パソコン）等のクライアント２０の電源が入ると、まず、事前ファイル取得部２５が実行される。事前ファイル取得部２５は、ファイル転送部１５へ、例えば、ＴＣＰを用いて、送信要求を送信する。このとき、ＩＰｓｅｃ（Ｓｅｃｕｒｉｔｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）やＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）を用いて通信の暗号化を行っても良い。
【００７５】
ファイル転送部１５は、送信要求を受け取ると、ファイル判定部１６を呼び出す。ファイル判定部１６は、送信ファイルリストを作成する。詳しくは後述する。
【００７６】
ファイル転送部１５は、リストを読み込むと、ＨＤＤ１３から送信ファイルリストに記載されているファイルを読み込み、事前ファイル取得部２５へ送信する。送信には、例えば、ＦＴＰ等を用いることが考えられる。事前ファイル取得部２５は、受け取ったファイルをＨＤＤ２３に書き込む。
【００７７】
次に、ＣＰＵ２１は、ＨＤＤ２３に書き込まれたＯＳを起動する。ＯＳは、「Ｗｉｎｄｏｗｓ（登録商標）」や「Ｌｉｎｕｘ（登録商標）」、「ＦｒｅｅＢＳＤ（登録商標）」等、特に限定されるものでは無い。
【００７８】
オンデマンドファイル取得部２６は、例えば、ＯＳのドライバとして実装される。例えば、「ＷＩＮＤＯＷＳ（登録商標）」であれば、ＮＴＦＳ（ＮＴ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）ドライバの上位ドライバとしてオンデマンドファイル取得部２６を実装することで、ＨＤＤ２３への読み書き要求を監視することができる。また、オンデマンドファイル取得部２６は、下位のＮＴＦＳドライバが返すメッセージによって、要求されたファイルが、ＨＤＤ２３上に存在するか否かを判定できる。
【００７９】
例えば、オンデマンドファイル取得部２６は、下位のＮＴＦＳドライバが、要求成功のメッセージを返したとき、そのメッセージをそのまま上位のドライバへ渡す。
【００８０】
また、オンデマンドファイル取得部２６は、下位のＮＴＦＳドライバが、ファイルが存在しないという旨のメッセージを返した場合、ファイル転送部１５へファイル送信要求を送り、ファイルを取得する。そして、オンデマンドファイル取得部２６は、ＮＴＦＳドライバを呼び出すことでＨＤＤへファイルの書き込みを行う。次に、オンデマンドファイル取得部２６は、ＮＴＦＳドライバを呼び出し、書き込んだファイルへのアクセス要求を行う。オンデマンドファイル取得部２６は、要求が成功した場合、先にＮＴＦＳドライバが返したというメッセージ、或いは、ファイルが存在しないというメッセージを、要求成功のメッセージに差し替え、上位のドライバへ結果を返す。
【００８１】
オンデマンドファイル取得部２６は、ＯＳが起動している間、上記の動作を繰り返し行う。
【００８２】
［ファイル判定動作］
次に、ファイル判定部１６の動作について、具体的に説明する。
【００８３】
例えば、「Ｌｉｎｕｘ（登録商標）」であれば、「ｆｉｎｄコマンド」を用いて、ＨＤＤ１３のファイルのリストを取得することができる。ＨＤＤ１３のファイルのリストは、ＨＤＤ１３に記録されている全てのファイルの情報が記載されたリストである。次に、ファイル判定部１６は、ＨＤＤ１３のファイルのリストから、高使用頻度ファイルリストに含まれていないファイルの情報を削除して送信ファイルリストとし、ファイル転送部１５へ送信ファイルリストを渡す。
【００８４】
高使用頻度ファイルリストは、以下の方法で作成される。
【００８５】
オンデマンドファイル取得部２６は、上位のドライバから、ファイルの読み書きの要求があった場合に、要求のあったファイル名を、フィードバックリストに記録しておく。
【００８６】
フィードバックリストは、例えば、次のように、ファイル名と、アクセス日時を含む。
「２００８／４／１  １２：００：０１  Ｃ：￥ａ．ｔｘｔ；  ２００８／４／１／１２：０１：０１  Ｃ：￥ｂ．ｄｌｌ；  …」
【００８７】
オンデマンドファイル取得部２６は、例えば、ＯＳの終了時に、リストをファイル転送部１５へ送信する。送信には、例えば、ＦＴＰ等を用いることができる。ＯＳの終了時では無くても、例えば、ＯＳ起動から５分後や、ＯＳ起動から「１０Ｍｂｙｔｅ」のファイルを読み込んだ時に、フィードバックリストを送信しても良い。
【００８８】
ファイル転送部１５は、例えば、過去３回のフィードバックリストに含まれるファイルの参照回数を数え、どのファイルが何回使用されたかを示す統計情報を作成する。例えば、「フィードバックリスト１＝”ａ．ｔｘｔ；ｂ．ｔｘｔ”」、「フィードバックリスト２＝”ｂ．ｔｘｔ”」、「フィードバックリスト１＝”ａ．ｔｘｔ；ｂ．ｔｘｔ；ｃ．ｔｘｔ”」であったとき、統計情報は、「ａ．ｔｘｔ＝２回」、「ｂ．ｔｘｔ＝３回」、「ｃ．ｔｘｔ＝１回」となる。ここで、例えば、管理者が「２回以上」と指定したとすると、高使用頻度ファイルリストは、「ａ．ｔｘｔ；ｂ．ｔｘｔ」となる。
【００８９】
上記の例では、ファイル転送部１５は、回数によって指定したが、「１１０Ｍｂｙｔｅまでを事前送信」のようにファイル容量によって指定しても良い。この場合、ファイル転送部１５は、「ａ．ｔｘｔ」と、「ｂ．ｔｘｔ」と、「ｃ．ｔｘｔ」を使用回数によってソートし、「ｂ．ｔｘｔ；ａ．ｔｘｔ；ｃ．ｔｘｔ」とする。例えば、ファイル転送部１５は、「ａ．ｔｘｔ＝４０Ｍｂｙｔｅ」、「ｂ．ｔｘｔ＝７０Ｍｂｙｔｅ」、「ｃ．ｔｘｔ＝１Ｍｂｙｔｅ」のとき、先頭から高使用頻度ファイルリストに追加していき、高使用頻度ファイルリストに記載されているファイルの合計が、管理者が指定したサイズを超えるまで、リストに追加する。上記の例では、高使用頻度ファイルリストは、「ｂ．ｔｘｔ；ａ．ｔｘｔ」となる。
【００９０】
上記の例とは別に、ファイル転送部１５は、管理者が期間を指定し、その期間内に使われたファイルをリストに追加しても良い。例えば、最新のフィードバックリストが「２００８／４／２  １３：００：０１  Ｃ：￥ａ．ｔｘｔ；  ２００８／４／２／１２：０１：０１  Ｃ：￥ｂ．ｄｌｌ；」であり、その１つ前のフィードバックリストが、「２００８／４／１  １３：００：０１  Ｃ：￥ｃ．ｔｘｔ；  ２００８／４／１／１２：０１：０１  Ｃ：￥ｄ．ｄｌｌ；であり、現在の時刻が「２００８／４／３  １２：３０：００」であるとする。このとき、例えば、ファイル転送部１５は、管理者が４８時間を指定すると、４８時間以内に使われたファイルのリストである「Ｃ：￥ａ．ｔｘｔ；  Ｃ：￥ｂ．ｄｌｌ；  Ｃ：￥ｃ．ｔｘｔ；」が高使用頻度ファイルリストとなる。
【００９１】
ファイル判定部１６は、高使用頻度ファイルリストを用いずに、日付の情報を用いて、判定を行っても良い。例えば、「Ｌｉｎｕｘ（登録商標）」では、「ｆｉｎｄコマンド」を用いて、特定の日時以降に作成、もしくは、更新されたファイルのリストを取得することができる。ファイル判定部１６は、「ｆｉｎｄコマンド」によって、指定された日時以降に作成されたファイルのリストを作成し、このファイルのリストを送信リストとして、ファイル転送部１５へ渡しても良い。
【００９２】
≪実施例２≫
次に、本発明の第１実施形態の別の動作について説明する。
【００９３】
上記の実施例の動作では、オンデマンドファイル取得部２６は、ＯＳからファイルの要求があったときに、ファイルを取得している。このとき、ファイルの要求がＯＳから届く前に、ファイルを取得しても良い。
【００９４】
オンデマンドファイル取得部２６は、ＨＤＤ２３とＮＩＣ２４の使用率が低いとき、ファイル転送部１５へ、ファイル送信要求を送信する。
【００９５】
ファイル転送部１５は、送信ファイルリストに記載されていないファイルをＨＤＤ１３から読み出し、読み出されたファイルを送信する。このとき、ファイル転送部１５は、フィードバックリストに記載されているアクセス日時の情報を利用して、アクセス日時が早いファイルほど、優先的に送信しても良い。
【００９６】
この動作の場合、ファイルの先読みを行うことになるため、ＯＳを高速に動作させることが出来る。
【００９７】
≪実施例３≫
次に、本発明の第１実施形態の更に別の動作について説明する。
【００９８】
上記の実施例の動作では、ファイル単位で良く使われるか否かを判定し、ファイル単位の送信を行っている。このとき、ファイル単位ではなく、セクタ（ｓｅｃｔｏｒ）単位で良く使われるか否かを判定し、セクタ単位で送信しても良い。この動作を行う場合、ＨＤＤ１３には、クライアントに送るべきＨＤＤのイメージが記録される。
【００９９】
なお、セクタとは、ディスク状の記憶装置における最小の記録単位である。いくつかのセクタをまとめたものを「クラスタ」と呼ぶ。従って、実際には、セクタ単位の送信に限らず、クラスタ単位の送信を行うようにすることも可能である。
【０１００】
ファイル転送部１５は、ＨＤＤイメージから、送信セクタリストのセクタを抜き出し、抜き出されたセクタのデータを事前ファイル取得部２５へ送信する。このとき、ファイル転送部１５は、データを事前ファイル取得部２５へ送信しなかったセクタの情報が記載されたリスト（未送信セクタリスト）を作成して、未送信セクタリストを事前ファイル取得部２５へ送信しても良い。
【０１０１】
ファイル判定部１６は、セクタ単位の処理を行う場合、高使用頻度ファイルリストではなく、良く使われるセクタが記録された高使用頻度セクタリストを持つ。ファイル判定部１６は、ファイル転送部１５から呼び出されると、全てのセクタの情報が記載されたリストを作成する。セクタの情報とは、当該セクタを特定するための識別情報である。セクタの情報の例として、セクタ番号等が考えられる。また、セクタ判定部１６は、全てのセクタの情報が記載されたリストから、高使用頻度セクタリストに含まれないセクタの情報を削除して送信セクタリストとし、送信セクタリストをセクタ転送部１５へ渡す。すなわち、送信セクタリストは、全てのセクタの情報が記載されたリストから、高使用頻度セクタリストに含まれないセクタの情報を削除したものである。
【０１０２】
ファイル転送部１５は、リストのセクタをＨＤＤ１３のＨＤＤイメージから読み込み、事前ファイル取得部２５へ送信する。
【０１０３】
事前ファイル取得部２５は、受け取ったセクタのデータを、ＨＤＤ２３の同じ位置のセクタに書き込む。事前ファイル取得部２５は、受け取っていないセクタには、特定パターンのダミーデータを作成して記録する。或いは、事前ファイル取得部２５は、ファイル転送部１５から未送信セクタリストを受信し、未送信セクタリストに情報が記載されているセクタについて、特定パターンのダミーデータを作成して記録するようにしても良い。
【０１０４】
オンデマンドファイル取得部２６は、ＯＳからＨＤＤ２３への読み込み要求があったとき、読み込まれたセクタがダミーデータのパターンである場合に、当該セクタの送信要求をファイル転送部１５へ送信する。
【０１０５】
ファイル転送部１５は、セクタの送信要求に応じて、要求のあったセクタを送信する。ここでは、ファイル転送部１５は、ＨＤＤ１３のセクタから、要求のあったセクタを検出し、検出されたセクタを送信する。
【０１０６】
オンデマンドファイル取得部２６は、ＨＤＤ２３のセクタを、受信されたセクタのデータで上書きする。
【０１０７】
次に、オンデマンドファイル取得部２６は、ＯＳの読み込み要求に対し、受信されたセクタのデータを返す。
【０１０８】
この動作の場合、フィードバックリストは、セクタ単位で記載される。オンデマンドファイル取得部２６は、アクセス日時と、セクタ番号を、フィードバックリストへ追加する。フィードバックリストから、高使用頻度セクタリストをアップデートする方法は、ファイル単位と同様のため、説明を省略する。すなわち、高使用頻度セクタリストをアップデートする方法は、高使用頻度ファイルリストをアップデートする方法と同様である。
【０１０９】
例えば、ファイル転送部１５及び事前ファイル取得部２５は、セクタ単位で送信や取得を行うようにする。ファイル判定部１６は、「１」、「２」、「３」、「４５」、「５６７」のような、セクタ番号が記録された高使用頻度セクタリストをファイル転送部１５へ渡す。ファイル転送部１５は、「ｓｅｃＮｏ＝１，ｄａｔａ＝ａｂｃｄｅ…；」、「ｓｅｃＮｏ＝２，ｄａｔａ＝ｆｇｈｉｊ…；」のように、セクタ番号とそのデータを組にして転送を行う。転送には、例えば、ＦＴＰ等を用いることが考えられる。事前ファイル取得部２５は、ＨＤＤ２３のセクタ（「１」、「２」、「３」、「４５」、「５６７」）へ、受信されたデータを書き込む。また、事前ファイル取得部２５は、それ以外のセクタには、特定パターンのダミーデータを書き込む。特定パターンは、例えば、全て「０」や全て「１」等、良くファイル中に出現するパターンでなければ、どのようなパターンでも良い。
【０１１０】
オンデマンドファイル取得部２６は、セクタを読み込んだ時に、セクタのデータのパターンが特定パターンと一致するか否かを比較し、一致する場合に、ファイル転送部１５から、当該セクタのデータを取得する。例えば、オンデマンドファイル取得部２６は、「４番」のセクタを読み込んだ時、「４番」のセクタには、ダミーデータである特定パターンが記録されているため、ファイル転送部１５から、「４番」のデータを取得する。次に、オンデマンドファイル取得部２６は、取得されたデータを、ＨＤＤ２３の「４番」のセクタへ書き込む。そして、オンデマンドファイル取得部２６は、ＯＳへ渡すデータを、特定パターンから、受信されたセクタのデータに差し替える。
【０１１１】
≪実施例４≫
次に、本発明の第１実施形態の更に別の動作について説明する。
【０１１２】
上記の実施例の動作では、ダミーパターンを書き込むことで、ＯＳのセクタ読み込み時に、当該セクタのデータが未受信であることを判定したが、ダミーパターンを書き込まずに、未受信セクタのリスト（未受信セクタリスト）を持つことによって判定を行っても良い。すなわち、上記の実施例の動作では、ダミーデータのパターンとの比較によって、読み込んだセクタのデータがダミーデータか否かを判定し、当該セクタのデータを取得しているが、ダミーデータを書き込まずに、受信していないセクタのリストを参照することによって、データを取得しても良い。
【０１１３】
この場合、事前ファイル取得部２５は、ファイル転送部１５が送信しなかったセクタのリスト（未受信セクタリスト）を作成する。オンデマンドファイル取得部２６は、ＯＳのセクタ読み込みの要求をフック（ｈｏｏｋ）し、未受信セクタリストに当該セクタが記録されていた場合、ファイル転送部１５へ送信要求を送信する。そして、オンデマンドファイル取得部２６は、セクタを受信し、当該セクタを未受信セクタリストから削除する。
【０１１４】
ファイル転送部１５は、ＨＤＤイメージの総セクタ数と、セクタ番号とそのデータの組を、事前ファイル取得部２５へ送信する。
【０１１５】
事前ファイル取得部２５は、総セクタ数までのセクタ番号のうち、データを受け取らなかったセクタをリストに記録する。例えば、事前ファイル取得部２５は、総セクタ数が「５」であり、「ｓｅｃＮｏ＝１，ｄａｔａ＝ａｂｃｄｅ…；」、「ｓｅｃＮｏ＝２，ｄａｔａ＝ｆｇｈｉｊ…；」、「ｓｅｃＮｏ＝４，ｄａｔａ＝ｆｇｈｉｊ…；」というセクタ番号とデータの組を受け取ったとき、未受信セクタリストを作成し、未受信セクタリストにセクタ番号「３」、「５」を記録する。
【０１１６】
オンデマンドファイル取得部２６は、ＯＳのセクタ番号「５」への読み込み要求をフック（ｈｏｏｋ）したとき、当該セクタがリストにあることを確認し、ファイル転送部１５から当該セクタのデータを取得する。そして、オンデマンドファイル取得部２６は、未受信セクタリストから、受信したセクタの情報を削除し、未受信セクタリストを「３」とする。
【０１１７】
＜第２実施形態＞
次に、本発明の第２実施形態について詳細に説明する。
本実施形態は、仮想マシン（ＶＭ）を生成するソフトウエアであるＶＭＭ（Ｖｉｒｕｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ：仮想マシンモニタ）を備えている点が、本発明の第１実施形態と異なる。
【０１１８】
［基本構成］
図６を参照すると、本発明のシンクライアントシステムは、サーバ１０と、クライアント２０を含む。
【０１１９】
サーバ１０は、ＣＰＵ１１と、メモリ１２と、ＨＤＤ１３と、ＮＩＣ１４と、ファイル転送部１５と、ファイル判定部１６を備える。
【０１２０】
クライアント２０は、ＣＰＵ２１と、メモリ２２と、ＨＤＤ２３と、ＮＩＣ２４と、事前ファイル取得部２５と、オンデマンドファイル取得部２６と、ＶＭＭ２７を備える。
【０１２１】
サーバ１０、クライアント２０、ＣＰＵ１１、メモリ１２、ＨＤＤ１３、ＮＩＣ１４、ファイル転送部１５、ファイル判定部１６、ＣＰＵ２１、メモリ２２、ＨＤＤ２３、ＮＩＣ２４、事前ファイル取得部２５、及びオンデマンドファイル取得部２６については、基本的に、本発明の第１実施形態と同じである。
【０１２２】
ＶＭＭ２７は、仮想マシン（ＶＭ）を生成する。
【０１２３】
サーバ１０のＨＤＤ１３は、仮想マシン（ＶＭ）で用いられる仮想ＨＤＤのデータを、ＶＭディスクイメージとして記録している。ファイル転送部１５は、ＶＭディスクイメージのファイルシステムを解析することによって、ＶＭディスクイメージ中のファイルを送信することができる。
【０１２４】
［全体の動作］
図７を参照して、本実施形態の全体の動作について説明する。
ステップＵ１からステップＵ３については、本発明の第１実施形態の動作のステップＳ１からステップＳ３と同じである。
【０１２５】
（１）ステップＵ１
事前ファイル取得部２５は、ファイル転送部１５へ、ファイルの送信要求を送信する。
【０１２６】
（２）ステップＵ２
ファイル転送部１５は、ファイルの送信要求に応じて、ファイル判定部１６を呼び出す。ここでは、ファイル転送部１５は、ファイルの送信要求に応じて、ファイル判定部１６に対して、事前に良く使われるファイルのリスト（送信ファイルリスト）を要求する。
【０１２７】
（３）ステップＵ３
ファイル判定部１６は、事前に良く使われるファイルのリスト（送信ファイルリスト）を取得し、取得されたリスト（送信ファイルリスト）をファイル転送部１５へ返す。ここでは、ファイル判定部１６は、ＨＤＤ２３に記録されているファイルのうち、事前に良く使われるファイルを判定して送信ファイルリストを作成し、送信ファイルリストをファイル転送部１５へ通知する。
【０１２８】
（４）ステップＵ４
ファイル転送部１５は、送信ファイルリストをファイル判定部１６から受け取り、リストに記載されているファイルをＶＭディスクイメージから読み込み、事前ファイル取得部２５へ送信する。更に、ファイル転送部１５は、ＶＭディスクイメージに記録されているファイルのうち、送信ファイルリストに記載されていないファイルについて、そのファイルの名前（ファイル名）と、ファイルのサイズを事前ファイル取得部２５へ送信する。
【０１２９】
（５）ステップＵ５
事前ファイル取得部２５は、ＨＤＤ２３にＶＭディスクイメージを生成する。次に、事前ファイル取得部２５は、ＶＭディスクイメージを解析し、受け取ったファイルをＶＭディスクイメージに書き込む。また、事前ファイル取得部２５は、ファイル名とファイルサイズを受け取ったとき、ダミーのファイルを作成する。すなわち、事前ファイル取得部２５は、良く使われるファイルを受け取った場合、良く使われるファイルをＨＤＤ２３に書き込む。また、事前ファイル取得部２５は、それ以外の場合、ダミーのデータをＨＤＤ２３に書き込む。
【０１３０】
（６）ステップＵ６
ＶＭＭ２７は、前述の事前ファイル取得部２５の処理（ステップＵ５）が終了すると、仮想マシン（ＶＭ）を生成し、仮想マシン（ＶＭ）上でＯＳを起動する。このとき、ＶＭＭ２７は、事前ファイル取得部２５の処理終了を監視するか、事前ファイル取得部２５から処理終了通知を受けることにより、事前ファイル取得部２５の処理終了を検出し、仮想マシン（ＶＭ）を生成し、仮想マシン（ＶＭ）上でＯＳを起動すると好適である。但し、実際には、これらの例に限定されない。このとき、オンデマンドファイル取得部２６は、ＶＭＭ２７からのディスク読み込み要求（アクセス要求）を待つ。
【０１３１】
（７）ステップＵ７
オンデマンドファイル取得部２６は、アクセス要求を受けると、アクセス要求のあったファイルがＨＤＤ２３に記録されているか判定する。ここでは、オンデマンドファイル取得部２６は、シグネチャリストが存在する場合、シグネチャリストを参照することによって、ＨＤＤ２３から読み込まれたセクタのデータがダミーであるか否かを判定する。シグネチャリストについては、後に詳述する。オンデマンドファイル取得部２６は、シグネチャリストが存在しない場合、自動的に、ＨＤＤ２３から読み込まれたセクタのデータがダミーではないと判定する。ＨＤＤ２３から読み込まれたセクタのデータがダミーである場合は、アクセス要求のあったファイルがＨＤＤ２３に記録されていないことを示す。オンデマンドファイル取得部２６は、ＨＤＤ２３から読み込まれたセクタのデータがダミーである場合、シグネチャリストから、どのファイルへのアクセスであるかを特定する。
【０１３２】
（８）ステップＵ８
そして、オンデマンドファイル取得部２６は、アクセス要求のあったファイルの送信要求を、ファイル転送部１５へ送信する。
【０１３３】
（９）ステップＵ９
ファイル転送部１５は、アクセス要求のあったファイルの送信要求に応じて、要求されたファイルを、オンデマンドファイル取得部２６へ送信する。
【０１３４】
（１０）ステップＵ１０
次に、オンデマンドファイル取得部２６は、ファイル転送部１５からファイルを受信し、ＨＤＤ２３に記録されているダミーデータを、受信されたファイルのデータで上書きする。
【０１３５】
［ダミーファイルの生成方法］
図８を参照して、ステップＵ５におけるダミーファイルの生成方法について説明する。
【０１３６】
（１）ステップＶ１
まず、事前ファイル取得部２５は、各ファイルに固有なシグネチャを生成する。シグネチャのサイズは、ＨＤＤ２３のセクタサイズ以内であれば、どのような長さでも良い。事前ファイル取得部２５は、シグネチャのサイズがＨＤＤ２３のセクタサイズと等しい場合は、シグネチャをダミーデータとする。事前ファイル取得部２５は、シグネチャのサイズがＨＤＤ２３のセクタサイズよりも小さい場合、シグネチャにパディング（ｐａｄｄｉｎｇ）を加え、セクタサイズと等しいダミーデータを生成する。
【０１３７】
（２）ステップＶ２
次に、事前ファイル取得部２５は、ファイルのデータの代わりに、ファイルの各セクタにダミーデータを書き込む。
【０１３８】
（３）ステップＶ３
最後に、事前ファイル取得部２５は、書き込んだダミーデータに含まれるシグネチャとファイルを対応付けたシグネチャリストを作成する。ここでは、事前ファイル取得部２５は、作成されたシグネチャリストに、シグネチャとファイル名を対応付けて追加し、当該シグネチャリストをＨＤＤ２３に格納する。図９に、シグネチャリストの例を示す。
【０１３９】
［オンデマンドファイル取得動作］
図１０を参照して、ステップＵ１０におけるオンデマンドファイル取得部２６の詳細な動作について説明する。
【０１４０】
（１）ステップＷ１
オンデマンドファイル取得部２６は、ファイルを受信すると、ＶＭディスクイメージのファイルシステムを解析し、アクセス要求のあったファイルが、どのセクタに記録されているかを特定する。すなわち、オンデマンドファイル取得部２６は、ＶＭディスクイメージのファイルシステムを解析し、アクセス要求のあったファイルのセクタを特定する。
【０１４１】
（２）ステップＷ２
次に、オンデマンドファイル取得部２６は、ファイルの先頭のセクタを書き換え対象のセクタとする。すなわち、オンデマンドファイル取得部２６は、ファイルの先頭のセクタを、書き換え対象に設定する。
【０１４２】
（３）ステップＷ３
そして、オンデマンドファイル取得部２６は、書き換え対象のセクタのデータに、シグネチャが記録されているかを確認する。ここでは、オンデマンドファイル取得部２６は、シグネチャリストとのパターンマッチングによって、書き換え対象のセクタのデータにシグネチャが記録されているかを確認する。
【０１４３】
（４）ステップＷ４
オンデマンドファイル取得部２６は、書き換え対象のセクタのデータにシグネチャが記録されている場合、当該書き換え対象のセクタにはダミーデータが記録されているため、当該書き換え対象のセクタへ、受信されたファイルの先頭からＨＤＤ２３のセクタサイズ分だけ書き込む。
【０１４４】
（５）ステップＷ５
そして、オンデマンドファイル取得部２６は、ファイルの全てのセクタを処理したか否かを確認する。このとき、オンデマンドファイル取得部２６は、ファイルの全てのセクタを処理している場合、処理を終了する。
【０１４５】
（６）ステップＷ６
オンデマンドファイル取得部２６は、ファイルの全てのセクタを処理していない場合、当該書き換え対象のセクタの次のセクタを、新たに書き換え対象のセクタとする。すなわち、オンデマンドファイル取得部２６は、ファイルの全てのセクタを処理していない場合、当該書き換え対象のセクタの次のセクタを、新たに、書き換え対象に設定する。
【０１４６】
なお、オンデマンドファイル取得部２６は、次のセクタも、最初のセクタと同様に、ステップＷ３、ステップＷ４のように処理する。但し、オンデマンドファイル取得部２６は、ステップＷ４においてデータを書き込む際、例えば、対象セクタがファイルの「ｉ」番目であるとき、ＨＤＤ２３のセクタサイズを「Ｓ」とすると、ファイルの「ｉ×Ｓ＋１ｂｙｔｅ」目から、「（ｉ＋１）×Ｓ＋１ｂｙｔｅ」目のデータを書き込む。
【０１４７】
ＶＭディスクイメージのファイルシステムは、一貫性を保つため、２重にマウントできない。つまり、ＯＳ起動前は、ＶＭイメージをマウントすることができるが、ＯＳ起動後はＯＳによってマウントされているため、マウント不可能である。よって、事前ファイル取得部２５は、ＶＭディスクイメージをマウントし、ファイル単位でデータをＶＭイメージに書き込むことが出来るが、オンデマンドファイル取得部２６は、セクタ単位でのファイル内容書き換えしか行えない。このため、ステップＵ５において、ダミーのファイルを作り、ステップＵ１においてダミーのファイル内容が記録されているセクタの内容を置き換かえている。
【０１４８】
上記の動作では、ＨＤＤの各セクタに書き込まれたダミーデータ中のシグネチャによって、読み込まれたセクタにダミーデータが記録されているか否かを判定している。事前ファイル取得部２５は、シグネチャではなくダミーデータをＨＤＤ２３に書き込むときに、ダミーデータが書き込まれたセクタのリスト（ダミーデータリスト）を作成する。オンデマンドファイル取得部２６は、当該リスト（ダミーデータリスト）を参照することによって、読み込んだセクタにダミーデータが記録されているか否かを判定しても良い。
【０１４９】
以下に、本実施形態における各部の動作を詳細に説明する。
【０１５０】
事前ファイル取得部２５は、シグネチャを生成せず、例えば、「０」をダミーデータとして、ＨＤＤ２３にファイルを書き込む。次に、事前ファイル取得部２５は、どのセクタにファイルが記録されたかを、ファイルシステムを解析することによって収集し、内容がダミーデータであるファイルの名前（ファイル名）と、そのセクタ番号を記録したリスト（ダミーデータリスト）を作成する。
【０１５１】
オンデマンドファイル取得部２６は、ＶＭＭ２７によるＨＤＤ２３のセクタ読み込みをフック（ｈｏｏｋ）し、読み込み対象のセクタがダミーデータリストに載っているか確認する。オンデマンドファイル取得部２６は、読み込み対象のセクタがダミーデータリストに載っていない場合、ＨＤＤ２３から対象セクタを読み込み、ＶＭＭ２７へ渡す。オンデマンドファイル取得部２６は、読み込み対象のセクタがダミーデータリストに載っている場合、ダミーデータリストから対象セクタがどのファイルの一部であるかを特定する。次に、オンデマンドファイル取得部２６は、特定されたファイルを、ファイル転送部１５より取得する。そして、オンデマンドファイル取得部２６は、ダミーデータリストに記載されているセクタに、取得されたファイルを記録する。最後に、オンデマンドファイル取得部２６は、ＶＭＭ２７から要求のあったセクタのデータをＶＭＭ２７へ渡す。
【０１５２】
上記の第２実施形態の動作では、事前ファイル取得部２５とオンデマンドファイル取得部２６は、ファイル転送部１５から、ファイル単位で取得を行っていた。本発明の第１実施形態の別の動作のように、ファイル単位ではなく、セクタ単位で取得しても良い。事前ファイル取得部２５、オンデマンドファイル取得部２６、及びファイル転送部１５の動作は、本発明の第１実施形態と同様のため、説明を省略する。
【０１５３】
第２実施形態の効果は、仮想ＰＣシステムにも、高速に動作するネットブート型シンクライアント実施方法を、適用できることである。
【０１５４】
≪実施例５≫
次に、本発明の第２実施形態の具体的な実施例について説明する。
【０１５５】
本発明の第１実施形態と第２実施形態の違いは、事前ファイル取得部２５とオンデマンドファイル取得部２６のファイルの書き込みの動作にあるため、それらの動作について具体的に説明する。
【０１５６】
［事前ファイル取得動作］
まず、事前ファイル取得部２５の動作について説明する。
【０１５７】
ファイル転送部１５は、ＯＳ起動前に、ファイル判定部１６から受け取った送信ファイルリストに従って、ファイルを送信する。更に、ファイル転送部１５は、それ以外のファイルのファイル名とファイルサイズのリストを送信する。
【０１５８】
リストは、例えば、次のように記述される。
「ｎａｍｅ＝ｃ：￥ａ．ｔｘｔ  ｓｉｚｅ＝１０ｂｙｔｅ；  ｎａｍｅ＝ｃ：￥ｂ．ｅｘｅ  ｓｉｚｅ＝１０００ｂｙｔｅ；  …」
【０１５９】
ファイルやリストの送信には、例えば、ＦＴＰ等を用いることが考えられる。
【０１６０】
事前ファイル取得部２５は、ファイル転送部１５から受け取ったファイルをＨＤＤ２３へ書き込む。そして、以下の方法で、ダミーファイルを作成する。
【０１６１】
例えば、事前ファイル取得部２５は、乱数を用いてシグネチャを生成する。シグネチャのサイズとしては、ＨＤＤ２３のセクタサイズ、例えば、「５１２ｂｙｔｅ」までの任意の長さを用いることが考えられる。事前ファイル取得部２５は、シグネチャのサイズがＨＤＤ２３のサイズと等しくないとき、シグネチャの後に、例えば、０を追加してパディング（ｐａｄｄｉｎｇ）とし、ＨＤＤのセクタサイズのダミーデータを作成する。例えば、事前ファイル取得部２５は、シグネチャが「６４ｂｙｔｅ」のとき、「４４８ｂｙｔｅ」のパディング（ｐａｄｄｉｎｇ）を追加する。
【０１６２】
次に、事前ファイル取得部２５は、ダミーデータをＨＤＤ２３へ書き込む。例えば、ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅｓ）ファイルシステムでは、ＨＤＤのセクタサイズが「５１２ｂｙｔｅ」のとき、「１５００ｂｙｔｅ」のファイルは、３個のセクタを使用する。事前ファイル取得部２５は、これらの３個のセクタへダミーデータを記録する。更に、事前ファイル取得部２５は、生成されたシグネチャと、ファイル名を、シグネチャリストに記録する。例えば、事前ファイル取得部２５は、「Ｃ：￥ａ．ｔｘｔ」というファイルに対し、「ＡＢＣＤＥＦ…」を生成したとき、図９のリストの１行目に追加する。
【０１６３】
事前ファイル取得部２５が全てのダミーファイルをＨＤＤ２３に書き込んだ後、ＯＳが起動される。例えば、事前ファイル取得部２５は、全てのダミーファイルをＨＤＤ２３に書き込んだ後、ＯＳの起動要求をＣＰＵ２１に通知する。ＣＰＵ２１は、ＯＳの起動要求に応じて、ＯＳを起動する。
【０１６４】
［オンデマンドファイル取得動作］
次に、オンデマンドファイル取得部２６の動作について、具体的に説明する。
【０１６５】
オンデマンドファイル取得部２６は、セクタ単位でＯＳの読み込みを監視する。そして、オンデマンドファイル取得部２６は、ＨＤＤ２３から、特定のセクタが読み込まれたとき、そのセクタの内容が、シグネチャを含むか否かを確認する。
【０１６６】
ＶＭＭ２７は、例えば、「Ｘｅｎ」や「ＶＭＷａｒｅ（登録商標）」である。
【０１６７】
例えば、ＶＭＭ２７が「Ｘｅｎ」であれば、仮想ハードディスクを生成するプログラムである「ｑｅｍｕ−ｄｍ」（ＱＥＭＵデバイスモデルプログラム）を監視することで、ＨＤＤ２３の読み込みを監視することが出来る。ＱＥＭＵは、多種のＣＰＵをエミュレートするプログラムである。シグネチャを含むか否かの判定は、例えば、ＶＭで使用されているファイルシステムがＦＡＴであるとき、セクタの先頭からシグネチャのサイズだけ、シグネチャリストの各行と比較を行えば良い。
【０１６８】
オンデマンドファイル取得部２６は、読み込まれたセクタがダミーデータではなかった場合、そのセクタの情報をＶＭＭ２７へ渡す。また、オンデマンドファイル取得部２６は、読み込まれたセクタがダミーデータであった場合、ファイル転送部１５からファイルを取得する。取得には、例えば、ＦＴＰ等を用いることが考えられる。例えば、ＶＭで使用されているファイルシステムがＦＡＴであれば、ディレクトリエントリとＦＡＴエントリから、ファイルが記録されているセクタを求めることができる。オンデマンドファイル取得部２６は、ファイル転送部１５から取得したファイルを、「５１２ｂｙｔｅ」単位で分割し、ファイルのセクタに、先頭から順番に書き込む。最後に、ＶＭＭ２７から読み出し要求があったセクタのデータをＶＭＭ２７に渡す。
【０１６９】
次に、本実施形態では、本発明の第１実施形態のように、セクタ単位でデータの取得を行っても良い。具体的な動作については、本発明の第１実施形態と同様である。
【０１７０】
また、本実施形態では、本発明の第１実施形態のように、ダミーデータのパターンではなく、未受信セクタリストを用いて、未受信のセクタか否かを判定しても良い。具体的な動作については、本発明の第１実施形態と同様である。
【０１７１】
なお、本発明の各実施形態は、組み合わせて実施することも可能である。
【０１７２】
本発明によれば、シンクライアントを利用した情報漏洩対策に利用できる。
【０１７３】
＜要点＞
最後に、本発明の特徴について説明する。
【０１７４】
本発明のシンクライアントシステムは、ユーザが使用する第１のコンピュータが、第２のコンピュータから、ファイルを取得するシステムであって、第１のコンピュータは、ＯＳ動作前にファイルを取得する事前ファイル取得手段と、ＯＳ動作中にＯＳが要求するファイルを取得するオンデマンドファイル取得手段とを備える。第２のコンピュータは、事前ファイル取得手段が受信するファイルのリストを作成するファイル判定手段と、リストのファイルを事前ファイル取得手段へ送信し、更に、オンデマンドファイル取得手段から要求のあったファイルをオンデマンドファイル取得手段へ送信するファイル転送手段とを備える。
【０１７５】
また、本発明のシンクライアントシステムは、ユーザが使用する第１のコンピュータが、第２のコンピュータから、ファイルを取得するシステムであって、第１のコンピュータは、仮想マシン（ＶＭ）を生成する仮想マシンモニタと、仮想マシン（ＶＭ）動作前にファイルを取得し、更に、仮想マシン（ＶＭ）動作前に取得しなかったファイルについて、ダミーデータを持つファイルを作成する事前ファイル取得手段と、仮想マシン（ＶＭ）動作中に仮想マシン（ＶＭ）が要求するファイルのデータを取得し、ファイルのダミーデータを取得したデータで差し替えるオンデマンドファイル取得手段とを備える。第２のコンピュータは、事前ファイル取得手段が受信するファイルのリストを作成するファイル判定手段と、リストのファイルを事前ファイル取得手段へ送信し、更に、オンデマンドファイル取得手段から要求のあったファイルをオンデマンドファイル取得手段へ送信するファイル転送手段とを備える。
【０１７６】
このとき、事前ファイル取得手段は、ファイルごとに特定パターンのダミーデータを作成し、更にファイルごとのパターンとファイル名を記録したリストを作成する。オンデマンドファイル取得手段は、ハードディスクから読み込まれたセクタのデータとリストを比較し、データのパターンがリストに記載されていた場合にリストからファイル名を求め、ファイル転送手段から当該ファイルのデータを取得する。
【０１７７】
なお、オンデマンドファイル取得手段は、ファイルシステムの情報を書き換えずに、ファイルのデータだけを差し替える。
【０１７８】
また、本発明のシンクライアントシステムは、ユーザが使用する第１のコンピュータが、第２のコンピュータから、ハードディスクのセクタのデータを取得するシステムであって、第１のコンピュータは、ＯＳ動作前にセクタのデータを取得する事前ファイル取得手段と、ＯＳ動作中にＯＳが要求するセクタのデータを取得するオンデマンドファイル取得手段とを備える。第２のコンピュータは、事前ファイル取得手段が受信するセクタのリストを作成するファイル判定手段と、リストのセクタを事前ファイル取得手段へ送信し、更に、オンデマンドファイル取得手段から要求のあったセクタを、オンデマンドファイル取得手段へ送信するファイル転送手段とを備える。
【０１７９】
また、本発明のシンクライアントシステムは、ユーザが使用する第１のコンピュータが、第２のコンピュータから、ハードディスクのセクタのデータを取得するシステムであって、第１のコンピュータは、仮想マシン（仮想マシン（ＶＭ））を生成する仮想マシンモニタと、仮想マシン（ＶＭ）動作前にセクタのデータを取得する事前ファイル取得手段と、仮想マシン（ＶＭ）動作中に仮想マシン（ＶＭ）が要求するセクタのデータを取得するオンデマンドファイル取得手段とを備える。第２のコンピュータは、事前ファイル取得手段が受信するセクタのリストを作成するファイル判定手段と、リストのセクタを事前ファイル取得手段へ送信し、更に、オンデマンドファイル取得手段から要求のあったセクタをオンデマンドファイル取得手段へ送信するファイル転送手段とを備える。
【０１８０】
このとき、事前ファイル取得手段は、特定パターンのダミーデータを作成する。オンデマンドファイル取得手段は、ハードディスクから読み込まれたセクタのデータがパターンを含むか否かを検索することによって、当該セクタのデータがダミーか否かを判定し、ダミーデータである場合に当該セクタのデータをファイル転送手段から取得する。
【０１８１】
更に、ファイル転送手段は、事前ファイル取得手段へ送信しなかったファイル又はセクタのリストを作成して、リストを事前ファイル取得手段へ送信する。事前ファイル取得手段は、リストに記載のファイル又はセクタについて、ダミーデータを作成する。
【０１８２】
或いは、事前ファイル取得手段は、取得していないセクタを記録したリストを作成する。オンデマンドファイル取得手段は、ハードディスクから読み込もうとしているセクタがリストに記載されているかを確認し、記載されていた場合にファイル転送手段から当該セクタのデータを取得する。
【０１８３】
ファイル判定手段は、管理者から与えられたリストを、ファイル転送手段へ渡す。
【０１８４】
或いは、ファイル判定手段は、オンデマンドファイル取得手段からファイルの使用状況を受信し、使用頻度の高いファイルのリストを作成し、ファイル転送手段へ渡す。
【０１８５】
或いは、ファイル判定手段は、オンデマンドファイル取得手段からファイルの使用状況を受信し、最近使用したファイルのリストを作成し、ファイル転送手段へ渡す。
【０１８６】
或いは、ファイル判定手段は、管理者が指定した日時よりも新しい更新日時のファイルのリストを作成し、ファイル転送手段へ渡す。
【０１８７】
或いは、ファイル判定手段は、管理者から与えられたリストと、前述の動作によって作成されたリストをマージし、ファイル転送手段へ渡す。
【０１８８】
＜まとめ＞
以上のように、本発明のシンクライアントシステムは、クライアントにＯＳ起動前にファイルを取得する事前ファイル取得手段と、ＯＳ起動中にファイルを取得するオンデマンドファイル取得手段とを備え、サーバにファイルが高頻度に使われるか否かを判定するファイル判定部１６を備える。このような構成を採用し、使用頻度の高いファイルをＯＳ起動前にダウンロードし、使用頻度の低いファイルをオンデマンドにダウンロードすることによって、本発明の目的を達成することができる。
【０１８９】
ここでは、ＮＩＣを用いて通信を行うことによって、ファイルやデータをやり取りする事例について説明しているが、実際には、ＵＳＢメモリやＤＶＤ等の記憶媒体にファイルやデータを記憶し、当該記憶媒体を介して、ファイルやデータをやり取りすることも可能である。この場合、ＮＩＣの代わりに、ＵＳＢポート等の接続口（コネクタ）やＤＶＤドライブ等の読取装置が使用される。
【０１９０】
また、ここでは、ファイルやセクタのデータを例に説明しているが、実際には、これら以外の単位データを使用することも可能である。単位データは、サーバ及びクライアントが格納又は送受信するデータの最小単位であると好適である。
【０１９１】
以上、本発明の実施形態を詳述してきたが、実際には上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【０１９２】
なお、本出願は、日本出願番号２００９−００１３７２に基づく優先権を主張するものであり、日本出願番号２００９−００１３７２における開示内容は引用により本出願に組み込まれる。
【図１】
0005477660.tif 000002
【図２】
0005477660.tif 000003
【図３】
0005477660.tif 000004
【図４】
0005477660.tif 000005
【図５】
0005477660.tif 000006
【図６】
0005477660.tif 000007
【図７】
0005477660.tif 000008
【図８】
0005477660.tif 000009
【図９】
0005477660.tif 000010
【図１０】
0005477660.tif 000011