Managed OSes wie Microsoft Singularity und JNode sind ein interessantes Konzept. Im Wesentlichen wird das Betriebssystem mit Code gebootet, der in einer einfachen Sprache (C / C ++ / Assembly) geschrieben ist, die im Wesentlichen eine virtuelle Maschine implementiert. Das restliche Betriebssystem (und alle Userland-Apps) werden auf der virtuellen Maschine ausgeführt. Es gibt einige großartige Dinge. Zum Beispiel machen Sie plötzlich beliebige Zeiger überflüssig. Und wenn es gut geschrieben ist, werden Sie eine Tonne Legacy-Crud los, die die meisten modernen Betriebssysteme derzeit haben.
Ein Nachteil ist jedoch, dass Sie sich viel weiter von der Hardware entfernen und als Entwickler die Fähigkeit verlieren, sich auf eine niedrigere Abstraktionsebene zu begeben und sich die Hände schmutzig zu machen.
Wie ist Ihre Meinung dazu?
quelle
Antworten:
Ich denke, dass dies ein weiterer Fall ist, bei dem "es darauf ankommt".
Wenn Sie Anwendungen wie Webbrowser, Textverarbeitungsprogramme usw. schreiben, bei denen blitzschnelle Leistung nicht unbedingt ein Problem ist, hat dieser Ansatz seine Vorzüge. Mit diesem Ansatz können Sie Ihren Kunden ein sichereres und kontrollierteres Erlebnis bieten. Sie begrenzen nicht nur den durch Malware verursachten Schaden, sondern arbeiten auch in einer konsistenteren Umgebung.
Es ist wie der Unterschied zwischen Konsolenspielen und PC-Spielen. Erstere wissen genau, mit welcher Hardware sie arbeiten müssen, damit sie dieses Wissen nutzen können, während letztere in der Lage sein müssen, mit einer größeren Auswahl an Grafikkarten, Soundkarten, Festplattengeschwindigkeiten usw. umzugehen.
Es wird jedoch Anwendungen (wie Spiele!) Geben, die den Zugriff auf niedriger Ebene erfordern und weiterhin "nativ" ausgeführt werden müssen.
Wie bei verwalteten Sprachen müssen Sie das entsprechende Tool für den Job verwenden.
quelle
Im Allgemeinen denke ich, dass sie eine gute Idee sind, aber da nicht viele von ihnen in der Nähe sind oder fast fertig sind, ist es sehr schwer zu sagen, wie sie in der realen Welt abschneiden würden. Ich wünschte, MS hätte das Singularity-Projekt aktualisiert, damit wir sehen könnten, wohin das führen würde, aber ich vermute, dass ein Teil davon in einer Windows-Version verarbeitet wird
quelle
Ich denke, dass die Vorteile eines vollständig verwalteten Betriebssystems enorm sind und dass dies wirklich die Zukunft sein könnte, aber es wird noch viele Jahre dauern.
Ein gut verwaltetes Betriebssystem bietet Ihnen alle verwalteten Einstiegspunkte, die Sie benötigen, um alle erforderlichen Aufgaben auf niedriger Ebene auszuführen, unabhängig davon, ob sie verwaltet werden: Abfangen von Interrupts und Ausführen von E / A-Vorgängen mit Geräten. C # erlaubt auch unsicheren Code (Umgang mit Zeigern), wird aber nur in den "Gerätetreibern" (die nur eine andere Art von Software-isoliertem Prozess sind) erlaubt.
Die Vorteile in Bezug auf Sicherheit, Einheitlichkeit, Portabilität und insbesondere Zuverlässigkeit werden jeden Leistungsnachteil sicherlich übertreffen. Dann ist ein vollständig verwaltetes System überraschend schnell, da kein Kontextwechsel mehr erforderlich ist.
quelle
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:
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.
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.
free
, als Windows tatsächlich damit begann, Speicher freizugeben.Ich denke, es wird ungefähr zur gleichen Zeit wie Mikrokerne an Popularität gewinnen.
quelle
Persönlich denke ich, dass die Idee eines verwalteten Betriebssystems ein bisschen wie der Kommunismus ist: gut in der Theorie, aber unpraktisch in der Implementierung.
Das Problem ist, dass ich einfach keine Möglichkeit sehe, das verwaltete Betriebssystem umzusetzen, ohne das Betriebssystem komplett neu zu schreiben (und ich hoffe, jemand kann mich in diesem Punkt als falsch erweisen). Wie können Sie jahrzehntelangen nicht verwalteten Code in ein verwaltetes Betriebssystem integrieren?
Die Kernel der beliebtesten Betriebssysteme sind kampferprobt und über ein paar Jahrzehnte gereift. Sie schreiben sie nicht einfach aus einer Laune heraus um. Ganz zu schweigen davon, dass die Geschichte voller Beispiele für Prozessordesigns und Kernel-Architekturen ist, die zweifellos besser waren, aber niemanden davon überzeugen konnten, dass sie die Kosten für eine Änderung wert waren.
Wie wird ein Unternehmen wie Microsoft oder Apple ein verwaltetes Betriebssystem an Kunden verkaufen? Ist es dem durchschnittlichen Computerbenutzer auch egal, ob sein Betriebssystem verwaltet oder nicht verwaltet wird?
Ich hoffe, dass ich mich irre und dass verwaltete Betriebssysteme Realität werden. Ich bin aber skeptisch. Wenn wir es jemals sehen, wird es wahrscheinlich noch ein oder zwei Jahrzehnte dauern.
quelle
Verwalteter Code ist nur eine Extrapolation dessen, was der Schutz des virtuellen Speichers heute für Sie bedeutet, nämlich die Fähigkeit des Computers, den Zugriff auf Ressourcen zu verweigern.
IBM tut dies bereits auf ihren Mainframe-Systemen (sie nennen es einfach etwas anderes), daher ist es meiner Meinung nach nur eine Frage der Zeit, bis dies auf Systemen geschieht, die der Öffentlichkeit zur Verfügung stehen.
Würde es Sie interessieren, ob ein Google-Laptop (auf dem Chrome und im Grunde nichts anderes ausgeführt wird) mit verwaltetem Code ausgeführt wird oder nicht?
quelle
Das ist eigentlich nicht wahr. In JNode gibt es beispielsweise eine
Unsafe
Klasse (und andere), mit der Sie auf Speicherorte usw. zugreifen können. Es gibt auch einige "magische" Klassen / Methoden, die vom JIT-Compiler in privilegierte Anweisungen übersetzt werden. Der Zugriff auf diese Klassen / Methoden wird (oder wird) vom Sicherheitsmanager, vom JIT-Compiler usw. eingeschränkt. Wenn Sie jedoch Code schreiben, der auf Betriebssystemebene ausgeführt wird, stehen Ihnen diese Funktionen zur Verfügung.Der Vorbehalt ist (natürlich), dass die falsche Verwendung von
Unsafe
und verwandten Klassen sofort zu Abstürzen des Betriebssystems oder auf der Strecke führen kann.quelle
Ich bezweifle ihre Nützlichkeit für Desktop-Computer. Aber die Zeit könnte mich in diesem Punkt als falsch erweisen.
Ein interessantes Potenzial ist in meinen Augen jedoch ein Serverbetriebssystem, genauer gesagt ein Gastbetriebssystem in einer virtualisierten Umgebung. Es war für mich nie richtig, eine vollständige Windows Server-Installation in einer virtuellen Server-Umgebung zu installieren, da ich wusste, wie viele unnötige Dienste ausgeführt werden, einschließlich der vollständigen GUI.
Das Installieren von Singularity auf einem virtuellen Server zum Hosten von ASP.NET-Anwendungen ist jetzt sinnvoller. Vorausgesetzt, sie können ein leichtes Betriebssystem beibehalten.
quelle