(5つの回答)
2年前に閉鎖されました。
キャラクター特殊ファイルとブロック特殊ファイルは、Unixライクなシステムの通常のファイルとどのように異なりますか?なぜそれぞれ「キャラクタースペシャル」と「ブロックスペシャル」と呼ばれるのですか?
承認された回答:
プログラムがファイルからデータを読み書きするとき、要求はカーネルドライバーに送られます。ファイルが通常のファイルの場合、データはファイルシステムドライバーによって処理され、通常はディスクまたはその他のストレージメディアのゾーンに格納されます。ファイルから読み取られるデータは、以前にその場所に書き込まれたものです。さまざまなことが起こる他のファイルタイプがあります。
データがデバイスファイルに対して読み取られたり書き込まれたりする場合、要求はそのデバイスのドライバーによって処理されます。各デバイスファイルには、使用するドライバーを識別する番号が関連付けられています。デバイスがデータを処理するのは、それ自体のビジネスです。
ブロックデバイス(ブロック特殊ファイルとも呼ばれます)は通常、通常のファイルとよく似た動作をします。これらはバイトの配列であり、特定の場所で読み取られる値は、最後に書き込まれた値です。ブロックデバイスからのデータは、メモリにキャッシュしてキャッシュから読み戻すことができます。書き込みはバッファリングできます。ブロックデバイスは通常シーク可能です(つまり、アプリケーションが変更できるファイル内の位置の概念があります)。 「ブロックデバイス」という名前は、対応するハードウェアが通常、一度にブロック全体を読み書きするという事実に由来しています(たとえば、ハードディスク上のセクター)。
文字デバイス(文字特殊ファイルとも呼ばれます)は、パイプ、シリアルポートなどのように動作します。それらへの書き込みまたは読み取りは、即時のアクションです。ドライバーがデータを処理するのは、それ自体のビジネスです。文字デバイスにバイトを書き込むと、画面に表示され、シリアルポートに出力され、サウンドに変換される場合があります。…デバイスからバイトを読み取ると、シリアルポートが入力を待機し、ランダムなバイトを返す場合があります( /dev/urandom
)、…「キャラクターデバイス」という名前は、各キャラクターが個別に扱われることに由来しています。
詳細については、ウィキペディアおよび/devとそのサブディレクトリとファイルについてを参照してください。
関連:Linux –日付のない行(スタックトレースなど)も含む複数のログファイルを日付でマージしますか?