Plan9とGNU/Hurd

id:kohtaniさんが,組込みリアルタイムOSを開発されている立場から,GNU/Hurdについて書かれている.

GNU/Hurdは名前こそ知っていたが,なんとなく近寄り難い感じがして,ちゃんと調べたことがなかった.GNU/HurdマイクロカーネルOSで,OSのサービスはユーザ空間で動作する複数のサーバプロセスによって提供される.例えば,Hurdのサーバといった感じ.粒度が細かいなぁ.LP49の目指すところはこのようなモジュール化,コンポーネント化かもしれないけど,オリジナルのPlan9はモノリシックであって,カーネル自体はコンパクトかつソリッドであるべしといった雰囲気を感じる.

面白いなと思ったのは,トランスレータという仕組みだ.

Hurdではファイル操作に関連するサーバをトランスレータと呼ぶ。

個々のファイルに関連付けられたトランスレータは、標準的なファイル操作をそれぞれ固有に実装できる。実際には個々のトランスレータはinodeと関連付けされており、settransコマンドを使用して、inodeと結びつける。

リンク先には例としてマウントポイント,デバイスファイル,シンボリックリンクなどが挙げられている.トランスレータはサービスとinodeをマッピングする機構だと考えると,Plan9のファイルサーバと考え方は近いのかな? サーバと通信するためにはポートを取得する必要があり,サービス名をポートに変換する名前サーバとしてファイルシステムを利用するというのは,UNIX系のOSとしては自然な発想だと思う.

なるほどと思うけど,この辺がMULTICSで産まれて,UNIXで洗練された階層化ファイルシステムの限界じゃないかな.ファイルシステムに縛られなければ,もっと柔軟なシステムが考えられるかもしれない.