0

問題は次のとおりです。

ディスク上に巨大なサイズ (テラバイトなど) の特定のファイルがあり、ディスク上のこのファイルから最小数のディスク読み取り (または言うディスクの回転とシークの遅延を最小限に抑えることで、これらの N ページをディスクから読み取るのにかかる時間を最小限に抑えたいと考えています)。ページから読み取りを開始し、ディスクのローテーションが終了する前にすべての読み取りが完了するのが理想的です。ページの位置の違いが大きいので、最初のページから最後のページまで、N ページすべてをカバーする読み取りコマンドを単純に発行することはできません。それを保存するには膨大な量のメモリが必要になります。(おまけ - 私はいくつかの資料を調べていて、 "リストのプリフェッチに遭遇しました" データベース内のメカニズム。私はそれを読み、そのような実装が私の問題を解決できることを発見しました。)

C言語でこの問題を解決するのを手伝ってくれませんか? 前もって感謝します!

4

1 に答える 1

1

ページ置換アルゴリズムのようなものが必要になるでしょう...プリフェッチ...ページをどのように操作するか、メモリ内でそれらが必要になる期間などは教えてくれませんでした.しかし、私はあなたが解決しなければならないと思いますメモリがいっぱいになり、メモリからページの一部を解放する必要がある場合。言及されているアルゴリズムを見てください(LRUMRUなど)。これは、OS がスワッピングに使用するものです。

OS のメモリ マップ ファイルの使用を検討することもできます。これらのファイルには、ページ置換アルゴリズムが既に実装されていますが、現在はプリフェッチについては実装されていません。(OSにもよりますが、このトピックでは、LinuxはWindowsよりもはるかに高度になると思います)。この方法で多くの作業を節約できますが、ケースに完全に最適化されていない可能性があります。

ディスクアクセスの最適化について... OSがどのようにそれを行うかについていくつかの理論を読んでみてください... SCANC-SCANなどのディスクスケジューリングアルゴリズムを見てください。このリンクで

于 2011-07-23T20:15:47.273 に答える