Upgrade to Pro — share decks privately, control downloads, hide ads and more …

『Linuxのしくみ』増補改訂版発売記念イベント ~ Linuxのしくみのしくみ ~

『Linuxのしくみ』増補改訂版発売記念イベント ~ Linuxのしくみのしくみ ~

以下イベントの発表スライドです

https://connpass.com/event/261999/

Satoru Takeuchi

October 14, 2022
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. 著者: 武内 覚 • 会社員として ◦ むかし: 富士通でLinuxカーネルの開発、サポートに従事 ◦ いま:

    サイボウズでcybozu.comの新インフラのストレージ開発に従事 • 個人として ◦ 2018年2月: 「Linuxのしくみ 第一版」執筆 ◦ その他いろいろ情報発信 ▪ 雑誌やWeb媒体に様々な記事を寄稿 ▪ IT技術系同人誌の販売 ▪ youtube動画作成 4
  2. モデレータ: @nekomatu • OSSが好きな組込み系Linuxエンジニア ◦ 好きなライセンスはGPLv2 ◦ キャリアは10年程。一時、クラウドベンダーでテクニカルサ ポートに従事してたことも。 •

    プライベート ◦ RISC-V勉強会やKernel/VM onlineなどの コミュニティ技術イベントの主催運営 ◦ VR系Vtuber活動 @nekoi7yu ◦ Ethereumを中心にクリプトエコノミーなども関心あり 5
  3. 本書の概要 • Linuxカーネルを浅く広く学ぶ • 章立て 1. Linuxの概要 2. プロセス管理(基礎編) 3.

    プロセススケジューラ 4. メモリ管理システム 5. プロセス管理(応用編) 6. デバイスアクセス 7. ファイルシステム 8. 記憶階層 9. ブロック層 10. 仮想化機能 11. コンテナ 12. cgroup 7
  4. 2. 実験(Pythonで書かれた実験プログラム) $ cat sched.py … def child_fn(n): # CP

    progress = 100*[None] for i in range(100): for j in range(nloop_per_msec): pass progress[i] = time.perf_counter() f = open("{}.data".format(n),"w") for i in range(100): f.write("{}\t{}\n".format((progress[ i]-start)*1000,i)) f.close() exit(0) … … for i in range(concurrency): pid = os.fork() if (pid < 0): exit(1) elif pid == 0: child_fn(i) … 14 一定時間CPUを消費し続けて 進捗をファイルに保存 CPUを消費し続ける プロセスを作る
  5. 3. データ採取 $ ./sched.py 2 $ ls 0.data 1.data …

    $ cat 0.data 16.48986899817828 0 17.484944997704588 1 18.473731994163245 2 19.432729997788556 3 20.371213991893455 4 21.83759000035934 5 22.914084998774342 6 23.85638099804055 7 24.812530988128856 8 … 15
  6. 章が増えた 1. Linuxの概要 2. プロセス管理(基礎編) 3. プロセススケジューラ 4. メモリ管理システム 5.

    プロセス管理(応用編) 6. デバイスアクセス 7. ファイルシステム 8. 記憶階層 9. ブロック層 10. 仮想化機能 11. コンテナ 12. cgroup 21
  7. 実験プログラムのGo,Python化 • 第一版 ◦ ほとんどC言語で書かれている ◦ カーネルレイヤの挙動を知るためには Cがほとんど唯一の選択肢だと思い込んでいた • 増補改訂版

    ◦ ユーザが多そう&これからも増えそうな Go,Pythonでほとんど書き直した ◦ Cじゃないとダメ」なケースはほぼなかった。思い込み厳禁 27
  8. 誤字脱字などの不備を可能な限り減らす • 背景 ◦ 第一版には大小あわせて100個以上の誤りが存在していた(今は修正済) ◦ コンテンツ以外のところでの評価を大きく下げた • 対策 ◦

    様々なバックグラウンドを持つ25人の技術者にレビューを依頼 ▪ Linuxカーネルのベテラン開発者 ▪ Linuxじゃないカーネルのベテラン開発者 ▪ カーネル以外のベテラン技術者 ▪ 対象読者に近い人 ◦ 本書のことを全く知らないかたに外部校正を依頼 34
  9. 今後書こうかなと思っている本(変わるかもしれません) • ソースコードの読み方 ◦ 読む目的と対象OSSを決めて図解しながらノウハウを紹介 ◦ 進行中 • 初心者がプログラマになるためのすべてを一冊で解説 ◦

    開発環境 ◦ プログラミング言語 ◦ ソースコード管理システム ◦ などなど • スーパーマニアックなカーネルの本 ◦ たまにはこういうのも書きたい ◦ まったく売れなさそうなので同人誌にするか ? 38