next up previous contents
Next: 4.2.1 固定ディスクのデバイス名 Up: 4. Solarisのファイルシステム Previous: 4.1.3 疑似(Pseudo)ファイルシステム

4.2 デバイスファイル

上のような各種のファイルシステムは、その多くはハードディスクなどの物理的な デバイス上に存在しているわけですが、UNIXではこのような各種デバイスはどの ようにコントロールされるのでしょうか。

それぞれのハードウェアの構造によってそのアクセス方法は違いますから、これらを 統一的に扱う何らかの方法が必要です。UNIXでその鍵になるのが、デバイスファイル の概念です。デバイスファイルは、特殊ファイルとも呼ばれ、形式的には、/dev ディレクトリの下にある通常のファイルのように見えます。しかし、ls -lなど で表示させてみると、ディレクトリなら d、通常のファイルなら-と表示 される部分がbまたはcになっています。

これらのファイルは、実はそのデバイスに割り当てられたデバイス番号などのほんの わずかの情報しか持っていない、実体のないファイルです。しかし、このファイルに 対して入出力の要求が(read()やwrite()などのシステムコールを通じて) 行なわれると、カーネル内に組み込まれたそれぞれのデバイス専用のデバイスドライバ が起動されて必要な処理を行なうようになっているのです。このとき、データの受渡し にバッファを使用するものをブロックデバイス、バッファリングなしで入出力を行なう ものをキャラクタデバイス、またはrawデバイスといいます。この区別が、上で述べた ls -lでの出力の違いです。多くの物理デバイスに対して、ブロックデバイスと キャラクタデバイスの両方が存在します。 このような仕組みを前提に、以後はデバイスとそれを表すデバイスファイルを同義に扱います。

では、もっとも重要なデバイスであるハードディスクのデバイス名について見 てみましょう。


 

Noriyo Kanayama