2006-04-01から1ヶ月間の記事一覧

unionfs

似たような仕掛けは昔からUNIXにもあって,unionfsというファイルシステムが知られている.もともとはサンが開発したTranslucentファイルシステム(で提案されたアイデア)を4.4BSDのスタッカブルファイルシステム機構上に実装したのがunionfs.基本的なアイデ…

ユニオンディレクトリ

昨日,プロセスグループのエントリで書いたけど,Plan9のファイルシステム(名前空間)はユニオンディレクトリを提供している.この仕掛けを使うことで,/binを/386/bin(アーキテクチャごとの実行バイナリ),/rc/bin(シェルスクリプト)などのユニオンにするこ…

プロセスグループ

プロセスごとに名前空間を持つと言ってきたが,正確にはプロセスグループごとに名前空間を持つと言える.Proc構造体はプロセスグループを示すPgrpへのポインタを持っている.UNIXの場合は,名前空間はシステムで一つだったのでマウントテーブルはシステムで…

bindmount関数からcmount関数

bind,mount,_mountとも引数が違うだけで,同じbindmount関数が呼ばれている. port/sysfile.c 1075: long 1076: sysbind(ulong *arg) 1077: { 1078: return bindmount(0, -1, -1, (char*)arg[0], (char*)arg[1], arg[2], nil); 1079: } 1080: 1081: long 1…

mountとbindの違い

名前空間を変更するシステムコールとして,mount(2)とbind(2)の二つが提供されていて,カレントプロセス,または同一名前空間グループに属するプロセスの名前空間を変更できる. int bind(char *name, char *old, int flag) int mount(int fd, int afd, char…

UTF-8とルーン文字

Plan9の内部文字コードはUTF-8(Universal Character Set Transformation Format, 8 bits wide)である.UTF-8自体はWebの世界でマルチバイトを扱うエンコーディング方式としてデファクトになっているが,そもそもUTF-8はASCIIとの親和性を保ちつつ,ファイル…

ファイル名の解釈

ファイル名から資源へのマッピングは基本的にはファイルサーバが行なっているが,カーネル内のデバイスドライバによって処理される特殊ファイルも存在する.ls -lの結果の左から二番目のカラムがファイルの種類を示している.次は/netの結果だけど,"I"はip…

ベル研がフランスに!

9fansに流れたメールによると,LucentとAlctalの合併にともなって,Bell Labsがフランスに移転して,Frog Labsに.Plan 9はSystem 9に改名され,マスコットのGlendaはMauriceに.もちろんエイプリルフールネタ.ネタなのが明らかすぎてイマイチ.(追記) 日経…

open(2)

名前空間の取っ掛かりとして,open(2)システムコールから読んでみようと思う.UNIXでもお馴染みのopen(2)である. int open(char *file, int omode)アーキテクチャ依存の例外処理部ははぶき,sysopen関数から見ていく.システムコールを処理する関数は「"sys…