🦔

Linuxのデバイスファイル

2024/10/10に公開
  • linuxのファイルの分類
    • 普通のファイル
      • レギュラーファイル、ディレクトリ、シンボリックリンク
    • 特殊ファイル→読み書きの操作の影響はファイルシステム以外に及ぶ
      • ブロックデバイス、キャラクタデバイス

特殊ファイルの一つとして、デバイスファイルのイメージを挙げると、ファイルシステム内に保持している情報はデバイス番号という管理情報のみで、操作の影響はあくまでOSを通じてファイルシステム外にいく.

  • デバイスファイル
    →OSにおいてアプリケーションによるハードウェアデバイスへのアクセスのためのインターフェースとなる特殊なファイルのこと. linuxがハードウェアを検知すると自動的に作成される
    OSの認識する何らかのデバイスを操作するためのファイル.
    デバイスといっても、/dev/sdaのように実際にマシンに搭載しているディスクそのもののこともあれば、物理的なデバイスではなくOSが仮想的に管理している/dev/nullのようなデバイスもある.
    アプリケーションはファイルの読み書きでデバイスドライバを操作し、ハードウェアを制御できる.

デバイスファイルは以下の2種類

  • キャラクタデバイスファイル
    1回の操作で1文字ずつデータを処理するデバイスに使用されるデバイスファイル.
    (マウスとかキーボードとかシリアルポートとか)

  • ブロックデバイスファイル
    1回の操作で固定サイズのデータブロックずつデータを処理するデバイスに使用されるデバイスファイル
    (HDDとかSSDとかSDカードとか)

ls -l /dev
brw-rw----  1 root disk      7,     0  9月 23 13:35 loop0 // bから始まるのがブロックデバイス
crw-------  1 root root     89,     5  9月 23 13:35 i2c-5 // cから始まるのはキャラクターデバイス
  • 実際に試してみた
df /home/name/workspace
の出力結果は以下
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda2      959786032 540055968 370901856  60% /

これによると/home/name/workspaceは/dev/sda2にマウントされている.

  • /dev/shmって何?
    複数のメモリーで共有して使えるメモリーを特殊ディレクトリーとして実装したもの

Discussion