UNIX 7th code reading - 6thとの差分
はじめに
Unix 6th Edition readingが一息ついたので、7th Editionのreadingに移ります。
6thのときと同じように、ここでメモを書いていこうと思っています。
今回は、6thと7thの差分をざっと明らかにして、どういう方針でメモを書いていくかを決めます。
6thと7thの差分
最初に、6thと7thの差分を明らかにすることを試みました。
UNIX PROGRAMMER'S MANUAL Vol.1の"CONVERTING FROM THE 6TH EDITION"という項を読んでみましたが、カーネル内部の大きな変更は無さそうだということがわかりました。
UNIX PROGRAMMER'S MANUALはここで見ることができます。
http://plan9.bell-labs.com/7thEdMan/bswv7.html
"CONVERTING FROM THE 6TH EDITION"から、カーネルに関係する部分を抜き出すと……
- ファイル内部のバイトアドレスがlong integer(32bits)に変更。それに伴い、seekシステムコールはlseekシステムコールに変更。stat, fstatシステムコールで得られる構造体の、ファイルサイズ情報も24bitsから32bitsに変更
- sleepシステムコール(指定した時間に指定したプログラムを実行する)がなくなった。代わりに?alaram, pauseシステムコールを使え
- stty, gttyはioctrlシステムコールという上位互換の?システムコールに置き換え(stty, gttyシステムコール自体は残っているようです)
これだけです。他はユーザランドの話でした。
ただし、Cの仕様や文法が一部変わったため「ロジックはほとんど同じだが、コード自体は結構代わっている」箇所は多いです。
方針
ソースコード自体も少し眺めてみましたが、細かい変更がいくつか見受けられました。(rootのinode numberが2になっていたり、u構造体でroot directoryを持っていたり)
また、今回から追加されたシステムコールもいくつかあるようです。
というわけで「ソースコードをざっと眺めていって、気づいたところをメモしていく」という方針でメモを書いていこうと思います。
なんとなく、こんな順番で目を通していこうかと思います。
- boot
- file system
- process
- interrupt, trap
- userland?
終わりに
6thと7thのカーネルの差分は、思っていたより遥かに少ないようです。「方針」で挙げた程度のことならすぐに終わってしまいそうです。
それではあまりにつまらないので、もしかしたらユーザランドの方にも目を通していくかもしれません。
また、既に7thを読み終わった後のことも考えています。次はBSDに手を出そうと思っていまして、4.4BSDの本を購入済です。
- 作者: Marshall Kirk McKusick,Keith Bostic,Michael J. Karels,John S. Quarterman
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 1996/05/10
- メディア: ハードカバー
- 購入: 1人 クリック: 2回
- この商品を含むブログ (2件) を見る
この本は読んでいてわくわくしますね。6th, 7thではまだ実装されていないネットワーク、NFS、ページングなどの記述もあります。(この本の読書会やるって言ったら人集まるかな)
というわけで、7th editionでも引き続きよろしくお願いいたします。