BT

RubiniusがマルチVMサポートを追加

| 作者: Werner Schuster フォローする 6 人のフォロワー , 翻訳者 編集部 フォローする 0 人のフォロワー 投稿日 2008年1月17日. 推定読書時間: 3 分 |
Rubyバイナリを実行する必要なく複数のRubyインスタンスを発信することがいくつかの形で有効になった。JRubyはひとつのプロセスにおいて複数 のJRubyインスタンスを、それぞれを自身のネイティブスレッドで動作させたまま所有するのを可能にする(source)。MRIにおいて、なぜ「the lucky stiff(幸運な死体)」が同じことをするように、Sandbox Hackを提供する(source)のだろうか?

最近Rubiniusは下記のように使用が可能な、マルチプルRubyランタイムを発信するための適切なサポートを得た(source)
vm = Rubinius::VM.spawn "blah", "-e", "puts 'hello\n'"
vm.join
p vm.stdout.gets
この意味合いを理解するため私達はRubiniusプロジェクト(サイト・英語)のEvan Phoenix氏(ブログ・英語)に尋ねた。

Multi-VMの背景のアイディアに関して尋ねられたEvan氏は下記のように述べた。
私はいつもあれこれの形態において、この種の機能があったことが分かっていました。将来のプランは複雑なものであるのです。そうです。それは新たなVMに作業させるのを遥かに簡単にするのです。本当の疑問はその作業が何でありどのようにそれが実行されるかということなのです。
Evan氏はいくつかの実装の詳細を引き続き述べた。
現在それぞれのVMはそれ自身のネイティブスレッド(unix上のpthread)内で始められます。これはそれぞれのVMが他のVMの知識無しに動作するのを可能にし、スケジューリングをVM内で全く同じに保ちます。

Rubiniusはその中で大変優れたCプログラムなのでグローバルも何も要さず、またその複数のコピーが同じアドレススペース内で円満に混ざり合うのを許容します。
それらは一つのネイティブスレッドごとに一つを動作しているのでその一つでプロセス全体をクラッシュさせだめにする可能性があるのです。
最後の発言は他の全てのMulti VMソリューションにも当てはまる。-System.exit()のようなグローバル、静的なメソッドを呼ぶかもしくはJVMをクラッシュするJNIコー ドを使用しているJRubyインスタンスは他のJRubyインスタンスも同様にだめにする。

もう一つの興味深いトピックはどのようにVMのコミュニケートを可能にさせるかということである。
パイプは一方通行で、そうですスタジオはサブVM用にパイプにリダイレクトされます。また私はとてもシンプルな共有メッセージパスシステムも追加しまし た。ひとつのVMはシングルでトップレベルのメカニズムを使用してメッセージを相手に送ることができるのです。このメカニズムは一つのVMが互いに相互作用するただ一つの場所なのです。またそれはメッセージを共有ストレージに並列するので、VM間におけるポインタ共有は存在しないのです。メッセージがOSプロセス間で簡単にパスされるのを可能にする共有メモリを使用するため既存の共有メッセージパスメカニズムを拡張することが可能です。
この機能はRubinius git(source)リポジトリにおいて現在有効である(Rubiniusリポジトリにアクセスするためのgit使用に関するInfoQの記事(記事)を参照して欲しい)。もしあなたがRubiniusソースを簡単に目を通したかったら、Rubinius gitリポジトリ用のWebインターフェース(source)もある。例えばこれが上記のメッセージパスシステムのためのコミットなのである(source)

原文はこちらです:http://www.infoq.com/news/2008/01/rubinius-multi-vm

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT