* 2014年度版のFrontPageの下書き -(by [[K]], 2014.04.30) ** OSECPU-VMとは? -OSEPU-VMはオープンソースプロジェクトです。 --ダウンロードはこちら → [[page0074]] --大雑把な歴史はこちら → [[page0075]] -OSECPU-VMは以下の目的を達成するための仮想マシン本体や、それらに関するツール群、アプリ群、ドキュメント類を開発します。 -読み方は「おせくぷ-ぶいえむ」です。 -プロジェクトの代表は[[K]](川合秀実)です。 ** OSECPU-VMの目的 -(1) 教育 --2013年以降のセキュリティキャンプにおいて、[[K]]は一部の学生をOSECPU-VMの開発に関わらせることで、様々な技法やセキュリティの考え方を具体的に伝えます。 -(2) デバッグ支援とセキュリティ --増え続ける需要に応じてソフトウェア開発者のすそ野が広がっていますが、バグとの戦いは終わっていません。不注意なミスになかなか気づけず、バグ取りに苦労することは珍しくありません。セキュリティホールも根絶の見通しには程遠い状況です。 --それならば、OSも開発環境もライブラリもなにもかもを、デバッグ支援とセキュリティホール発見支援を第一義に設計し直したらどうなるだろうかと[[K]]は考えました。今まではこのような考え方はナンセンスでした。なぜなら実際の演算処理よりも各種のチェックの方が処理時間がかかるくらいにチェックすべきことがあるからです。コンピュータの演算能力は貴重でしたので、この考え方は支持されなかったのです。しかし、近年のコンピュータ技術の発展は素晴らしく、とんでもない演算速度のコンピュータがとても安価で購入できるようになりました。今こそ、このアイデアが試される時なのです! --もちろんOSECPU-VMは今のアーキテクチャモデルにそのままセキュリティチェックを追加するのではありません。それはさすが効率が落ちてもったいないので、セキュリティチェックを効率よくできるモデルも設計しています。 -(3) 互換性 --ライバルであるJavaや.NETは、一度プログラムを書いたらそのプログラムはどの環境でも動く、ということを目指しています。そしてそれはある程度は成功していると思います。しかしこれは「ある程度」でしかないのです。OSECPU-VMはもっと幅広い互換性を目指します。たとえば8bit-CPU上でもOSECPU-VMアプリが実行可能です。 --「一度プログラムを書いたらそのプログラムはどの環境でも動く」ということはとてもいいことです。単に移植の手間を減らすというだけではなく、移植の際に新しいバグを入れてしまうということも防げるからです。 -(4) 世界最高のコード密度 --OSECPU-VMのアプリは、バイナリサイズが驚異的に小さくなる傾向があります。世界一だと思われます。これこそ後世に残しても恥ずかしくないものだと思います。 --OSECPU-VMと同じくらいセキュアで同じくらいの互換性を持っている別のアーキテクチャがあったとして、アプリがどれもぶくぶくと大きなバイナリサイズだったらどうでしょうか。私たちはスッキリしたものを選んで使うべきではないですか?OSECPU-VMのバイナリよりも大きいということは、まだ何か無駄が残っているということです。無駄なもののためにディスクを浪費し、ネットワーク帯域を浪費して、何かうれしいことがあるでしょうか? -(5) 演算速度性能に対する考え方 --OSECPU-VMは速度を犠牲にして、その代わりに今まで速度のためにあきらめられてきたものの多くを追求しようというものです。ですから速度はそれほどは出ません。しかしJITコンパイラ版ではそれなりの速さが出ます。 --そもそもコードの1~2割は実行速度に大きく影響しますが、残りは実行速度にほとんど影響しないものです。この残りの8~9割を受け持つのがOSECPU-VMの役割です。実行速度に影響する部分を細心の注意を払ってOSECPU-VM以外の方法で記述して最高性能を出し、それで残りをOSECPU-VMで記述して結合すれば、全体としてフルパワー比でも1~2割くらいしか遅くならないでしょう。開発コストと性能のバランスを考えれば、これがベストではないかと[[K]]は思います。 -(6) その他 --OSECPU-VMのアプリを作るとき、おかしいことをやってしまってもすぐに教えてくれるので、習得が容易です。わけのわからないバグに悩まされるということが少ないです。ですからその意味でも教育向けといえるかもしれません(もっともアセンブラの教育に向いているかもしれない、という程度ではありますが)。 --OSECPU-VMの仕様は極力シンプルになっています。過去のアーキテクチャとの互換性などは一切考慮していません。複雑になればOSECPU-VMの移植がやりにくくなって「(3) 互換性」も目的に反します。本当に必要な機能だけを、もっとも使いやすくなるやり方で導入しています。 --OSECPU-VMの仕様は極力シンプルになっています。過去のアーキテクチャとの互換性などは一切考慮していません。複雑になればOSECPU-VMの移植がやりにくくなって「(3) 互換性」の目的に反します。本当に必要な機能だけを、もっとも使いやすくなるやり方で導入しています。 * こめんと欄 #comment