2016-04-12 13 views
0

現在、UNIX環境に基づいたオペレーティングシステムコースを受講しています。以下は、UNIXバッファー・キャッシュ・システムとファイル実行に関する補足的な概念的な質問です。UNIXブロックバッファキャッシュの概念

ご存じのように、UNIXはブロックバッファキャッシュをRAMに保持しています。ただし、ディレクトリ情報を含むブロックへの書き込みはすぐにディスクに書き戻されます。この場合、バッファキャッシュを持つことの効率はなぜですか?

私はここに答えの一般的な考えがあると思いますが、私の理解が外れていればどんな穴にも記入したいと思います。一般的に、ディスクアクセスを避け、バッファのキャッシュを通過するほうがはるかに高速です。ただし、ディレクトリ情報を含むブロックに書き込むと、ディスクにアクセスすることになるため、ブロックキャッシュを持つことは冗長です。第2に、ブロックがファイルシステムの一貫性にとって重要な場合は、大きな障害やクラッシュが発生した場合にファイルシステム全体の障害を回避するために、すぐにディスクに書き戻す必要があります。私の質問は、正しいアイデアは、これらの2つのアイデアの組み合わせか、より適切なアイデアです。

Windowsでは、エクスプローラで一覧表示されたファイルをダブルクリックすると、プログラムが実行され、そのファイルがパラメータとして指定されます。物事はUNIXで異なって行われます。オペレーティングシステムがどのプログラムを実行するかを知ることができる2つの異なる方法を列挙します。

まあ、私はUNIXがファイルの最初のバイトにあるいわゆる「マジックナンバー」を使用していることを知っています。ファイルのタイプとその取り扱い方法を示しています。そのため、ファイル拡張子を持つUNIXファイルの名前を付けることは、ユーザーの利便性以外の目的を果たさないようです。次に、質問に明記されているように、これを実現するためにWindowsにファイル拡張子を使用させます。 UNIXで特に欠けている方法はありますか?

ありがとうございます!

答えて

0

あなたの最初の推論に従うことができません。 "ディレクトリ情報を含むブロックに書き込むことは、なぜそれが必要なのかにかかわらず、ディスクにアクセスしようとしていますか?ディレクトリ情報は本質的に特別なものは何もありません(オペレーティングシステムのコンテキストでのみ有用です)。その重大な、はい、しかし、バッファキャッシュは、OSがそれを(私が知る限り)そう言うので、それを知っているだけです。 2点目がマークに当たっています。ファイル構造を整理することは、システム全体の関心事であるため、少しの効率を忘れることは理にかなっています。

+0

私はその質問にどのように答えているのか分かりません。それは誰かのような漠然とした推測のようなものです。質問1: "効率/キャッシュはなぜですか?"、質問2:OSがどのプログラムを実行するかを知ることができる2つの方法を列挙してください - これは本当にどちらかに答えるものではありません。したがって、質問に対する明確で明確な答えを提供していない場合は、コメントのためにこれを予約してください。 [2分ツアー](http://stackoverflow.com/tour)にアクセスして土地の敷地を取得し、いくつかのポイントを得てコメントを外します。 – clearlight