Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
デバイスにアクセスするデバイスファイル
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
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
57
Machine Check Exception
sat
PRO
2
53
バイナリダンプの模様を読む
sat
PRO
0
72
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
60
114-ファイルのshallow_copy.pdf
sat
PRO
2
45
113-Btrfsのスナップショット.pdf
sat
PRO
0
24
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
66
システム強制終了時に ファイルシステムの整合性を保つ ~ ジャーナリング編 ~
sat
PRO
2
71
ファイルシステムの整合性を回復するfsck
sat
PRO
1
77
Other Decks in Technology
See All in Technology
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.9k
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
800
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
6.2k
事業価値と Engineering 2026年度版
recruitengineers
PRO
51
25k
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
20k
JavaScript 研修 (2026)
recruitengineers
PRO
2
620
Genie Codeハンズオン応用編
taka_aki
0
120
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
0
240
Model Studio CLI × Token Plan
maigo999
0
190
私がブラウザを自作したくなった理由
supurazako
1
260
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.4k
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
17
7.6k
Featured
See All Featured
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Thoughts on Productivity
jonyablonski
76
5.3k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
Mind Mapping
helmedeiros
PRO
1
320
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
470
Design in an AI World
tapps
1
280
Google's AI Overviews - The New Search
badams
0
1.1k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
920
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
210
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