Linux Kernel勉強会 2018年7月分 に参加しました。

今回は発表が充実していました。

以下、メモです。

ブートシーケンスの概要

特に資料は用意できなかったので、ホワイトボードに書いて概要を説明してみました。

BIOS や UEFI → ブートローダー (LILO や GRUB など) → kernel, initramfs, cmdline → initramfs の /init → real root の /sbin/init (sysvinit とか systemd とか) という感じの話をしました。

Linux kernel 起動前の話

ARM の起動部分の話でした。

コンテキストの話

initramfs の話

initramfsについてを再演してみました。

respberrypi のブートの話

プロセスID、スレッドID

以前の勉強会ではっきりしていなかった部分をちゃんと調べたという話でした。

  • プロセス、スレッド、タスク
  • task_struct の pid がスレッドID で tgid がプロセスID
  • fork(2) と clone(2)
  • fork.c の do_fork
  • getpid(2) と gettid(2) の結果をプログラムを書いて確認
  • top コマンドで H キーでスレッド表示して確認
  • clone(2) の CLONE_THREAD
  • pthread_setname_np
  • pthread_self

セマフォ

実際のソースコードを引用しながら、実装を追いかけていく話でした。

  • カーネルのセマフォの実装を読んでみた話
  • Aeronet のドライバーで実際に使われている部分も読んでみた話

クロージング

時間があれば話をすると言っていたものも含めて、早めに発表が全部終わったので、早めに終わりました。

  • 8月は休み (夏休み)
  • 次回は2018年9月22日(土)の予定
  • テーマ案: yocto (build root)、ドライバーを作ってみよう、情報共有、参考ブログ、バグ披露
Disqus Comments

Kazuhiro NISHIYAMA

Ruby のコミッターとかやってます。 フルスタックエンジニア(って何?)かもしれません。 About znzに主なアカウントをまとめました。

znz znz


Published