-1

「seek」と「read」を呼び出すときに、ハードドライブが物理的にどのように影響を受けるかを誰かが知っていますか?

もっと具体的に言うと、ハードドライブには、磁気プレートからデータを読み取るために使用されるある種の磁気針があることを知っています。だから私の質問は、針が実際に読み取り場所に移動するのはいつですか?

「seek」windowsApiメソッドを呼び出すときに移動しますか(実際の読み取りが実行されたかどうかに関係なく)、または「seek」は仮想ポインタを記憶するだけで、針の物理的な移動は「read」メソッドの場合にのみ実行されます。と呼ばれていますか?

編集:ハードドライブから要求されたデータがどのキャッシュ(ハードドライブキャッシュ、Osキャッシュ、RAMなど)にも存在しないと仮定します

4

3 に答える 3

2

あなたの投稿からこの質問を打ち破りたかった

針が実際に読み取り位置に移動したのはいつですか?

簡単な答えは、「キャッシュにまだ存在しないデータが要求されたときはいつでも」だと思います。ハード ドライブの動きを予測する際の問題は、ハード ドライブから読み取ったデータをキャッシュするさまざまな場所をすべて考慮する必要があることです。データがこれらのキャッシュに存在し、データを要求するコンテキストでアクセスできる場合、実際にハード ドライブを読み取る代わりにキャッシュが使用されます。ハードドライブのデータをキャッシュできる、またはキャッシュできる場所の一部を次に示します。

  • ハード ドライブの内部キャッシュ
  • OS レベルのキャッシュ
  • プログラム レベルのキャッシュ
  • API レベルのキャッシュ

データが存在しない場合は、read通話中にハード ドライブから読み取られる可能性があります。物理ハード ドライブ ポインターを変更するのではなく、プログラム内のファイルへの仮想ポインターを変更するseekため、呼び出しによってハード ドライブが移動する可能性はほとんどありません。

于 2009-05-03T15:17:59.797 に答える
1

操作時にハードドライブのヘッド (針) が動き始め、ディスクが回転し始めます (既に回転していない場合) read。動作時のヘッド移動やスピンアップはありませんseek

readファイルをシーケンシャルに ing している場合でも、ヘッドがディスク上で不連続に移動する場合があることに注意してください。つまりread、2 番目、3 番目などのファイルです。介在するseeks。これは、ファイルがファイルシステム上で断片化されているため、またはファームウェアがセクター番号の再マッピングを行っている (つまり、論理セクター 5 が論理セクター 4 と 6 の間にない) ためです。

于 2009-05-03T15:54:31.347 に答える