Re: Parrot and OS/VM
新城@筑波大学情報です。こんにちは。
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 の利点は、何でしょうか?
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735