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
Machine Check Exception
sat
PRO
2
35
バイナリダンプの模様を読む
sat
PRO
0
68
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
54
114-ファイルのshallow_copy.pdf
sat
PRO
2
38
113-Btrfsのスナップショット.pdf
sat
PRO
0
16
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
59
システム強制終了時に ファイルシステムの整合性を保つ ~ ジャーナリング編 ~
sat
PRO
2
63
ファイルシステムの整合性を回復するfsck
sat
PRO
1
65
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
5.3k
Other Decks in Technology
See All in Technology
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
290
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
340
SRE Next 2026 何でも屋からの脱却
bto
0
850
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
4
4.4k
AmplifyHostingConstructからSSRフレームワークのためのホスティング設計を考察する/amplify-hosting-construct
fossamagna
1
170
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
350
「AIに依存している」と 「AIを使いこなしている」の違い
k8yasuma
0
100
SRE依存からの脱却 運用を開 発チームへ移す、 フルサイ クル開 発体制の実践
joooee0000
0
2.9k
AIと共生する開発者プラットフォーム:バクラクのモノレポ×マイクロサービス基盤
sakajunquality
2
3.7k
世界、断片、モデル。そして理解
ardbeg1958
1
130
AI Driven AI Governance
pict3
0
470
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
120
Featured
See All Featured
Crafting Experiences
bethany
1
220
Git: the NoSQL Database
bkeepers
PRO
432
67k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
370
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
870
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
Prompt Engineering for Job Search
mfonobong
0
370
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
200
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
How to make the Groovebox
asonas
2
2.3k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
220
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