2006-01-01から1年間の記事一覧

NFSv4

前回,9PとNFSでは,ステートフルかステートレスかという違いがあると書いたけど,NFS version 4は,ステートフルになったんだった.昔,そんな記事を読んだ記憶があったけど,すっかり忘れていたな.ステートレスでうれしいのは,サーバが状態を持たないの…

chatty9p〜9Pプロトコルをのぞき見る

昨日はファイルサーバの雛形について書いたが,9Pプロトコルをハンドリングするライブラリlib9pを使ったので,実際にどんなメッセージがやり取りされているかわからなかった.そこで,今日はメッセージのやり取りについて具体的に見ていこうと思う. lib9pは…

read/writeの中身

続いて,read/writeの中身を埋めていこう.コードを解説する前に,一つおさらい.「プロセスグループ」にも書いたように,各ファイルにはQidというファイルサーバローカルで,ユニークな識別子が付けられている.以下のコードでは,このQidを利用して,ctlフ…

ファイルサーバの雛形

何度も書いているが,Plan9ではすべての資源,サービスはファイルに抽象化される*1.そして,資源をファイルに抽象化する実体がファイルサーバである.UNIXとは異なり,ファイルサーバはカーネル内で動作するのではなく,ユーザアプリケーションである.今日…

Plan9を題材にしたOSの教科書

Francisco J Ballesteros氏によるテキストのドラフトが公開された. Introduction to Operating Systems Abstractions Using Plan 9 from Bell Labs まだ,ぱらぱらとしか目を通していないが,400ページ近くの労作だ.目次はこんな感じで,一通りの内容は網…

Webからのソースコード閲覧

等価変換な日々でPlan9のソースコードをGLOBAL化したものが公開されている.ちなみに私はgonzuiを使ってます(gonzuiでPlan9のコードを読む).オフィシャルページで使われているプログラムは何だろう? Plan9 Release 4 のソースを HTML 化したもの browse the…

utraceとacid

今月のLinux Kernl Watchによると,RedHatのRoland McGrath氏がptraceの代替となるutraceというシステムコールを開発中とのこと.ptraceに関しては,アーキテクチャごとに実装具合が違っていたり,マルチスレッドとの整合性がいまいちだったり,不満を聞くこ…

sysctl

sysctlは4.4BSDで導入された,実行時にカーネルのパラメータを設定するためのインタフェースである.有り体に言えば,カーネルにおけるグローバル変数で,ちょっとしたパラメータチューニングは,カーネルを再コンパイルすることなく変更できるので,便利だ…

Plan9の誕生日は?

id:umedamochioさんが「Linus Is Happy」という記事を書かれている.参照されているRed Herringのインタビュー記事はこれ.1991年9月17日にLinux 0.01 (最初は Freax という名前だった)をアップロードしたので,もうすぐ15歳になるそうな. Plan9 1st editio…

Pegasus 2.2

有澤氏が開発しているWebサーバPegasusの新しいバージョンが公開された. Pegasus Pegasus 2.2

Plan9 on Xen 3.0.2

今週末はPlan9をXen上で動かそうと格闘していた.一応,ブートするところまでは確認できた.以下はそのメモ. 基本的に参考にしたのは,次のページ.UbuntuはFedoraCoreと多少,勝手が違うようなので,Howtoforgeの記事が参考になった.Xenが動いてしまえば…

dot file

UNIXでは,"."から始まるファイル名(通称dot file)を各アプリケーションの設定ファイルに使う慣習になっている.lsしてもdot fileが表示されないのは,lsがdot fileを無視するようにコーディングされているからだ("-a"オプションを付けると表示される). Pla…

drawterm

UNIXやWindowsからPlan9にアクセスするための,VNCやリモートデスクトップのようなターミナルソフト*1.作者のRuss Coxさんのページからダウンロードできる. $ tar zxvf drawterm.tgz $ make CONF=unix認証サーバとCPUサーバを指定して起動する. $ drawter…

[AMD64] seek(2)

しつこく,seekのネタ.mkfileのAMD64のエントリは次のようになっている.64ビットのmovはmovq命令だし,ソフトウェア割込みにはsyscall命令を使っている.汎用レジスタも増えたし,引数はレジスタ渡しを豪勢に使っているのかと思ったら,A Manual for the P…

カーネルのソースコードを読む

最近,id:hira_sosukeさんや,id:hyoshiokさんが,ソースコードを読むことの重要性を書かれている(「21世紀のデザイン」).では,カーネルに興味を持つ人は何から読めばいいんだろう?id:hyoshiokさんが,「Lions' Commentary on UNIXを読む。」でLion氏の言…

