9章は何度も読み直して当初理解できなかった箇所が理解できたりしてきたのに都合が合わず勉強会には参加できませんでした。残念!

次の勉強会は10章とのことで少しだけ読んでみましたが、9章よりは理解しやすいのではないかと思っていた10章は意外と難しそうです。要はそれより前の章で理解してないかったりそもそも読んでない箇所があるせいだと思われます。

また3回位読めば見えてくるのかなあ。とりあえずがまんして勉強してみます。

「はじめてのOSコードリーディング」読書会 12回目 に参加しました。

今回はBSD本の読書会と一緒だったのでv6とは交互に進めたことと、またしても都合で16時過ぎに早退しなければならなかったのでv6に関してはbmap()の説明しか聞けませんでしたが、やはり人の話を聞くのは違うと思いました。今まで曖昧だった箇所が理解できました。

たまたまらしいのですがBSD本の方もファイルシステムの部分だったのでv6とinodeがどう違うかが分かって興味深かったです。v6ではあるファイルは特定の時刻においては直接参照と間接参照のどちらか1つなのですが、BSDではファイルが大きかった場合、その先頭部分のブロックは直接参照、途中が間接参照、その先が二重間接参照、その先が三重間接参照と同時に複数の参照方法が用いられること、特に小さいファイルの場合はinodeの拡張領域にデータを置くことで一切参照しないことも可能という情報は参考になりました。

再度9章を読み終えました。

9.7ではファイルパスを入力としinodeエントリを返すnamei()が意外と難しかったです。

意外と言っているのは、namei()の機能は非常に分かりやすいものなのでコードも理解しやすいはずだという第一印象の割には難しかったということです。

全体的な構造は理解できましたが細部はまだあやしいので、例えばファイルパスが/dir1/dir2/a.txtで、このファイルを探す場合、新規作成する場合、削除する場合で、なおかつこのファイルが既に存在している場合と存在していない場合にソースコード上のどこでどう処理されてどこで関数を抜けてくるのか追えるようにならないとだめですね。