デバイスがシーケンシャルアクセスのみを提供し、ランダムアクセスを提供しない場合、デバイスドライバまたはファイルシステムは、デバイスをユーザーがランダムアクセス権を持っているように見せることを可能にしますか?
それでは、デバイスにバッファ/キャッシュを提供してこれを行いますか?
たとえば、以下は私が聞いたことですが、正しいかどうかはわかりません。
テープを巻き戻すと、順次アクセスのみが提供されます。
このようなテープ装置の場合、現在の位置から後方に移動するには、テープを最初に巻き戻してから前方に移動する必要があります。
デバイス自体、テープのデバイスドライバ、またはデバイス/ハードウェアレベルで他のものを変更するなど、これらのテープにランダムにアクセスできるのはなぜですか。
このようにランダムにアクセスできるテープがある場合、
open()
それを使用するとO_DIRECT
テープにランダムにアクセスできず、順次アクセスできますか?
答え1
デバイスが外部の介入なしに前後に動くことができる場合はそうです。デバイスドライバにそれを実装させることができます。現れるランダムアクセスのため。さまざまな方法でこれを実行できます。
- デバイスに使用可能なメインメモリの量が少ない場合は、デバイスのコンテンツを任意のアクセスメモリにミラーリングできます。
- デバイスが大きすぎてメインメモリに保存できない場合は、ページングできます。デフォルトでは(1)を実行しますが、基本コンテンツの断片に対して実行します。現在メモリにないページの読み取り/書き込み速度は非常に遅いです。これは、「古い」ページをフラッシュし、新しいページをメモリに読み込む必要があるためです。
すべての書き込みは最終的にプライマリメディアに再フラッシュする必要があります。これは非常に遅いプロセスである可能性があり、「メディアは部分的な更新をサポートしていますか」(オペレーティングシステムが更新されたデータのみを上書きできますか、またはメディア全体を書き換える必要があります)などの質問をします。
つまり、「実行可能」だからといって、それが良い考えだという意味ではありません。ハードウェアの動作によって制限されます。真のランダムアクセスを提供しないと、偽造の速度が非常に遅くなります。