(57)【要約】【課題】  オペレーティングシステムの処理を妨げることなく、記憶装置の空き容量を有効に活用する。【解決手段】  情報処理装置のオペレーティングシステムが管理する記憶装置にデータをキャッシュするキャッシュシステムであって、記憶装置のうちオペレーティングシステムが使用していない未使用領域に、キャッシュすべきキャッシュデータを格納する格納指示手段と、格納指示手段により格納されたキャッシュデータの格納位置を管理する格納位置管理手段と、格納位置管理手段により管理された格納位置からキャッシュデータを取得して、取得したキャッシュデータが、オペレーティングシステムが当該格納位置を使用したことにより破壊されたか否かを判断する誤り判断手段と、キャッシュデータが破壊されてないと判断された場合に、キャッシュデータを出力する出力手段とを備えるキャッシュシステムを提供する。【選択図】図２
2005122602.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置のオペレーティングシステムが管理する記憶装置にデータをキャッシュするキャッシュシステムであって、
前記記憶装置のうち前記オペレーティングシステムが使用していない未使用領域に、キャッシュすべきキャッシュデータを格納する格納指示手段と、
前記格納指示手段により格納された前記キャッシュデータの格納位置を管理する格納位置管理手段と、
前記格納位置管理手段により管理された格納位置から前記キャッシュデータを取得して、取得した前記キャッシュデータが、前記オペレーティングシステムが当該格納位置を使用したことにより破壊されたか否かを判断する誤り判断手段と、
前記キャッシュデータが破壊されてないと判断された場合に、前記キャッシュデータを出力する出力手段と
を備えるキャッシュシステム。
【請求項２】
前記キャッシュデータを複数のデータセグメントに分割する分割手段を更に備え、
前記格納指示手段は、前記複数のデータセグメントのそれぞれを、前記未使用領域のうち互いに連続しない複数の領域に１つずつ格納し、
前記格納位置管理手段は、前記複数のデータセグメントの各々が格納された格納位置を管理し、
前記誤り判断手段は、前記格納位置管理手段により管理された格納位置から前記複数のデータセグメントを取得し、取得した前記複数のデータセグメントのそれぞれが、前記オペレーティングシステムにより破壊されたか否かを判断し、
前記出力手段は、前記誤り判断手段により破壊されてないと判断されたデータセグメントを出力する
請求項１記載のキャッシュシステム。
【請求項３】
前記複数のデータセグメントの何れかに生じた誤りを訂正するための冗長データを有する冗長セグメントを生成する冗長セグメント生成手段を更に備え、
前記格納指示手段は、前記冗長セグメントを、前記記憶装置の前記未使用領域に更に格納し、
前記格納位置管理手段は、前記冗長セグメントの格納位置を更に管理し、
前記誤り判断手段は、前記格納位置管理手段により管理された格納位置から、前記冗長セグメントを更に取得し、
当該キャッシュシステムは、
前記誤り判断手段により、前記複数のデータセグメントの何れかが前記オペレーティングシステムにより破壊されたと判断された場合に、破壊された当該データセグメントを、破壊されてない他のデータセグメント及び前記冗長セグメントを用いて復元する誤り訂正手段を更に備え、
前記出力手段は、前記誤り訂正手段により復元されたデータセグメントを更に出力する
請求項２に記載のキャッシュシステム。
【請求項４】
前記オペレーティングシステムは、前記記憶装置にファイルのデータを格納すると共に、当該ファイルの格納位置を示す属性情報を前記記憶装置に格納することにより、当該ファイルを前記記憶装置に生成し、当該ファイルのデータを前記記憶装置に残したまま、当該ファイルの属性情報を削除することにより、当該ファイルを前記記憶装置から削除し、
前記格納指示手段は、前記オペレーティングシステムに前記キャッシュデータをファイルとして格納させ、前記記憶装置のうち前記ファイルが格納された格納位置を前記格納位置管理手段により管理させ、格納させた当該ファイルを前記オペレーティングシステムに削除させることにより、前記キャッシュデータを前記未使用領域に格納する
請求項１に記載のキャッシュシステム。
【請求項５】
前記キャッシュデータを複数のデータセグメントに分割する分割手段を更に備え、
前記格納指示手段は、前記オペレーティングシステムにより、前記複数のデータセグメントのそれぞれを１つずつ互いに異なる複数のディレクトリにファイルとして格納させ、格納させた各ファイルを削除させ、
前記格納位置管理手段は、前記複数のデータセグメントの各々が格納された格納位置を管理し、
前記誤り判断手段は、前記格納位置管理手段により管理された格納位置から前記複数のデータセグメントを取得し、取得した前記複数のデータセグメントのそれぞれが、前記オペレーティングシステムにより破壊されたか否かを判断し、
前記出力手段は、前記誤り判断手段により破壊されてないと判断されたデータセグメントを出力する
請求項４に記載のキャッシュシステム。
【請求項６】
前記格納指示手段により指示され前記オペレーティングシステムが格納した前記ファイルを、複数のデータセグメントに分割して、分割した当該複数のデータセグメントのそれぞれを、前記記憶装置において互いに連続しない記憶領域に移動させる格納位置変更手段を更に備え、
前記格納指示手段は、前記格納位置変更手段により格納位置が変更された前記ファイルを削除することにより、前記キャッシュデータを前記複数のデータセグメントとして前記未使用領域に格納する
請求項４記載のキャッシュシステム。
【請求項７】
前記オペレーティングシステムが前記未使用領域の複数の部分を使用する順序の履歴を管理する使用履歴管理手段を更に備え、
前記格納位置変更手段は、前記使用履歴管理手段により管理された履歴に基づいて、前記未使用領域のうち前記オペレーティングシステムが次に使う確率が所定の基準確率以上である部分を検出し、検出した部分以外の前記未使用領域に、前記複数のデータセグメントのそれぞれを移動する
請求項６記載のキャッシュシステム。
【請求項８】
前記格納指示手段は、前記記憶装置よりアクセス速度が遅いデバイスから前記情報処理装置がデータを取得した場合に、前記情報処理装置が取得した当該データを前記キャッシュデータとして前記未使用領域に格納し、
前記誤り判断手段は、前記情報処理装置が前記デバイスから再度当該データを取得する場合に、前記格納位置管理手段により管理された格納位置から前記キャッシュデータを取得し、
前記キャッシュデータが破壊されてないと判断された場合に、前記出力手段は、前記キャッシュデータを出力する
請求項１記載のキャッシュシステム。
【請求項９】
前記格納指示手段は、他のウェブページへのハイパーリンクを含むウェブページが前記情報処理装置により表示されている場合に、前記ハイパーリンクのリンク先のウェブページを、前記キャッシュデータとして前記記憶装置の前記未使用領域に格納し、
前記ハイパーリンクのリンク先のウェブページが表示される場合において、前記キャッシュデータが破壊されてないと判断された場合に、前記出力手段は、前記キャッシュデータを出力する
請求項１記載のキャッシュシステム。
【請求項１０】
オペレーティングシステムにより管理される記憶装置を各々が有し、他の情報処理装置が用いるデータを互いにキャッシュする複数の情報処理装置を備える情報処理システムであって、
前記複数の情報処理装置の各々が、
他の情報処理装置がキャッシュするデータと同一のキャッシュデータを、複数のデータセグメントに分割する分割手段と、
当該情報処理装置の記憶装置のうち、当該情報処理装置のオペレーティングシステムが使用していない未使用領域内の互いに連続しない複数の領域に、前記分割手段により分割された前記複数のデータセグメントを１つずつ格納する格納指示手段と、
前記複数のデータセグメントの各々が格納された格納位置を管理する格納位置管理手段と、
前記格納位置管理手段により管理される格納位置から前記複数のデータセグメントを取得して、取得した前記複数のデータセグメントのそれぞれが、前記オペレーティングシステムが当該格納位置を使用したことにより破壊されたか否かを判断する誤り判断手段と、
前記誤り判断手段により破壊されてないと判断されたデータセグメントを出力する出力手段と、
他の複数の情報処理装置の各々における前記出力手段が出力したデータセグメントに基づいて前記キャッシュデータを復元する復元手段と
を有する情報処理システム。
【請求項１１】
前記複数の情報処理装置の各々が、
当該情報処理装置が格納する前記複数のデータセグメントのうち何れのデータセグメントが、前記オペレーティングシステムにより破壊されておらず有効であるかを示す有効性情報を出力する有効性情報出力手段と、
他の複数の情報処理装置の各々における前記有効性情報出力手段が出力した前記有効性情報に基づいて、同一の有効なデータセグメントを共通して格納する２以上の他の情報処理装置を検出した場合に、検出した情報処理装置のうち当該データセグメントを取得する取得先の情報処理装置を選択する取得先選択手段と
を更に有し、
前記復元手段は、前記取得先選択手段により選択された取得先の情報処理装置の各々からデータセグメントを取得して、取得したデータセグメントを結合することにより、前記キャッシュデータを復元する
請求項１０記載の情報処理システム。
【請求項１２】
前記取得先選択手段は、当該情報処理装置から他の複数の情報処理装置の各々に至る通信経路の通信速度又は前記他の複数の情報処理装置の各々の計算処理能力に更に基づいて、データセグメントを取得する取得先の情報処理装置を選択する
請求項１１記載の情報処理システム。
【請求項１３】
情報処理装置のオペレーティングシステムが管理する記憶装置にデータをキャッシュするキャッシュ方法であって、
前記記憶装置のうち前記オペレーティングシステムが使用していない未使用領域に、キャッシュすべきキャッシュデータを格納する格納指示段階と、
前記格納指示段階において格納された前記キャッシュデータの格納位置を管理する格納位置管理段階と、
前記格納位置管理段階において管理された格納位置から前記キャッシュデータを取得して、取得した前記キャッシュデータが、前記オペレーティングシステムが当該格納位置を使用したことにより破壊されたか否かを判断する誤り判断段階と、
前記キャッシュデータが破壊されてないと判断された場合に、前記キャッシュデータを出力する出力段階と
を備えるキャッシュ方法。
【請求項１４】
情報処理装置のオペレーティングシステムが管理する記憶装置にデータをキャッシュするキャッシュシステムを制御するプログラムであって、
前記情報処理装置を、
前記記憶装置のうち前記オペレーティングシステムが使用していない未使用領域に、キャッシュすべきキャッシュデータを格納する格納指示手段と、
前記格納指示手段により格納された前記キャッシュデータの格納位置を管理する格納位置管理手段と、
前記格納位置管理手段により管理された格納位置から前記キャッシュデータを取得して、取得した前記キャッシュデータが、前記オペレーティングシステムが当該格納位置を使用したことにより破壊されたか否かを判断する誤り判断手段と、
前記キャッシュデータが破壊されてないと判断された場合に、前記キャッシュデータを出力する出力手段と
して機能させるプログラム。
【請求項１５】
請求項１４記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュシステム、情報処理システム、キャッシュ方法、プログラム、及び記録媒体に関する。特に、本発明は、記憶装置にデータをキャッシュするキャッシュシステム、情報処理システム、キャッシュ方法、プログラム、及び記録媒体に関する。
【背景技術】
【０００２】
近年、コンピュータネットワークの発達に伴い、音声、画像、又は動画等を含む、比較的データサイズの大きいファイルが高速に送受信できるようになってきている。しかしながら、需要の高いファイル等を提供するファイル提供サーバにネットワークのトラフィックが集中した場合等には、通信速度が低下したり、通信不能に陥ったりする場合がある。
【０００３】
これを防ぐために、従来、ミラー・サーバ又はエッジ・サーバが用いられている。即ち、ミラー・サーバ等は、ファイル提供サーバから取得したファイルをキャッシュして、ファイル提供サーバと共に他のコンピュータに提供することにより、ファイル提供サーバの負荷を分散することができる。また、他の方法として、グリッドコンピューティング又はＰ２Ｐネットワークのように、ネットワーク上の多数のコンピュータをキャッシュ用の記憶装置として用いる方法も提案されている。
【０００４】
現時点で先行公知文献の存在を確認していないので、先行公知文献に関する記載を省略する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、ミラー・サーバの導入・維持・管理には、多くの費用を要する。また、グリッドコンピューティング等の方法によると、本来他の目的で使用されるべきコンピュータの空き領域を利用することになるので、各コンピュータの本来の処理を妨げてしまう場合がある。本来の処理を妨げないように、キャッシュするデータに有効期限等を設ける工夫も考えられるが、キャッシュが利用される時期を予測するのは困難なため、有効期限を適切に決定するのは困難である。
【０００６】
そこで本発明は、上記の課題を解決することのできるキャッシュシステム、情報処理システム、キャッシュ方法、プログラム、及び記録媒体を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の第１の形態においては、情報処理装置のオペレーティングシステムが管理する記憶装置にデータをキャッシュするキャッシュシステムであって、記憶装置のうちオペレーティングシステムが使用していない未使用領域に、キャッシュすべきキャッシュデータを格納する格納指示手段と、格納指示手段により格納されたキャッシュデータの格納位置を管理する格納位置管理手段と、格納位置管理手段により管理された格納位置からキャッシュデータを取得して、取得したキャッシュデータが、オペレーティングシステムが当該格納位置を使用したことにより破壊されたか否かを判断する誤り判断手段と、キャッシュデータが破壊されてないと判断された場合に、キャッシュデータを出力する出力手段とを備えるキャッシュシステム、情報処理システム、当該キャッシュシステムを用いたキャッシュ方法、当該キャッシュシステムとして情報処理装置を機能させるプログラム、及び当該プログラムを記録した記録媒体を提供する。
【０００８】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明の効果】
【０００９】
本発明によれば、オペレーティングシステムの処理を妨げることなく、記憶装置の空き容量を有効に活用することができる。
【発明を実施するための最良の形態】
【００１０】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１１】
図１は、情報処理システム１０の概略を示す。情報処理システム１０は、情報処理装置２０−１〜Ｎと、サーバ装置４０とを備える。情報処理装置２０−１〜Ｎの各々は、オペレーティングシステムにより管理される記憶装置を有しており、サーバ装置４０から取得したデータをその記憶装置にキャッシュする。そして、情報処理装置２０−１〜Ｎの各々は、当該情報処理装置が記憶装置にキャッシュしたデータや、他の情報処理装置がキャッシュしたデータを取得して処理に用いる。これにより、サーバ装置４０のデータをキャッシュするための専用の装置を設けることなく、サーバ装置４０にアクセスが集中することを避けることができる。
【００１２】
このように、情報処理装置２０−１〜Ｎの各々は、当該情報処理装置が後に用いるデータを予めキャッシュするのみならず、他の情報処理装置が用いるデータを互いにキャッシュする。そこで、本実施例では、便宜上、情報処理装置（取得側装置）２０−Ｎが、情報処理装置（キャッシュ側装置）２０−１〜（Ｎ−１）の記憶装置に格納されたキャッシュデータを取得する処理について説明する。
【００１３】
図２は、キャッシュ側装置２０−１及び取得側装置２０−Ｎのブロック図である。本図において、情報処理装置がキャッシュデータを格納して出力する手段を、キャッシュ側装置２０−１の手段として説明する。また、情報処理装置が他の情報処理装置からキャッシュデータを取得する手段を、取得側装置２０−Ｎの手段として説明する。キャッシュ側装置２０−２〜（Ｎ−１）のそれぞれは、キャッシュ側装置２０−１及び取得側装置２０−Ｎの双方の手段を有しており、キャッシュ側装置２０−１及び取得側装置２０−Ｎの構成と略同一であるので、以降の説明を省略する。
【００１４】
キャッシュ側装置２０−１は、キャッシュシステム２００と、オペレーティングシステム５０と、記憶装置６０とを有する。記憶装置６０は、オペレーティングシステム５０により管理されており、例えばハードディスクドライブ等の補助記憶装置であってもよいし、メモリ等の主記憶装置であってもよい。キャッシュシステム２００は、分割手段２１０と、冗長セグメント生成手段２２０と、格納指示手段２３０と、格納位置管理手段２４０と、誤り判断手段２７０と、誤り訂正手段２８０と、出力手段２９０と、有効性情報出力手段２９５とを有する。
【００１５】
分割手段２１０は、他のキャッシュ側装置がキャッシュするデータと同一のキャッシュデータをサーバ装置４０から取得して、複数のデータセグメントに分割する。例えば、分割手段２１０は、キャッシュデータを、オペレーティングシステム５０が記憶装置６０に書き込むデータの最小単位であるブロック・サイズ毎に分割してもよい。冗長セグメント生成手段２２０は、複数のデータセグメントの何れかに生じた誤りを訂正するための冗長データを有する冗長セグメントを、複数のデータセグメントに基づいて生成する。
【００１６】
格納指示手段２３０は、記憶装置６０のうちオペレーティングシステム５０が使用していない未使用領域に、複数のデータセグメント及び冗長セグメントを格納する。例えば、格納指示手段２３０は、オペレーティングシステム５０にデータセグメントをファイルとして格納させ、記憶装置６０のうちデータセグメントが格納された格納位置を格納位置管理手段２４０に管理させ、格納させた当該ファイルをオペレーティングシステム５０に削除させることにより、データセグメントを未使用領域に格納してもよい。
【００１７】
格納位置管理手段２４０は、キャッシュデータを構成する複数のデータセグメントの各々が格納された格納位置を管理する。誤り判断手段２７０は、取得先選択手段３００から指示を受けると、格納位置管理手段２４０により管理された格納位置から複数のデータセグメント及び冗長セグメントを取得する。そして、誤り判断手段２７０は、取得したキャッシュデータ及び冗長セグメントが、オペレーティングシステム５０がその格納位置を使用したことにより破壊されたか否かを判断する。例えば、オペレーティングシステム５０が新たなファイルを生成してその格納位置のデータを上書きした場合に、キャッシュデータは破壊されてその内容が揮発する。
【００１８】
誤り訂正手段２８０は、誤り判断手段２７０により、キャッシュデータを構成する複数のデータセグメントの何れかがオペレーティングシステム５０により破壊されたと判断された場合に、破壊されたそのデータセグメントを、破壊されていない他のデータセグメント及び冗長セグメントを用いて復元する。有効性情報出力手段２９５は、複数のデータセグメントのうち何れのデータセグメントが、オペレーティングシステム５０により破壊されておらず有効であるかを示す有効性情報を取得先選択手段３００に出力する。有効性情報とは、例えば、キャッシュデータを構成する複数のデータセグメントの各々について、有効か否かを１又は０のデータで示したビットマップデータであってもよい。
【００１９】
出力手段２９０は、誤り判断手段２７０により破壊されていないと判断されたデータセグメントと、誤り訂正手段２８０により復元されたデータセグメントとを、復元手段３１０からの指示に応じて復元手段３１０に出力する。
【００２０】
取得側装置２０−Ｎは、取得先選択手段３００と、復元手段３１０とを有する。取得先選択手段３００は、他の複数の情報処理装置、例えば、キャッシュ側装置２０−１〜（Ｎ−１）の各々における有効性情報出力手段２９５が出力した有効性情報を取得する。そして、取得先選択手段３００は、これらの有効性情報に基づいて、各データセグメントを取得する取得先の情報処理装置を選択する。例えば、取得先選択手段３００は、これらの有効性情報に基づいて、同一の有効なデータセグメントを共通して格納する２以上の他の情報処理装置を検出した場合には、検出した情報処理装置のうち、そのデータセグメントを取得する取得先の情報処理装置を選択する。本例においては、取得先選択手段３００は、あるデータセグメントを取得する取得先として、キャッシュ側装置２０−１を選択する。
【００２１】
復元手段３１０は、取得先選択手段３００により選択された取得先の情報処理装置、例えばキャッシュ側装置２０−１から、データセグメントを取得する。また、復元手段３１０は、キャッシュデータのうち取得できなかったデータセグメントを、サーバ装置４０から取得してもよい。これにより、取得側装置２０−Ｎは、所望のデータをできるだけキャッシュ側装置２０−１〜（Ｎ−１）から取得して、サーバ装置４０に対するアクセス量を必要最小限に抑えると共に、キャッシュデータを復元することができる。
【００２２】
図３（ａ）は、記憶装置６０が格納するデータ構造の一例を示す。記憶装置６０は、オペレーティングシステム５０のファイルシステムにより管理されている。具体的には、記憶装置６０は、オペレーティングシステム５０により使用されているファイルのデータの格納位置を示す属性情報と、オペレーティングシステム５０により使用されているファイルのデータ（２重斜線で示す）とを格納している。更に、記憶装置６０は、ファイルシステムの未使用領域に、格納位置管理手段２４０により管理されるデータセグメント（斜線で示す）を格納している。
【００２３】
属性情報は、ファイル自体のデータを格納するブロックとは異なる情報ブロックに格納されており、オペレーティングシステム５０に使用されるファイルの格納位置の他、そのファイルが作成された日時、そのファイルのサイズを含んでいる。一例として、属性情報は、Ｗｉｎｄｏｗｓ（登録商標）のＮＴＦＳ（登録商標）におけるＭＦＴ（Ｍａｓｔｅｒ  Ｆｉｌｅ  Ｔａｂｌｅ）のＦｉｌｅ  Ｒｅｃｏｒｄであってもよいし、ｅｘｔ２ファイルシステムにおけるｉ−ｎｏｄｅ情報であってもよい。
【００２４】
図３（ｂ）は、格納位置管理手段２４０のデータ構造の一例を示す。本図は、図３（ａ）に対応している。格納位置管理手段２４０は、各データセグメントについて、データセグメントを識別するセグメントＩＤと、データセグメントが格納される格納位置と、データセグメント内のデータが破壊されたか否か判断するためのチェックサムとを対応付けて管理している。
【００２５】
例えば、セグメントＩＤが１であるデータセグメントは、アドレス１１０番地に格納されており、かつチェックサム（０ｘ１４Ｆ１）により破壊されたか否かを判断できる。ここで、格納位置とは、例えば、記憶装置６０内のアドレスであってもよいし、記憶装置６０がハードディスクドライブである場合のセクタ番号であってもよい。
【００２６】
また、チェックサムとは、データセグメントに含まれる所定のデータのパリティであってもよいし、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｏｄｅ）等の誤り検出・訂正符号であってもよい。即ち、チェックサムとは、所定以上の確率でデータセグメント内のデータの誤りを検出させることのできるデータの集合であればよい。
【００２７】
また、好ましくは、格納位置管理手段２４０は、セグメントＩＤ、格納位置、及びチェックサムを、オペレーティングシステム５０により管理される通常のファイルとして記憶装置６０に格納することにより管理する。これに代えて、格納位置管理手段２４０は、記憶装置６０とは異なる他の記録媒体に格納してもよい。即ち、格納位置管理手段２４０は、セグメントＩＤ、格納位置、及びチェックサムを、オペレーティングシステム５０により破壊され得る格納位置以外の位置に格納することが好ましい。これにより、オペレーティングシステム５０の処理状態に関わらず、データセグメントの有効性を適切に判断することができる。
【００２８】
図４は、キャッシュ側装置２０−１がキャッシュデータを記憶装置６０に格納する処理の動作フローを示す。分割手段２１０は、キャッシュデータをサーバ装置４０から取得すると、取得したそのキャッシュデータを複数のデータセグメントに分割する（Ｓ４００）。冗長セグメント生成手段２２０は、複数のデータセグメントの何れかに生じた誤りを訂正するための冗長データを有する冗長セグメントを、複数のデータセグメントに基づいて生成する（Ｓ４１０）。
【００２９】
例えば、冗長セグメント生成手段２２０は、複数のデータセグメントのそれぞれから１ビットずつを取り出してパリティを算出し、各データセグメントの各ビットについて算出したパリティの集合をまとめて１つのデータとすることにより、冗長セグメントを生成してもよい。これにより、何れか１つのデータセグメントが破壊された場合には、破壊されたそのデータセグメントを復元させることができる。また、冗長セグメントは、この方法により算出されたパリティに限定されず、データセグメントを格納するのに先立って生成する誤り検出・訂正（ＦＥＣ：Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ）の符号であればよい。
【００３０】
続いて、格納指示手段２３０は、オペレーティングシステム５０にデータセグメント及び冗長セグメントをファイルとして格納させる（Ｓ４２０）。格納位置管理手段２４０は、記憶装置６０のうちキャッシュデータが格納された格納位置をオペレーティングシステム５０から取得して管理する（Ｓ４３０）。そして、格納指示手段２３０は、格納させたこのファイルをオペレーティングシステム５０に削除させる（Ｓ４４０）。
【００３１】
図５は、キャッシュシステム２００が記憶装置６０にキャッシュデータを格納させる処理の詳細を説明する図である。図５（ａ）は、キャッシュシステム２００が記憶装置６０にキャッシュデータを格納させる前の状態を示す。記憶装置６０は、オペレーティングシステム５０により使用されているファイルのデータの格納位置を示す属性情報と、オペレーティングシステム５０により使用されているファイルのデータ（２重斜線で示す）とを格納している。図中の矢印は、属性情報が格納位置を含む旨、即ち、属性情報中にファイルへのポインタが含まれている旨を示している。また、記憶装置６０中の他の領域は、オペレーティングシステム５０により使用されていない未使用領域である。
【００３２】
本図に示すように、オペレーティングシステム５０が使用している領域とは、オペレーティングシステム５０が記憶装置６０に格納位置を格納することにより管理する領域である。そして、未使用領域とは、オペレーティングシステム５０が格納位置を管理していない領域である。
【００３３】
図５（ｂ）は、格納指示手段２３０がオペレーティングシステム５０にデータセグメントをファイルとして格納させた状態を示す。オペレーティングシステム５０は、格納指示手段２３０からの指示に基づいて、記憶装置６０にファイルのデータを格納すると共に、そのファイルの格納位置を示す属性情報を記憶装置６０に格納することにより、そのファイルを記憶装置６０に生成する。例えば、記憶装置６０は、キャッシュデータに含まれるデータセグメント１及びデータセグメント２を、オペレーティングシステム５０のファイルとして格納している。
【００３４】
ここで、好ましくは、格納指示手段２３０は、複数のデータセグメントのそれぞれを１つずつ互いに異なる複数のディレクトリにファイルとして格納させる。更に好ましくは、格納指示手段２３０は、複数のデータセグメントのそれぞれを、無作為に選択した複数のディレクトリに格納する。その結果、格納指示手段２３０が、複数のデータセグメントを互いに連続しない複数の領域に格納できる可能性が高まる。これにより、オペレーティングシステム５０の使用により全てのデータセグメントが破壊される事態を避けて、一部のデータセグメントであっても破壊されずに残存する可能性を高めることができる。
【００３５】
図５（ｃ）は、格納位置管理手段２４０が、データセグメントの格納位置を管理した状態を示す。格納位置管理手段２４０は、オペレーティングシステム５０によりファイルとして格納されたデータセグメントの各々について、格納位置を管理する。
【００３６】
図５（ｄ）は、格納指示手段２３０がデータセグメントのファイルをオペレーティングシステム５０に削除させた状態を示す。オペレーティングシステム５０は、格納指示手段２３０から指示を受けると、ファイルとして格納したデータセグメントを記憶装置６０に残したまま、そのファイルの属性情報を削除することにより、そのファイルを記憶装置６０から削除する。なお、オペレーティングシステム５０は、属性情報を削除する処理に代えて、属性情報内のデータのうち、当該属性情報が無効である旨を示す未使用フラグを立てる処理を行ってもよい。
【００３７】
その結果、格納位置管理手段２４０のみがデータセグメントの格納位置を管理し、オペレーティングシステム５０は、データセグメントの格納位置を管理しない状態になる。これにより、オペレーティングシステム５０がその格納位置を使用するまでの間、キャッシュシステム２００は、未使用領域にデータセグメントを格納しておくことができる。
【００３８】
以上、本図に示す処理により、格納指示手段２３０は、記憶装置６０のうちオペレーティングシステム５０の未使用領域に、データセグメントを格納することができる。その際、格納指示手段２３０は、オペレーティングシステム５０によるファイルの生成／削除の機能を利用するので、キャッシュシステム２００は、既存のオペレーティングシステムとの親和性が高い。これにより、以下に示す利点がある。
【００３９】
例えば、オペレーティングシステム５０は、記憶装置６０へのアクセス頻度を下げて処理を効率化する目的で、記憶装置６０に格納するべきデータを一旦メモリに格納し、格納したデータが所定以上のサイズに達した場合にのみ、記憶装置６０をアクセスする遅延書き込み機能を有している場合がある。この場合、キャッシュシステム２００は、記憶装置６０の実際の未使用領域を適切に検出するのは困難である。
【００４０】
例えば、キャッシュシステム２００が属性情報を参照することにより未使用領域を検出したとしても、その領域は、オペレーティングシステム５０の遅延書き込みにより書き込みが遅れているに過ぎない領域であって直ちに使用される可能性がある。このような領域にデータセグメントを格納してしまうと、オペレーティングシステム５０により直ちに破壊されるばかりでなく、オペレーティングシステム５０とのアクセスの競合が生じる場合もある。これに対し、本実施例において、キャッシュシステム２００は、オペレーティングシステム５０の機能を利用してデータセグメントを一旦ファイルとして記憶装置６０に格納するので、データセグメントが破壊されずに有効な状態となる可能性を高めることができる。
【００４１】
図６は、キャッシュデータを他の方法により格納するキャッシュ側装置２０−１のブロック図である。本図のキャッシュ側装置２０−１は、図２で説明したキャッシュ側装置２０−１と略同一の構成を取るので、相違点を説明する。キャッシュ側装置２０−１は、冗長セグメント生成手段２２０と、格納指示手段２３０と、格納位置管理手段２４０と、使用履歴管理手段２４５と、格納位置変更手段２５０と、誤り判断手段２７０と、誤り訂正手段２８０と、出力手段２９０と、有効性情報出力手段２９５とを有する。また、キャッシュ側装置２０−１は、分割手段２１０を有しなくともよい。
【００４２】
冗長セグメント生成手段２２０は、サーバ装置４０から受け取ったキャッシュデータの一部に生じた誤りを訂正するための冗長データを有する冗長セグメントを生成する。格納指示手段２３０は、記憶装置６０のうちオペレーティングシステム５０が使用していない未使用領域に、キャッシュデータ及び冗長セグメントを格納する。例えば、格納指示手段２３０は、オペレーティングシステム５０にキャッシュデータ及び冗長セグメントをファイルとして格納させ、記憶装置６０のうちキャッシュデータが格納された格納位置を格納位置管理手段２４０に管理させ、格納させた当該ファイルをオペレーティングシステム５０に削除させることにより、キャッシュデータを未使用領域に格納させてもよい。
【００４３】
格納位置管理手段２４０は、格納指示手段２３０により格納されたキャッシュデータの格納位置を管理する。使用履歴管理手段２４５は、オペレーティングシステム５０が記憶装置６０の未使用領域の複数の部分を使用する順序の履歴を管理する。格納位置変更手段２５０は、格納指示手段２３０により指示されオペレーティングシステム５０が格納したファイルの格納位置を、格納指示手段２３０がそのファイルを削除するのに先立って、オペレーティングシステム５０に指示して変更する。
【００４４】
具体的には、まず、格納位置変更手段２５０は、格納指示手段２３０により指示されオペレーティングシステム５０が格納したファイルを、複数のデータセグメントに分割する。そして、格納位置変更手段２５０は、使用履歴管理手段２４５により管理された履歴に基づいて、未使用領域のうちオペレーティングシステム５０が次に使う確率が所定の基準確率以上である部分を検出する。続いて、格納位置変更手段２５０は、分割したこれらのデータセグメントのそれぞれを、検出したその部分以外の未使用領域内の、互いに連続しない記憶領域に移動させる。そして、格納位置変更手段２５０は、格納指示手段２３０に指示してそのファイルを削除させる。
【００４５】
本図に示すキャッシュ側装置２０−１のその他の構成は、図２で説明したキャッシュ側装置２０−１と略同一であるので、説明を省略する。
【００４６】
図７は、図６の例においてキャッシュシステム２００が記憶装置６０にキャッシュデータを格納させる処理の詳細を説明する図である。図７（ａ）は、キャッシュシステム２００が記憶装置６０にキャッシュデータを格納させる前の状態を示す。本図は、図５（ａ）と略同一の状態を示すので説明を省略する。
【００４７】
図７（ｂ）は、格納指示手段２３０がオペレーティングシステム５０にキャッシュデータをファイルとして格納させた状態を示す。オペレーティングシステム５０は、格納指示手段２３０からの指示に基づいてファイルを記憶装置６０に生成する処理として、まず、記憶装置６０にファイルのデータを格納する。そして、オペレーティングシステム５０は、そのファイルの格納位置を示す属性情報を記憶装置６０に格納する。例えば本図において、オペレーティングシステム５０は、キャッシュデータを連続した２つの領域に１つのファイルとして格納する（斜線部分として示す）。
【００４８】
図７（ｃ）は、格納位置変更手段２５０がキャッシュデータの格納位置を変更した状態を示す。格納位置変更手段２５０は、格納指示手段２３０により指示されオペレーティングシステム５０が格納したファイルを、複数のデータセグメントに分割する。そして、格納位置変更手段２５０は、分割した複数のデータセグメントのそれぞれを、記憶装置６０において互いに連続しない記憶領域に移動させる。例えば、格納位置変更手段２５０は、オペレーティングシステム５０が備えるデフラグツールのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）により、データセグメントを移動させてもよい。ここで、デフラグツールとは、ファイルシステム上に断片化（フラグメンテーション化）されて格納されたファイルを連続した領域に再配置するアプリケーションプログラムである。これにより、オペレーティングシステム５０とのアクセス競合を考慮せず簡便に処理することができる。
【００４９】
また、好ましくは、格納位置変更手段２５０は、データセグメントを破壊されずに有効に存在させるべく、無作為に選択した連続しない領域にデータセグメントを移動する。更に好ましくは、格納位置変更手段２５０は、使用履歴管理手段２４５により管理された履歴に基づいて、未使用領域のうちオペレーティングシステム５０が次に使う確率が所定の基準確率以上である部分を検出し、検出した部分以外の未使用領域に、複数のデータセグメントのそれぞれを移動する。具体的には、格納位置変更手段２５０は、あるデータセグメントが次に使われる確率として、オペレーティングシステム５０がそのデータセグメントを実際に使った回数を、履歴を収集した全体の回数で除した値を生成してもよい。
これにより、オペレーティングシステム５０により使われやすい領域を避けてデータセグメントを格納できるので、データセグメントが破壊されずに有効に存在する期間を延ばすことができる。
【００５０】
図７（ｄ）は、格納指示手段２３０がファイルをオペレーティングシステム５０に削除させた状態を示す。オペレーティングシステム５０は、格納指示手段２３０から指示を受けると、ファイルとして格納したキャッシュデータを記憶装置６０に残したまま、そのファイルの属性情報を削除することにより、そのファイルを記憶装置６０から削除する。その結果、格納位置管理手段２４０のみがデータセグメントの格納位置を管理し、オペレーティングシステム５０は、データセグメントの格納位置を管理しない状態になる。これにより、オペレーティングシステム５０がその格納位置を使用するまでの間、キャッシュシステム２００は、未使用領域にデータセグメントを格納しておくことができる。
【００５１】
以上、本図に示す処理によっても、図５（ｄ）に示した例と同様に、格納指示手段２３０は、記憶装置６０のうちオペレーティングシステム５０の未使用領域に、キャッシュデータを分散して格納することができる。これにより、データセグメントが破壊されずに有効に存在する可能性を高めることができる。なお、情報処理装置２０−１〜Ｎの各々は、図５に示す処理と、図７に示す処理の双方を行ってもよい。
【００５２】
図８は、取得側装置２０−Ｎがキャッシュ側装置２０−１からキャッシュデータを取得して復元する処理の動作フローを示す。取得先選択手段３００は、有効性情報のリクエスト先を決定する（Ｓ８００）。例えば、取得先選択手段３００は、取得側装置２０−Ｎが属するＬＡＮ内の全ての情報処理装置に対して、有効性情報のリクエストをブロードキャストしてもよい。また、有効性情報をリクエストすべきリクエスト先をサーバ装置４０から取得してもよい。
【００５３】
取得先選択手段３００は、有効性情報をキャッシュ側装置２０−１にリクエストする（Ｓ８０５）。取得先選択手段３００は、例えば、取得先選択手段３００の利用者が所望するキャッシュデータの識別情報と共に、有効性情報を返信する旨の指示をキャッシュ側装置２０−１に送ってもよい。誤り判断手段２７０は、識別情報により識別されるキャッシュデータが格納されている場合に、そのキャッシュデータのデータセグメント及び冗長セグメントをキャッシュ側装置２０−１の記憶装置６０から取得する（Ｓ８１０）。誤り判断手段２７０は、取得したデータセグメント及び冗長セグメントが、オペレーティングシステム５０がその格納位置を使用したことにより破壊されたか否かを判断する（Ｓ８２０）。
【００５４】
誤り訂正手段２８０は、誤り判断手段２７０により、キャッシュデータを構成する複数のデータセグメントの何れかがオペレーティングシステム５０により破壊されたと判断された場合に、破壊されたそのデータセグメントを、破壊されていない他のデータセグメント及び冗長セグメントを用いて復元する（Ｓ８３０）。有効性情報出力手段２９５は、有効性情報を取得先選択手段３００に出力する（Ｓ８４０）。取得先選択手段３００は、キャッシュ側装置２０−１の有効性情報出力手段２９５が出力した有効性情報に基づいて、各データセグメントを取得する取得先の情報処理装置を選択する（Ｓ８５０）。
【００５５】
好ましくは、取得先選択手段３００は、取得側装置２０−Ｎから他の複数の情報処理装置の各々に至る通信経路の通信速度又は他の複数の情報処理装置の各々の計算処理能力に更に基づいて、取得先の情報処理装置を選択する。例えば、取得先選択手段３００は、同一の有効なデータセグメントを共通して格納する２以上の他の情報処理装置を検出した場合には、計算処理能力がより高い情報処理装置を取得先として選択してもよいし、通信速度がより速い情報処理装置を取得先として選択してもよい。ここで、通信速度又は計算処理能力は、実際に計測されることにより定められてもよいし、通信インターフェイス又は中央処理装置の仕様に基づいて定められてもよい。
【００５６】
ここで、取得先選択手段３００は、あるデータセグメントの取得先として、キャッシュ側装置２０−１を選択する。復元手段３１０は、キャッシュ側装置２０−１に、データセグメントをリクエストする（Ｓ８６０）。出力手段２９０は、誤り判断手段２７０により破壊されていないと判断されたデータセグメントと、誤り訂正手段２８０により復元されたデータセグメントとを、復元手段３１０に出力する（Ｓ８７０）。復元手段３１０は、キャッシュ側装置２０−１から、データセグメントを取得する。また、復元手段３１０は、キャッシュ側装置２０−２〜（Ｎ−１）のそれぞれからデータセグメントを取得する。そして、復元手段３１０は、取得したこれらのデータセグメントに基づいて、キャッシュデータを復元する（Ｓ８８０）。また、復元手段３１０は、キャッシュデータのうち取得できなかったデータセグメントを、サーバ装置４０から取得して、キャッシュデータを復元してもよい。
【００５７】
以上の説明で明らかなように、キャッシュシステム２００は、サーバ装置４０から取得したデータを、記憶装置６０の未使用領域にキャッシュデータとして格納する。これにより、キャッシュシステム２００は、オペレーティングシステムの処理を妨げることなく、記憶装置の未使用領域を他の情報処理装置に有効に活用させることができる。
【００５８】
キャッシュシステム２００は、様々な用途に適用可能である。具体例として、キャッシュシステム２００の適用例（１）から適用例（５）を以下に示す。
（１）分散ネットワークキャッシュ
大規模アプリケーションプログラムのアップデートモジュール等は、多数の情報処理装置から同時期にダウンロードされる場合がある。複数の情報処理装置のそれぞれが、独立して、アップデートモジュールをサーバ装置からダウンロードすると、サーバ装置にネットワークトラフィックが集中してしまう。そこで、取得側装置２０−Ｎで動作するアプリケーションプログラムが、サーバ装置４０に対してファイルの転送を要求する場合に、取得側装置２０−Ｎの復元手段３１０は、キャッシュ側装置２０−１〜（Ｎ−１）の各々からデータセグメントを取得する。一方、復元手段３１０は、取得できなかったデータセグメントのみをサーバ装置４０から取得する。これにより、サーバ装置４０へのアクセスの集中を避けることができる。
【００５９】
より具体的には、復元手段３１０は、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）によるアクセス要求を検出した場合に、サーバ装置４０に対してハイパーテキストを要求する処理に代えて、キャッシュ側装置２０−１〜（Ｎ−１）に対してデータセグメントを要求してもよい。この場合、ＨＴＴＰにおいては、ファイルの全体でなくファイルの一部だけを要求及び取得することができるので、取得できなかったデータセグメントのみをサーバ装置４０から取得する処理の実現が容易である。
【００６０】
また、キャッシュシステム２００は、当該情報処理装置上でウェブブラウザが動作している場合にのみ、キャッシュデータの格納及び出力を行うことが望ましい。他の情報処理装置の記憶装置をキャッシュとして利用する場合にのみ、自己の情報処理装置の記憶装置をキャッシュとして他の情報処理装置に利用させる設定は、利用者にとって受け入れられやすいからである。
このように、キャッシュシステム２００は、ＷＷＷシステムのプロキシ−サーバとして機能することができる。
【００６１】
これに代えて、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）によるデータ転送や、ＰＯＰ３又はＩＭＡＰ４プロトコルによるメールの受信にも適用可能である。例えば、同一の利用者がキャッシュ側装置２０−１及び取得側装置２０−Ｎを利用している場合には、キャッシュ側装置２０−１がメールをサーバ装置４０から受信して未使用領域に格納しておけば、取得側装置２０−Ｎは、サーバ装置４０等にアクセスすることなく、メールを受信することができる。特に、メールにデータサイズの大きいファイルが添付されている場合には効果が高い。この場合、受信者以外の者にメールを読ませないために、キャッシュ側装置２０−１は、メールの受信者のみが解読可能な暗号によりキャッシュデータを暗号化して未使用領域に格納することが望ましい。
【００６２】
（２）再生時間をシフトしたメディアの配信
キャッシュ側装置２０−１〜（Ｎ−１）のそれぞれは、サーバ装置４０からストリーミング放送を受信すると、そのデータをキャッシュデータとして未使用領域に格納する。そして、キャッシュ側装置２０−１〜（Ｎ−１）のそれぞれは、キャッシュデータとして格納したデータの識別情報を、当該キャッシュ側装置を識別する情報に対応付けてサーバ装置４０に登録する。取得側装置２０−Ｎは、ストリーミング放送を受信する場合に、登録された識別情報をサーバ装置４０から取得する。そして、取得側装置２０−Ｎは、取得した識別情報に基づいて、ストリーミング放送のデータをキャッシュとして格納しているキャッシュ側装置を検出する。取得側装置２０−Ｎは、ストリーミング放送をサーバ装置４０から受信するのに代えて、検出したキャッシュ側装置２０−１〜（Ｎ−１）からキャッシュデータを取得する。これにより、取得側装置２０−Ｎは、取得できなかったデータセグメントのみをサーバ装置４０から取得すればよいので、効率が高い。
【００６３】
（３）Ｐ２Ｐファイル交換アプリケーション用のキャッシュ
ファイル交換プログラムを用いると、不特定多数の情報処理装置の各々は他の情報処理装置にファイルをコピーし合うことができる。このようなファイル交換プログラムのキャッシュにも適用可能である。例えば、ファイル交換プログラムは、コピーの効率を高めるために、ハードディスクドライブに格納しているファイルと同一の内容をコピーして、更にハードディスクドライブにキャッシュとして格納している場合がある。このキャッシュのサイズが非常に大きい場合、ハードディスクドライブの容量を圧迫して、他の処理を妨げてしまう場合がある。本実施例のキャッシュシステム２００によれば、他の処理を妨げることなく、記憶装置６０にデータをキャッシュすることができる。
【００６４】
（４）ウェブページの先読み
図９は、適用例（４）の動作フローを示す。本図を用いてサーバ装置４０が情報処理装置２０−１にウェブページを配信する適用例を説明する。なお、本例における情報処理システム１０は、情報処理装置２０−２〜Ｎを有しなくともよい。情報処理装置２０−１は、サーバ装置４０にウェブページをリクエストする（Ｓ９００）。サーバ装置４０は、リクエストを受けたウェブページを情報処理装置２０−１に送信する（Ｓ９０５）。情報処理装置２０−１は、ウェブブラウザ上に、ウェブページを表示する（Ｓ９１０）。
【００６５】
情報処理装置２０−１は、他のウェブページへのハイパーリンクを含むウェブページが情報処理装置２０−１により表示されている場合に、ハイパーリンクのリンク先のウェブページをサーバ装置４０にリクエストする（Ｓ９１５）。これを受けて、サーバ装置４０は、リクエストされたウェブページを情報処理装置２０−１に送信する（Ｓ９２０）。格納指示手段２３０は、受け取ったウェブページのデータを、キャッシュデータとして記憶装置６０の未使用領域に格納する（Ｓ９３０）。
【００６６】
ウェブブラウザ上でハイパーリンクがクリックされると（Ｓ９４０：ＹＥＳ）、誤り判断手段２７０は、キャッシュデータを記憶装置６０から取得する（Ｓ９５０）。そして、誤り判断手段２７０は、取得したキャッシュデータが、オペレーティングシステム５０により破壊されたか否かを判断する（Ｓ９６０）。破壊されていた場合に（Ｓ９６０：ＹＥＳ）、情報処理装置２０−１は、ウェブページをサーバ装置４０に再度リクエストする（Ｓ９７０）。この場合、サーバ装置４０は、ウェブページを情報処理装置２０−１に送信する（Ｓ９８０）。そして、情報処理装置２０−１は、ハイパーリンクのリンク先のウェブページをウェブブラウザ上に表示する（Ｓ９９０）。
【００６７】
このように、キャッシュシステム２００は、ウェブページが閲覧されると予測される順序に基づいて、閲覧される可能性が高いウェブページを予め取得してキャッシュデータとして格納することができる。これに代えて、キャッシュシステム２００は、ＣＤ−ＲＯＭ又はフレキシブルドライブ等の比較的低速なデバイスから、次に読み出されると予測されるデータを予め取得してもよい。
【００６８】
（５）比較的低速なデバイスのためのキャッシュ
図１０は、適用例（５）の動作フローを示す。本図を用いて、情報処理装置２０−１がデバイスから取得したデータをキャッシュする処理を説明する。本例における情報処理システム１０は、情報処理装置２０−２〜Ｎ及びサーバ装置４０を有していなくともよい。情報処理装置２０−１は、記憶装置６０よりアクセス速度が遅いデバイスからデータを取得する（Ｓ１０００）。例えば、情報処理装置２０−１は、ＣＤ−ＲＯＭドライブ、ＤＶＤドライブ、又はフレキシブルディスクドライブから、データを取得する。
【００６９】
格納指示手段２３０は、情報処理装置２０−１がデバイスからデータを取得した場合に、取得したそのデータをキャッシュデータとして未使用領域に格納する（Ｓ１０１０）。情報処理装置２０−１が、そのデバイスへのアクセス指示を受け（Ｓ１０２０：ＹＥＳ）、かつ読み出す対象のデータが未使用領域に格納されている場合に（Ｓ１０３０：ＹＥＳ）、誤り判断手段２７０は、キャッシュデータを取得する（Ｓ１０４０）。そして、取得したキャッシュデータがオペレーティングシステム５０により破壊されていなければ（Ｓ１０５０：ＮＯ）、出力手段２９０は、取得したキャッシュデータを利用者に出力する（Ｓ１０７０）。
【００７０】
一方、読み出す対象のデータが未使用領域に格納されていない場合（Ｓ１０３０：ＮＯ）又はキャッシュデータが破壊されている場合（Ｓ１０５０：ＹＥＳ）に、情報処理装置２０−１は、デバイスにアクセスすることによりデータを取得して利用者に出力する（Ｓ１０６０）。これにより、キャッシュシステム２００は、比較的低速なデバイスにアクセスする頻度を低減して、処理の効率を高めることができる。
【００７１】
図１１は、情報処理装置２０−１のハードウェア構成の一例を示す。情報処理装置２０−２〜Ｎも、本図の構成と略同一であるので、説明を省略する。情報処理装置２０−１は、ホストコントローラ１１８２により相互に接続されるＣＰＵ１１００、ＲＡＭ１１２０、グラフィックコントローラ１１７５、及び表示装置１１８０を有するＣＰＵ周辺部と、入出力コントローラ１１８４によりホストコントローラ１１８２に接続される通信インターフェイス１１３０、ハードディスクドライブ１１４０、及びＣＤ−ＲＯＭドライブ１１６０を有する入出力部と、入出力コントローラ１１８４に接続されるＢＩＯＳ１１１０、フレキシブルディスクドライブ１１５０、及び入出力チップ１１７０を有するレガシー入出力部とを備える。
【００７２】
ホストコントローラ１１８２は、ＲＡＭ１１２０と、高い転送レートでＲＡＭ１１２０をアクセスするＣＰＵ１１００及びグラフィックコントローラ１１７５とを接続する。ＣＰＵ１１００は、ＢＩＯＳ１１１０及びＲＡＭ１１２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ１１７５は、ＣＰＵ１１００等がＲＡＭ１１２０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置１１８０上に表示させる。これに代えて、グラフィックコントローラ１１７５は、ＣＰＵ１１００等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
【００７３】
入出力コントローラ１１８４は、ホストコントローラ１１８２と、比較的高速な入出力装置である通信インターフェイス１１３０、ハードディスクドライブ１１４０、及びＣＤ−ＲＯＭドライブ１１６０を接続する。通信インターフェイス１１３０は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ１１４０は、情報処理装置２０−１が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ１１６０は、ＣＤ−ＲＯＭ１１９５からプログラム又はデータを読み取り、ＲＡＭ１１２０を介して入出力チップ１１７０に提供する。
【００７４】
また、入出力コントローラ１１８４には、ＢＩＯＳ１１１０と、フレキシブルディスクドライブ１１５０や入出力チップ１１７０等の比較的低速な入出力装置とが接続される。ＢＩＯＳ１１１０は、情報処理装置２０−１の起動時にＣＰＵ１１００が実行するブートプログラムや、情報処理装置２０−１のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ１１５０は、フレキシブルディスク１１９０からプログラム又はデータを読み取り、ＲＡＭ１１２０を介して入出力チップ１１７０に提供する。入出力チップ１１７０は、フレキシブルディスク１１９０や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
【００７５】
情報処理装置２０−１に提供されるプログラムは、フレキシブルディスク１１９０、ＣＤ−ＲＯＭ１１９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ１１７０及び／又は入出力コントローラ１１８４を介して、記録媒体から読み出され情報処理装置２０−１にインストールされて実行される。情報処理装置２０−１は、プログラムを、情報処理装置２０−２〜Ｎに送信してインストールし、実行させてもよい。
【００７６】
情報処理装置２０−１にインストールされて実行されるプログラムは、分割モジュールと、冗長セグメント生成モジュールと、格納指示モジュールと、格納位置管理モジュールと、誤り判断モジュールと、誤り訂正モジュールと、出力モジュールと、有効性情報出力モジュールと、復元モジュールと、取得先選択モジュールと、格納位置変更モジュールと、使用履歴管理モジュールと、オペレーティングシステムとを含む。また、当該プログラムは、ハードディスクドライブ１１４０を、記憶装置６０として用いてもよい。各モジュールが情報処理装置２０−１に働きかけて行わせる動作は、図１から図１０において説明した情報処理装置２０−１における、対応する部材の動作と同一であるから、説明を省略する。
【００７７】
以上に示したプログラム又はモジュールは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク１１９０、ＣＤ−ＲＯＭ１１９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置２０−１に提供してもよい。
【００７８】
以上、本実施例に示すように、キャッシュシステム２００は、オペレーティングシステムに管理されている記憶装置のうち、オペレーティングシステムにより使用されていない未使用領域に、データをキャッシュする。そして、キャッシュされたデータが必要な場合には、未使用領域からデータを読み出して、オペレーティングシステムにより破壊されていないか判断し、破壊されていない部分を出力する。これにより、オペレーティングシステムの処理を妨げることなく、記憶装置の未使用領域にキャッシュデータをできるだけ長い期間保持することができる。
【００７９】
また、キャッシュシステム２００は、キャッシュデータを複数のデータセグメントに分割して、記憶装置内に分散して格納する。これにより、キャッシュデータにバースト誤りが生じることを避けて、何れかのデータセグメントが有効に存在する可能性を高めることができる。
【００８０】
また、情報処理システム１０が有する複数の情報処理装置２０の各々は、他の情報処理装置の記憶装置の未使用領域を、サーバ装置４０から取得するデータのキャッシュを格納する領域として活用することができる。これにより、ネットワーク上のサーバが提供するデータをキャッシュする専用のミラー・サーバを導入することなく、ネットワークトラフィックを分散させて処理を効率化することができる。
【００８１】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００８２】
以上の実施例によると、以下の各項目に示すキャッシュシステム、情報処理システム、キャッシュ方法、プログラム、及び記録媒体が実現される。
（項目１）  情報処理装置のオペレーティングシステムが管理する記憶装置にデータをキャッシュするキャッシュシステムであって、前記記憶装置のうち前記オペレーティングシステムが使用していない未使用領域に、キャッシュすべきキャッシュデータを格納する格納指示手段と、前記格納指示手段により格納された前記キャッシュデータの格納位置を管理する格納位置管理手段と、前記格納位置管理手段により管理された格納位置から前記キャッシュデータを取得して、取得した前記キャッシュデータが、前記オペレーティングシステムが当該格納位置を使用したことにより破壊されたか否かを判断する誤り判断手段と、前記キャッシュデータが破壊されてないと判断された場合に、前記キャッシュデータを出力する出力手段とを備えるキャッシュシステム。
（項目２）  前記キャッシュデータを複数のデータセグメントに分割する分割手段を更に備え、前記格納指示手段は、前記複数のデータセグメントのそれぞれを、前記未使用領域のうち互いに連続しない複数の領域に１つずつ格納し、前記格納位置管理手段は、前記複数のデータセグメントの各々が格納された格納位置を管理し、前記誤り判断手段は、前記格納位置管理手段により管理された格納位置から前記複数のデータセグメントを取得し、取得した前記複数のデータセグメントのそれぞれが、前記オペレーティングシステムにより破壊されたか否かを判断し、前記出力手段は、前記誤り判断手段により破壊されてないと判断されたデータセグメントを出力する項目１記載のキャッシュシステム。
【００８３】
（項目３）  前記複数のデータセグメントの何れかに生じた誤りを訂正するための冗長データを有する冗長セグメントを生成する冗長セグメント生成手段を更に備え、前記格納指示手段は、前記冗長セグメントを、前記記憶装置の前記未使用領域に更に格納し、前記格納位置管理手段は、前記冗長セグメントの格納位置を更に管理し、前記誤り判断手段は、前記格納位置管理手段により管理された格納位置から、前記冗長セグメントを更に取得し、当該キャッシュシステムは、前記誤り判断手段により、前記複数のデータセグメントの何れかが前記オペレーティングシステムにより破壊されたと判断された場合に、破壊された当該データセグメントを、破壊されてない他のデータセグメント及び前記冗長セグメントを用いて復元する誤り訂正手段を更に備え、前記出力手段は、前記誤り訂正手段により復元されたデータセグメントを更に出力する項目２に記載のキャッシュシステム。
（項目４）  前記オペレーティングシステムは、前記記憶装置にファイルのデータを格納すると共に、当該ファイルの格納位置を示す属性情報を前記記憶装置に格納することにより、当該ファイルを前記記憶装置に生成し、当該ファイルのデータを前記記憶装置に残したまま、当該ファイルの属性情報を削除することにより、当該ファイルを前記記憶装置から削除し、前記格納指示手段は、前記オペレーティングシステムに前記キャッシュデータをファイルとして格納させ、前記記憶装置のうち前記ファイルが格納された格納位置を前記格納位置管理手段により管理させ、格納させた当該ファイルを前記オペレーティングシステムに削除させることにより、前記キャッシュデータを前記未使用領域に格納する項目１に記載のキャッシュシステム。
【００８４】
（項目５）  前記キャッシュデータを複数のデータセグメントに分割する分割手段を更に備え、前記格納指示手段は、前記オペレーティングシステムにより、前記複数のデータセグメントのそれぞれを１つずつ互いに異なる複数のディレクトリにファイルとして格納させ、格納させた各ファイルを削除させ、前記格納位置管理手段は、前記複数のデータセグメントの各々が格納された格納位置を管理し、前記誤り判断手段は、前記格納位置管理手段により管理された格納位置から前記複数のデータセグメントを取得し、取得した前記複数のデータセグメントのそれぞれが、前記オペレーティングシステムにより破壊されたか否かを判断し、前記出力手段は、前記誤り判断手段により破壊されてないと判断されたデータセグメントを出力する項目４に記載のキャッシュシステム。
（項目６）  前記格納指示手段により指示され前記オペレーティングシステムが格納した前記ファイルを、複数のデータセグメントに分割して、分割した当該複数のデータセグメントのそれぞれを、前記記憶装置において互いに連続しない記憶領域に移動させる格納位置変更手段を更に備え、前記格納指示手段は、前記格納位置変更手段により格納位置が変更された前記ファイルを削除することにより、前記キャッシュデータを前記複数のデータセグメントとして前記未使用領域に格納する項目４記載のキャッシュシステム。
【００８５】
（項目７）  前記オペレーティングシステムが前記未使用領域の複数の部分を使用する順序の履歴を管理する使用履歴管理手段を更に備え、前記格納位置変更手段は、前記使用履歴管理手段により管理された履歴に基づいて、前記未使用領域のうち前記オペレーティングシステムが次に使う確率が所定の基準確率以上である部分を検出し、検出した部分以外の前記未使用領域に、前記複数のデータセグメントのそれぞれを移動する項目６記載のキャッシュシステム。
（項目８）  前記格納指示手段は、前記記憶装置よりアクセス速度が遅いデバイスから前記情報処理装置がデータを取得した場合に、前記情報処理装置が取得した当該データを前記キャッシュデータとして前記未使用領域に格納し、前記誤り判断手段は、前記情報処理装置が前記デバイスから再度当該データを取得する場合に、前記格納位置管理手段により管理された格納位置から前記キャッシュデータを取得し、前記キャッシュデータが破壊されてないと判断された場合に、前記出力手段は、前記キャッシュデータを出力する項目１記載のキャッシュシステム。
（項目９）  前記格納指示手段は、他のウェブページへのハイパーリンクを含むウェブページが前記情報処理装置により表示されている場合に、前記ハイパーリンクのリンク先のウェブページを、前記キャッシュデータとして前記記憶装置の前記未使用領域に格納し、前記ハイパーリンクのリンク先のウェブページが表示される場合において、前記キャッシュデータが破壊されてないと判断された場合に、前記出力手段は、前記キャッシュデータを出力する項目１記載のキャッシュシステム。
【００８６】
（項目１０）  オペレーティングシステムにより管理される記憶装置を各々が有し、他の情報処理装置が用いるデータを互いにキャッシュする複数の情報処理装置を備える情報処理システムであって、前記複数の情報処理装置の各々が、他の情報処理装置がキャッシュするデータと同一のキャッシュデータを、複数のデータセグメントに分割する分割手段と、当該情報処理装置の記憶装置のうち、当該情報処理装置のオペレーティングシステムが使用していない未使用領域内の互いに連続しない複数の領域に、前記分割手段により分割された前記複数のデータセグメントを１つずつ格納する格納指示手段と、前記複数のデータセグメントの各々が格納された格納位置を管理する格納位置管理手段と、前記格納位置管理手段により管理される格納位置から前記複数のデータセグメントを取得して、取得した前記複数のデータセグメントのそれぞれが、前記オペレーティングシステムが当該格納位置を使用したことにより破壊されたか否かを判断する誤り判断手段と、前記誤り判断手段により破壊されてないと判断されたデータセグメントを出力する出力手段と、他の複数の情報処理装置の各々における前記出力手段が出力したデータセグメントに基づいて前記キャッシュデータを復元する復元手段とを有する情報処理システム。
（項目１１）  前記複数の情報処理装置の各々が、当該情報処理装置が格納する前記複数のデータセグメントのうち何れのデータセグメントが、前記オペレーティングシステムにより破壊されておらず有効であるかを示す有効性情報を出力する有効性情報出力手段と、他の複数の情報処理装置の各々における前記有効性情報出力手段が出力した前記有効性情報に基づいて、同一の有効なデータセグメントを共通して格納する２以上の他の情報処理装置を検出した場合に、検出した情報処理装置のうち当該データセグメントを取得する取得先の情報処理装置を選択する取得先選択手段とを更に有し、前記復元手段は、前記取得先選択手段により選択された取得先の情報処理装置の各々からデータセグメントを取得して、取得したデータセグメントを結合することにより、前記キャッシュデータを復元する項目１０記載の情報処理システム。
【００８７】
（項目１２）  前記取得先選択手段は、当該情報処理装置から他の複数の情報処理装置の各々に至る通信経路の通信速度又は前記他の複数の情報処理装置の各々の計算処理能力に更に基づいて、データセグメントを取得する取得先の情報処理装置を選択する項目１１記載の情報処理システム。
（項目１３）  情報処理装置のオペレーティングシステムが管理する記憶装置にデータをキャッシュするキャッシュ方法であって、前記記憶装置のうち前記オペレーティングシステムが使用していない未使用領域に、キャッシュすべきキャッシュデータを格納する格納指示段階と、前記格納指示段階において格納された前記キャッシュデータの格納位置を管理する格納位置管理段階と、前記格納位置管理段階において管理された格納位置から前記キャッシュデータを取得して、取得した前記キャッシュデータが、前記オペレーティングシステムが当該格納位置を使用したことにより破壊されたか否かを判断する誤り判断段階と、前記キャッシュデータが破壊されてないと判断された場合に、前記キャッシュデータを出力する出力段階とを備えるキャッシュ方法。
【００８８】
（項目１４）  情報処理装置のオペレーティングシステムが管理する記憶装置にデータをキャッシュするキャッシュシステムを制御するプログラムであって、前記情報処理装置を、前記記憶装置のうち前記オペレーティングシステムが使用していない未使用領域に、キャッシュすべきキャッシュデータを格納する格納指示手段と、前記格納指示手段により格納された前記キャッシュデータの格納位置を管理する格納位置管理手段と、前記格納位置管理手段により管理された格納位置から前記キャッシュデータを取得して、取得した前記キャッシュデータが、前記オペレーティングシステムが当該格納位置を使用したことにより破壊されたか否かを判断する誤り判断手段と、前記キャッシュデータが破壊されてないと判断された場合に、前記キャッシュデータを出力する出力手段として機能させるプログラム。
（項目１５）  項目１４記載のプログラムを記録した記録媒体。
【図面の簡単な説明】
【００８９】
【図１】図１は、情報処理システム１０の概略を示す。
【図２】図２は、キャッシュ側装置２０−１及び取得側装置２０−Ｎのブロック図である。
【図３】図３（ａ）は、記憶装置６０が格納するデータ構造の一例を示す。図３（ｂ）は、格納位置管理手段２４０のデータ構造の一例を示す。
【図４】図４は、キャッシュ側装置２０−１がキャッシュデータを記憶装置６０に格納する処理の動作フローを示す。
【図５】図５は、キャッシュシステム２００が記憶装置６０にキャッシュデータを格納させる処理の詳細を説明する図である。
【図６】図６は、キャッシュデータを他の方法により格納するキャッシュ側装置２０−１のブロック図である。
【図７】図７は、図６に示したキャッシュ側装置２０−１においてキャッシュシステム２００が記憶装置６０にキャッシュデータを格納させる処理の詳細を説明する図である。
【図８】図８は、取得側装置２０−Ｎがキャッシュ側装置２０−１からキャッシュデータを取得して復元する処理の動作フローを示す。
【図９】図９は、適用例（４）の動作フローを示す。
【図１０】図１０は、適用例（５）の動作フローを示す。
【図１１】図１１は、情報処理装置２０−１のハードウェア構成の一例を示す。
【符号の説明】
【００９０】
１０  情報処理システム
２０  情報処理装置
２０−１  キャッシュ側装置
２０−Ｎ  取得側装置
４０  サーバ装置
５０  オペレーティングシステム
６０  記憶装置
２００  キャッシュシステム
２１０  分割手段
２２０  冗長セグメント生成手段
２３０  格納指示手段
２４０  格納位置管理手段
２４５  使用履歴管理手段
２５０  格納位置変更手段
２７０  誤り判断手段
２８０  誤り訂正手段
２９０  出力手段
２９５  有効性情報出力手段
３００  取得先選択手段
３１０  復元手段
【図１】
2005122602.tif 000003
【図２】
2005122602.tif 000004
【図３】
2005122602.tif 000005
【図４】
2005122602.tif 000006
【図５】
2005122602.tif 000007
【図６】
2005122602.tif 000008
【図７】
2005122602.tif 000009
【図８】
2005122602.tif 000010
【図９】
2005122602.tif 000011
【図１０】
2005122602.tif 000012
【図１１】
2005122602.tif 000013