by
Anonymous Coward
on 2004年01月26日 21時34分
(#481467)
Cygwin = Windows上に用意した変換DLL (cygwin1.dll) を通して Linux API (主に POSIX) を間接的に利用できるように目指しているもの。
coLinux = Windows上に用意したデバイスドライバを利用して Linux カーネル自身をエミュレーションするもの。
VMware/bochs = x86環境そのものをエミュレーションするもの。
wine = Windows API をエミュレーションするもの。
ということになります(coLinuxだけはドキュメントからの情報)。
比較的近い実装は Services for UNIX 2.0 についてきた MKS Toolkit だと思います。
(SFU 3.0 の Interix サブシステムは Windows NT Micro Kernel のフェイスとして実装されているので、ちょっと違うでしょう。Interix サブシステムと同じような実装で Linux API を直接解釈できるサブシステムを作ることができると思いますが、かなり実現は難しいと思います)
これはどういうものなのでしょうか? (スコア:1, 参考になる)
少しはググったのですが素人な私にはちょっと違いがわからなくて・・・
無知を承知での質問ですが識者の方からお教え頂ければと思います。
(質問の方向性からしてぜんぜんはずれてたらゴメン)
Re:これはどういうものなのでしょうか? (スコア:2, 参考になる)
coLinux = Windows上に用意したデバイスドライバを利用して Linux カーネル自身をエミュレーションするもの。
VMware/bochs = x86環境そのものをエミュレーションするもの。
wine = Windows API をエミュレーションするもの。
ということになります(coLinuxだけはドキュメントからの情報)。
Cygwinはソースコードレベルでの互換性しかなく、ネイティブLinuxでコンパイルされたバイナリは動作できないのに対して、coLinuxは同一のバイナリが動作するとのことです。
また、VMware/bochs はx86環境そのものをエミュレーションするため何らかの方法でインストラクションコードを変換する必要がありますが、coLinux は単にLinuxのAPIとシステムコールをエミュレーションするだけのようです。
あくまでも推測ですので間違ってたら修正お願いします。
Re:これはどういうものなのでしょうか? (スコア:1, 参考になる)
bochsはCPUもエミュレートします。
Re:これはどういうものなのでしょうか? (スコア:1, 参考になる)
「Linux API を利用できるようにする」という言い方だと *BSD の Linux Emulation のような実装を指すのではないでしょうか。
まだ「POSIX 風 API を間接的に利用できるようにする」といったほうが良いかと思います。
(Windows と UNIX の機能の差から、POSIX で規定されているいくつかの関数がかつての Cygwin では実装できてなかった記憶があります)
比較的近い実装は Services for UNIX 2.0 についてきた MKS Toolkit だと思います。
(SFU 3.0 の Interix サブシステムは Windows NT Micro Kernel のフェイスとして実装されているので、ちょっと違うでしょう。Interix サブシステムと同じような実装で Linux API を直接解釈できるサブシステムを作ることができると思いますが、かなり実現は難しいと思います)
Re:これはどういうものなのでしょうか? (スコア:0)
Re:これはどういうものなのでしょうか? (スコア:0)
#481467の例にならってまとめるとこんな感じになるのでしょうか。
(一応、より低いレベルでエミュレーションを行っているものから順に並べたつもりです)
アプリケーションレベル(user mode)でPCそのもののエミュレーションをおこなう。
(VMwareでは安全なコードをそのままCPUに実行させて速度を稼いでいるが、bochsはCPUのエミュレーションも行っているため遅い)
要、ゲストOS。
VMware/bochs上で動いているプログラムはホストOS(Windows)上から個別に認識できない(←あたりまえ)。