マネージドOSは、おそらくマイクロカーネルのようなものです。安全性のためにパフォーマンスを犠牲にします。
コードを2つの部分に分割する必要があるため、同様の問題が発生する可能性があります。
- C /アセンブラーで書かれた低レベルのカーネル
- マネージ言語で記述された高レベルのカーネル
HL言語の安全な入力/離脱のコストに応じて、マイクロカーネルと同様の問題が発生する可能性があります-おそらく少し高速です(HLを離脱することは完全なコンテキストスイッチよりも高速ですが、JNIなどのIIRCは非常にコストがかかります)。
多くのアプリは他のプラットフォーム(C、Java、.Netなど)で記述されているため、ユーザーアプリケーションにはおそらく個別のコンテキストも必要になります。同じ場合、アプリケーションはCPUバウンド(コンパイラー、音楽コンバーターなど)であり、十分な速度で実行するにはアセンブラーの最適化さえ必要です。さらに-HL言語で実装されたMMU保護は、はるかに細かく調整されている場合でも、おそらくハードウェアほど高速ではありません。
また、HL言語は低レベルの操作には不慣れです。通常、ソフトウェアは「適切な」コーディングプラクティスを使用して設計されていますが、ドライバーは必要ありません。カーネルは時々手作業でメモリを管理する必要があるため、少なくともいくつかのエラーから保護されるとは思わない。
最後に、そのようなOSには完全なVMが必要になるとは思わない。OSは、原則として、compile-once-run-everywhere HL言語(GCおよびco。を含む)で構築できないため、より良い候補になります。
たとえば、突然任意のポインターを廃止します。
OSは本質的に低レベルです。ハードウェアには、「任意のポインター」だけでなく、仮想アドレスではなく、おそらく物理アドレスを渡します。一部のDMAは、メモリの最初の16MiBのみを処理できます。このようなOSは非常に単純化できますが、アドレスは削除されません。
そして、うまく書けば、ほとんどの最新のOSが現在持っている大量のレガシークラッドを取り除くことができます。
- 多くのレガシーハードウェアがあります。それからソフトウェアで。最初にリアルモードで起動し、次にA20ゲートを有効にします(尋ねないでください)。保護モードにジャンプしてからロングモードにジャンプします。
- API / ABI互換性は良好です。彼らはそのようなOSを書いたと言う-あなたはそれで何を実行しますか?Firefox-いいえ(WinAPIを使用したCおよびC ++)。Java-おそらく、移植する必要があるか、ikvmを介していくつかの小さな問題がありました-JNIを使用するようになった場合を除きます。MSSQL(そして確かにOracle、MySQL、Postgresql ...)はマネージ言語で書かれていないので、サーバーに適合しないと思います。
- バグの互換性も「良い」です。AFAIK MSは、一部のソフトウェアがスマート(誤った読み取り)の方法でAPIを使用していないかどうかをテストおよびチェックするだけで多くの時間を費やしています。
free
Windowsが実際にメモリを解放し始めたときに、その後にポインタを使用する問題のように。
マイクロカーネルと同じ頃に人気が出ると思います。