(57)【要約】【課題】  キャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュ方法及びキャッシュシステムを提供する。【解決手段】  アプリケーションから第１ファイルの第１データを要請する命令を受信するステップと、要請した第１データが保存されたメモリブロックを検索するステップと、第１データが保存されたメモリブロックがアプリケーションにより参照されることを表す参照情報を設定するステップと、メモリブロックに保存された第１データをアプリケーションに送信するステップと、第１データが保存されたメモリブロックについての参照情報をリセットさせるステップとを含む。【選択図】      図３
2007058856.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）アプリケーションから第１ファイルの第１データを要請する命令を受信するステップと、
（ｂ）前記要請した第１データが保存されたメモリブロックを検索するステップと、
（ｃ）前記第１データが保存されたメモリブロックが前記アプリケーションにより参照されることを表す参照情報を設定するステップと、
（ｄ）前記メモリブロックに保存された第１データを前記アプリケーションに送信するステップと、
（ｅ）前記第１データが保存されたメモリブロックについての前記参照情報をリセットさせるステップと、を含む、キャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュ方法。
【請求項２】
前記メモリブロックはアプリケーションの要請に応じて割り当てられた順にブロックリストを形成して連結されている請求項１に記載のキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュ方法。
【請求項３】
前記メモリブロックの前記参照情報は、前記メモリブロックのデータを要請するアプリケーションの数を意味し、前記アプリケーションにデータを伝送した後には前記参照情報を変更する請求項１に記載のキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュ方法。
【請求項４】
前記（ｂ）ステップは、ファイルリストで前記第１ファイルに関する情報が含まれたファイルマップを検索するステップを含む請求項１に記載のキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュ方法。
【請求項５】
前記ファイルマップは、前記第１ファイルのデータが占める前記第１ファイルでの位置情報と、前記第１ファイルのデータが保存されたメモリブロックに関する情報とを一対として持つ請求項４に記載のキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュ方法。
【請求項６】
前記（ｂ）ステップで、前記第１データがメモリブロックに保存されていない場合、空いているメモリブロックを割り当てられるステップと、前記第１ファイルから前記第１データを読み取って前記割り当てられたメモリブロックにコピーして保存するステップと、前記メモリブロックが保存する第１データに関する情報を付加してメモリブロックを連結したブロックリストに追加するステップと、ファイルに関する情報が含まれたファイルマップに前記第１ファイルで前記第１データが占める位置情報と前記メモリブロックの位置情報を追加するステップと、をさらに含む請求項１に記載のキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュ方法。
【請求項７】
空いているメモリブロックを割り当てられるステップ以前に、メモリブロックを連結したブロックリストで他のアプリケーションにより参照されていないメモリブロックを検索するステップと、前記検索したメモリブロックをブロックリストから除去するステップと、前記検索したメモリブロックが保存していた第２ファイルの第２データに関する情報を前記ファイルマップから除去するステップと、をさらに含む請求項６に記載のキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュ方法。
【請求項８】
ファイルから読み取ったデータをメモリブロック別に保存するキャッシュ保存部と、
データを保存するために前記キャッシュ保存部のメモリブロックを割り当てるブロック割り当て部と、
アプリケーションが要請する第１ファイルの第１データが保存されたメモリブロックを前記キャッシュ保存部で検索し、前記検索したメモリブロックに保存された前記第１データを前記アプリケーションに送信するキャッシュ管理部と、を備え、
前記第１データが保存されたメモリブロックは前記第１データを要請して、前記第１データの送信が完了していないアプリケーションの数字を含む参照情報を含む、キャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュシステム。
【請求項９】
前記メモリブロックはアプリケーションの要請に応じて割り当てられた順にブロックリストを形成して連結されている請求項８に記載のキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュシステム。
【請求項１０】
前記メモリブロックの前記参照情報は、前記メモリブロックのデータを要請するアプリケーションの数を意味し、前記アプリケーションにデータを伝送した後には前記キャッシュ管理部が前記参照情報を変更する請求項８に記載のキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュシステム。
【請求項１１】
前記キャッシュ管理部は、ファイルリストで前記第１ファイルに関する情報が含まれたファイルマップを検索する、請求項８に記載のキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュシステム。
【請求項１２】
前記ファイルマップは、前記第１ファイルのデータが占める前記第１ファイルでの位置情報と、前記第１ファイルのデータが保存されたメモリブロックに関する情報とを一対として持つ請求項１１に記載のキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュシステム。
【請求項１３】
前記キャッシュ管理部が、前記第１ファイルの前記第１データが保存されたメモリブロックを検索した結果、前記第１データがメモリブロックに保存されていない場合、前記第１ファイルの前記第１データをファイルから読み取るファイルデータリーダをさらに備え、前記キャッシュ管理部は、前記ブロック割り当て部を通じて空いているメモリブロックを割り当てられて、前記ファイルデータリーダがファイルから読み取った前記第１データを前記割り当てられたメモリブロックにコピーして保存し、前記メモリブロックが保存する第１データに関する情報を付加して、メモリブロックを連結したブロックリストに追加し、ファイルに関する情報が含まれたファイルマップに、前記第１ファイルで前記第１データが占める位置情報と前記メモリブロックの位置情報とを追加する請求項８に記載のキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュシステム。
【請求項１４】
前記ブロック割り当て部は、キャッシュ保存部に空いているメモリブロックが存在していない場合、メモリブロックを連結したブロックリストで他のアプリケーションにより参照されていないメモリブロックを検索して、前記検索したメモリブロックをブロックリストから除去し、前記検索したメモリブロックが保存していた第２ファイルの第２データに関する情報を前記ファイルマップから除去する請求項１３に記載のキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大容量のファイルを提供するサーバシステムのキャッシュメモリに係り、より詳細には、キャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュ方法及びキャッシュシステムに関する。
【背景技術】
【０００２】
マルチメディアストリーミングサービスが増大しつつ大容量、複数のファイルをリアルタイムで提供するサーバにおいて、ファイルを効率的にメモリにローディングすることは、サーバの性能を決定する重要な要素である。特に、ネットワーク負荷が加重されるマルチメディアサービスは、ネットワークの負荷で発生する遅延を減らすためにサーバでの処理時間を短縮することが重要である。このために、ストリーミングされるファイルの一部をメモリにローディングし、ローディングしたデータを維持させ続けることによって、再びファイルストレージからファイルの読み取りにかかる時間を短縮できる。このようなメモリを、キャッシュという。
【０００３】
図１は、従来のストリーミングサーバでのキャッシュシステムの構造を示す図面である。キャッシュシステム３０には、キャッシュ保存部１０、ファイルデータリーダ１１、キャッシュ管理部１２、メモリ割り当て部２０がある。メモリ割り当て部２０は、キャッシュを構成するメモリをシステムのメモリから割り当てて、割り当てられたメモリ接近情報をキャッシュ管理部１２に提供する。
【０００４】
キャッシュ管理部１２は、アプリケーション１５からデータを要請されれば、キャッシュ保存部１０に要請されたデータの保存如何を確認した後、存在する場合にはデータをコピーしてアプリケーション１５に伝達し、存在していない場合にはファイルデータリーダ１１でデータを読み取った後にキャッシュ保存部１０に保存し、アプリケーション１１にデータを伝達する。
【０００５】
キャッシュ保存部１０は、ファイルデータで読み取ったデータ以外にも、割り当てられたメモリに関する接近情報及び保存されるデータがどのファイルのどの部分であるかに関する情報を持っている。キャッシュ管理部１２が伝達するデータを順次に保存し、既保存されたデータのうちアプリケーション１５が要求するデータがあれば、そのデータを伝達する。ファイルデータリーダ１１は、ファイル保存部５０でデータを読み取ってキャッシュ管理部１２に伝達する。
【０００６】
データを初めて読み取る場合を説明すれば、次の通りである。まず、メモリ割り当て部２０が使用可能なメモリを生成してキャッシュ保存部１０に伝達する（ａ）。そして、アプリケーション１５が特定ファイルのデータを要求する（ｂ）。それにより、ファイル保存部５０からファイルデータリーダ１１の所望するデータを読み取った後にキャッシュ管理部１２に伝達する（ｃ）。次いで、読み取ったキャッシュデータをキャッシュ保存部１０に伝達し（ｄ）、アプリケーション１５にデータを伝送する（ｆ）。
【０００７】
一方、キャッシュにあるデータを読み取る時には、アプリケーション１５で特定ファイルのデータをキャッシュ管理部１２に要求する（ｂ）。キャッシュ管理部１２は、要求するデータをキャッシュ保存部から読み取る（ｅ）。読み取ったデータはアプリケーション１５に伝達される。
【０００８】
したがって、一度キャッシュされたデータは、ファイル保存部５０及びファイルデータリーダ１１を経ずに、キャッシュ管理部１２及びキャッシュ保存部１０を通じてのみ読み取られるので、ファイルの読み取り速度が速い。
【０００９】
図２は、従来のキャッシュメモリにファイルが保存された状態を示す。６１は、キャッシュ前のメモリ状態を表す。ファイル１をキャッシュする場合、６２のように順次にデータをキャッシュメモリに保存する。ファイル２をキャッシュする場合、以前に載せられているファイル１の内容を削除し、ファイル２のデータをメモリに保存して６３のようにファイル２のみメモリに存在する。以後にメモリに保存されたファイル２の既存データと離れているデータをランダムアクセスでキャッシュする場合、既存のデータをキャッシュから削除して再びデータを保存するので、６４のようになる。
【００１０】
キャッシュがファイルをランダムアクセスする場合または複数のアプリケーションがファイルの他の部分をそれぞれ所望する時、既存キャッシュを空けて再びデータを受け入れねばならないという問題点が発生する。そして、キャッシュ内のメモリポインタではないデータをアプリケーションに伝送するので、性能が低下するという問題点がある。また複数のアプリケーションがキャッシュをアクセスしている場合に使用しているメモリを上書きしてしまう可能性がある。
【特許文献１】米国特許第６，４９３，８００号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明は、前記問題点を改善するためになされたものであり、本発明は特に、複数のファイルを対象としてランダムアクセスを許容し、同時接近要請があるシステムで効率的な大容量キャッシュシステムを提供するところに目的がある。
【００１２】
本発明のさらに他の目的は、ブロック当たりメモリの更新及びアクセスが他のブロックに影響を及ぼさないようにし、ファイルの位置情報に基づいて効率的なデータインデクシングを行わせる。
【００１３】
本発明の目的は、以上で言及した目的に制限されず、言及されていない他の目的は下の記載から当業者に明確に理解されうる。
【課題を解決するための手段】
【００１４】
本発明の一実施形態によるキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュ方法は、アプリケーションから第１ファイルの第１データを要請する命令を受信するステップと、前記要請した第１データが保存されたメモリブロックを検索するステップと、前記第１データが保存されたメモリブロックが前記アプリケーションにより参照されることを表す参照情報を設定するステップと、前記メモリブロックに保存された第１データを前記アプリケーションに送信するステップと、前記第１データが保存されたメモリブロックについての前記参照情報をリセットさせるステップと、を含む。
【００１５】
本発明の一実施形態によるキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュシステムは、ファイルから読み取ったデータをメモリブロック別に保存するキャッシュ保存部と、データを保存するために前記キャッシュ保存部のメモリブロックを割り当てるブロック割り当て部と、アプリケーションが要請する第１ファイルの第１データが保存されたメモリブロックを前記キャッシュ保存部で検索し、前記検索したメモリブロックに保存された前記第１データを前記アプリケーションに送信するキャッシュ管理部と、を備え、前記第１データが保存されたメモリブロックは前記第１データを要請して、前記第１データの送信が完了していないアプリケーションの数字を含む参照情報を含む。
【００１６】
その他の実施例の具体的な事項は詳細な説明及び図面に含まれている。
【発明の効果】
【００１７】
本発明を具現することによって、メモリをブロック化して各ファイルに対するマップを提供するので、複数のファイルであっても一つのキャッシュシステムに保存でき、アプリケーションがファイルをランダムにアクセスできる。
【００１８】
本発明を具現することによって、インデクシング機能を提供するために、速いデータ検索が可能であり、かつ参照回数をおいてアプリケーションがキャッシュメモリを使用する間にメモリを保護できる。
【発明を実施するための最良の形態】
【００１９】
本発明の利点及び特徴、そしてこれを達成する方法は添付された図面に基づいて詳細に後述されている実施例を参照すれば明確になる。しかし、本発明は以下で開示される実施例に限定されるものではなく、この実施例から外れて多様な形に具現でき、本明細書で説明する実施例は本発明の開示を完全にし、本発明が属する技術分野で当業者に発明の範ちゅうを完全に報せるために提供されるものであり、本発明は請求項及び発明の詳細な説明により定義されるだけである。一方、明細書全体に亙って同一な参照符号は同一な構成要素を示す。
【００２０】
以下、本発明の実施形態によりキャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュ方法及びキャッシュシステムを説明するためのブロック図または処理フローチャートについての図面を参考にして本発明を説明する。この時、フローチャートの各ブロックとフロ−チャートの組合わせはコンピュータプログラムインストラクションにより実行可能なのが理解できるであろう。これらコンピュータプログラムインストラクションは、汎用コンピュータ、特殊用コンピュータまたはその他のプログラマブルデータプロセッシング装備のプロセッサーに搭載されうるので、コンピュータまたはその他のプログラマブルデータプロセッシング装備のプロセッサーを通じて実行されるそのインストラクションがフローチャートのブロックで説明された機能を行う手段を生成するように機構を作れる。
【００２１】
これらコンピュータプログラムインストラクションは特定方式で機能を具現するためにコンピュータまたはその他のプログラマブルデータプロセッシング装備を指向できるコンピュータ利用可能またはコンピュータ判読可能メモリに保存されることも可能なので、そのコンピュータ利用可能またはコンピュータ判読可能メモリに保存されたインストラクションはフローチャートのブロックで説明された機能を行うインストラクション手段を内包する製造品目を生産することも可能である。コンピュータプログラムインストラクションはコンピュータまたはその他のプログラム可能なデータプロセッシング装備上に搭載することも可能なので、コンピュータまたはその他のプログラマブルデータプロセッシング装備上で一連の動作段階が実行されてコンピュータで実行されるプロセスを生成し、コンピュータまたはその他のプログラマブルデータプロセッシング装備を行うインストラクションはフローチャートのブロックで説明された機能を実行するための段階を提供することも可能である。
【００２２】
また、各ブロックは特定の論理的機能を行うための一つ以上の実行可能なインストラクションを含むモジュール、セグメントまたはコードの一部を示すことができる。また、いくつの代替実行例では、ブロックで言及された機能が順序を外れて発生することも可能であるということに注目せねばならない。例えば、連続して図示されている２つのブロックは、実質的に同時に行われてもよく、またはそのブロックが時々該当する機能によって逆順に行われてもよい。
【００２３】
図３は本発明の一実施形態によるキャッシュシステムの構造を示す図面である。
【００２４】
本実施形態で使われる‘部’という用語、すなわち、‘モジュール’または‘テーブル’という用語は、ソフトウェアまたはＦＰＧＡ（フィールドプログラマブルゲートアレイ）または注文型半導体（アプリケーションスペシフィックインテグレーテッドサーキット（ＡＳＩＣ））のようなハードウェア構成要素を意味し、モジュールは所定の役割を行う。しかし、モジュールはソフトウェアまたはハードウェアに限定されるものではない。モジュールは、アドレッシング可能な保存媒体に存在すべく構成されても良く、１つまたはそれ以上のプロセッサーを実行させるように構成されても良い。したがって、一例としてモジュールは、ソフトウェア構成要素、客体指向ソフトウェア構成要素、クラス構成要素及びタスク構成要素のような構成要素と、プロセス、関数、属性、プロシージャ、サブルーチン、プログラムコードのセグメント、ドライバー、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、及び変数を含む。構成要素とモジュールから提供される機能は、より少数の構成要素及びモジュールで結合されるか、追加的な構成要素とモジュールにさらに分離されうる。のみならず、構成要素及びモジュールは通信システム内の１つまたはそれ以上のコンピュータを再生させるように具現されることもある。
【００２５】
ブロック割り当て部２２０は、キャッシュを構成するメモリブロックをシステムのメモリから割り当てて、メモリブロックに対するポインタをキャッシュ管理部１３０に提供する。
【００２６】
ブロックリスト２１０は、メモリブロックのポインタを維持する。この時、効率的なメモリブロックの管理のために、先入先出（ＦＩＦＯ）のデータ構造に維持できる。アプリケーション１５０の要請に応じてメモリブロックを生成または使用した場合、該当メモリブロックのポインタをリストの最後端に連結する。新たなデータを保存するためのメモリブロックをこれ以上割り当てることができない場合に、リストのヘッドから検索して使用可能なメモリブロックを探し出して新たなデータを保存するところに使用できる。
【００２７】
キャッシュ管理部１３０は、キャッシュされたデータがある場合には、キャッシュ保存部１４０でデータを保存しているメモリブロックを検索してアプリケーション１５０に伝達する。逆に、キャッシュされたデータがない場合には、メモリブロックに対するポインタをブロック割り当て部２２０及びブロックリスト２１０から受けてファイルデータをコピーした後、アプリケーション１５０にデータを送ってキャッシュ保存部１４０に保存する。
【００２８】
キャッシュ保存部１４０は、キャッシュしようとするファイルごとにファイルのデータを保存するマップをリストで管理する。それぞれのマップは、ファイルのデータを保存しているブロックのポインタ値を管理するマップをファイルのデータの位置値に基づいてＫｅｙを構成する。
【００２９】
ファイルデータリーダ１２０は、ファイル保存部１１０でデータを読み取ってキャッシュ管理部１３０に伝達する。
【００３０】
図４は、本発明の一実施形態によるキャッシュ前後のメモリ構造を示す例示図である。キャッシュ保存部１４１のメモリは、一定サイズのメモリブロックで構成されている。ファイルが保存される前のメモリであるためにデータが保存されておらず、いつでもデータを保存できるようになっている。ここで、アプリケーションが複数のファイルに対してデータを要請する場合、ファイルの種類及びファイル内でのデータ位置に関係なく順次にメモリブロックを割り当ててデータを保存する。１４２に示すように、Ｆｉｌｅ１、Ｆｉｌｅ２が保存されており、各ファイル内での位置であるｉｎｄｅｘ１、ｉｎｄｅｘ２などが表示されている。ところが、ファイル名やファイル内での位置に関係なくブロックに保存されており、ただし各ファイルに対する構造体が該当ファイルに割り当てられたメモリブロックを管理する。インデックス情報を通じてメモリブロックがファイル内部でどの位置のデータを含んでいているかが分かる。
【００３１】
メモリブロックを構成する構造体を説明すれば、以下の通りである。メモリブロックに保存されるデータとデータのサイズ、参照回数、ファイルマップ、ファイルマップキーから形成される。
【００３２】
ｔｙｐｅｄｅｆ  ｓｔｒｕｃｔ＿＿ＢＬＯＣＫ
｛
ｕｎｓｉｇｎｅｄ  ｃｈａｒ＊    Ｄａｔａ［ＳＩＺＥ＿ＯＦ＿ＢＬＯＣＫ］；
ｉｎｔ                          ＤａｔａＳｉｚｅ；
ｉｎｔ                          ＲｅｆＣｏｕｎｔ；
ｖｏｉｄ＊                      ＦｉｌｅＭａｐ；
ｉｎｔ                          ＦｉｌｅＭａｐＫｅｙ；
｝ＢＬＯＣＫ；
構造体を構成する要素を説明すれば、Ｄａｔａは、キャッシュしようとするファイルのデータを保存しており、ＤａｔａＳｉｚｅは、Ｄａｔａ配列に保存されている実際ファイルデータのサイズを表す。メモリブロックが同一サイズで構成される場合、Ｄａｔａに保存されるファイルのデータサイズがブロックのサイズより小さいことがあるので、これを示すためである。ＲｅｆＣｏｕｎｔは、このメモリブロックを使用しているアプリケーションの数を表す。このメモリブロックを使用するアプリケーションがあれば、該当メモリブロックの内容を除去させない。ＦｉｌｅＭａｐは、メモリブロックを管理しているマップを示す変数であり、ＦｉｌｅＭａｐＫｅｙは、Ｍａｐ変数でメモリブロックをインデックスしているキーを意味する。
【００３３】
前記メモリブロックをファイル別に管理可能にするファイル構造体を説明すれば、次の通りである。
【００３４】
ｔｙｐｅｄｅｆ  ｓｔｒｕｃｔ＿＿ＦＩＬＥＩＮＦＯ；
｛
ｉｎｔ              ＦｉｌｅＩｎｄｅｘ；
ｖｏｉｄ＊          ＦｉｌｅＭａｐ；
｝ＦＩＬＥＩＮＦＯ；
ＦｉｌｅＩｎｄｅｘは、ファイルを識別して表す情報であり、ＦｉｌｅＭａｐは、メモリブロックを保有しているマップを示す変数である。
【００３５】
図５は、本発明の一実施形態によるＦＩＬＥＩＮＦＯとＢＬＯＣＫとの構造体の構成を示す図面である。
【００３６】
３１１及び３１２は、ＦＩＬＥＩＮＦＯでファイルマップリストを構成している。ファイルマップをキャッシュしようとするファイルごとに、そのファイルについてのデータを管理するマップである。
【００３７】
ファイルマップリストは、ファイルインデックスとファイルマップとから形成されたＦＩＬＥＩＮＦＯ構造体を構成要素とするリストであって、キャッシュしようとするファイルが追加される度にこのリストにＦＩＬＥＩＮＦＯ構造体が追加される。ファイルマップは（キー、バリュー）の対を構成要素として持つことができるが、キーは、保存しようとするデータがファイル内で持つ位置を知らせるためのインデックスであり、値は、メモリブロックに対するポインタである。ファイルマップを通じてファイルのどの部分についてのデータがどのメモリブロックに保存されたかが分かる。
【００３８】
ブロックポインタで数字は、ブロックが割り当てられた順序であり、この順序及びマップに保存される位置は同一でない。図５は、ファイル内の位置によってブロックを順に羅列したものであって、ファイル１  ３１１から見る時、ブロック２、ブロック１、ブロック４、ブロック５などに割り当てられることが分かる。
【００３９】
図６は、本発明の一実施形態による余分のメモリブロックが存在する場合にキャッシュに割り当てる過程を示す図面である。余分のメモリブロックが存在するのでアプリケーションで特定ファイルを要請する場合、該当メモリブロックを割り当てればよい。全体フローは次の通りである。アプリケーション１５０で特定ファイルのデータを要求すれば、キャッシュ管理部１３０は、該当アプリケーション１５０が要求したファイルのデータがキャッシュ保存部１４０に保存されたかどうかを判断して、保存されていない場合、ブロック割り当て部２２０からメモリブロックを割り当てられるようにポインタ情報を受け入れる（Ｓ１０２）。
【００４０】
そして、ファイルデータリーダ１２０が、ファイル保存部から所望のデータを読み取ったものをメモリブロックにコピーする（Ｓ１０３）。該当メモリブロックに特定ファイルの特定部分が保存されたことを表す情報と共に、メモリブロックのポインタをブロックリスト２１０に追加する（Ｓ１０４）。この時、ブロックリスト２１０に追加する方法で、リストの最後に追加して最初に割り当てられたメモリブロックを最初に可用メモリブロックに変換する過程を行える。要請したファイルを保存するメモリ空間がない場合には、最初に割り当てられたメモリブロックが可用メモリブロックに変換される。この過程については、図７で説明する。
【００４１】
キャッシュ管理部１３０は、要請したファイルにマッチングされるファイルマップにメモリブロックのポインタを保存する（Ｓ１０５）。以後、該当ファイルマップの情報を通じてメモリブロックを探すことができる。そして、データを要請したアプリケーション１５０にメモリブロックのポインタを伝送する。伝送前にブロック内の参照回数（ＲｅｆＣｏｕｎｔ）値を１増加させ、今後アプリケーション１５０がメモリブロックの使用を終えれば参照回数（ＲｅｆＣｏｕｎｔ）値を１減少させる。このようにすれば、参照回数を通じてメモリブロックが現在使用中であるかいなかが分かるので、可用メモリブロックのない場合にも使用中のメモリブロックを除去する場合を防止できる。
【００４２】
図７は、本発明の一実施形態による余分のメモリブロックが存在していない場合、データをキャッシュに割り当てる過程を示す図面である。余分のメモリブロックが存在していないならば、データをキャッシュに割り当てるために既に割り当てられたメモリブロックを使用せねばならない。したがって、前述したようにメモリブロックがＦＩＦＯ形態で連結されているならば、最初に割り当てられた、すなわち、メモリブロックリストの最前方に存在するブロックを再割り当てできる。この時、参照回数が０でない場合、該当メモリブロックを使用するアプリケーションが存在するということを意味する。したがって、ブロックリストで最前方に存在するメモリブロックを再び割り当てるが、参照回数が０でない場合には次の順序に存在するメモリブロックを調べて、割り当てるかどうかを判断する。全体フローは次の通りである。
【００４３】
アプリケーション１５０で特定ファイルのデータを要求すれば（Ｓ１１１）、キャッシュ管理部１３０は、ブロックリスト２１０で割り当てられるメモリブロックを探す（Ｓ１１２）。リストのヘッドから検索する。この時、ブロックの参照回数（ＲｅｆＣｏｕｎｔ）が０でない場合は、他のアプリケーションで使用しているという意味であるため、新たなデータを割り当てられない。一度探索したブロックのポインタは今後また再割り当てのための検索で後順位にするために、探索したブロックのポインタはリストの最後方に保存する過程を追加できる。
【００４４】
Ｓ１１２過程を通じて検索されたポインタをキャッシュ保存部１４０から除去する（Ｓ１１３）。これ以上以前のデータを保存しないため、該当ブロックを参照しようとする試みを防止するためのことである。そして、ファイルから所望のデータを読み取った後に探索したメモリブロックにコピーする（Ｓ１１４）。そして、要請したファイルにマッチングされるファイルマップにメモリブロックのポインタを保存する（Ｓ１１５）。キャッシュ管理部１３０は、データが保存されたメモリブロックのポインタをアプリケーション１５０に伝送する。この時、このメモリブロックの参照回数値を１増加させ、アプリケーション１５０がメモリブロックの使用を終えれば参照回数値を１減少させる。
【００４５】
アプリケーション１５０が要求するデータがキャッシュ保存部１４０に保存されているならば、メモリブロックの割り当て過程やファイルからデータを読み取る過程なしに直ちにキャッシュ保存部１４０でデータを読み取るため、所要時間を大きく短縮できる。この時、キャッシュ管理部１３０は、アプリケーション１５０へのデータ伝送前に該当データが保存されたメモリブロックの参照回数を１増加させ、伝送後には参照回数を再び１減少させる。
【００４６】
また、複数のアプリケーションが複数のファイルに対してアクセスを要請する場合にも、ファイル別にメモリブロックを管理し、使用が終了したメモリブロック（例えば、参照回数が０である場合）を再び可用メモリに転換して使用できるので、大容量のファイルサーバまたはストリーミングサーバから複数のアプリケーションにファイルを提供する場合に適している。
【００４７】
図８は、本発明の一実施形態によるキャッシュシステムで、データを割り当てて伝送する過程を示すフローチャートである。
【００４８】
アプリケーションからデータを要請する命令または信号を受信する（Ｓ２００）。要請したデータがメモリブロックに保存されているかどうかを検討する（Ｓ２１０）。該当ファイルに対するファイルリストで、ファイルマップに該当位置のデータがメモリブロックに割り当てられたかどうかを通じて検討する。データが存在していなければ、メモリブロックにデータを保存する過程（Ｓ２２０ないしＳ２４８）を必要とする。新たなブロックを割り当てるために、空いているメモリブロックが存在しているかどうかを検討する（Ｓ２２０）。空いているメモリブロックが存在していなければ、割り当てられたメモリブロックのうち使用中でないメモリブロックを検索する過程（Ｓ２３２ないしＳ２３６）を行う。
【００４９】
空いているメモリブロックが存在していなければ、ブロックリストの最初から参照回数が０であるメモリブロックを検索する（Ｓ２３２）。参照回数が０であれば、他のアプリケーションにより使用中でないメモリブロックであるため、以後にアプリケーションが要請する場合、新たにファイルから読み取って新たにメモリブロックに割り当てればよい。そして、検索されたメモリブロックをブロックリストから除去する（Ｓ２３４）。そして、検索されたメモリブロックをキャッシュ保存部から除去する（Ｓ２３６）。新たな内容のデータが保存されるので、ブロックリスト及びキャッシュ保存部から除去する過程が必要である。前記過程を通じてメモリブロックを割り当てることができる。
【００５０】
一方、Ｓ２２０で空いているメモリブロックが存在するか、またはＳ２３２ないしＳ２３６過程を通じてメモリブロックを割り当てられれば（Ｓ２４２）、ファイルからデータを読み取って割り当てられたメモリブロックにコピーする（Ｓ２４４）。そして、メモリブロックが保存するデータについての情報を付加してブロックリストに追加する（Ｓ２４６）。データに関する情報とは、該当データがファイル内で占める位置情報を意味する。そして、要請したファイルに対するファイルマップにメモリブロックのポインタを保存する（Ｓ２４８）。これは、以後に再びデータを要請する場合、ファイルのファイルマップを通じてメモリブロックを探すようにするためである。
【００５１】
Ｓ２１０で要請したデータがメモリブロックに保存されているか、またはＳ２２０ないしＳ２４８過程を通じて新たなブロックを割り当ててデータを保存した場合、データが保存されたメモリブロックの参照回数を１増加させる（Ｓ２５２）。データの伝送中にはメモリブロックに他のデータが保存されることを防止するためである。そして、メモリブロックに保存されたデータをアプリケーションに伝送し（Ｓ２５４）、伝送が完了すれば、データが保存されたメモリブロックの参照回数を１減少させる（Ｓ２５６）。
【００５２】
本発明が属する技術分野で当業者ならば本発明がその技術的思想や必須特徴を変更せずとも他の具体的な形に実施されうるということが理解できるであろう。したがって、前述した実施例は全ての面で例示的なものであって、限定的なものではないと理解せねばならない。本発明の範囲は詳細な説明よりは特許請求の範囲により表れ特許請求の範囲の意味及び範囲、そしてその等価概念から導かれるあらゆる変更または変形された形態が本発明の範囲に含まれると解釈されねばならない。
【産業上の利用可能性】
【００５３】
本発明は、大容量のファイルを提供するサーバシステムのキャッシュメモリの関連技術分野に好適に用いられる。
【図面の簡単な説明】
【００５４】
【図１】従来のストリーミングサーバでのキャッシュシステムの構造を示す図である。
【図２】従来のキャッシュメモリにファイルが保存された状態を示す図である。
【図３】本発明の一実施形態によるキャッシュシステムの構造を示す図である。
【図４】本発明の一実施形態によるキャッシュ前後のメモリ構造を示す例示図である。
【図５】本発明の一実施形態によるＦＩＬＥＩＮＦＯとＢＬＯＣＫとの構造体の構成を示す図である。
【図６】本発明の一実施形態による余分のメモリブロックが存在する場合、データをキャッシュに割り当てる過程を示す図である。
【図７】本発明の一実施形態による余分のメモリブロックが存在していない場合、データをキャッシュに割り当てる過程を示す図である。
【図８】本発明の一実施形態によるキャッシュシステムで、データを割り当てて伝送する過程を示すフローチャートである。
【符号の説明】
【００５５】
１２０      ファイルデータリーダ
１３０      キャッシュ管理部
１４０      キャッシュ保存部
１５０      アプリケーション
２００      キャッシュシステム
２１０      ブロックリスト
２２０      ブロック割り当て部
【図１】
2007058856.tif 000003
【図２】
2007058856.tif 000004
【図３】
2007058856.tif 000005
【図４】
2007058856.tif 000006
【図５】
2007058856.tif 000007
【図６】
2007058856.tif 000008
【図７】
2007058856.tif 000009
【図８】
2007058856.tif 000010