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

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

UNIXには/devディレクトリ以下にデバイスファイルが存在するように,Plan9では/net以下がネットワークに対する名前空間(ファイルシステムのツリーを想像してもらえればよいが,Plan9の場合,プロセスごとに名前空間を持つことができる)になる.UNIXのソケットは,プログラムからファイル記述子を介して操作できるが,専用のAPIを使う必要があり,ファイルシステム上のファイルとして見えるわけではない.つまり,ローカルホスト上の資源とリモートホスト上の資源を扱う場合に,異なる作法に乗っ取ったプログラミングが必要になる.Plan9では,ネットワーク透過に資源を扱うために,ネットワークに対するファイルへの抽象化を拡張している.

では,Plan9からLinux上で動作するエコーサーバにアクセスする例によって,具体的に見ていこう.なお,Plan9側ではCでプログラムを書かずに,シェルスクリプトだけで通信してみる.