デバイス管理
デバイスファイル
- デバイス(ハードウェア) を抽象化し、ファイルとして表現したもの
- アプリケーションは基本的に、ファイル、を通じてデータの入出力を行う
- Linuxでの確認
/dev 配下にファイルとして存在する
# ll /dev/ total 0 drwxr-xr-x 2 root root 700 May 30 17:58 block drwxr-xr-x 2 root root 60 May 31 02:58 bsg drwxr-xr-x 3 root root 60 May 30 17:58 bus lrwxrwxrwx 1 root root 3 May 30 17:58 cdrom -> sr0 drwxr-xr-x 2 root root 2720 May 30 17:59 char crw------- 1 root root 5, 1 May 30 17:58 console lrwxrwxrwx 1 root root 11 May 31 02:58 core -> /proc/kcore drwxr-xr-x 6 root root 140 May 30 17:58 cpu crw-rw---- 1 root root 10, 61 May 30 17:58 cpu_dma_latency crw-rw---- 1 root root 10, 62 May 30 17:58 crash drwxr-xr-x 5 root root 100 May 31 02:58 disk brw-rw---- 1 root disk 253, 0 May 30 17:58 dm-0 brw-rw---- 1 root disk 253, 1 May 30 17:58 dm-1 lrwxrwxrwx 1 root root 3 May 30 17:58 dvd -> sr0 lrwxrwxrwx 1 root root 3 May 31 02:58 fb -> fb0 crw-rw---- 1 root root 29, 0 May 31 02:58 fb0 (中略)
- b で始まるものは、
ブロックデバイス
- ブロック単位のデータ入出力
- バッファを持つ
- ランダム読み書き
- 例
- HDD
- c で始まるものは、
キャラクタデバイス
- シーケンシャルなデータの入出力
- バッファはなし
- 例
- キーボード
- 端末
- プリンタ
- 番号(左から)
- メジャー番号
- デバイスの種類を特定するもの(1 - 254)
- 番号が一緒でも、ブロックデバイスとキャラクタデバイスのデバイスドライバは異なる
- マイナー番号
- 同じメジャー番号の中で、特定のデバイスを識別するもの
- メジャー番号
- b で始まるものは、
カーネルが認識しているデバイスは
/proc/devices
を参照Character devices: 1 mem 4 /dev/vc/0 4 tty 4 ttyS 5 /dev/tty 5 /dev/console 5 /dev/ptmx (sinp) Block devices: 2 fd 259 blkext 9 md 11 sr 252 virtblk 253 device-mapper 254 mdp
メリット
- デバイスを通常のファイルとして扱えるので、特殊な機構が必要ない
- 他のファイルと同様に、所有者、アクセス権限を付与でき、ファイルシステムの機能を利用できる
ハードディスク
$ ll /dev/vda* brw-rw----. 1 root disk 252, 0 9月 21 15:04 /dev/vda brw-rw----. 1 root disk 252, 1 9月 21 15:04 /dev/vda1 brw-rw----. 1 root disk 252, 2 9月 21 15:04 /dev/vda2 brw-rw----. 1 root disk 252, 3 9月 21 15:04 /dev/vda3 brw-rw----. 1 root disk 252, 5 9月 21 15:04 /dev/vda5
- vda が 1 台目のハードディスク
- vda1, vda2 等が vda の中のパーティション
ハードウェアを制御するデバイスドライバのお話
周辺機器に統一的なインタフェースを提供してくれる
- モニタ
- キーボード
- ハードディスク
- NIC
各種規格が異なっても、吸収してくれる