新城@筑波大学情報です。こんにちは。

In article <cqo76c$hj9$1@caraway.media.kyoto-u.ac.jp>
        Masanori HATA <hata@iname.com> writes:
> > Parrot って、Perl 用の VM の機械語なんですか。
> 違います。Perl 6 コンパイラがバイトコードを吐くそのターゲットとなる VM
> のことだと思います。see: <http://www.parrotcode.org/>

私から見ると同じなんだけど。。。。

> > 標準理論では、OS の仕事は、ハードウェアの違いをソフトウェア
> > から隠すものです。ですから、OS はハードウェアに依存してもい
> > いというか、依存する部分を OS に押し込めます。標準理論ではね。
> > Parrot の世界で、ハードウェアに依存する部分は残るんですか?
> > それは、何と呼ぶんですか。単に言い換えただけですか。
> 
> その話は、ソフトウェアから見た場合、の違い、の吸収、ですよね?(API レベ
> ルでの互換性とでも言うべき話でしょうか)

ハードウェアが違っていても、OSが違いを吸収するということで
す。ディスクが IDE でも SCSI でも同じとか、グラフィックスの
チップが違っても同じプログラムが走るとか。この定義では、X11 
も OS です。

> 僕が言いたかったのは、再コンパイルなしに、OS のバイトコードを、異なる
> ハード上でそのまま使えるということです(VM BIOS があれば、の話)。
> 
> Parrot の場合レジスタモデルの VM らしいので、CPU レベルでそのアーキテク
> チャを仮想化してしまえば、もうコンパイラ(や、コンパイル時に利用するライ
        ^^^^^^
> ブラリ)レベルでは何もハードウェアの違いを吸収する必要はなる。バイナリ
> コードの生成まで行うコンパイラの場合は、再コンパイルが必要になるのと対照
> 的だと思います。

その「仮想化」する部分は、結局ハードウェアに依存するんですよ
ね。それは、標準理論だとOSになっちゃうんじゃないかというの
が、新城の質問です。まあ、分類なんで、どうでもいい話ではある
んだけど。

Javaバイトコードでも、同じようなことはできますが、Parrot が 
Java バイトコードどより偉いのはどういう所ですか。

> もちろん、CPU のアーキテクチャを完全に仮想化することなんて、今現在の
> Parrot はできないと思いますし、目標にしているわけではないと思いますが、
> そんなことも「可能だな」と言ってみたわけです。

最近の VM 研究の流行は、完全な仮想化ではなくて、部分的な仮想
化というか手抜きをするというものです。英語だと、
paravirtualization とかいったりします。para というのが、まだ
日本語でしっくり来ていないんだけど。

> そうすれば、今までは、CPU アーキテクチャの違いを吸収するのは、OS を中心
> とするソフトウェアベンダ側だったわけですが、VM BIOS のような考え方になれ
> ば、むしろ CPU アーキテクチャの違いを吸収するのはハードウェアベンダ側の
> 問題となり、CPU も他の周辺機器メーカ同様に「VM BIOS という形の VM に対応
> したドライバを提供」という感覚になる、可能性もなくはないわけです。

アーキテクチャの違いというと、割込みとかMMUとか、バスとか
かな。OSの移植作業の重たいのは、その辺りです。それは、アー
キテクチャの供給側が作ってくれたら、OS屋としては泣いて喜ぶ
所ですけど、ハード屋としては、何種類ものOSに供給するのは重
たいです。で、Linux にしようか、Parrot にしようかと、悩むか
というと、今なら悩まず Linux かなあ。

そういう視点でLinux と比較した時 Parrot の利点は、何でしょうか?

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\