今OSを自作する意味は?

ちょっと前に/.Jに「今OSを自作する意味は?」という記事が投稿されていた.研究OSの視点で考えると,自分のアイデアの有効性を示すためには動くシステムが必要だ(まぁ,論文を書くために必要なデータを取るぐらいは).だからOSを自作する(手もある)ということになる.例えば,ファイルシステムやスケジューラの新しいアイデアであれば,Linuxあたりをいじる方が手間が少ない.それにユーザ数が多い既存OSに実装した方が,興味をもってもらえる可能性が高いし,比較評価もしやすいので,説得力が大きい.しかし,OSの基本的なポリシを変更する必要があり,スクラッチから書いた方が早いと判断すれば,新しいOSを作ることになる.Plan9はその例だろう.9Pに基づいたシステムコンポーネントの構築,プロセスごとの名前空間,スーパユーザがないセキュリティアーキテクチャを,UNIX上に実現することは不可能ではなかっただろうが,既存のポリシと新しいポリシが混在するキメラのようなシステムは,整合性を取るのが難しいし,実装は面倒なので,Plan9を新たに作ったほどのインパクトはなかったに違いない.そして,みんなにアイデアが認められれば,汎用OSにもそのエッセンスが取り込まれていく.Linuxのclone(2)はPlan9のrfork(2)の影響を間接的に受けているし,9Pも移植されたように.
さて,そもそもOSの役割とは何だろうか? OSの一般的な定義は,計算機システムの資源(リソース)を管理するソフトウェアになるだろうか.OSを設計する上で重要なのは,管理すべき貴重な資源は何かという点を考えることだ.もちろん何が貴重であるかは時代や用途によって違うので,近い将来を予想して設計する必要がある.計算機が生まれたばかりで,CPUがもっとも貴重な資源であったときは,CPUをもっとも効率的に動かせるようなOSが求められた.OSの原形である(FORTRAN)モニタ*1は,FORTRANのジョブを効率よく実行する,単位時間当たりのスループットを上げるために生まれた.また,組込み機器であれば,CPUが無駄に走ろうと,リアルタイム性を保証したり,割込みの応答性を上げることが最優先で求められる.
ハードウェアがどんどん安く,高性能化している現在,汎用OSにとって,もっとも貴重な資源といったら,人的資源なのではないだろうか.となれば,OSの設計者は人的資源,つまり生産性か?を最大化するようなシステムを考えなければならない.生産性は客観的評価が難しいから,論文を書くのは大変そうだけど.Plan9の設計者らは,プログラマがプログラムを書きやすいOS,システム管理者が管理しやすいOSを狙っていたのではないだろうか.かつてUNIXがそうだったように.すべての資源をファイルで抽象化するというルールを徹底することは,そういうことではないだろうか.

*1:このモニタはIBMなどの計算機メーカでなく,ノースアメリカン航空という計算機ユーザのニーズから開発された