現在のOSは、OS自体とアプリケーションの双方が基本的にCやC++を利用して開発されています。しかしC/C++言語は、オブジェクト指向への対応やメモリ管理の複雑さ、エラートラップ機構などが不十分であり、バグの原因となってしまっています。もちろんこれらの弱点を補った処理系は存在しますが、最終的にOSと対話する部分ではC++的な処理が必要です。さらにOS自体もCやC++などで記述されているために、バッファオーバーランなどの問題を抱えやすくなってしまっています。
これら課題の解決するため、Microsoftが提唱したILという中間言語を核にし、ILの実行環境であるCLIを実装したOSを開発します。
ILはC#言語などをコンパイルして得ることができますので、OSのライブラリをC#で記述することでOOPLと親和性の高いAPIを用意することができます。また、CLIのガーベジコレクションによって低レベルメモリ管理を行う必要が無くなります。さらに、現在はAPIのエラーチェックは戻り値によるものが主ですが、CLIの例外機構によって、APIのエラーをシームレスにトラップできるようになります。
アーキテクチャの側面からみた場合にも有利な点があります。現在はアプリケーションの機械語命令の動作を制限するためにプロセッサの保護機能を利用していますが、プロセス切り替えなどは重い処理でありボトルネックになっています。またプロセス保護のせいでプロセス間通信などの処理は非常に高コストです。提案するOSは、これらの保護機能の利用を最小限に抑えることができますので、従来OSよりも有利であるといえます。
長期的な視点では、WindowsがCLIベースに移行するなか他にそのようなOSが開発されていないことを憂慮しています。いまはLinuxがWindowsの対抗馬ですが、中間言語方式が普及してからLinuxを作り直すことは非現実的です。将来的に、中間言語ベースのWindows以外のOSが必要になる時が必ず来ます。
本プロジェクトでは、ILのような中間言語を基本にしたOSの試作を目的とします。試作するOSは、マルチタスク・マルチスレッドをサポートし、ファイルシステムを有し、WindowsやLinuxで作成した簡単なアプリケーションが動作することを目標とします。
|