アカウント名:
パスワード:
32bitのWindowsアプリケーションと64bitのWindowsアプリケーションが同時に動作している様子は“衝撃的”と言うほか無い。
以下はWin9x系でのお話: (詳細は Windows95内部解析 … 絶版かな? [amazon.co.jp]) でも
DOS窓は各々独立したVM (Virtual Machine)を持ち,VMM.VxDがGUIアプリとは独立して制御します (GUIアプリは単一のVM上で動く)。なので変換を介しているとは言えないと思います。(VxDが直接システムコールを受け取り,MS-DOSやBIOSに受け渡す)
GUIアプリは単一のVMに放り込まれ,KERNEL32.DLLが一所懸命各プロセス間の連携を行いつつ,Thunkという仕組みでKERNEL/GDI/USERの基本APIを変換しながら最終的にVxDへのシステムコールを行って動きます。なのでWin16/32アプリは相互に変換されながら動いていたと言っていいと思います。
なお,NTではWOW(Windows on Windows)というエミュレーションレイヤが存在する(NTVDM.EXE)ので話はまた別。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stay hungry, Stay foolish. -- Steven Paul Jobs
? (スコア:1)
# Win32に紛れてた16bitのコードは衝撃っつーか足枷だったわけですが
# ACなのでAC
Re:? (スコア:0)
って必ず一致しなきゃいけないものでもないですよね?
なので64bitのCPUで32bitのコードを走らせるのは
OS側で対応すれば何とかなるものだと思います。
32bitのi486で16bitのDOSとか動いていたわけですし。
こんな感じ?
i486(32bit)-DOS系(16bit)-16bitコード
i486(32bit)-win9x系(32bit)-16bitコード(OSで細工)
で今回のOpteronの場合はどうなんでしょう?
Opteron(32-64bit)-対応OS(64bit)-32bitコード
ここで32bitコード
Re:? (スコア:1, すばらしい洞察)
32ビットCPUの上で16ビットのコードを動かすには「リアルモード」か「仮想86モード」というモードで動かさないといけなかった。32ビットコードはそのまま「プロテクトモード」で動作する。32ビットのOSの上で16ビットのコードを動かすときには一時的に「仮想86モード」に切り替えていたはず。
Opteronはそういう手法じゃな
Re:? (スコア:3, 参考になる)
以下はWin9x系でのお話: (詳細は Windows95内部解析 … 絶版かな? [amazon.co.jp]) でも
DOS窓は各々独立したVM (Virtual Machine)を持ち,VMM.VxDがGUIアプリとは独立して制御します (GUIアプリは単一のVM上で動く)。なので変換を介しているとは言えないと思います。(VxDが直接システムコールを受け取り,MS-DOSやBIOSに受け渡す)
GUIアプリは単一のVMに放り込まれ,KERNEL32.DLLが一所懸命各プロセス間の連携を行いつつ,Thunkという仕組みでKERNEL/GDI/USERの基本APIを変換しながら最終的にVxDへのシステムコールを行って動きます。なのでWin16/32アプリは相互に変換されながら動いていたと言っていいと思います。
なお,NTではWOW(Windows on Windows)というエミュレーションレイヤが存在する(NTVDM.EXE)ので話はまた別。