2009-05-03 11 views
-1

「シーク」と「読み込み」を呼び出すときに誰かが知っていますか?物理的にハードドライブはどのように影響を受けていますか?Windowsで「シーク」と「読み込み」についての質問OS

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

「シーク」windowsApiメソッド(実際の読み込みが実行されても問題ありません)を呼び出すときに移動されますか、または仮想ポインタを覚えているだけの「シーク」があり、針の物理的な移動は"read"メソッドは呼ばれていますか?

編集:(ハードドライブのキャッシュは、Oのキャッシュ、RAMとは、他のどんなそれができる)ハードドライブから要求されたデータがキャッシュのいずれにも存在しないと仮定し

答えて

2

がしたかったですあなたのポストからこの質問を出す。

いつ実際に針が読書場所に移動されますか?

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

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

でキャッシュ行うことができる場所のいくつかは、単にありますデータが存在しない場合は、read呼び出しの間にハードドライブから読み取られる可能性が高い。 A seekを呼び出すと、物理ハードドライブのポインタは変更されず、プログラム内のファイルへの仮想ポインタが変更されるため、ハードドライブが移動することはほとんどありません。

+0

要求されたデータがキャッシュに存在しないと仮定します。 – user88637

1

read操作でハードドライブヘッド(ニードル)が動き始め、(回転していない限り)ディスクが回転を開始します。 seek操作では、頭の動きやスピンアップはありません。

readファイルを順番に送信しても、ヘッドがディスク上で非連続的に移動することがあります.212バイトなどのブロックのreadがヘッドを遠くに移動させる可能性がありますたとえ介入していなくてもseekである。これは、ファイルがファイルシステム上で断片化されているか、ファームウェアが不良ブロックエラーを補うためにセクタ番号の再マッピング(すなわち、論理セクタ5が論理セクタ4と6の間にない)を有するためです。

1

「ハードドライブから要求されたデータがハードドライブキャッシュ、OSキャッシュ、RAMなどに存在しないものと仮定します。仮定し、比較的まれです。この場合でも、ユーザーモードファイルのI/O操作と物理的な記憶装置操作との間には、ゆるやかな関連性しかありません。

さまざまなウィンドウライブラリには、多くのユーザーモードのファイル入出力機能があります。最も古いものの一部はC library low level I/O functionsです。 C library stream I/O functionsC++ iostreams classes、およびmanged I/O classesもあります。他のI/Oインタフェースも他のパッケージの一部です。一般的に

、すべてのユーザーモードI/OライブラリはCreateFile()SetFilePointer()ReadFile()、およびWriteFile()含むWin32 file I/O functionsの上に構築されています。

ファイルがバッファリングされていないモードで開かれていない限り、オペレーティングシステムはファイルの内容をキャッシュできます。これはファイル単位ではなく、システム全体で行われます。したがって、プログラムがファイルを読み書きしていない場合でも、ファイルへのI/Oはキャッシュされ、物理ストレージデバイスのI/Oにはなりません。

ファイルI/Oが物理デバイス上の実際のI/O操作にどのようにマップされるかを決定する多くの要素があります。これには、ライブラリレベルのバファリング、OSのキャッシュ、デバイスドライバのキャッシング、ハードウェアレベルのキャッシュ、デバイスブロックサイズ、ファイルサイズ、ハードウェアブロック/セクタの再マッピング、およびその他の要因が含まれます。

ここでは、個々のファイルレベルの読み取り操作またはシーク操作が、ディスクヘッドの検索などの物理的な操作に対応しているとは限りません。

これは、書き込みが考慮されるときにはさらに厄介になります。書き込みにはフラッシュが伴います。アプリケーション開発者が想定するように、データは物理メディアに完全にプッシュされます。開発者は、フラッシュ呼び出しが成功を返すと、データがストレージデバイス上で永続的であることが保証されるとしばしば想定しています。これは、デバイスやドライバがフラッシュを無視することが多いため、真ではありません。

ソリッドステートドライブは、機械的ではなく、したがって「シーク」操作をしていないため、複雑になります。ここでは、書き込まれる前にブロックを消去する必要性など、他の物理的特性が明らかになります。

関連する問題