Managed OSes ähneln wahrscheinlich einem Mikrokernel - Sie opfern die Leistung im Namen der Sicherheit.
Ähnliche Probleme können auftreten, da der Code in zwei Teile aufgeteilt werden muss:
- Low-Level-Kernel in C / Assembler geschrieben
- Übergeordneter Kernel in verwalteter Sprache
Abhängig von den Kosten für die sichere Eingabe / Ausgabe der HL-Sprache kann dies zu ähnlichen Problemen wie bei Mikrokernen führen - möglicherweise etwas schneller (HL zu verlassen ist schneller als die vollständige Kontextumschaltung, aber IIRC zum Beispiel JNI ist recht kostspielig).
Benutzeranwendungen benötigen wahrscheinlich auch separate Kontexte, da viele Apps auf anderen Plattformen (z. B. C, Java oder .Net) geschrieben sind. In den gleichen Fällen sind Anwendungen möglicherweise CPU-gebunden (Compiler, Musikkonverter usw.) und erfordern sogar eine Assembler-Optimierung, um eine ausreichende Geschwindigkeit zu erzielen. Außerdem ist der MMU-Schutz, der in HL-Sprache implementiert ist, wahrscheinlich nicht so schnell wie der Hardware-Schutz, selbst wenn er viel genauer abgestimmt ist.
Auch die HL-Sprache beherrscht die Operationen auf niedriger Ebene nicht. Während Software normalerweise mit "guter" Codierungspraxis entworfen wird, sind Treiber nicht erforderlich. Ich denke nicht, dass sie vor zumindest einigen Fehlern schützen, da Kernel manchmal manuelles Verwalten des Speichers erfordern.
Schließlich glaube ich nicht, dass ein solches Betriebssystem eine vollständige VM erfordern würde. Da das Betriebssystem nicht mit dem Prinzip kompiliert werden kann, würden sich einmal ausgeführte HL-Sprachen (auch mit GC & Co.) als bessere Kandidaten erweisen.
Zum Beispiel machen Sie plötzlich beliebige Zeiger überflüssig.
Betriebssystem ist von Natur aus Low-Level. Sie übergeben an die Hardware nicht nur einen "beliebigen Zeiger", sondern wahrscheinlich eine physikalische Adresse, anstatt eine virtuelle. Einige DMAs können nur die ersten 16 MB Speicher verarbeiten. Solch ein Betriebssystem kann viel vereinfachen, es wird jedoch keine Adressen entfernen.
Und wenn es gut geschrieben ist, werden Sie eine Tonne Legacy-Crud los, die die meisten modernen Betriebssysteme derzeit haben.
- Es gibt viele ältere Hardware. Viel mehr als in der Software. Sie starten zuerst im Real-Modus und aktivieren dann das A20-Tor (fragen Sie nicht). Wechseln Sie in den geschützten Modus und dann in den Long-Modus.
- API / ABI-Kompatibilität ist gut. Angenommen, sie haben ein solches Betriebssystem geschrieben - worauf würden Sie es ausführen? Firefox - Nope (C und C ++ mit WinAPI). Java - wahrscheinlich musste es portiert werden oder es gab einige kleinere Probleme über ikvm - es sei denn, es wurde JNI verwendet. Ich vermute, MSSQL (und sicher Oracle, MySQL, Postgresql ...) ist nicht in verwalteter Sprache geschrieben, so dass es nicht für Server geeignet wäre.
- Auch die Fehlerkompatibilität ist "gut". AFAIK MS verbringt viel Zeit damit, zu testen und zu überprüfen, ob eine Software die API nicht auf intelligente (falsche) Weise verwendet. Wie das Problem, Zeiger danach zu verwenden
free
, als Windows tatsächlich damit begann, Speicher freizugeben.
Ich denke, es wird ungefähr zur gleichen Zeit wie Mikrokerne an Popularität gewinnen.