Unixシリーズシステムの文字特殊ファイルとブロック特殊ファイルは、通常のファイルとどのように異なりますか?なぜそれぞれ「キャラクタースペシャル」と「ブロックスペシャル」と呼ぶのですか?
答え1
プログラムがファイルからデータを読み書きする場合、要求はカーネルドライバに送信されます。ファイルが通常のファイルの場合、データはファイルシステムドライバによって処理され、通常ディスクまたは他の記憶媒体の特定の領域に保存され、ファイルから読み取られたデータは以前にその場所に書き込まれたデータです。さまざまな状況が発生する他のファイル形式があります。
デバイスファイルからデータを読み書きする場合、その要求はデバイスドライバによって処理されます。各デバイスファイルには、使用するドライバを識別する関連番号があります。デバイスがデータを処理する方法は、デバイス自体の問題です。
ブロックデバイス(ブロック特殊ファイルとも呼ばれます)は通常、通常のファイルと非常によく似ています。つまり、バイト配列で指定された位置から読み取られた値は、その位置に書き込まれた最後の値です。ブロックデバイスのデータはメモリにキャッシュでき、書き込みはキャッシュから再読み込みできます。ブロック装置は一般に検索可能である。つまり、アプリケーションはファイル内の場所の概念を変更できます。 「ブロックデバイス」という名前は、そのハードウェアが通常、ブロック全体(ハードディスクのセクタなど)を一度に読み書きするという事実に由来しています。
文字デバイス(文字特殊ファイルとも呼ばれる)は、パイプ、シリアルポートなどのように動作します。書いたり読んだりするのは即時作業です。ドライバーがデータを処理する方法は、ドライバー自身のビジネスです。文字デバイスにバイトを書き込むと、画面に表示され、シリアルポートに出力され、サウンドに変換できます。デバイスからバイトを読み取ると、シリアルポートは入力を待ち、任意の数を返すことができます。 byte(/dev/urandom
)、...「文字デバイス」という名前は、各文字を個別に処理するという事実に由来しています。
バラよりウィキペディアそして/dev、サブディレクトリ、ファイルの理解より多くの情報を知りたいです。
答え2
これはドライバを指し、次のように生成できます。mknod
。マニュアルページを見ると、ブロックデバイスはバッファリングされていますが、文字デバイスはバッファリングされていないようです。ブロックデバイスには、アクセス可能なブロックのサイズを示す「ブロックサイズ」がある。 (ストレージデバイスの場合、ブロックサイズは通常512Bから4KiBの間です。)ストレージデバイスとメモリは通常ブロックデバイスとしてアクセスされ、シリアルポートや端末などのデバイスは通常文字デバイスとしてアクセスされます。
通常は場所にあります/dev
(nodev
オプション(またはそれに対応する項目)としてインストールされているパーティションでは実行できません)。
ls -l
通常、サイズが検出されたデバイスのコンマ区切りの2つの数字が表示されます。これはドライバーを指すメジャー番号とマイナー番号です。そのタイプは、出力の許可列にも「c」または「b」と表示されますls -l
。
/dev
さまざまな方法で埋めることができます。最新のLinuxカーネルバージョンウデブ/devices
一般的に使用されるSolarisには、仮想devfsファイルシステムへのリンクが含まれています。
答え3
Unix/Linux のファイル形式:一般ファイルまたは一般ファイル、ディレクトリ、デバイス(特殊)ファイル、リンク、名前付きパイプ、およびソケット。
ㅏデバイス(特殊)ファイルこれはデバイスドライバへのインタフェースであり、通常のファイルであるかのようにファイルシステムに表示されます。これは文字デバイス、ブロックデバイス、擬似デバイス/dev/null
です。
キャラクター中心一度に1文字ずつ転送されるため、小さなペイロードを運ぶ必要がありますが、多くの要求をしなければなりません。ブロックドライバつまり、多くの文字(データ)が得られるため、ロードは大きくなりますが、より少ない要求を実行する必要があります。織乳:基本的に炭酸飲料をボトルや箱として購入するのと同じです。
ブロックドライブは、予想されるデータ量がわかっている場合に便利です。これは、ディスク上のファイルの場合によく発生します。
文字ベースは、データがいつ停止するのかわからない場合はより実用的であるため、文字が出なくなるまでデータを実行し続けることができます。たとえば、インターネット接続は、サーバーから受信するデータストリームのサイズがわからないためです。
たとえば、
- 文字デバイスドライバは、オペレーティングシステムが入出力デバイスと通信できるようにする特別なファイルです。例:キーボード、マウス、モニター、オーディオまたはグラフィックカード、点字。
- ブロックデバイスは、出力をバッファリングし、後で取得するためにデータを保存できるストレージデバイスと通信するために使用されます。例:ハードドライブ、メモリ。