SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Type Safe OSの試み
@mzp / ocaml-nagoya
13年8月26日月曜日
自己紹介
•Twitter: @mzp
•気付いたら主催者になっていた系男子
13年8月26日月曜日
自己紹介 その2
•関数型系キャラクター、ことりちゃん
•ご自由にお使いください
•ステッカーくばってます
tkotori.github.io
13年8月26日月曜日
OCamlMeetingの発表要約
•OCamlでWebアプリを作りたいなら、
Heroku + buildpack-ocamlを使いま
しょう
•フレームワークはEliomがおすすめです
13年8月26日月曜日
Heroku以外の選択肢
•Amazon EC2で動かしたいこともある
•適当なLinuxをいれればOCamlは動く
•ただし、別の選択肢もある
13年8月26日月曜日
13年8月26日月曜日
要約
13年8月26日月曜日
1. Linux/MacOS Xで開発する
要約
13年8月26日月曜日
1. Linux/MacOS Xで開発する
2. コンパイルする
要約
13年8月26日月曜日
1. Linux/MacOS Xで開発する
2. コンパイルする
3. Xen上で動くカーネルが生成される(!)
要約
13年8月26日月曜日
1. Linux/MacOS Xで開発する
2. コンパイルする
3. Xen上で動くカーネルが生成される(!)
4. EC2等のクラウドサービス上で動く(!!)
要約
13年8月26日月曜日
メリット
•オーバーヘッドがないため、パフォー
マンスがいい
•サンドボックス化されているため、セ
キュア
•リロース制御等が容易
13年8月26日月曜日
Haskeller様向け情報
•Haskell(GHC)をXen上で動かすプロジ
ェクトもあります
•HaLVM(Haskell Lightweight Virtual
Machine)
• github.com/GaloisInc/HaLVM
13年8月26日月曜日
Erlang使い向け情報
•ErlangをXen上で(ry
•Erlang on Xen
• erlangonxen.org
•オープンソースではないため、詳細不明
13年8月26日月曜日
Mirage/HaLVMの仕組み
直接、Xenの上に載ってはいない
Xen
Mini-OS Mini-OS
Other OS
OCaml
ランタイム
GHC
ランタイム
OCaml
プログラム
Haskell
プログラム
13年8月26日月曜日
Mini-OSとは
•Xenのソースツリーに同梱されている
•仮想メモリ
•協調型(ノンプリエンティブ)スレッド
•libcやTCP/IPスタックも動作する
13年8月26日月曜日
Mini-OSとは
•Xenのソースツリーに同梱されている
•仮想メモリ
•協調型(ノンプリエンティブ)スレッド
•libcやTCP/IPスタックも動作する
→ でもCで書いてある....
13年8月26日月曜日
型安全なOSが欲しい
•半分以上、Haskell/OCamlで書かれた
OSが欲しい
•関数型のイディオムを導入したい
•最適化がやりやすそう(例: プログラム
変換)
•部分的にCoqで証明も可能では?
13年8月26日月曜日
Metasepi プロジェクト
•NetBSDを関数型言語で
再設計するプロジェクト
• by @master_qさん
•あとで発表があると思い
ます
Photo by www.flickr.com/photos/silkebaron/931381358/
13年8月26日月曜日
ajhc(A fork of jhc)
•HaskellをコンパイルしてCを生成する
• 生成されるコードがコンパクト
• 依存するPOSIX APIが少ない
•Cと相互呼び出しが可能
13年8月26日月曜日
Mini-OSのHaskell化
ajhcを使って、Mini-OS/XenをHaskell
化したい
完了
•タイマの初期化
•ページテーブルの初期化
•コンソールの初期化
•スレッドスケジューラの初期化
未完了
•デバイスの初期化
•各種API
•終了処理
13年8月26日月曜日
参考情報
•MiniOS with ajhc
github.com/mzp/mini-os-with-ajhc
•ajh本体
github.com/ajhc/ajhc
•Metasepi
metasepi.org
•簡約!? λカ娘 Go!
www.paraiso-lang.org/ikmsm/books/c84.html
13年8月26日月曜日
まとめ
•型安全なOS、とても夢が広がる
•Metasepiの作りだしたajhcを使えば、
わりと現実的
•さあ、やりましょう!!
13年8月26日月曜日

Contenu connexe

Plus de Hiroki Mizuno

#NGK2012B Excelによる設計書について
#NGK2012B Excelによる設計書について#NGK2012B Excelによる設計書について
#NGK2012B Excelによる設計書についてHiroki Mizuno
 
Scala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性について
Scala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性についてScala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性について
Scala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性についてHiroki Mizuno
 
Coq for Moblie Phone @ ML名古屋
Coq for Moblie Phone @ ML名古屋Coq for Moblie Phone @ ML名古屋
Coq for Moblie Phone @ ML名古屋Hiroki Mizuno
 
Darcs紹介@20120423-scmbc
Darcs紹介@20120423-scmbcDarcs紹介@20120423-scmbc
Darcs紹介@20120423-scmbcHiroki Mizuno
 
Gallinaによる証明駆動開発の魅力
Gallinaによる証明駆動開発の魅力Gallinaによる証明駆動開発の魅力
Gallinaによる証明駆動開発の魅力Hiroki Mizuno
 
CoqによるMsgPackの証明
CoqによるMsgPackの証明CoqによるMsgPackの証明
CoqによるMsgPackの証明Hiroki Mizuno
 
「Frama-Cによるソースコード検証」 (mzp)
「Frama-Cによるソースコード検証」 (mzp)「Frama-Cによるソースコード検証」 (mzp)
「Frama-Cによるソースコード検証」 (mzp)Hiroki Mizuno
 
20110424 action scriptを使わないflash勉強会
20110424 action scriptを使わないflash勉強会20110424 action scriptを使わないflash勉強会
20110424 action scriptを使わないflash勉強会Hiroki Mizuno
 
Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02Hiroki Mizuno
 
証明駆動開発のたのしみ@名古屋reject会議
証明駆動開発のたのしみ@名古屋reject会議証明駆動開発のたのしみ@名古屋reject会議
証明駆動開発のたのしみ@名古屋reject会議Hiroki Mizuno
 
Coqによる証明駆動開発
Coqによる証明駆動開発Coqによる証明駆動開発
Coqによる証明駆動開発Hiroki Mizuno
 
NGK忘年会 2010 / CoqからRubyへ
NGK忘年会 2010 / CoqからRubyへNGK忘年会 2010 / CoqからRubyへ
NGK忘年会 2010 / CoqからRubyへHiroki Mizuno
 
From Coq to Ruby / CoqからRubyへ
From Coq to Ruby / CoqからRubyへFrom Coq to Ruby / CoqからRubyへ
From Coq to Ruby / CoqからRubyへHiroki Mizuno
 
OCamlAPISearchの紹介
OCamlAPISearchの紹介OCamlAPISearchの紹介
OCamlAPISearchの紹介Hiroki Mizuno
 
Proove Mark&Sweep GC with Coq
Proove Mark&Sweep GC with CoqProove Mark&Sweep GC with Coq
Proove Mark&Sweep GC with CoqHiroki Mizuno
 
CoqでGCの証明をしてみたよ(LT)
CoqでGCの証明をしてみたよ(LT)CoqでGCの証明をしてみたよ(LT)
CoqでGCの証明をしてみたよ(LT)Hiroki Mizuno
 

Plus de Hiroki Mizuno (20)

#NGK2012B Excelによる設計書について
#NGK2012B Excelによる設計書について#NGK2012B Excelによる設計書について
#NGK2012B Excelによる設計書について
 
Scala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性について
Scala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性についてScala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性について
Scala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性について
 
Sml#探検隊
Sml#探検隊Sml#探検隊
Sml#探検隊
 
どこでもCoq
どこでもCoqどこでもCoq
どこでもCoq
 
Coq for Moblie Phone @ ML名古屋
Coq for Moblie Phone @ ML名古屋Coq for Moblie Phone @ ML名古屋
Coq for Moblie Phone @ ML名古屋
 
Darcs紹介@20120423-scmbc
Darcs紹介@20120423-scmbcDarcs紹介@20120423-scmbc
Darcs紹介@20120423-scmbc
 
Gallinaによる証明駆動開発の魅力
Gallinaによる証明駆動開発の魅力Gallinaによる証明駆動開発の魅力
Gallinaによる証明駆動開発の魅力
 
CoqによるMsgPackの証明
CoqによるMsgPackの証明CoqによるMsgPackの証明
CoqによるMsgPackの証明
 
「Frama-Cによるソースコード検証」 (mzp)
「Frama-Cによるソースコード検証」 (mzp)「Frama-Cによるソースコード検証」 (mzp)
「Frama-Cによるソースコード検証」 (mzp)
 
20110424 action scriptを使わないflash勉強会
20110424 action scriptを使わないflash勉強会20110424 action scriptを使わないflash勉強会
20110424 action scriptを使わないflash勉強会
 
Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02
 
証明駆動開発のたのしみ@名古屋reject会議
証明駆動開発のたのしみ@名古屋reject会議証明駆動開発のたのしみ@名古屋reject会議
証明駆動開発のたのしみ@名古屋reject会議
 
Coqによる証明駆動開発
Coqによる証明駆動開発Coqによる証明駆動開発
Coqによる証明駆動開発
 
NGK忘年会 2010 / CoqからRubyへ
NGK忘年会 2010 / CoqからRubyへNGK忘年会 2010 / CoqからRubyへ
NGK忘年会 2010 / CoqからRubyへ
 
From Coq to Ruby / CoqからRubyへ
From Coq to Ruby / CoqからRubyへFrom Coq to Ruby / CoqからRubyへ
From Coq to Ruby / CoqからRubyへ
 
SacalaZa #1
SacalaZa #1SacalaZa #1
SacalaZa #1
 
CoqUn2010
CoqUn2010CoqUn2010
CoqUn2010
 
OCamlAPISearchの紹介
OCamlAPISearchの紹介OCamlAPISearchの紹介
OCamlAPISearchの紹介
 
Proove Mark&Sweep GC with Coq
Proove Mark&Sweep GC with CoqProove Mark&Sweep GC with Coq
Proove Mark&Sweep GC with Coq
 
CoqでGCの証明をしてみたよ(LT)
CoqでGCの証明をしてみたよ(LT)CoqでGCの証明をしてみたよ(LT)
CoqでGCの証明をしてみたよ(LT)
 

TypeSafe OSの試み