plan9: 2003年12月アーカイブ
17 message typesからなる。
- 3はinit/auth connectionに使われる
- 14はmanipulate objectに使われる
- session/attach messageは接続をユーザの認証して、設立する
そのサーバーのrootを指すauthenticated channelを取得
- clone messageは新しく指定されたchannelのクローンを作る。
- walk messageは、下のレベルへ移動する
- stat/wstat messageは、channelでポイントされたファイルの属性を読み書き
- open messageは、channelに対して、続いて起きる読み書きの準備をする。
- read/write messageは、ファイルへの読み書き
- create/remove messageはファイルを作成・削除
- clunk messageは、ポイントしてるファイルへの影響無しにチャネルを破棄する。
- 9P messagesでキャッシングについて考えているものはない。
- 必要ならば、サーバ内でまとめてやるか透過的なファイルシステムとして実装される
ここはかなりがんばってるなぁ。
勉強になる。
"Plan 9 at the Advanced Computing Lab" site
ACL plan 9 network
plan9の提供するシステムコールを調べてみた。
% cd /sys/src/libc/9syscall
% cat sys.h
#define SYSR1 0
#define _ERRSTR 1
#define BIND 2
#define CHDIR 3
#define CLOSE 4
#define DUP 5
#define ALARM 6
#define EXEC 7
#define EXITS 8
#define _FSESSION 9
#define FAUTH 10
#define _FSTAT 11
#define SEGBRK 12
#define _MOUNT 13
#define OPEN 14
#define _READ 15
#define OSEEK 16
#define SLEEP 17
#define _STAT 18
#define RFORK 19
#define _WRITE 20
#define PIPE 21
#define CREATE 22
#define FD2PATH 23
#define BRK_ 24
#define REMOVE 25
#define _WSTAT 26
#define _FWSTAT 27
#define NOTIFY 28
#define NOTED 29
#define SEGATTACH 30
#define SEGDETACH 31
#define SEGFREE 32
#define SEGFLUSH 33
#define RENDEZVOUS 34
#define UNMOUNT 35
#define _WAIT 36
#define SEEK 39
#define FVERSION 40
#define ERRSTR 41
#define STAT 42
#define FSTAT 43
#define WSTAT 44
#define FWSTAT 45
#define MOUNT 46
#define AWAIT 47
#define PREAD 50
#define PWRITE 51
% grep -v '_' sys.h | wc -l
37
'_'で始まるのは、番号がre-assignされている。
BRK_はbrk(), sbrk()から呼ばれているからカウントするべきだが、代わりにSYSR1をカウントしている。
よって、大体本質的なシステムコールは40個未満であることが分かる。
これだけをパーっとみても、どれだけ抽象化が美しく行われているかわかる。
ちなみにFreeBSD 4.8は393個, NetBSD 1.6が345個、solaris8が255個、linux2.2.20で237個という
ことで、まぁどれだけ少ないか分かるわな。そういや、amoebaも少ないって書いてあったな。
OSの基礎と応用、AmoebaとMachの比較によると、以下のようになる。
Amoeba 30個、 v7 UNIX 45個、 4.2BSD 84個、 Mach 153個、SunOS 4.1.1 165個
さて、現在のAmoebaは何個なんだろう。でも比較的Amoebaの哲学は、
「完璧とは、追加するものが何も残らなかったときになされるのではない。奪うものが
何も残らなかったときになされるのである。」という有名な格言を基にしているので、
そんなに増えてないのかな。とりあえず、知りたいところだ。
