~から http://haifux.org/lectures/86-sil/kernel-modules-drivers/node10.html
文字('c')デバイスは、ドライバが個々の文字(バイト、オクテット)を送受信することによって通信するデバイスです。
ブロック(「b」)デバイスは、ドライバがデータブロック全体を転送して通信するデバイスです。
文字デバイスの例:シリアルポート、パラレルポート、サウンドカード。
ブロックデバイスの例:ハードドライブ、USBカメラ、Disk-On-Key。
「シリアルポート、パラレルポート」とはどういう意味ですか?有線シリアルおよびパラレル通信?
「シリアルポート」または「パラレルポート」は文字デバイスにのみ適用され、ブロックデバイスには適用されませんか?
ありがとうございます。
答え1
最新のコンピュータにはUSB、SATA、PCI / eなど、技術的にシリアルな複数の相互接続があることが多いが(ブロックデバイスを制御する場合でも)、引用したテキストは最初に使用された並列およびシリアルコンテキストに近い。 20世紀のコンピューティング分野で
これは、コンピュータを周辺機器、時には他のコンピュータと相互接続するために使用される方法を表します。
さまざまなバリエーションがありますが、最も一般的な「シリアルポート」は通常、固定転送速度の非同期プロトコルを使用して一度に1文字を送受信するI / Oデバイスです。通常RS232ケーブルを介して。シリアルポートとRS232ポートという用語は時々同じ意味で使用されますが、RS-232は実際には電気規格であるため、これは間違った名前です。一般的なアプリケーションは、ユーザー端末をコンピュータまたはモデムに接続することです。これにより、ユーザーはダイヤルアップ経由でリモート端末に接続できます。 110 ボード ASR-33 テレタイプなどの電子機械時代にさかのぼると、これは Unix コマンドとデバイスファイル名の共通文字列 "tty" のソースです。
シリアルポートは非常に遅いため、より高い文字レートを必要とする用途にはシリアル化されていないパラレルポートを使用できます。時々、プリンタの製造業者はこれを「Centronix」ポートと呼び、人気があります。
シリアル接続を使用するプリンタがないわけではありません。
ただし、お客様の見積もりで使用されているように、シリアルポートとパラレルポートは、これら2つの周辺機器接続オプションを表します。
したがって、ブロックデバイスが技術的に低レベルでシリアルデータ方式とインターフェースをとることができるとしても、これは著者が言及したものではありません。
答え2
「キャラクターデバイス」と「ブロックデバイス」は、抽象的な、さまざまなデバイスを分類するためにUnixスタイルシステムでよく使用されます。 Unixスタイルのデバイスノード(/dev/<something>
)は通常、文字デバイスまたはブロックデバイスとして分類されます。
デフォルトでは、文字デバイスは一度に1バイトでも意味のあるデータを処理できますが、ブロックデバイスは特定のサイズ(通常512、1024、または4096バイト)のブロックを処理できます。不完全なブロックがブロックデバイスに提供される場合、ブロックを完成させるためにゼロまたは他の適切なパディングで充填する必要があるかもしれない。そうしないと、ブロックデバイスがその操作を完了できない可能性があります。
Unixスタイルのシステムでは、ディスクは通常ブロックデバイスとして表示されます。ただし、既存のUnixシステムでは、単一のディスクを2つのデバイスとして表示できます。 1つは通常のファイルシステムアクセス用のブロックデバイスで、もう1つは「rawアクセス」やその他の特別な作業用です。生のアクセス装置は一般に文字機器である。
最新のLinuxでは、フラグを使用して通常のブロックデバイスを開いてネイティブアクセスを取得できますがO_DIRECT
、他のUnixスタイルシステムから移植されたアプリケーションに特別に専用のrawデバイスが必要な場合は、コマンドを使用して必要に応じて設定できますraw
。
一方、シリアルポートとパラレルポートは、通常、次のことを示します。物理接続技術。
PCハードウェアではシリアルポートまたはシリアルポート一般的に以下を指します。RS232インターフェース(通常はNational Semiconductor 8250と互換性のあるUARTチップドライバを使用しています。)固定ブロックサイズは不要であるため、通常Unixシステムでは文字デバイスとして分類されます。名前の通りシリアルポートつまり、ポートは一度に1ビットずつシリアルでデータを転送します。このポートの最新の仕様はEIA / TIA-232です。
PCハードウェアでもパラレルポート、プリンタポート、LPTポートまたはセントロニクスポートこれらのすべては、IEEE 1284で標準化された最も近代的な実装であるポートタイプを表します。固定ブロックサイズは不要なため、Unixスタイルシステムでは文字デバイスとして表示されることもあります。名前が示すように、データを並列に転送します。つまり、バイトの各ビットに1つずつ合計8本のデータラインがあります。
シリアルポートとは異なり、最も古い形式のパラレルポートは基本的に一方向でした。つまり、コンピュータは一度に1バイトのデータを送信できましたが、反対側のデバイスにはコンピュータと通信できるいくつかの固定された意味ステータス行しかありませんでした。 。 (以前のバージョンのLinuxカーネルでは、これらのステータス行の誤ったステータスの組み合わせを少しユーモラスなlp<n> on fire
エラーメッセージとして報告しました。)双方向通信モードは、将来の改善として実装されました。
USBが導入される前に、パラレルポートはおそらく一般的なPCで最も速い汎用外部コネクタでした。より速いデータ転送速度を持つ外部デバイスが必要なことは、通常、システムに外部コネクタを備えた専用インターフェイスカードまたはSCSIアダプタカードを追加することを意味します。たとえば、プロのレピュテーションイメージスキャナにはSCSI接続が必要な場合があります。