yarv-dev:471
From: SASADA Koichi <ko1 atdot.net>
Date: Mon, 25 Apr 2005 16:49:57 +0900
Subject: [yarv-dev:471] Re: Multi-VM instance
Shiro Kawai <shiro lava.net> wrote :
[ [yarv-dev:469] Re: Multi-VM instance ]
at Sun, 24 Apr 2005 21:33:12 -1000 (HST)
ささだです.
> Schemeの規格レベルでは何もありません。例えば次の式の評価値は
> 実装依存で、1になる処理系もあれば「xなんてscheme-report-environment
> にはないよ」というエラーにする処理系もあるでしょう。
>
> (begin
> (eval '(define x 1) (scheme-report-environment 5))
> (eval 'x (scheme-report-environment 5)))
なるほど.たしかに詳細には規定されていなかったですね.
> 複数のVMを持たせる場合、考慮するポイントがいくつかあると思います
はい.まさにご指摘いただいたポイントを考えていました.だけ
ど,B は考えていなかったなぁ.スレッドと VM の関係は,あんま
り考えていなかったので再考します.
VM というもののきちんとした定義が,まず必要なのかなぁ.
とりあえず,目標として考えているのは mod_ruby が複数アプリ
ケーションを扱えるようにするための機構です.
現在は,1 Ruby プロセスを共有するようになっているため,
mod_ruby で複数アプリケーションを動かすと,グローバルな何か
は全部共有されてしまいます.たとえば,String クラスを再定義
すると,どのアプリケーションでもそうなってしまう.これをな
んとかしたい.
そのため,
> 確かTclは共有してませんよね。
というモデルを考えていました.
で,
> あるVMで作成したデータへの参照を別のVMにそのまま渡せるかどうか
という点で,渡せちゃったら面白いことになりそうな気がする,
と考えておりました.
ところで,
> C関数の中でもScm_VM()で一意に現在のVMが取れる(thread local storageを使っています)
のプリミティブって何を使ってますか? gcc 拡張の tls?
それとも,pthread_getspecific()?
私は tls を使おうと思ってたんですが,その辺のオーバヘッド
(x86 なら,セグメント指定が入るため)が気になっています.
--
// SASADA Koichi at atdot dot net
//
--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml
466 2005-04-25 16:10 [ko1 atdot.net ] Multi-VM instance 467 2005-04-25 15:47 ┣[shudo computer.org ] 468 2005-04-25 15:49 ┃┗[shudo computer.org ] 470 2005-04-25 16:39 ┃ ┗[ko1 atdot.net ] 469 2005-04-25 16:33 ┣[shiro lava.net ] -> 471 2005-04-25 16:49 ┃┗[ko1 atdot.net ] 473 2005-04-25 17:27 ┃ ┗[shiro lava.net ] 476 2005-04-25 17:38 ┃ ┗[ko1 atdot.net ] 477 2005-04-25 17:51 ┃ ┗[shiro lava.net ] 481 2005-04-25 19:13 ┃ ┗[ko1 atdot.net ] 472 2005-04-25 17:02 ┗[ko1 atdot.net ]