誰かが私に違いを教えてもらえますか:
- ダイレクト ファイル アクセス (別名ランダム ファイル アクセス)
- シーケンシャル ファイル アクセス
- インデックス付きシーケンシャル ファイル アクセス
- 分割ファイル アクセス
誰かが私に違いを教えてもらえますか:
ハードウェアにより、ディスク上のどこからでもデータを取得できるため、 「ランダム アクセス」は「ダイレクト アクセス」のほうが適しています。それは本当に非常に便利です!「シーケンシャル アクセス」に関しては、ハードウェアは各データを最初から最後まで実行することしかできず、そのシーケンスの最初に近いデータを順次取得する方が高速かもしれませんが、次の場合は信じられないほど遅くなる可能性があります。プロセスは各情報を反復処理する必要があるため、そのシーケンスの最後に近いデータを取得する必要があります。
それはまったく意味がありますか..?
それは、あなたがどのレベルの抽象化であるか、そしてあなたの抽象化で「ファイル」を構成する基本要素が何であるかに依存します。(「ファイル」を「」と考えてくださいFile<T>
。ここで、Tは最も一般的にはcharです)
一般的に、「ファイル」は「要素のシーケンス」です。「ランダム」とは、任意の位置、任意の順序で任意の要素にアクセスできることを意味します(基本的に、シーケンスにジャンプできます)。「シーケンシャル」とは、特定の位置にアクセスするには、最初に先行するものをスキャンする必要があることを意味します。
これが物理的な制限によるものか、ソフトウェアの制限または「データ構造の制約」によるものかは、ファイルの抽象化がモデル化しているものと、物理的な「要素のシーケンス」とユーザーの間にスタックされている抽象化レイヤーによって異なります。
テープ上のファイルは保存され、順番に読み取られます。ディスク上のファイルはアトミックに順次読み取られますが、「アトム」(ディスククラスター)は個別にシークできるため、ランダムアクセスのより高いレベルの抽象化が可能になります。時間ベースのイベントシーケンス(通信ソケットなど)に一致するファイルは通常シーケンシャルです(時間は巻き戻せません)が、双方向通信を使用して、ランダムアクセスを許可するプロトコルを実装できます(NFSを考えてください)。メモリに格納されたシーケンスにはネイティブのランダムアクセスがありますが、要素の長さが可変である場合、またはアドレスの生の算術演算によって決定されない方法でチェーンされている場合は、シーケンシャルアクセスのみが可能になります。
質問は些細なことのように見えますが、ドメインをディスクに保存されたファイルだけに限定しないと...ケースの世界が開かれます。
「ランダム」とは、ファイルの任意の部分を任意の順序で取得できることを意味します。したがって、たとえば、開始前に中央部分を読むことができます。
「シーケンシャル」とは、最初にファイルの最初の部分を読み取ってから、2番目、次に3番目などを読み取る必要があることを意味します。
OSの観点からは、すべてのファイルは「ランダム」です。1アプリケーションからファイルにアクセスする方法が、ファイルを「ランダム」または「シーケンシャル」にします。ファイルの形式は、いずれかの種類のアクセス用に最適化できます。たとえば、テキストは通常「シーケンシャル」ですが、データベースファイルは非常に「ランダム」である傾向があります。
1少なくともハードドライブ上。テープに保存されたファイルは実際には物理的にシーケンシャルですが、テープは通常、アーカイブにのみ使用され、とにかく直接処理することはほとんどありません。