昨夜FreeBSD勉強会に参加しました。

2度目ですが、今回は早目に行って会場近辺で食事できる(買える)場所を確認しました。いくつか見つかったので今後便利になりそうです。

肝心の勉強会の方はなまじっか少し予習して気が緩んだのか、直前の食事のせいか、時々眠くなってしまい集中力が今一でした。自分にとって難しい内容なのに集中力が落ちると理解度がかなり下がってしまいわざわざ参加する意義が薄くなってしまいます。次回から注意したいと思います。

UNIXv6で出てくる変数名がFreeBSDにも出てくる場合があり、これほど進化してもルーツの影響は残っているんだなと感心しました。

内容としては、Context Switchingには自主的なものと自主的でないものがある、ロックにはデータ構造を守るための短期のもの、すぐに事象が発生することが予想される中期のもの、いつ事象が発生するか分からない長期のものがあり、短期のものはturnstile、中長期のものはsleepqueueを使う等の話題がありました。
「はじめてのOSコードリーディング」の3.4プログラムの実行 まで復習しました。

以前はestabur()とsureg()はかなり曖昧だったのですが今回しっかりと理解できました。その際、p104の図3.15はかなり数値が間違っていることに気付きました。自分の理解では、400→272、272→144、64→63、ただしスタックの64はそのまま、が正しいと思います。

この調子で復習を続けようと思います。
「はじめてのOSコードリーディング」の3章を 3.3実行プロセスの切り替え まで復習しました。

以前は一番もやもやしていた箇所ですが今回はかなり納得できました。スタックの動作も最後まで追いかけることができました。やはり時間が経つと頭に定着するものもあるということでしょうか。

それでも分からない箇所はあるので、この本の勉強会をやっていた当時に今位理解していれば中身のある質問ができて疑問も解消できたのかなと思うと口惜しいです。

この調子でFreeBSD勉強会の刺激を活かしてUNIXv6の理解を深めていきたいと思います。