新OSや仮想マシンがソフトウェアにパッチを当てる件

過去のOSのアプリケーションを新しいOS上で実行しようとしたり、あるいはVMwareなどの仮想マシン上でOSを実行しようとしたり、エミュレータ上でゲームを動かそうとすると、互換性や実効性能の面からさまざまな課題に直面します。

それらの課題に対して、新OSやVMやエミュレータやコピーツールが何をしたかを調査し、結果をまとめました。

[[$$amazon-search-result-middle books-jp OS 互換性]]

Windows95

  • Windows95と地上の星 (Life is beautiful)
    • Windows3.1用ソフトウェアをWindows95で動作するように動的パッチした話。
    • 「Windows3.1用に作られたサードパーティのプログラムをロード時にダイナミックに変更して、Windows95で動くようにしてしまうというウルトラCだ。SatoshiがReader Rabbitに加えるべき変更点をデータ化し、Kevinがそのデータを読み込んでパッチをあてる様にKernelのローダーを変更する。Reader Rabbitが新しいKernelの元で動くようになった時には、既に朝であった。」
  • ストラテジーレターⅡ:鶏と卵の問題 (Joel on Software)
    • 新OSにとっての、過去のアプリケーションとの互換の重要性
    • 「Windows 95にSimCityを検出するコードを追加した。それがSimCityが実行されているのを見つけると、それはメモリをすぐには開放しない特殊なモードでメモリアロケータを実行するのだ。」

WindowsXP/2003

  • 本当はすごい「Windowsの互換性維持」 (日経ITpro)
    • WindowsXP/2003から採用された互換性維持のためのデータベースの話。
    • 「現在,世界中で何千万台と出荷されているWindows XPにはもれなく,Windows 95版の「ときめきメモリアル」を正常に動作させるための設定が施されている---そう考えると,なんだか胸が高鳴ってしまうのは筆者だけだろうか?」
  • Windows XP アプリケーション互換性技術 (Microsoft TechNet)
    • Microsoftによる説明

Winodws 7 (shim)

VMware

  • プロセッサへの実装が始まった仮想化支援機能 (日経ITpro)
    • 「VMware製品は,ゲストOSで使われているそれらの命令を,VMMが横取りできるよう動的に書き換えて,実行している。このような仮想化の方式を「バイナリ・トランスレーション」と呼ぶ。」

エミュレータ

  • PCEエミュレータの実行速度を速くしたい (Aoisomeのファミコンエミュレータをいまさらだけど作ってみたけどやっぱりPCエンジンのエミュレータを作ってみる日記)
    • ビジーループを未定義命令で置き換えることで性能向上させる計画

コピーツール

  • Apple IIのコピープロテクト(魔法の呪文 D5 AA 96) (メカAG)
    • 「Copy II Plusは上記とは方向が異なり、ソフトウェアにパッチを当てることでプロテクトのチェックルーチンを外すことに力を入れていたツールだ。当然多くのパラメータが発表されていた。オートモードはそれほど強くない。日本でいえばMagic Copyに当たる。」

リンク

  • Windows95の互換性譚 (大富豪家2.0の日記)
    • Windows95の例を肴にいろいろな話が展開。NTTの交換機CPUの話など。

その他


[[$$amazon-search-result-middle books-jp OS 仮想化]]