Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
デバイスにアクセスするデバイスファイル
Search
Satoru Takeuchi
PRO
May 06, 2025
Technology
130
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
デバイスにアクセスするデバイスファイル
以下動画のテキストです
https://youtu.be/W9vTi7N71Lg
Satoru Takeuchi
PRO
May 06, 2025
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
68
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
93
あなたの知らないバージョン命名規則
sat
PRO
3
900
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
64
Machine Check Exception
sat
PRO
2
66
バイナリダンプの模様を読む
sat
PRO
0
89
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
87
114-ファイルのshallow_copy.pdf
sat
PRO
2
57
113-Btrfsのスナップショット.pdf
sat
PRO
0
40
Other Decks in Technology
See All in Technology
HHKBエバンジェリストになる方法
941
0
110
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
150
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
350
beyond jj: config & tools ecosystem
indirect
0
440
10分で知る最近のOmarchy
komagata
0
330
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
530
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
4
610
CLIライブラリ開発を支える技術
htnabe
0
110
人間はどの意思決定を手放せるのか
kawasima
14
6.9k
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
1
280
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
250
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
1
1.4k
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
22k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
330
We Are The Robots
honzajavorek
0
370
Claude Code のすすめ
schroneko
67
230k
How to Ace a Technical Interview
jacobian
281
24k
The Limits of Empathy - UXLibs8
cassininazir
1
670
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
Producing Creativity
orderedlist
PRO
348
41k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
800
Transcript
デバイスにアクセスする デバイスファイル May. 6th, 2025 Satoru Takeuchi X: satoru_takeuchi 1
デバイスとは • コンピュータシステムに繋がっているハードウェア ◦ コンピュータとほぼ一体なもの : CPU、メモリ ▪ CPUの機械語命令によって直接操作 ◦
コンピュータに外付けする周辺機器 : ディスク(HDD,SSD)、キーボード、マウス ▪ 個々のデバイスの仕様に従って操作する ▪ 📝 タイマーのようにシステムの動作に必須なものはコンピュータに最初から内蔵されている ものもある • ユーザプログラムはデバイスに直接アクセスできない ◦ デバイスファイルという特殊なファイルを介してアクセス ◦ 📝 NICなど一部例外もある 2
ユーザプログラムをデバイスに直接アクセスさせない理由 • デバイスへのアクセス方法を誤ると予期せぬ動作が起きうる ◦ 最悪デバイスが壊れる • 個々のプログラムは正しくデバイスにアクセスしていても複数プログラムから並列ア クセスすると、やはり予期せぬ動作が起きうる • デバイスはシステムグローバルなリソースなので、他人のデータに簡単にアクセス
できてしまう • プログラムごとにデバイスにアクセスするコードを書くのは非効率 3
デバイスファイル • プログラムがデバイスにアクセスするためのインタフェース ◦ ファイルアクセス用のインタフェースで操作できる (例: open,read,write,closeシステムコール) • 権限が無いプログラムはデバイスにアクセスできない •
同時アクセスによる問題が発生しないようにカーネルが制御 4 プログラム デバイスファイル(/dev/foo) ユーザ空間 カーネル 現実世界 デバイスを操作するコード デバイスファイル(/dev/bar) プログラム プログラム デバイスA デバイスB デバイスを操作するコード
デバイスドライバ • プログラムからデバイスファイルを介したプログラムの要求に従ってデバイスを操 作するコード • デバイスの種類ごとに存在 ◦ 📝 種類が違うデバイスも所定の規格に沿っていれば同じデバイスドライバが使えることも 5
プログラム デバイスファイル(/dev/foo) ユーザ空間 カーネル 現実世界 デバイスドライバ デバイスファイル(/dev/bar) プログラム プログラム デバイスA デバイスB デバイスドライバ
デバイスファイルの例 6 $ ls -lR /dev/ … drwxr-xr-x 2 root
root 0 Apr 28 19:54 pts # 仮想端末デバイスがあるディレクトリ /dev/input: crw-rw---- 1 root input 13, 64 Apr 28 19:54 event0 # キーボード … crw-rw---- 1 root input 13, 32 Apr 28 19:54 mouse0 # マウス … brw-rw---- 1 root disk 8, 0 Apr 28 19:54 sda # ディスク brw-rw---- 1 root disk 8, 1 Apr 28 19:54 sda1 # ディスク上の最初のパーティション brw-rw---- 1 root disk 8, 2 Apr 28 19:54 sda2 # ディスク上の2番目のパーティション
デバイス番号 7 $ ls -lR /dev/ … drwxr-xr-x 2 root
root 0 Apr 28 19:54 pts # 仮想端末デバイスがあるディレクトリ /dev/input: crw-rw---- 1 root input 13, 64 Apr 28 19:54 event0 # キーボード … crw-rw---- 1 root input 13, 32 Apr 28 19:54 mouse0 # マウス … brw-rw---- 1 root disk 8, 0 Apr 28 19:54 sda # ディスク brw-rw---- 1 root disk 8, 1 Apr 28 19:54 sda1 # ディスク上の最初のパーティション brw-rw---- 1 root disk 8, 2 Apr 28 19:54 sda2 # ディスク上の2番目のパーティション 2つの数字(メジャー番号、マイナー番号 )の組でシステム内のデバイスを一意に識別 📝 LinuxカーネルソースのDocumentation/admin-guide/devices.txtに一覧がある
デバイスの種類 8 $ ls -lR /dev/ … drwxr-xr-x 2 root
root 0 Apr 28 19:54 pts # 仮想端末デバイスがあるディレクトリ /dev/input: crw-rw---- 1 root input 13, 64 Apr 28 19:54 event0 # キーボード … crw-rw---- 1 root input 13, 32 Apr 28 19:54 mouse0 # マウス … brw-rw---- 1 root disk 8, 0 Apr 28 19:54 sda # ディスク brw-rw---- 1 root disk 8, 1 Apr 28 19:54 sda1 # ディスク上の最初のパーティション brw-rw---- 1 root disk 8, 2 Apr 28 19:54 sda2 # ディスク上の2番目のパーティション 「キャラクタデバイス (c)」と「ブロックデバイス (b)」に対応(後述) 📝 デバイスの種類ごとにメジャー番号、マイナー番号の名前空間が違う
デバイスファイルの種類 • キャラクタデバイス(例: キーボード、マウス) ◦ 1バイト単位でアクセス ◦ 一般にデバイス内のデータにアドレスがなく、 seekできない ◦
📝 その33 端末デバイス • ブロックデバイス(例: HDDやSSDのようなディスクドライブ) ◦ ブロック単位(デフォルトは512バイト)でアクセス ◦ 一般に個々のデータにアドレスが割り振られており、 seekできる ◦ 📝 その58 Linuxの色々なブロックデバイス 9
デバイスファイルは誰が作る? • 通常はsystemdの1機能であるudevが作成 ◦ カーネルがデバイスを認識すると udevが起動し、ルール(udev rule)に従って作成 • 📝 昔はmknodというコマンドを自分で実行して手で作っていた
10
まとめ • ユーザプログラムは直接デバイスにはアクセスできず、デバイスファイルを介してア クセスする • デバイスファイルのアクセスをきっかけに動作してデバイスを操作するカーネル内 のコードがデバイスドライバ • デバイスは「ブロックデバイス」と「キャラクタデバイス」に分かれる •
デバイスファイルは通常udevが作成する 11