UNIX 7th code reading - 6thとの差分

はじめに

Unix 6th Edition readingが一息ついたので、7th Editionのreadingに移ります。

6thのときと同じように、ここでメモを書いていこうと思っています。

今回は、6thと7thの差分をざっと明らかにして、どういう方針でメモを書いていくかを決めます。

ソースコード

このサイトを使ってソースを読んでいます。

http://www.tamacom.com/tour/kernel/unix/

検索機能が便利です。

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"から、カーネルに関係する部分を抜き出すと……

  1. ファイル内部のバイトアドレスがlong integer(32bits)に変更。それに伴い、seekシステムコールはlseekシステムコールに変更。stat, fstatシステムコールで得られる構造体の、ファイルサイズ情報も24bitsから32bitsに変更
  2. sleepシステムコール(指定した時間に指定したプログラムを実行する)がなくなった。代わりに?alaram, pauseシステムコールを使え
  3. stty, gttyはioctrlシステムコールという上位互換の?システムコールに置き換え(stty, gttyシステムコール自体は残っているようです)


これだけです。他はユーザランドの話でした。

ただし、Cの仕様や文法が一部変わったため「ロジックはほとんど同じだが、コード自体は結構代わっている」箇所は多いです。

方針

ソースコード自体も少し眺めてみましたが、細かい変更がいくつか見受けられました。(rootのinode numberが2になっていたり、u構造体でroot directoryを持っていたり)

また、今回から追加されたシステムコールもいくつかあるようです。

というわけで「ソースコードをざっと眺めていって、気づいたところをメモしていく」という方針でメモを書いていこうと思います。

なんとなく、こんな順番で目を通していこうかと思います。

  1. boot
  2. file system
  3. process
  4. interrupt, trap
  5. userland?

終わりに

6thと7thのカーネルの差分は、思っていたより遥かに少ないようです。「方針」で挙げた程度のことならすぐに終わってしまいそうです。

それではあまりにつまらないので、もしかしたらユーザランドの方にも目を通していくかもしれません。

また、既に7thを読み終わった後のことも考えています。次はBSDに手を出そうと思っていまして、4.4BSDの本を購入済です。

The Design and Implementation of the 4.4 BSD Operating System (Addison-Wesley UNIX and Open Systems Series)

The Design and Implementation of the 4.4 BSD Operating System (Addison-Wesley UNIX and Open Systems Series)

  • 作者: 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でも引き続きよろしくお願いいたします。