(Currently, update to RELENG_4 is not scheduled) Obtained from: jpman Project <manjp@jp.FreeBSD.org>
203 lines
6.5 KiB
Groff
203 lines
6.5 KiB
Groff
.\"
|
|
.\" Copyright (c) 1996 David E. O'Brien, Joerg Wunsch
|
|
.\"
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
|
|
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
.\"
|
|
.\" %Id: intro.4,v 1.11 1998/11/30 17:52:45 rnordier Exp %
|
|
.\" jpman %Id: intro.4,v 1.3 1999/11/19 15:20:10 horikawa Stab %
|
|
.\" WORD: pseudo-device 疑似デバイス
|
|
.\" WORD: block device ブロック型デバイス
|
|
.\" WORD: device node デバイスノード
|
|
.\" WORD: buffered device バッファリングされるデバイス
|
|
.\" WORD: unbuffered device バッファリングされないデバイス
|
|
.\" WORD: raw device raw デバイス
|
|
.\" WORD: i386 architecture i386 アーキテクチャ
|
|
.\"
|
|
.Dd January 20, 1996
|
|
.Dt INTRO 4
|
|
.Os FreeBSD 2.1
|
|
.Sh 名称
|
|
.Nm intro
|
|
.Nd デバイスおよびデバイスドライバの紹介
|
|
.Sh 解説
|
|
本セクションではデバイス、デバイスドライバ、
|
|
その他ハードウェアに関連した情報を記します。
|
|
.Ss デバイスの抽象化
|
|
デバイスとは多くの場合、ディスク、プリンタ、
|
|
あるいはキーボード付きのグラフィックスディスプレイのような、
|
|
システムに属すハードウェア関連の機材を表す用語です。
|
|
また、いわゆる
|
|
.Em 疑似デバイス
|
|
というものもあります。これは、デバイスドライバが
|
|
ソフトウェア的にデバイスの動作をエミュレートするもので、
|
|
特定のハードウェアを根幹として持ちません。
|
|
後者の類の典型的な例として
|
|
.Pa /dev/mem
|
|
があります。
|
|
これは通常ファイルと同じセマンティクスで
|
|
物理メモリにアクセスできる小穴のようなものです。
|
|
.Pp
|
|
一般に、デバイスの抽象化の上位層では、
|
|
共通的なシステムコール群が提供されます。
|
|
これらのシステムコールはカーネルの上位層によって
|
|
対応するデバイスドライバへ送られます。
|
|
デバイスに利用できるシステムコール群は、
|
|
.Xr open 2 ,
|
|
.Xr close 2 ,
|
|
.Xr read 2 ,
|
|
.Xr write 2 ,
|
|
.Xr ioctl 2 ,
|
|
.Xr select 2 ,
|
|
.Xr mmap 2
|
|
から選ばれます。
|
|
すべてのドライバがこれらのシステムコールすべてを
|
|
実装しているわけではありません。例えば、
|
|
.Xr mmap 2
|
|
を端末デバイス上で呼び出しても何の役にも立たないでしょう。
|
|
.Ss デバイスへのアクセス
|
|
UNIX 風オペレーティングシステム下のほとんどのデバイスには、
|
|
いわゆる
|
|
.Em デバイスノード
|
|
、あるいは
|
|
.Em 特殊ファイル
|
|
とも呼ばれるものを介してアクセスします。
|
|
これは通常はそのファイルシステム階層の
|
|
.Pa /dev
|
|
ディレクトリ下に置かれます。
|
|
.Pq Xr hier 7 を参照
|
|
。
|
|
.Pp
|
|
.Xr devfs 5
|
|
が完全に機能していなければ、各デバイスノードは静的に、
|
|
かつ関連するデバイスドライバの存在とは無関係に、作成される必要があります。
|
|
大抵は
|
|
.Xr MAKEDEV 8
|
|
を実行させて作成します。
|
|
.Pp
|
|
これはつまり、一貫した状態にならないかもしれないということです。
|
|
関連するドライバが設定されていないようなデバイスノードが
|
|
存在するかもしれませんし、デバイスの検出に成功したのに、
|
|
対応するデバイスノードがまだ無いために
|
|
アクセスできないドライバが存在するかもしれません。
|
|
前者の場合では、そのデバイスノードを通してデバイスを参照しようとしても、
|
|
カーネルの上位層からエラーが返されます。
|
|
通常このエラーは
|
|
.Ql ENXIO
|
|
です。
|
|
後者の場合では、ドライバとデバイスを使えるようにするには、
|
|
デバイスノードを作成する必要があります。
|
|
.Pp
|
|
デバイスによっては 2 種類に分かれることがあります。
|
|
.Em ブロック型 (block) デバイス
|
|
と
|
|
.Em キャラクタ型 (character) デバイス
|
|
です。より正確に言えばすなわち、
|
|
バッファリングされるデバイスとバッファリングされないデバイス
|
|
.Pq raw デバイス
|
|
です。
|
|
.Ql ls -l
|
|
の出力では、ファイルの型の識別に文字
|
|
.Ql b
|
|
と
|
|
.Ql c
|
|
で慣習的な呼び名を表しています。
|
|
バッファリングされるデバイスは、
|
|
オペレーティングシステムのバッファキャッシュを経由してアクセスされています。
|
|
そして、このようなデバイスは、その上位にファイルシステムを
|
|
重ねることのみを目的としています。
|
|
通常、バッファリングされるデバイスは、
|
|
ディスクやディスク風デバイス、
|
|
それに歴史的な理由からテープデバイスにのみ実装されます。
|
|
.Pp
|
|
raw デバイスはすべてのドライバに利用できます。
|
|
これにはバッファリングされるデバイスも実装するようなドライバも含みます。
|
|
そのようなデバイスでは、慣習的にデバイスノードのパス名に文字
|
|
.Ql r
|
|
を前置して違いを表します。
|
|
例えば、
|
|
.Pa /dev/rda0
|
|
は 1 台目の SCSI ディスク用の raw デバイスを表します。一方、
|
|
.Pa /dev/da0
|
|
は同じくバッファリングされるデバイスのデバイスノードです。
|
|
.Pp
|
|
バッファリングされないデバイスは、
|
|
ファイルシステム操作に関連しない動作すべてに用いられるでしょう。
|
|
これはそのデバイスがディスクデバイスだとしてもです。
|
|
これには、ディスクパーティション全体のバックアップを取るときや、
|
|
.Em raw
|
|
フロッピディスクへバックアップする場合を含みます
|
|
.Pq このとき、フロッピディスクはテープのように使われます
|
|
。
|
|
.Pp
|
|
デバイスノードへのアクセス制限は、
|
|
カーネル内部のドライバによって直接に暗黙指定されているわけではなく、
|
|
普通はそのデバイスノードエントリの通常ファイルパーミッションの問題です。
|
|
.Ss デバイスノードを持たないドライバ
|
|
ネットワークデバイス用のドライバにアクセスするときには
|
|
デバイスノードは使いません。
|
|
これらのドライバはカーネル内部の別の判断で選択されます。
|
|
また一般的にネットワークデバイスの利用は、
|
|
.Xr open 2
|
|
を呼び出すのではなく、
|
|
.Xr socket 2
|
|
システムコールでおこなわれます。
|
|
.Ss カーネルにドライバを組み込む
|
|
各カーネルには、そのカーネルの機能やドライバを選択したり
|
|
各種オプションを調整するための基礎として用いられる、設定ファイルが存在します。
|
|
関連するファイルの詳細な記述については
|
|
.Xr config 8
|
|
を参照してください。
|
|
本セクションの個々のマニュアルページは、
|
|
設定ファイルのサンプル行をその書式セクションに提示しています。
|
|
設定ファイルのサンプルとして
|
|
.Po
|
|
.Em i386
|
|
アーキテクチャ用の
|
|
.Pc
|
|
.Pa /sys/i386/conf/LINT
|
|
も参照してください。
|
|
.Sh 関連項目
|
|
.Xr close 2 ,
|
|
.Xr ioctl 2 ,
|
|
.Xr mmap 2 ,
|
|
.Xr open 2 ,
|
|
.Xr read 2 ,
|
|
.Xr select 2 ,
|
|
.Xr socket 2 ,
|
|
.Xr write 2 ,
|
|
.Xr devfs 5 ,
|
|
.Xr hier 7 ,
|
|
.Xr config 8 ,
|
|
.Xr MAKEDEV 8
|
|
.Sh 作者
|
|
本マニュアルページは
|
|
.An David E. O'Brien
|
|
の投稿を元に
|
|
.if t J\(:org Wunsch
|
|
.if n Joerg Wunsch
|
|
が書きました。
|
|
.Sh 歴史
|
|
.Nm intro
|
|
は
|
|
.Fx 2.1
|
|
で登場しました。
|