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