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
Linuxカーネル学習の敷居を下げたいという思いを実現した本、「Linuxのしくみ」
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Satoru Takeuchi
PRO
February 18, 2023
Technology
24k
42
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Linuxカーネル学習の敷居を下げたいという思いを実現した本、「Linuxのしくみ」
以下イベントの発表資料です。
https://forkwell.connpass.com/event/273179/
Satoru Takeuchi
PRO
February 18, 2023
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
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
190
beyond jj: config & tools ecosystem
indirect
0
420
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
500
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
4
1.7k
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
320
AI時代、データエンジニアが一番おもろい
genshun9
0
600
omasushiというライブラリを作った
polidog
PRO
0
230
Railsのように考える: See through the Master
snoozer05
PRO
3
850
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
310
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
170
負債のメタファと2026年 / Debt Metaphor in Agentic Engineering Age 202609 Edition
twada
PRO
5
2.5k
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
1.1k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
670
The Art of Programming - Codeland 2020
erikaheidi
57
14k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Paper Plane (Part 1)
katiecoart
PRO
2
11k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
420
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
Designing Powerful Visuals for Engaging Learning
tmiket
1
550
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 ありがとうございました