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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Satoru Takeuchi
PRO
May 06, 2025
Technology
120
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
114-ファイルのshallow_copy.pdf
sat
PRO
1
9
113-Btrfsのスナップショット.pdf
sat
PRO
0
3
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
54
システム強制終了時に ファイルシステムの整合性を保つ ~ ジャーナリング編 ~
sat
PRO
1
58
ファイルシステムの整合性を回復するfsck
sat
PRO
1
59
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
4.9k
ファイルシステムの不整合
sat
PRO
2
150
書籍執筆での生成AIの活用
sat
PRO
2
510
ChatGPTに従って体調管理2026
sat
PRO
0
180
Other Decks in Technology
See All in Technology
なぜ Platform Engineering の土台に Kubernetes を選ぶのか
r4ynode
2
580
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
810
20260619 私の日常業務での生成 AI 活用
masaruogura
1
120
NAB Show 2026 動画技術関連レポート / NAB Show 2026 Report
cyberagentdevelopers
PRO
0
160
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
130
機械学習を「社会実装」するということ 2026年夏版 / Social Implementation of Machine Learning June 2026 Version
moepy_stats
4
1.5k
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
250
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
130
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
4
610
2026TECHFRESH畢業分享會 - Lightning Talk - E起 See See : 電商推薦讀心術? 數據說了算
line_developers_tw
PRO
0
790
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
450
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
540
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
230
Abbi's Birthday
coloredviolet
2
8k
The SEO Collaboration Effect
kristinabergwall1
1
480
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Believing is Seeing
oripsolob
1
140
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Test your architecture with Archunit
thirion
1
2.3k
GraphQLとの向き合い方2022年版
quramy
50
15k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
330
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