なぜ仮想CPUを利用することにしたのか?
きほん
- [メリット] 仮想CPUにすればアプリのCPU依存性がなくなる
- これからもx86の時代が続くとは限らない、ARMの時代が来るかもしれない。
- [メリット] 仮想CPUを作るのは楽しい
- [デメリット] 仮想CPUを使うと実行速度が落ちる
- JITなどを使えば軽減はできるけど、それでもネイティブコードには到底及ばない。
- どのCPU上で動かしてもエミュレータ上で動作させるような速度にしかならないということ。
- [デメリット] 仮想CPUを作るのに時間がかかる
OSECPU固有の事情から
- OSECPUでは、WindowsやLinux上で簡単にOSECPU用のアプリを動かすということをやりたい。
- prompt>osecpu app みたいにするだけで起動する。
- このとき、この osecpu.exe という実行ファイルはWindowsからみればただの単純なアプリで、つまりx86のユーザモードでしか動かない。したがってカーネルモードを利用した保護機構やセグメンテーションを積極活用する保護機構も利用できない。
- これでは相当に貧弱なセキュリティ機能しか提供できないことになりかねない。これではとても「セキュアなOS」とは呼べないだろう。ということで、osecpuは十分な保護機構を持ったCPUエミュレータを内蔵し、アプリはそれを利用して実行する。これで osecpu.exe は悪意あるアプリからの攻撃にさらされずに済む。
どんな仮想CPUを作るのか
- 仮想CPUを作るに当たっては、x86互換のものを作る気はない。x86はかなり複雑だから。僕はもっと単純で作りやすい仕様にする。
- またセキュリティ的により強固な仕様を目指す。おそらくこの仕様を全て理解すれば、x86ネイティブコードでセキュアなOSを作るなんて考えられなくなるだろう。それくらいに自信がある。
- 上記で仮想CPUを作る理由を書いたが、結局はそれは一番の理由ではない。二番目の理由だ。本当の理由は、セキュアなOSのための理想のCPUはこうあるべきという青写真があり、それを使わないでセキュアなOSを作るなんてまったく面白くないからだ。
こめんと欄
- このページにこめんと欄はありません。このページの内容にコメントしたいときはimpressionsにお願いします。