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
Linuxカーネル学習の敷居を下げたいという思いを実現した本、「Linuxのしくみ」
Search
Satoru Takeuchi
PRO
February 18, 2023
Technology
41
22k
Linuxカーネル学習の敷居を下げたいという思いを実現した本、「Linuxのしくみ」
以下イベントの発表資料です。
https://forkwell.connpass.com/event/273179/
Satoru Takeuchi
PRO
February 18, 2023
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
RubyでKubernetesプログラミング
sat
PRO
4
160
プロセスの生成 exec編
sat
PRO
1
33
プロセスの生成 fork&exec編
sat
PRO
0
25
プロセスの生成 コピーオンライトを使ったfork編
sat
PRO
0
27
プロセスの生成 fork編
sat
PRO
0
31
静的ライブラリと 共有ライブラリの違いを実験で確認
sat
PRO
1
39
ハイテク休憩
sat
PRO
2
200
利きプロセススケジューラ
sat
PRO
5
3.2k
俺とVSCode Python Debugger Extension
sat
PRO
1
210
Other Decks in Technology
See All in Technology
深層学習と3Dキャプチャ・3Dモデル生成(土木学会応用力学委員会 応用数理・AIセミナー)
pfn
PRO
0
460
20250116_自部署内でAmazon Nova体験会をやってみた話
riz3f7
1
100
JAWS-UG20250116_iOSアプリエンジニアがAWSreInventに行ってきた(真面目編)
totokit4
0
140
[IBM TechXchange Dojo]Watson Discoveryとwatsonx.aiでRAGを実現!座学①
siyuanzh09
0
110
【JAWS-UG大阪 reInvent reCap LT大会 サンバが始まったら強制終了】“1分”で初めてのソロ参戦reInventを数字で振り返りながら反省する
ttelltte
0
140
技術に触れたり、顔を出そう
maruto
1
150
あなたの人生も変わるかも?AWS認定2つで始まったウソみたいな話
iwamot
3
860
Alignment and Autonomy in Cybozu - 300人の開発組織でアラインメントと自律性を両立させるアジャイルな組織運営 / RSGT2025
ama_ch
1
2.4k
2024AWSで個人的にアツかったアップデート
nagisa53
1
110
メンバーがオーナーシップを発揮しやすいチームづくり
ham0215
2
140
コロプラのオンボーディングを採用から語りたい
colopl
5
1.3k
FODにおけるホーム画面編成のレコメンド
watarukudo
PRO
2
280
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
96
5.3k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Statistics for Hackers
jakevdp
797
220k
Site-Speed That Sticks
csswizardry
3
270
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
870
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
19
2.3k
A designer walks into a library…
pauljervisheath
205
24k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
360
Unsuck your backbone
ammeep
669
57k
Transcript
Linuxカーネル学習の敷居を下げたいという 思いを実現した本 「Linuxのしくみ」 Feb. 18rd, 2023 武内覚
[email protected]
twitter: satoru_takeuchi
1
自己紹介: 武内 覚 • 会社員として ◦ むかし: 富士通でLinuxカーネルの開発、サポートに従事 ◦ いま:
サイボウズで新インフラのストレージ開発に従事 • 個人として ◦ 2018年2月: 「Linuxのしくみ 第一版」執筆 ◦ 2022年10月: 「Linuxのしくみ」増補改訂版 執筆 ◦ その他いろいろ情報発信 ▪ 雑誌やWeb媒体に様々な記事を寄稿 ▪ IT技術系同人誌の販売 ▪ youtube動画作成 2
今日紹介する本 • 章立て 1. Linuxの概要 2. プロセス管理(基礎編) 3. プロセススケジューラ 4.
メモリ管理システム 5. プロセス管理(応用編) 6. デバイスアクセス 7. ファイルシステム 8. 記憶階層 9. ブロック層 10. 仮想化機能 11. コンテナ 12. cgroup 3
おしながき • 本書を書くに至った経緯 • 本書の特徴 • 反響 • おすすめ書籍 •
まとめ 4
おしながき • 本書を書くに至った経緯 • 本書の特徴 • 反響 • おすすめ書籍 •
まとめ 5
Linuxカーネル開発者だったころに思ったこと • OS屋さん以外の多くの人がOSが具体的にどう動いているか理解していない • 大学などでOSを学んで概念を知っていても現実のシステムとのリンクが弱い • OSに詳しくなればもっと強くなれる人がたくさんいるのに… ◦ みんな詳しくなればこの業界はもっとよくなる ◦
話が通じる人がいると (自分が)うれしい 6
専門家以外がOSを知っていて嬉しい場面はあるのか • あると確信している • ソフトウェアシステムは抽象化されているが完璧ではない • 抽象化されきっていない部分の課題はいくらでもある ◦ そういう境界が一番難しい 7
理想 現実
具体的にOSに詳しくなると何がうれしいのか • それまで謎だったシステムの挙動を理解して対処できるようになる ◦ データ量が増えたら性能がいきなり劣化した ◦ 仮想化環境で物理マシンと全然違うよくわからない挙動をする • 監視システムが生やしているメトリクスの意味が理解しやすくなる ◦
システム全体についてのメトリクスの意味は OSわかってる人でないとピンと来にくい • OSの特性を踏まえた上でプログラムやシステム全体の開発、運用ができる 8
OSを理解している人が少ない理由(推測) • ユーザプログラムとOS(とくにカーネル)は全く性質が違う ◦ CPUがユーザプログラムとカーネルでは違うモードで動いている • 直接触る、作る機会が少なくて深い知識を得にくい ◦ 📝 現場でひどい目に遭った人はよく理解していたりする
• いまいち正体がわからなくて食指が動きにくい • OSの参考書は「作り方」か「一般的な概念」の難しい本がほとんど ◦ しかもやたら分厚くて高い 9
要するにいいかんじの学習手段が無い 10 このジャンプ用の本はあるが 読むのが大変 このステップ用の本が無かった OS理解してる OS知らない or 座学で聞いたことがある OS作れる
ここまでやらなくていい ここまで来れるとうれしい
自分で本を書けばいいのでは!? • 自分はLinuxカーネル開発者 • 専門外の人に説明するのに慣れているし好き ◦ SEさんに何度も説明したし、新人向け OS教育を何度もやってきた • 幸いにも暇はある
◦ 第一版を書いたときは無職だった 11 💡 これはいいアイデアですね ピコーン!!!
おしながき • 本書を書くに至った経緯 • 本書の特徴 • 反響 • おすすめ書籍 •
まとめ 12
基本コンセプト • ひたすら図のループの繰り返し 13
その他ポリシー • OS開発者ではなくユーザプログラム開発者、システム管理者向け ◦ 広く浅く&カーネルのコードは一切読まない • 網羅性は目指さず、対象読者にとって重要と思ったものを重点的に説明 14 カーネルやハードウェアの深淵 氷山の地上部分がターゲット
ここには踏み込まない
本書で学べることの全体像からいくつかピックアップ 15
システムコールの実行 16 ユーザプログラムが 動いている時間 カーネルが動いている時間
実行ファイルの構造 17 ② ⑤ ③ ⑥ ① ④ ① ②
③ ④ ⑤ ⑥
プロセスのディスパッチ • あるCPUコア上に実行可能なプロセスが複数あるとする • それぞれのプロセスは短い期間ごとに順番に動く 18 3つの負荷処理が順番に均等に動く
メモリ使用状況を知るためのfreeコマンドの出力の意味 19
キャッシュメモリによるメモリアクセスの高速化 20 L1キャッシュ L2キャッシュ L3キャッシュ メモリ
ディスクI/Oの性能測定 21 青はI/Oスケジューラあり 赤はI/Oスケジューラなし
仮想マシン 22
おしながき • 本書を書くに至った経緯 • 本書の特徴 • 反響 • おすすめ書籍 •
まとめ 23
ポジティブなもの • 「聞いたことがある」ものが「理解している」になった • OSの単位がとれた • 高専や大学、企業の副読本にしている • 輪読会を開いている •
OS屋さんと意思疎通できるようになった 24
ネガティブなもの • 難しすぎる ◦ → 本プレゼン資料に事前に読んでおくといい本を書きました 25
ネガティブなもの • 難しすぎる ◦ → 本プレゼン資料に事前に読んでおくといい本を書きました • 簡単すぎる ◦ →
いかんともしがたい 26
ネガティブなもの • 難しすぎる ◦ → 本プレゼン資料に事前に読んでおくといい本を書きました • 簡単すぎる ◦ →
いかんともしがたい • なるべく物理マシン上でサンプルコードを実行してほしいと書いてあるが、そんなも のは無い ◦ → 一周目は実行結果を見るだけにして、仮想マシンの章を読み終えた後に自分の環境で実行す るといいかも 27
おしながき • 本書を書くに至った経緯 • 本書の特徴 • 反響 • おすすめ書籍 •
まとめ 28
本書を読む前に • 新しいLinuxの教科書 ◦ https://amzn.to/3S8ZtLM ◦ Linuxを一切触ったことない人向け • 本気で学ぶ Linux実践入門
◦ https://amzn.to/3k9LUPC ◦ ひととおりLinuxを触れるようになった人がシステム管理を覚えるのによい 29
本書を読んだ後に • スーパーユーザーなら知っておくべきLinuxシステムの仕組み ◦ https://amzn.to/412RW5f ◦ 本書より少し難しいことを扱っている • 詳解システムパフォーマンス 第二版
◦ https://amzn.to/3I2F7PO ◦ 性能について実践的な深い知見を得られる • 📝 筆者が運営するYouTubeチャンネル(satlinuxtube) ◦ https://www.youtube.com/channel/UCgrUyRFiHhV607Orhriau6w ◦ 本書とかなり似たトピックを扱っている ◦ 短いので豆知識を得る感覚で見られる 30
本書を読んだ後に(開発者向け) • ふつうのLinuxプログラミング 第二版 ◦ https://amzn.to/3SaCwI3 ◦ どんなシステムコールがあってどう使うかなどがわかる。 Cで書かれている •
Goならわかるシステムプログラミング 第二版 ◦ https://amzn.to/3Z24dFe ◦ 同上。Goで書かれている • Linuxプログラミングインタフェース ◦ https://amzn.to/3k57G7l ◦ Linuxのマニアックなシステムコールについて学べる ◦ デカい ◦ 通読するのではなく辞書的に読むとよい 31
本書を読んだ後に(カーネル開発者になりたい人向け) • はじめて読む486 ◦ https://amzn.to/3Kgrkrs ◦ 古いが今でも役立つ CPUの機能についての本 • Linux
Kernel Development ◦ https://amzn.to/3S7GNMo ◦ ユーザプログラムとカーネルの作り方の違いや各サブシステムのコードをやさしく解説 • Linux Kernel Programming ◦ https://amzn.to/3k4S3ww ◦ 現状たぶん一番新しい Linux Kernelの開発用の本 • 📝 Linux Kernel Newbies ◦ https://kernelnewbies.org/ ◦ Linuxにコントリトリビュートしたくなったら 32
おしながき • 本書を書くに至った経緯 • 本書の特徴 • 反響 • おすすめ書籍 •
まとめ 33
まとめ • 「Linuxのしくみ」は実験と図解でLinuxの基礎を比較的容易に学べる本 ◦ ターゲットはOS開発者ではなくユーザプログラム開発者やシステム管理者 ◦ 本書読破後の人ほど Linuxを理解している人は世の中にはまだ少ない • OSについて「いまさら聞けない」「聞く人がいない」ときはぜひ本書を
◦ 📝聞ける人がいると聞くともっといいよ ! • 本書の内容を理解して、楽しいコンピュータ技術者ライフを! 34
おわり 35 ありがとうございました