106配列キーボード

デフォルトの状態では,キーボードの設定は101配列になっている.いわゆる日本語キーボードを使う場合は,kbmapで設定できる.kbmapを起動すると,対応する配列名が列挙されるので,jpをクリックし,"q"で終了する.

[Linux] llseek(2)

前回は,Plan9のシステムコールで引数や戻り値がレジスタサイズより大きい場合,どのように対処しているかについて書いた.そこで,Linux/x86ではどうやっているのかと疑問が湧いてくる.例えば,llseekは64bitのオフセットを扱う必要がある.答えは,manペ…

seek(2)のなぞ

mkfileの説明で端折ったが,seek(2)のときに処理を場合わけしている.これは何をしているんだろうか?もう一度,該当部分を引用する.int命令の後なので,戻り値関係だと予想できる."4(PC)"は「PC + 4バイト」ではなく「PC + 4命令」の意味なので,AXが-1で…

システムコールの実装

今までopen(2)やdup(2)といったシステムコール関数を見てきたけど,それらのエントリに至る過程は無視してきたので,今日はその辺のコードを読んでみよう.Plan9のシステムコール数にも書いたけど,システムコール番号は,libc/9syscall/sys.hで定義されてい…

シェルのリダイレクション

昨日に続いて,UNIXとの違いについて小ネタ.bashで,標準出力(stdout),標準エラー出力(stderr)を/dev/nullに出力したい場合や,makeでstdout,stderrの両方をログに残したい場合には次のように書く. bash% cmd > /dev/null 2>&1 bash% make 2>&1 | tee ma…

dup(2)

久々にカーネルのコードも覗いてみよう.Plan9のdup(2)はUNIXのdup2相当で,dup,dup2の区別はない.dupの挙動がわかっていれば,読むのは簡単だろう.ChanはUNIXのオープンファイル構造体だと思えばよく,f->fd[]はプロセスごとのファイル記述子表である. …

プログラミング言語 PLAN9

9fansで,Programming LANguage 9という教育用プログラミング言語が紹介されていた.LOGOのような言語で(亀じゃなくてUFOを動かすようだ),命令数が9つだからProgramming LANguage 9(PLAN9)だそうだ.

ディレクトリのパーミッション

論より証拠.まずはLinuxでの結果から示そう.aというディレクトリの下にbというファイルを作る.ディレクトリのデフォルトパーミッションは755であり,実行許可を意味するxビットがすべて立っている. % mkdir a % touch a/b % ls -l drwxr-xr-x 2 oraccha …

rcにはbreakがない

cshやbashにあってrcにないものの一つにbreak構文がある.ってなことを書く予定.Rc ― The Plan 9 Shellには,次のように書かれている. I deleted the builtins export, readonly, break, continue, read, return, set, times and unset because they seem …

rcの参考文献

まずは,manや上に示した論文,次の文書から. rc - the Plan9 shell - rc - the Plan9 shell (2) - で,rcって何かの略なのかな?cはC言語のc?

今OSを自作する意味は?

ちょっと前に/.Jに「今OSを自作する意味は?」という記事が投稿されていた.研究OSの視点で考えると,自分のアイデアの有効性を示すためには動くシステムが必要だ(まぁ,論文を書くために必要なデータを取るぐらいは).だからOSを自作する(手もある)とい…

intrはCtrl-cではなくDEL

Plan9を使い始めのころは,プログラムを終了しようと思って,Ctrl-cを押しても効かないので,戸惑う.でも,intrはCtrl-cではなく,DELに割り当てられているのだ.

Plan9の配管工

WindowsやMacOSでは当たり前なアプリケーションと(データ)ファイルの対応付けについて,UNIXでは統一した仕組みが存在しなかった.例えば,Windowsはリポジトリというデータベースにアプリケーションと拡張子の対応付けを持っている. Plan9では,アプリケー…

acmeとwin

acmeでwinを実行(タグかどこかに"win"と書いて,中央ボタンをクリック)するとシェルが起動する.Emacsでいうところのシェルモードのようなものだが,acmeの各ウィンドウ(Emacsのバッファ)はファイルとして抽象化されているので,いろいろ変わったことができ…

Free Live OS Zoo

いろんなOSのQEMUイメージを配布しているFree OS Zoo Projectが,QEMUの入出力をVNC経由で飛ばし,Webブラウザから操作できるというFree Live OS Zooを提供している.ユーザが必要なのはブラウザとJavaプラグインだけ.提供されるOSのリストにPlan9もちゃん…