(57)【特許請求の範囲】
【請求項１】
データをファイルに格納する方法であって、前記ファイルが論理的に連続するクラスタの列から構成され、クラスタにおけるデータセクタを前記クラスタの物理的に連続する記憶セクタに１対１に格納する方法において、所定のクラスタの最後のＫ個の記憶セクタに格納されたデータセクタを、前記所定のクラスタの直後に続く第２クラスタの最初のＫ個の記憶セクタにおいて反復することを特徴とする方法。
【請求項２】
データをファイルに格納するシステムであって、論理的に連続するクラスタの列を具える前記ファイルを格納するファイルシステムを具え、各々のクラスタのデータセクタを前記クラスタの物理的に連続する記憶セクタに１対１に格納するシステムにおいて、前記ファイルシステムを、所定のクラスタの最後のＫ個の記憶セクタに格納されたデータセクタを、前記所定のクラスタに続く第２クラスタの最初のＫ個の記憶セクタにおいて反復するように配置したことを特徴とするシステム。
【請求項３】
データを有するファイルを与えた情報キャリヤであって、前記ファイルが論理的に連続するクラスタの列を具え、各々のクラスタにおけるデータセクタを前記クラスタの物理的に連続する記憶セクタに１対１に格納する情報キャリヤにおいて、所定のクラスタの最後のＫ個の記憶セクタにおけるデータセクタが、前記所定のクラスタに続くクラスタの最初のＫ個の記憶セクタにおけるデータセクタと反復していることを特徴とする情報キャリヤ。
【請求項４】
論理的に連続するクラスタの列を具えるファイルからデータを取り出す方法であって、各々のクラスタにおけるデータセクタを前記クラスタの物理的に連続する記憶セクタに１対１に格納し、所定のクラスタにおける記憶セクタを、その度に前記データセクタの幾つかを取り出すようにブロックずつ読み出す方法において、
−  記憶セクタの第１ブロックを所望の記憶セクタから読み出すステップと、
−  前記第１ブロックの最後と、関連したクラスタの最後との間に残っている記憶セクタの数を検知するステップと、
−  前記残っている記憶セクタの数が次のブロックにおいて読み出すべき記憶セクタの数より少ない場合、論理的に次のクラスタにおける次の所望の記憶セクタにジャンプするステップとを具えることを特徴とする方法。
【請求項５】
データをユーザに利用可能にするシステムであって、前記システムが論理的に連続するクラスタの列を具えるファイルを管理するファイルシステムを具え、各々のクラスタにおけるデータセクタを前記クラスタの物理的に連続する記憶セクタに１対１に格納するシステムにおいて、前記ファイルシステムを、所定のクラスタの最後のＫ個の記憶セクタにおけるデータセクタが、前記所定のクラスタの直後に続くクラスタの最初のＫ個の記憶セクタにおけるデータセクタと反復するように、前記ファイルを管理するように配置したことを特徴とするシステム。
【請求項６】
請求の範囲５に記載のシステムにおいて、所定のクラスタにおける記憶セクタをブロックずつ読み出す読み出し手段を具え、前記読み出し手段を、記憶セクタの第１ブロックを所望の記憶セクタから読み出すように配置し、前記システムがさらに、
−  前記第１ブロックの終わりと前記関連したクラスタの最後との間に残っている記憶セクタの数を検知する検知器と、
−  前記残っている記憶セクタの数が次のブロックにおいて読み出すべき記憶セクタの数より少ない場合、論理的に次のクラスタにおける次の所望の記憶セクタにジャンプするジャンプ手段とを具えることを特徴とするシステム。
【請求項７】
請求の範囲６に記載のシステムにおいて、読み出すべき記憶セクタのブロックからデータセクタを受け取り、このようにして得たデータをユーザに利用可能にするバッファを具え、データセクタの数として表される前記バッファの容量を、多くてＫ＋１と等しくしたことを特徴とするシステム。
【発明の詳細な説明】
本発明は、データをファイルに格納する方法であって、前記ファイルが論理的に連続するクラスタの列から構成され、クラスタにおけるデータセクタを前記クラスタの物理的に連続する記憶セクタに１対１に格納する方法に関係する。
本発明は、データをファイルに格納するシステムであって、論理的に連続するクラスタの列を具える前記ファイルを格納するファイルシステムを具え、各々のクラスタのデータセクタを前記クラスタの物理的に連続する記憶セクタに１対１に格納するシステムに関係する。
本発明は、データを有するファイルを与えた情報キャリヤであって、前記ファイルが論理的に連続するクラスタの列を具え、各々のクラスタにおけるデータセクタを前記クラスタの物理的に連続する記憶セクタに１対１に格納する情報キャリヤに関係する。
本発明は、論理的に連続するクラスタの列を具えるファイルからデータを取り出す方法であって、各々のクラスタにおけるデータセクタを前記クラスタの物理的に連続する記憶セクタに１対１に格納し、所定のクラスタにおける記憶セクタを、その度に前記データセクタのいくつかを取り出すようにブロックずつ読み出す方法に関係する。
本発明は、データをユーザに利用可能にするシステムであって、前記システムが論理的に連続するクラスタの列を具えるファイルを管理するファイルシステムを具え、各々のクラスタにおけるデータセクタを前記クラスタの物理的に連続する記憶セクタに１対１に格納するシステムに関係する。
このようなデータをユーザに利用可能にするシステムは、いわゆるビデオ−オン−デマンドサービスに関して既知である。この種のサーバは、ファイルを格納した１つまたはそれ以上のディスクを具える。このときファイルは、前記サーバがユーザに要求に応じて提供するフィルムを含む。この既知のシステムにおいて、ファイルは、論理的順序を有し、前記ディスクにおいて分布してもよい多数のクラスタを具える。クラスタは、前記ファイルのデータを有する物理的に連続したセクタを具える。前記ファイルのデータを有するセクタを前記ディスクからブロックずつ取り出してバッファにおいて配置し、そこから前記データをユーザに前記フィルムのタイミングに対応する速度において提供する。ブロックのサイズは前記バッファのサイズに等しく、結果として前記バッファは常に完全に満たされる。前記システムは、１ユーザあたり２つのバッファを有し、第１バッファがユーザに提供されるデータで満たされている間、第２バッファを前記ディスクからの次のブロックによって満たすために利用できる。前記システムのスケジューラのサイクルは、前記第１バッファのデータのすべてが提供される前に、次のブロックが前記第２バッファに存在するようになっている。その瞬時において、前記第１および第２バッファは機能を交換し、前記処理を繰り返す。前記既知のシステムにおけるバッファに対するブロックの取り出しは、一般に、取り出すべきセクタが前記クラスタにおいて物理的に連続して配置されているため、前記ディスクにおける前記ヘッドによる１回のシーク動作を必要とする。各々のクラスタの長さは、前記ブロックの長さの多数倍であり、結果として、前記クラスタの最終ブロックを１回のシーク動作によって取り出すことができる。
前記既知のシステムは、ユーザが関連した映画の表示を制御できるようにする、例えば、前記フィルムの高速表示や、前記フィルムの所定の箇所へのジャンプをできるようにする相互作用に関する多数の可能性を有する。したがって、所定の瞬時において、ユーザは、クラスタ内の任意の箇所において開始するデータを要求するかもしれない。しかしながら、クラスタ内のブロックの開始位置を、前記クラスタの残りの部分をブロックの整数倍において読み出すことができるように、前記ブロックのサイズの多数倍になるような位置にのみ位置するように選択することができる。前記要求されたデータを含むブロックを取り出し、前記第１ユーザバッファにおいて配置する。このブロックの開始位置に関して負わされる制限のため、前記ブロックは、しばしば、前記要求されたデータに先行するデータの量を含む。この場合において、前記バッファは、ユーザに提供されるべきデータを部分的にのみ含むため、前記スケジューラが次のサイクルを実行する前に、前記バッファが空になる危険がある。したがって、ユーザが前記要求されたデータを受け取る前に、前記システムは、関連したデータを含むブロックだけでなく、次のブロックも取り出し、前記第２バッファに後者のブロックを配置する。バッファに格納されたデータのユーザへの提供は、その後のみに開始する。したがって、前記スケジューラは、ユーザがデータを要求する瞬時と、ユーザが前記データを受ける瞬時との間に、２つのサイクルを実行しなければならない。これは、ユーザに長い待ち時間を強いる。
本発明の目的は、データアクセス可能性を改善した、データをユーザに利用可能にする上述した種類の方法およびシステムを提供することである。この目的のために、本発明による方法は、
−  記憶セクタの第１ブロックを所望の記憶セクタから読み出すステップと、
−  前記第１ブロックの最後と関連したクラスタの最後との間に残っている記憶セクタの数を検知するステップと、
−  前記残っている記憶セクタの数が次のブロックにおいて読み出すべき記憶セクタの数より少ない場合、論理的に次のクラスタにおける次の所望のセクタにジャンプするステップとを具えることを特徴とし、
本発明によるシステムは、前記ファイルシステムを、所定のクラスタの最後のＫ個の記憶セクタにおけるデータセクタが、前記所定のクラスタに連続するクラスタの最初のＫ個の記憶セクタにおけるデータセクタに対応するように前記ファイルを管理するように配置する。クラスタの終わりにおける記憶セクタにおけるデータセクタのいくつかが、次のクラスタにおける任意のセクタにおいて反復されるため、取り出すべきデータセクタのブロックは、前記クラスタの任意のセクタにおいて開始することができ、それにもかかわらず、記憶媒体における１回のシーク動作の後、関連したブロックと次のブロックとを取り出すことができる。これは、前記データの前記ファイルからのより柔軟な読み出しを可能にする。
本発明によるシステムの実施例は、前記読み出し手段を、記憶セクタの第１ブロックを所望の記憶セクタから読み出すように配置し、
−  前記第１ブロックの終わりと前記関連したクラスタの終わりとの間に残っている記憶セクタの数を検知する検知器と、
−  前記残っている記憶セクタの数が次のブロックにおいて読み出すべき記憶セクタの数より少ない場合、論理的に次のクラスタにおける次の所望のセクタにジャンプするジャンプ手段とを具えることを特徴とする。
ジャンプ後に取り出されるデータセクタの第１ブロックが前記所望のデータの開始において正確に開始するため、このブロックのデータセクタをユーザに直接提供することができる。もはや最初にデータセクタの第２ブロックを取り出す必要はない。結果として、ジャンプ命令の発行後、ユーザは、データの到着まで、それほど長く待つ必要はない。
本発明によるシステムの実施例は、データセクタの数として表される前記バッファの容量を、多くてＫ＋１と等しくしたことを特徴とする。前記取り出すデータセクタのブロックのサイズを、本発明による関連した状況に正確に適合させることができる。ブロックは、任意の位置において開始してもよいため、もはや、前記既知のシステムにおける場合のように、前記ブロックのサイズを前記クラスタのサイズの約数として選択する必要はない。本発明によるデータセクタの反復のため、ブロックは、クラスタにおける任意の位置において開始してもよく、それにもかかわらず、１回のシーク動作によって、前記ブロックと、どのような次のブロックとをも取り出すことができる。
本発明の他の目的は、データアクセス可能性を改善した、データをファイルに格納する上述した種類の方法およびシステムを提供することである。この目的のために、本発明による方法は、所定のクラスタの最後のＫ個の記憶セクタにおいて格納されたデータセクタを、前記所定のクラスタに直接続く第２クラスタの最初のＫ個の記憶セクタにおいて反復することを特徴とし、本発明によるシステムは、前記ファイルシステムを、所定のクラスタの最後のＫ個の記憶セクタに格納されたデータセクタを、前記所定のクラスタに続く第２クラスタの最初のＫ個の記憶セクタにおいて反復するように配置したことを特徴とする。クラスタの最後の部分の記憶セクタにおけるデータセクタが、次のクラスタの開始において反復されるため、前記ファイルにおけるデータのアクセス可能性は、増加する。前記ファイルからのデータセクタのブロックの読み出しは、任意の位置において開始してもよく、それにもかかわらず、１回のシーク動作によって、前記ディスクから各々のブロックを取り出すことができる。
本発明の他の目的は、ユーザアクセス可能性を改善した、上述した種類の記憶媒体を提供することである。この目的のため、本発明による記憶媒体は、所定のクラスタの最後のＫ個の記憶セクタにおけるデータセクタが、前記所定のクラスタに続くクラスタの最初のＫ個の記憶セクタにおけるデータセクタに対応することを特徴とする。クラスタの最後の部分の記憶セクタにおけるデータセクタの、次のクラスタの開始における反復のため、前記記憶媒体の使用中の前記ファイルにおけるデータのアクセス可能性は、増加する。前記ファイルからのデータセクタのブロックの読み出しは、任意の位置において開始してもよく、それにもかかわらず、前記記憶媒体における１回のシーク動作によって、各々のブロックを取り出すことができる。
本発明のこれらのおよび他の態様は、以下に記載する実施例の参照によって明らかになるであろう。
図１は、既知の技術によるファイルの構成を示す。
図２は、本発明によるファイルの構成を示す。
図３は、各々が１０セクタを具える３つのクラスタを具えるファイルの一例を示す。
図４は、ファイルにデータを格納する本発明によるシステムの本質的な部分を図式的に示す。
図５は、ファイルにデータを格納する本発明による方法の主なステップを説明するフローチャートを示す。
図６は、データをユーザに利用可能にする本発明によるシステムの本質的な部分を図式的に示す。
図７は、ファイルからデータを利用可能にする本発明による方法の主なステップを説明するフローチャートを示す。
図１は、既知の技術に従うファイルの構成を示す。このようなファイルは、例えば、要求に応じてユーザに利用可能になるビデオ−オン−デマンドサーバのディスクに格納されたフィルムに関係する。前記ファイルは、クラスタの列、すなわちこの場合において、１００、１０２および１０４を具え、その各々は、多数のセクタ、例えばセクタ１０６を具える。前記ファイルにおけるデータの連続は、格納されたデータを再び利用可能にするために重要である。フィルムの画像を、通常の再生中、一定の連続において利用可能にすべきである。前記セクタをクラスタにおいて物理的に連続して格納し、あるセクタは、論理的な視点から次のセクタのデータの前のデータを含む。多くの場合において、前記クラスタは、隣接して格納されないが、前記記憶メディアを横切って分布する。しかしながら、それらは、前記データの元の順序に対応する論理的順序を有する。本例において、クラスタ１００は、クラスタ１０２に先行し、クラスタ１０２それ自体は、クラスタ１０４に先行する。実際には、前記記憶媒体、例えば磁気ディスクまたは光ディスクは、ファイルの変化する組を含む。ビデオ−オン−デマンドサーバの場合において、新たなフィルムを追加し、より古いフィルムを除去する。前記記憶媒体における空間の能率的な管理のために、このような変化する組のファイルを、前記記憶媒体を横切って分布するように、クラスタに分割し、これらのクラスタを記憶する。前記ファイルからのデータの読み出しは、前記記憶媒体における関連したデータに対するシーク動作と、前記データの前記記憶媒体からの転送とを具える。十分能率的な読み出しを達成するために、前記データをブロックずつ読み出し、そのたびごとに連続するセクタのブロックのデータを読み出す。次にこのデータブロックを、通常、バッファ１０８に格納し、そこから前記データをユーザの用途によって所望のレートにおいて取り出すことができる。この原理によるシステムの動作は、このような取り出しを要求するユーザごとのバッファにおいて格納するために、隣接するセクタのブロックを前記記憶媒体から取り出す所定の期間のいわゆるサイクルを有する。読み出すべきセクタのブロック１１０は、前記クラスタのデータを整数のブロックにおいて読み出せるようなサイズを有する。そうでなければ、前記クラスタが隣接して格納されていないため、前記クラスタのそのとき残っている部分の読み出しは、次のクラスタの開始からのデータによって満たされるように、第２のシーク動作を必要とする。通常、このような第２のシーク動作は、必要な時間のため、ユーザにデータの連続的なストリームを提供するリアルタイムシステムにおいて許容されない。
上述した原理によるシステム動作において、前記ファイルにおけるデータにおける任意のセクタ１１２へのジャンプを行うことができる。前記セクタが位置するブロックを、前記クラスタの終わりまで整数のブロックを読み出さなければならないという事実を考慮して決定する。このように、前記既知のシステムは、前記セクタのブロックを前記クラスタから読み出す一定のパターンを有する。図１に示す例において、前記所望のセクタは、ブロック１１４において位置し、このブロックを取り出し、バッファ１０８に格納する。このとき前記バッファは、必要ないデータ、すなわち、ブロック１１４におけるセクタ１１２の前のセクタのデータを含む。バッファ１０８におけるデータは、前記バッファが所望のデータによって完全に満たされるより速く使用されるため、データのさらなる提供は、問題になるかもしれない。結果として、前記バッファは、次のブロックがユーザに対して取り出される前に、空になる恐れがある。したがって、任意のセクタへのジャンプにおいて、関連したセクタが位置するブロックを取り出すだけでなく、次のブロックも取り出す。前記データのユーザへの提供は、その後にのみ開始する。図１に示す例において、第１サイクル中、ブロック１１４を取り出し、バッファ１０８に格納し、その後、第２サイクル中、ブロック１１６を取り出し、バッファ１１８に格納し、その後にのみバッファ１０８におけるデータのユーザへの提供を開始する。これは、ユーザが所定のセクタのデータを要求する瞬時と、ユーザが前記データを受け取る瞬時との間に２つのサイクルが終了することを意味する。前記既知のシステムにおいて、平均サイクル時間は２秒であり、最長サイクル時間は６秒である。したがって、ジャンプの場合において、４秒の平均待ち時間が存在し、１２秒の最長待ち時間が存在する。
図２は、本発明によるファイルの構成を示す。このファイルは、物理的に連続するセクタの列を具えるクラスタ１００、１０２、１０４の論理的な列を有する既知の構造を有する。本発明によるファイルにおいて、あるクラスタの最後の部分におけるデータは、論理的に次のクラスタの最初の部分において反復する。セクタのブロック２０２におけるデータは、セクタのブロック２０４におけるデータに対応し、ブロック２０６におけるデータは、ブロック２０８におけるデータに対応する。少なくとも最大バッファ容量マイナス１に等しい反復を行った場合、セクタのブロックの取り出しは、クラスタ内の任意の位置において開始してもよく、それにもかかわらず、常に１回のシーク動作によってブロックを取り出すことができる。例えば、セクタ２１０において開始するデータを要求した場合、ユーザによって使用するために、前記システムは、セクタ２１０において開始するセクタのブロック２１２を取り出し、バッファ１０８に置く。その後、次のサイクル中、ブロック２１４を取り出し、その後、クラスタ１０２の残りの部分２１６が、取り出すべきセクタのブロックより小さくなる。その場合において、ブロック２１４の次に、次のサイクル中、ブロック２１８を次のクラスタ１０４から取り出し、対応するデータがブロック２１４によってすでに読み出されているため、セクタの部分２２０を飛ばす。データの反復のため、ブロック２１６の後、クラスタ１０２内に部分的に位置すると共にクラスタ１０４内に部分的に位置するブロックを取り出す必要はない。このような分割されたブロックの取り出しは、これらのクラスタが物理的に連続するように格納されていないため、２回のシーク動作を含み、これは、前記システムのサイクル時間と比較して相当長い時間を必要とする。ブロック２１２の開始が所望のデータの開始と一致するため、このブロックの取り出し後、前記バッファは、ユーザによって使用されるデータによって完全に満たされる。結果として、ユーザに対するデータの提供は、前記バッファにおける関連したブロックの格納後にすぐに開始してもよい。したがって、データを要求する瞬時と関連したデータを受け取る瞬時との間に経過する時間は、１サイクルのみである。したがって、前記既知のシステムとの比較において、本発明を使用するシステムは、ユーザに対する最長待ち時間が半減する。これによって、本発明によれば、取り出すべきセクタのブロックはクラスタにおける任意のセクタにおいて開始してもよく、それにもかかわらず前記ディスクにおいて１回のシーク動作によって前記関連ブロックと次のブロックとを取り出すことができるようになる。
本発明の他の利点は、取り出すべきセクタのブロックのサイズに関する柔軟性に関係する。前記既知のシステムにおいて、前記ブロックのサイズは、１つのクラスタが整数のブロックを具えるようなサイズであるべきである。本発明による重複のため、ブロックのサイズを特定の状況、例えば、前記ユーザバッファのサイズと、データがユーザによって使用されるレートとに正確に適合させることができる。所定のサイズのブロックの読み出し中、前記クラスタが、残りが１ブロックより小さくなる程度に読み出される場合、次のブロックを次のクラスタから完全に読み出すことができる。ブロックサイズの選択に関して負わされる必要条件は、１ブロックが、データが繰り返されるセクタの数より１より多くなくてよいことを含む。このより高い柔軟性は、一人より多くのユーザを含むシステムにおける用途に対して特に魅力的である。このとき、各々のユーザに、使用のレートおよび応答時間に関する各々の必要性に最適なバッファサイズを割り当てることができる。本発明によるシステムの特別な実施例において、ファイルは１ギガバイトの容量を有し、クラスタは１０メガバイトの容量を有し、取り出すべきデータセクタのブロックは１２８キロバイトの容量を有し、データセクタは５１２バイトの容量を有する。
図３は、各々が１０セクタを具える３つのクラスタを具えるファイルの一例を示す。あるクラスタの最後の４セクタのデータは、次のクラスタの最初の４セクタにおいて反復する。このファイルを、任意のセクタから開始して、５セクタのブロックによって読み出すことができる。ファイル全体の逐次的な読み出しに対して、以下の位置および内容を有するブロックが読み出される。
−  クラスタ３０２，セクタ１    “abcde”
−  クラスタ３０２，セクタ６    “fghij”
−  クラスタ３０４，セクタ５    “klmno”
−  クラスタ３０６，セクタ４    “pqrst”
−  クラスタ３０６，セクタ９    “uv”
読み出し中、あるクラスタの次のセクタが次のブロックによる読み出しによるものであることを確立する。次のセクタからクラスタの最後までのセクタの数が少なくともブロックサイズに等しい場合、次のブロックを現在のクラスタから読み出してもよい。前記次のセクタからクラスタの最後までのセクタの数が前記ブロックサイズより少ない場合、次のブロックを次のクラスタから読み出すべきである。その場合において、前記データを、前のクラスタから前に取り出したブロックによってすでにデータが読み出された多くのセクタのオフセット後、開始すべきである。もし望むなら、前記ファイルをより小さいブロックによって読み出す。ブロックサイズを３セクタにすると、前記ファイルは、以下のように完全に読み出される。
−  クラスタ３０２，セクタ１    “abc”
−  クラスタ３０２，セクタ４    “def”
−  クラスタ３０２，セクタ６    “ghi”
−  クラスタ３０４，セクタ４    “jkl”
等。
さらに、読み出しを、クラスタにおける任意のセクタによって開始してもよい。前記任意のセクタから、前記クラスタに残っているセクタの数が不足するまで、ブロックを読み出す。不足した場合において、上述した方法において、次のクラスタに切り替える。
クラスタがＣ個のセクタを具え、クラスタの最後からＯ個のセクタが反復され、ブロックがＢ個のセクタのサイズを有し、読み出すべき次のセクタがクラスタにおける番号Ｓｎｒである、一般的な場合において、以下の規則を用いる。
Ｃ−Ｓｎｒ＋１≧Ｂならば、次のブロックを現在のクラスタから。
Ｃ−Ｓｎｒ＋１＜Ｂならば、次のブロックを次のクラスタから。
Ｓｎｒ［次のクラスタ］＝Ｏ−（Ｃ−Ｓｎｒ［現在のクラスタ］）
ここで、Ｓｎｒ［次のクラスタ］を、次のブロックを開始すべき次のクラスタにおけるセクタの数とする。
図４は、本発明によるファイルにデータを格納するシステムの最も重要な部分を図式的に示す。本システムは、所定のソースからデータを受け、これらのデータを記憶媒体におけるファイルに格納することを意図するものであり、前記ファイルを、図２および３の参照と共に記述したように、本発明に従って構成する。本システムを、この目的のための適切なプログラムを与えた一般的な目的のコンピュータを基礎として構成する。本システムは、この目的のためにメモリ４０４にロードされたプログラムを実行するプロセッサ４０２を具える。本システムは、前記ファイルを格納する記憶媒体を有する装置、例えば、１つまたはそれ以上のディスクを有するディスクユニット４０６も具える。本システムは、これを経てデータを該システムに供給することができる装置も具える。これを、テープ４０８および／またはネットワークリンク４１０を介して行ってもよいが、他の装置も可能である。本システムは、前記ディスクユニットおよびテープユニットとデータを交換するインタフェース部分４１２と、前記ネットワーク接続とデータを交換するインタフェース部分４１４とを具える。本システムは、前記メモリの一部において位置し、これを経てデータをある装置から他の装置に発送することができるバッファ４１６を具えてもよい。本システムは、該システムの種々の部分間で命令およびデータを交換するバス４１８も具える。メモリ４０４の一部は、前記記憶媒体におけるファイルを管理する、いわゆるファイルシステムプログラムを格納する。さらに、前記メモリは、ある装置からデータを読み出し、これらのデータを前記ファイルシステムに提供し、本発明に従って処理し、ファイルに格納するアプリケーションプログラムを格納する。
図５は、データをファイルに格納する本発明による方法の主なステップを有するフローチャートを示す。ステップ５０２中、初期化を行い、その間、前記ディスクにおける空きスペースを決定し、クラスタ間で反復すべき部分に関して、所定の名前を有し、所定のサイズを有するファイルを選択し、第１空きクラスタを確保する。ステップ５０４において、データセクタを有するブロックを前記アプリケーションから受ける。データセクタは、クラスタのセクタに格納できるサイズを有するデータの部分である。このようなクラスタのセクタを、以下に記憶セクタと呼ぶ。ステップ５０６において、前記データセクタを有するブロックを現在のクラスタの記憶セクタに格納する。続いて、ステップ５０８において、データセクタを有する次のブロックを受けるべきかどうかを検査する。受けるべきでない場合、ステップ５１０において前記ファイルを閉じる。ステップ５０８において、データセクタの次のブロックを受けるべきであることを確立した場合、ステップ５１２において、このブロックが現在のクラスタにおいて依然として適合するかどうかを検査する。前記クラスタがまだ満たされていない場合、ステップ５０４に戻って前記ブロックを受ける。次にこの処理を上述したように繰り返す。ステップ５１２が前記クラスタが満たされていることを示す場合、ステップ５１４において、次の空きクラスタを確保し、前記ファイルのクラスタの論理的連続に含める。その後、ステップ５１６において、前記満たされたクラスタの選択された数の記憶セクタのデータセクタを、新たなクラスタの開始において対応する数の記憶セクタに複製する。その後、ステップ５０４に戻り、前記アプリケーションからデータセクタを有するブロックを受け、ステップ５０６において、前記クラスタにおける複製されたデータセクタの直後に配置する。次にこの処理を上述したように繰り返す。
本発明の方法の原理を簡単に説明するために、データセクタのブロックがクラスタを正確に満たすことができるとする。これは実際の場合には必要ない。その場合において、ブロックは１ステップにおいて格納されないが、個々の記憶セクタは１つずつ満たされ、そのたびごとにクラスタが満たされたかどうかを検査する。満たされた場合、次の空きクラスタを確保し、瞬時のクラスタの最後の部分からデータセクタを複製するために、前記ブロックの格納を中断する。もし望むなら、あるクラスタの最後の部分から次のクラスタの最初の記憶セクタへのデータセクタの複製を延期することができる。これは、例えば、ビデオソースのリアルタイム符号化の場合において、前記アプリケーションからのデータセクタのブロックのストリームが中断され、前記システムが、前記ストリームの受け取りと平行して所望の部分を一時的に複製するための容量が残っていない程度に負荷が負わされている場合、必要になるかもしれない。このような場合において、クラスタの開始においてスペースを確保し、データセクタを有するブロックをその後に直接配置することで十分である。前記空きスペースにおける前のクラスタの最後の部分の複製を、データセクタのすべてのブロックを前記アプリケーションから受ける、より後の段階において行う。
図６は、データをユーザに利用可能にする本発明によるシステムの最も重要な部分を図式的に示す。本システムは、データを記憶媒体におけるファイルから取り出し、前記ファイルを、本発明に従って、図２および３の参照と共に上述したように構成する。本システムを、この目的のための適切なプログラムを与えた一般的な目的のコンピュータを基礎として構成する。本システムは、この目的のためにメモリ６０４にロードされたプログラムを実行するプロセッサ６０２を具える。本システムは、前記ファイルを格納する記憶媒体を有する装置も具える。このような装置は、例えば、１つまたはそれ以上のディスクを有するディスクユニット６０６である。本システムは、これを経てデータをユーザに供給することができる接続部６０８も具える。前記データを他の場所においてさらに処理することができるが、代わりにこのような処理を、本システムがこの目的のために設計されている場合、該システム内で局所的に行ってもよい。本システムは、さらに、前記ディスクユニット用インタフェース部分６１０と、ネットワーク接続部を経てデータを発送するインタフェース部分６１２とを具える。本システムは、メモリ６０４内に存在し、前記記憶媒体からのデータセクタのブロックを一時的に格納し、そこからデータセクタをユーザに利用可能にするバッファ６１４を具える。前記記憶媒体におけるファイルからデータセクタを取り出すファイルシステムプログラムを、前記メモリにロードすることができる。さらに、前記データをユーザに関して処理するアプリケーションプログラムもロードすることができる。所定の用途に関して、本システムに第２バッファ６１６を設けてもよいが、本発明の本質的な特徴ではない。２つのバッファを具えるこの種のシステムにおいて、データセクタを一方のバッファから前記アプリケーションに供給し、同時に、データセクタの次のブロックを前記記憶媒体から取り出し、他方のバッファに置く。一方のバッファが所定の瞬時において空である場合、その間に満たされた他方のバッファのデータセクタを前記アプリケーションに提供し、他のブロックを取り出し、前記一方のバッファに格納する。結果として、データセクタの連続的なストリームをユーザアプリケーションに供給することができる。これは、例えば、本発明を、ファイルがビデオ情報を含み、ユーザがビデオ画像の連続的なストリームを受けるべきビデオ−オン−デマンドサーバにおいて使用する場合、必要である。本システムは、該システムの種々の部分間で命令およびデータを交換するバス６１８も具える。
本発明によるシステムを、しばしば、一人より多いユーザを同時に取り扱うように配置する。各々のユーザに対して、本システムは、バッファ６１４と、多分バッファ６１６とを具え、接続部６０８を経て各々のユーザに対する伝送を与える。前記記憶媒体は、１つより多くのファイルを具えてもよく、各々のファイルのデータセクタを異なったユーザに提供することができる。ビデオ−オン−デマンドサーバの場合において、所定のビデオフィルムを１つのファイルに格納してもよいが、他の可能性も存在する。１つのビデオフィルムは種々のファイルを含むことができ、１つのフィルムはいくつかのビデオフィルムを含むことができる。
図７は、データをファイルから利用可能にする、本発明による方法の主なステップを有するフローチャートである。ステップ７０２は、初期化ステップであり、ファイルの選択と、取り出すべきデータセクタのブロックのサイズの選択と、必要なバッファの準備とを含む。さらに、このステップにおいて、変数BLOCK POINTER（ブロックポインタ）をデータセクタの第１ブロックを取り出さなければならない記憶セクタに割り当てる。開始時において、これは、前記ファイルの逐次的読み出しに関する第１記憶セクタである。しかしながら、ユーザの要求、例えば、所定の場面の要求時には、所望のデータが開始する記憶セクタである。ステップ７０４において、前記ブロックポインタによって示される記憶セクタのブロックを読み出し、ステップ７０６において、関連したデータセクタを前記バッファに置く。その後、ステップ７０８において、変数BLOCK POINTERを増分し、その後、ちょうど読み出したブロックの直後の記憶セクタを示す。ステップ７１０において、データセクタの次のブロックが必要かどうかを検査する。これがもはや必要ない場合、ステップ７１２においてこの手順を終了し、前記バッファとそのとき使用された他のスペースとを開放する。データセクタの他のブロックが必要な場合、ステップ７１４において、前記ブロックポインタによって示される記憶セクタから、次のブロックを満たすために十分な数の記憶セクタが現在のクラスタにおいて存在するかどうかを検査する。存在する場合、ステップ７０４に戻って前記次のブロックを取り出し、上述したように処理を続ける。存在しない場合、ステップ７１６において、すでに読み出したデータセクタをとばすために、次のブロックを取り出さなければならない次のクラスタにおける記憶セクタを計算する。この計算は、図３の参照と共に詳細に記述した。この計算された記憶セクタに変数BLOCK POINTERを割り当て、その後、ステップ７０４とその後のステップに戻り、次のブロックを取り出す。
一人のユーザに関する手順を上述した。実際には、明らかに、種々のこのような処理を、複数のユーザに関して同時に実行する。これらの処理の同期化に関して、種々の可能性が存在する。例えば、所定の瞬時において、取り出すべきデータセクタのブロックのリストを形成することができ、その後、前記リストのすべてのデータセクタを前記記録媒体から１サイクルにおいて取り出し、前記ユーザバッファに配置することができる。このサイクル中、取り出すべきブロックの新たなリストを形成し、前記サイクルの終了において、新たなサイクルを開始し、前記新たなリストのブロックを取り出すようにする。
【図１】
0003869008.tif 000002
【図２】
0003869008.tif 000003
【図３】
0003869008.tif 000004
【図４】
0003869008.tif 000005
【図５】
0003869008.tif 000006
【図６】
0003869008.tif 000007
【図７】
0003869008.tif 000008