UnixLite

一般的に,カーネルはちょっとのアセンブリC言語で書かれる.太古の昔はみなアセンブリで書かれていたが,Multicsでは高級言語(PL/I)でカーネルを書くというチャレンジを行った.後はよく知られているように,UNIXを実装するためにC言語が作られた(UNIXも最初はアセンブリで書かれていた).アドレス空間のモデルなど,UNIXライクなOSを書くには,C言語は都合がよいので,現在でもよく使われている.Plan9もこの点は踏襲している.

一方,C++カーネルを書くという試みもあちこちでなされている.最近,携帯電話でよく使われているSymbianOSもそうだし,Monaもそうだ.BeOSってのもあったな.

で,最近見つけたのが,UnixLiteC++で実装されたUNIXクローンのようだ.Linuxとバイナリ互換で,簡単なHTTPサーバを動かすぐらいのTCP/IPスタックも実装されている.

C++カーネルを書くメリットって何だろう.UnixLiteは教育目的というのが頭にあるらしく,モジュラーになって,理解しやすいと言っている.id:kosakiさんにコメントをもらったので,調べてみたけど,UnixLiteで使っているのは,メンバ関数,単一継承,仮想関数といった基本的な機能だけで,例外ハンドリングのような面倒そうな部分は使われていない.