Haskell/OCaml製のOSって何があるんでゲソ?

Posted on August 18, 2012 / Tags: haskell, ocaml, os

Table of contents


ざっくり検索してみると、こんなところみたいでゲソ。

それぞれぱっと見てみた感想なんでゲソが、まずどれも日常のデスクトップとして使えるしろものではないでゲソ。 さっとコードを読むかぎりだと、割り込みをポーリングでひろうようになっていたり、 OCamlのシグナルハンドラに割り込みを直結させるようになっていたり、 いろいろつぎはぎ感があるでゲソ。 またHouseやHaLVMはpatchのあたったGHC6でしかコンパイルできないようでゲソ。 というかワシもコンパイルできなかったでゲソ。。。

ん?disってるって?そうでゲソ。わるイカ? まぁ、これらのソフトウェアは実現可能性を探索するためのコンセプトに過ぎないのでゲソ。 これらのプロジェクトが存在したからこそ 「がんばればデスクトップとして使えるkernelを強い型を持つ言語で設計できる」 という勇気がわくでゲソ。

個人的に有望そうなプロジェクトはsnowflake-osに見えるでゲソ。 コードはキレイではないでゲソが、 AC’97のサウンドドライバまで持っているでゲソ。 サウンドドライバはソフトリアルタイムなので、真面目に作ったら大変なはずじゃなイカ。 しかもこのプロジェクトは2012年3月まで生き延びている形跡があるでゲソ。 継続は力でゲソ!

これらのプロジェクトの何が問題?

これらのプロジェクト中のコードを読むかぎりMDとMIの切り分けや、割り込み処理、 メモリマップが既存のUNIXモドキkernelと比較して、たいへん、、、その、、、稚拙でゲソ。 これらBSDから脈々と受け継がれてきた秘伝のタレ、じゃなかったkernel内部のモジュール分割と抽象化を捨ててしまっているでゲソ。 気持ちは大変よくわかるでゲソ。関数型言語を使った場合にC言語でつちかわれたデザインが正しいという可能性は低いでゲソ。

ただ、イキナリそのkernelの全ての抽象化をイチからやり直すというのは現実的な解なのカ? 1977年から2012年、つまり35年もの歴史を一気にスクラッチから全く異なる別解を得る。 とほうもない知能と腕力が必要そうでゲソ。。。

教訓として言えるのは、まず最初は典型的なUNIXモドキOSのモノリシックkernelの設計をそのままパクって、 設計言語だけを変更した方が安全な道かもしれない、ということかもしれないでゲソ。

Metasepiに再利用できそうカ?

Haskell製の方しかあまり調べてないでゲソが、 再利用できそうなプロジェクトはありそうでゲソ。

HaLVMには HaNS というTCP/IPプロトコルスタックがあるでゲソ。 これは最初のネットワークドライバを書く際には参考になりそうでゲソ。 ただしMD側の抽象化は不足してそうでゲソが。。。 また、 A Principled Approach to Operating System Construction in Haskell によると、monadicなハードウェア抽象化をすることが可能だとあるでゲソ。 ひょっとしたら御利益があるかもしれないでゲソ。

本当はOCaml製のソースコードの検証も必要なんでゲソが、 現状では手がまわっていないでゲソ。。。

blog comments powered by Disqus