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

Russ Cox

Plan9の開発者の一人.今はMITにいるが,6.828: Operating System Engineeringはなかなか面白そうな講義(演習)だなあ.時間があったら見てみよう. http://swtch.com/

Google uses 9P? (続報)

昨日書いたことだが,該当の記述があっさり削除されていた.9fanへの投稿によると,ジョークだったようだ.

Google uses 9P?

Wikipediaの9Pの項目に, Google supposedly use 9P as the underlying protocol for their RPC calls. (see comment from GoogleEmplyee in [1]) とあるんだけど,真偽のほどは?

dial(2)

rcでエコークライアントで,Plan9では,ネットワークをどのようにファイルとして扱っているか書いたけど,プログラミングインタフェースとしてはソケットに代わるどのようなAPIを提供しているのだろうか.それが,dial(2)である. int dial(char *addr, char…

9Pプロトコル

UNIXではファイルサーバ(ファイルシステム)は,カーネル内に作るのが普通である.最近は,FUSEやv9fsのような,ユーザ空間ファイルシステムがあるけど.一方,Plan9のファイルサーバはユーザ空間に実装され,9Pプロトコルで通信する.つまり,ファイルサーバ…

ftpfs

FTPクライアントを考えてみよう.UNIXの場合は独立したアプリケーションであり,コマンドラインインタプリタやコマンドはアプリケーションとして作りこむ必要がある.一方,Plan9は,リソースをファイルとして名前空間にマッピングするファイルサーバとして…

webfs,wikifs

ftpfsの他にもwebfsやwikifsなんてのもある.

ちょっと裏側を解説

閑話休題.ネットワークの話に戻ろう.基本的には,/net/tcp/*/ctlがコントロール用のファイル,/net/tcp/*/dataがデータ通信用のファイルになる./net/tcp/*以下を見ると,ctlとdata以外にも次のようなファイルが存在することがわかる. %cpu ls /net/tcp/5…

後始末(シグナルではなくてノート)

このままだとcatは入力を待ち続けて,終了しない.ctl-Dでも終了しない.なぜだろう?ということでcatをkillする.killもUNIXとはちょっと違っている.killの引数はコマンド名で(pkillに近いね),しかも,killコマンドが本当にプロセスを殺すのではなく,"ec…

rcでエコークライアント

Plan9のシェルはrcである.まず,/net/tcp/cloneというファイルをcatして,その出力を覚えておこう. cpu% cat /net/tcp/clone 5ここからが本番で,/net/tcp/cloneに"connect Linuxマシンのアドレス!ポート番号"を書き込む.このcatプロセスが死ぬとコネクシ…

Linux側のエコーサーバ

今時のLinuxだと,エコーサーバなんか動いていないだろうから,Perlで次のようなプログラムを書いてみた.LinuxマシンのIPアドレスは12.34.56.78とする. #!/usr/bin/env perl use IO::Socket; $s = new IO::Socket::INET(Listen => 5, LocalAddr => '12.34.…

ネットワークのファイルへの抽象化

Plan9というオペレーティングシステムでは,Plan9はソケットインタフェースを採用せず,ネットワークに対しても,通常のファイルに対するインタフェース,つまりopen-read-write-closeを使って操作すると言った.UNIXには/devディレクトリ以下にデバイスファ…

過去のしがらみからの解放

CはCのようだけど,include文が何やら見たことないヘッダーファイルを指しているし,printfじゃなくてprintだったりする.そう,Plan9のCはANSI C ではない.慣れ親しんだstdio APIはここにはない*1.そして,UNIXじゃないので,過去のしがらみに縛られない…

Plan9でHello, world!

まずは,実物を見てもらった方が早いだろう.お約束ということで,まずは"Hello, world!"から.u.hはアーキテクチャ依存,libc.hはアーキテクチャ非依存のヘッダファイルで,この二つは最低限includeする必要がある. #include <u.h> #include <libc.h> void main(int arg</libc.h></u.h>…

Glenda

プロフィールに使っている絵はPlan9のマスコットのGlendaだけど,これもEd Wood監督の「Glen or Glenda」由来なんだろうな.

Plan9という名前の由来

Plan9のホームページには,「Plan 9 from Bell Labs」と書かれているけど,これは史上最低の映画と映画マニアには知られたEd Wood監督の「Plan 9 From Outer Space」に掛けられている.私はこの映画を観たことはないけど,YouTube で検索したら,次のような…

分散オペレーティングシステムとは?

Plan9が最初にリリースされたのは,1992年.これは分散OSの中では,特に早いわけではない.「分散オペレーティングシステム -- UNIXの次にくるもの」って本もあったけど,出版されたのが1991年なんで,Plan9の記述はない.計算機がネットワークにつながり始…

Plan9というオペレーティングシステム

なんとなくこの日記ではPlan9のことについて書いていこうと思う.Plan9はUNIXを生み出したベル研の面子が作った分散OSだけど,最初は簡単な歴史から始めようと思う.UNIXは計算機リソースをファイルとして抽象化することで,コンパクトでポータビリティのあ…