A ブロック特殊ファイルまたはブロックデバイスは:
デバイスを参照するファイルです。ブロック特殊ファイルは通常、デバイスのハードウェア特性が表示されないようにデバイスへのアクセスを提供することにより、文字特殊ファイルと区別されます。
正確なハードウェア特性は、カーネルレベルまたはドライバーレベルのキャッシュによって抽象化されます。ブロックデバイスは通常、ディスクドライブなどのハードウェアを表しますが、それはプラットフォームに依存します。たとえば、FreeBSD にはブロックデバイスがまったくありません。
一般に、ファイルはデバイスではありません。
「ブロックデバイス」は、ファイルを参照するときにスローされ、(おそらく)/dev
内の特定のデバイスファイルを参照します。これは主に、ユーザーレベルからの実装の詳細です。ドライバーによって公開されたインターフェースを使用します。多くの種類のハードウェアは内部でブロック構造になっていますが、ブロックデバイスと文字デバイスの両方を使用してそれらにアクセスできます。
おそらく、これの簡単な定義を見つけることは決してできないでしょう。しかし、最も一般的で単純な方法で、文字デバイスをブロックデバイスと比較すると、1バイトを入力すると、そのバイトがハードウェアに到達するように、文字デバイスからハードウェアに直接アクセスできると言えます。もちろん、それはこの時代ほど単純ではありません)。一方、ブロックデバイスは、さまざまなサイズのブロックでデバイスの読み取りと書き込みを行います。ブロックサイズを指定できますが、通信は一度に1ブロックであるため、バッファリング時間が必要になります。
ブロックデバイスは、一度に1ブロックのデータを読み書きするハードディスクと考えてください。文字デバイスはシリアルポートです。 1バイトのデータを送信し、反対側がそのバイトを受信してから次のバイトを受信する、というように続きます。
繰り返しますが、説明するのは非常に簡単な概念ではありません。私が挙げた例は大まかな一般化であり、各例の特定の実装について簡単に反論することができます。