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カーネルのソースについての小ネタ集
Search
Satoru Takeuchi
PRO
July 23, 2022
Technology
1
230
Linuxカーネルのソースについての小ネタ集
以下動画のテキストです。
https://youtu.be/b8O8zj5bXB4
Satoru Takeuchi
PRO
July 23, 2022
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
利きプロセススケジューラ
sat
PRO
5
2.9k
俺とVSCode Python Debugger Extension
sat
PRO
1
180
コード再利用のしくみ ライブラリ
sat
PRO
3
49
AWKへの愛を語る
sat
PRO
3
520
syncコマンドのデータ同期 完了待ちやエラー検出
sat
PRO
0
64
動作中のLinux環境の全メモリを見る
sat
PRO
1
96
Linuxの時間を10秒止める
sat
PRO
2
210
プロセスへのメモリ割り当て4 - 実際に使うときにメモリを獲得するデマンドページング(実践編)
sat
PRO
1
120
プロセスへのメモリ割り当て(3) 実際に使うときにメモリを獲得するデマンドページング
sat
PRO
1
73
Other Decks in Technology
See All in Technology
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
260
日経電子版のStoreKit2フルリニューアル
shimastripe
1
150
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
610
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
130
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
150
【LT】ソフトウェア産業は進化しているのか? #Agilejapan
takabow
0
100
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
200
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
390
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
390
強いチームと開発生産性
onk
PRO
36
12k
アプリエンジニアのためのGraphQL入門.pdf
spycwolf
0
110
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
3
350
Featured
See All Featured
Faster Mobile Websites
deanohume
305
30k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Designing Experiences People Love
moore
138
23k
Optimizing for Happiness
mojombo
376
70k
Building an army of robots
kneath
302
43k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Unsuck your backbone
ammeep
668
57k
Building Your Own Lightsaber
phodgson
103
6.1k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Why Our Code Smells
bkeepers
PRO
334
57k
Transcript
Linuxカーネルの ソースについての小ネタ集 Jul 22nd, 2022 Satoru Takeuchi twitter: satoru_takeuchi
概要 • Linuxカーネルのソースコードについての小ネタを紹介 ◦ 規模、ディレクトリ構造、開発スタイル • 対象バージョンはv5.18 • 個々の機能について深入りしない •
コードはほぼ読まない
どれくらいの規模? • 主にC言語で書かれているので.cファイルと.hファイルの行数をカウント ◦ find -type f -name "*.[ch]" -not
-path ".git/*" | xargs cat | wc -l • バージョン間の変更量も見る ◦ コミット数 ▪ git log --oneline v5.17..v5.18 | wc -l ◦ 変更行数 ▪ git diff --stat v5.17..v5.18 | tail
ディレクトリの構造は? • トップディレクトリを眺めてみる ◦ ls • ちょっとだけ掘ってみる ◦ kernel: コア部分
◦ mm: メモリ管理 ◦ fs: ファイルシステム ◦ drivers: デバイスドライバ ◦ arch: アーキテクチャ依存コード
どうやって開発してるの? • サブシステムごとにメンテナがいる ◦ MAINTAINERファイルを参照 • パッチがマージされるまでの流れ ◦ 開発者のパッチをサブシステム開発用の branchにマージ
▪ このへんはメーリングリスト経由だったり githubだったり ◦ サブシステム開発用の branchをLinus(Linuxのオリジナル開発者 )がmaster branchにマージ ▪ サブシステムメンテナが Linusにpull requestメールを送る • ここでいうpull requestはgithubのPRとは別物 • pull候補のbranchのURLと変更点を書いたメールを送る • 2~3ヶ月に一回新しいバージョンが出る ◦ たまにメジャーバージョンが上がるが、大した意味はない (4.19の次が5.0、など)
まとめ • Linuxのソースコードはめっちゃデカい • バージョンごとの差分もデカい • サブシステムごとにディレクトリが分かれている ◦ それぞれメンテナがいる ◦
開発もサブシステム単位