typesafe osの試み

23
Type Safe OSの試み @mzp / ocaml-nagoya 13826日月曜日

Upload: hiroki-mizuno

Post on 15-May-2015

1.664 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: TypeSafe OSの試み

Type Safe OSの試み@mzp / ocaml-nagoya

13年8月26日月曜日

Page 2: TypeSafe OSの試み

自己紹介• Twitter: @mzp

•気付いたら主催者になっていた系男子

13年8月26日月曜日

Page 3: TypeSafe OSの試み

自己紹介 その2•関数型系キャラクター、ことりちゃん

•ご自由にお使いください

•ステッカーくばってます

tkotori.github.io

13年8月26日月曜日

Page 4: TypeSafe OSの試み

OCamlMeetingの発表要約

• OCamlでWebアプリを作りたいなら、Heroku + buildpack-ocamlを使いましょう

•フレームワークはEliomがおすすめです

13年8月26日月曜日

Page 5: TypeSafe OSの試み

Heroku以外の選択肢• Amazon EC2で動かしたいこともある

•適当なLinuxをいれればOCamlは動く

•ただし、別の選択肢もある

13年8月26日月曜日

Page 6: TypeSafe OSの試み

13年8月26日月曜日

Page 7: TypeSafe OSの試み

要約

13年8月26日月曜日

Page 8: TypeSafe OSの試み

1. Linux/MacOS Xで開発する要約

13年8月26日月曜日

Page 9: TypeSafe OSの試み

1. Linux/MacOS Xで開発する2.コンパイルする

要約

13年8月26日月曜日

Page 10: TypeSafe OSの試み

1. Linux/MacOS Xで開発する2.コンパイルする3.Xen上で動くカーネルが生成される(!)

要約

13年8月26日月曜日

Page 11: TypeSafe OSの試み

1. Linux/MacOS Xで開発する2.コンパイルする3.Xen上で動くカーネルが生成される(!)4. EC2等のクラウドサービス上で動く(!!)

要約

13年8月26日月曜日

Page 12: TypeSafe OSの試み

メリット•オーバーヘッドがないため、パフォーマンスがいい

•サンドボックス化されているため、セキュア

•リロース制御等が容易

13年8月26日月曜日

Page 13: TypeSafe OSの試み

Haskeller様向け情報• Haskell(GHC)をXen上で動かすプロジェクトもあります

•HaLVM(Haskell Lightweight Virtual Machine)

• github.com/GaloisInc/HaLVM

13年8月26日月曜日

Page 14: TypeSafe OSの試み

Erlang使い向け情報• ErlangをXen上で(ry

• Erlang on Xen

• erlangonxen.org•オープンソースではないため、詳細不明

13年8月26日月曜日

Page 15: TypeSafe OSの試み

Mirage/HaLVMの仕組み直接、Xenの上に載ってはいない

Xen

Mini-OS Mini-OS

Other OSOCamlランタイム

GHCランタイム

OCamlプログラム

Haskellプログラム

13年8月26日月曜日

Page 16: TypeSafe OSの試み

Mini-OSとは• Xenのソースツリーに同梱されている

•仮想メモリ

•協調型(ノンプリエンティブ)スレッド

• libcやTCP/IPスタックも動作する

13年8月26日月曜日

Page 17: TypeSafe OSの試み

Mini-OSとは• Xenのソースツリーに同梱されている

•仮想メモリ

•協調型(ノンプリエンティブ)スレッド

• libcやTCP/IPスタックも動作する

→ でもCで書いてある....

13年8月26日月曜日

Page 18: TypeSafe OSの試み

型安全なOSが欲しい•半分以上、Haskell/OCamlで書かれたOSが欲しい

•関数型のイディオムを導入したい

•最適化がやりやすそう(例: プログラム変換)

•部分的にCoqで証明も可能では?

13年8月26日月曜日

Page 19: TypeSafe OSの試み

Metasepi プロジェクト• NetBSDを関数型言語で再設計するプロジェクト

• by @master_qさん•あとで発表があると思います

Photo by www.flickr.com/photos/silkebaron/931381358/13年8月26日月曜日

Page 20: TypeSafe OSの試み

ajhc(A fork of jhc)• HaskellをコンパイルしてCを生成する

• 生成されるコードがコンパクト• 依存するPOSIX APIが少ない• Cと相互呼び出しが可能

13年8月26日月曜日

Page 21: TypeSafe OSの試み

Mini-OSのHaskell化ajhcを使って、Mini-OS/XenをHaskell化したい

完了•タイマの初期化•ページテーブルの初期化•コンソールの初期化•スレッドスケジューラの初期化

未完了•デバイスの初期化•各種API•終了処理

13年8月26日月曜日

Page 22: TypeSafe OSの試み

参考情報•MiniOS with ajhcgithub.com/mzp/mini-os-with-ajhc

• ajh本体github.com/ajhc/ajhc

•Metasepimetasepi.org

•簡約!? λカ娘 Go!www.paraiso-lang.org/ikmsm/books/c84.html

13年8月26日月曜日

Page 23: TypeSafe OSの試み

まとめ•型安全なOS、とても夢が広がる

•Metasepiの作りだしたajhcを使えば、わりと現実的

•さあ、やりましょう!!

13年8月26日月曜日