Frage

Ich bin ein Informatik-Engineering-Student, und ich habe für 2-3 Jahre auf dem .NET Framework wurde Programmierung, aber ich habe Linux nicht verwendet. Ich dachte, für meine Diplomarbeit, eine Linux-Distribution gut sein würde.

Ich dachte an ein paar Möglichkeiten, es zu implementieren, wenn diese verrückte Idee kam mir der Gedanke:

  

Können wir das .NET Framework zunächst auf dem Linux-Kernel implementieren und den Rest es mit bauen?

Dies ist die seltsamste Frage sein könnte, aber bitte einen Weg geben Sie mir, wenn ich recht in der am zu fragen die Frage und korrigieren Sie mich, wenn ich einen Fehler mache.

War es hilfreich?

Lösung

Die Funktionalität des .NET-Framework ist zu reich Sinn macht alles auf einer nackten Linux-Kernel ohne wesentliche User-Space-Helfer mit libc beginnen zu bauen. Nicht unmöglich, aber viel zu ehrgeizig, IMHO, für eine Doktorarbeit des einzelnen Schüler (und noch viel mehr, wenn Sie bei einem geringeren Grad sind mit dem Ziel, als eine Promotion).

Lesen Sie mono für eine Windows-unabhängige Implementierung von .NET und alle es hängt davon ab - und denke daran, wie Sie reduzieren könnte (nicht beseitigen ;-) User-Space-Abhängigkeiten auf eigene Faust, innerhalb Ihrer Diplomarbeit Spanne, in einer Gabel von Mono Ihrer eigenen (vorausgesetzt, jede These Berater würde melden Sie sich an Sie, dass zu unterstützen, natürlich) .

Andere Tipps

Für den ersten Teil Ihrer Frage möchten Sie vielleicht die Mono Projekt zur Kasse, die eine Implementierung ist von .net in c #.

In Bezug auf den zweiten Teil, ich weiß nicht, warum Sie das Linux Kernal in .net implementieren wollen würden. Es scheint wie ein bisschen wie ein rückwärts Weg, um die Sache zu nähern.

Wenn Sie interessiert sind in ein Betriebssystem in c # Umsetzung überprüfen Singularity , die ein Forschungsbetriebssystem in c # entwickelt ist

Die CLR (auch bekannt als .NET-Framework) wurde mindestens einmal auf Linux, in Mono implementiert.

Es stimmt, könnten Sie eine Linux-Distribution machen, die Schiffe Mono oder .NET verwendet für einige seiner Startskripts / Daemons. Das wäre schön. Jemand hat wahrscheinlich dies bereits getan.

Ich sehe nicht, genau das, was den Vorteil versuchen, in dem Kernel verwalteten Code ausführen würde verleihen, wahrscheinlich keine. Ausführen von verwalteten Code im Kernel wäre sehr schwierig, da in vielen Teilen der Kernel-Speicherzuweisung sorgfältig getan werden muss - man würde wahrscheinlich nicht genug Kontrolle hat. Darüber hinaus ist das Kernel-Stacks wahrscheinlich zu klein standardmäßig usw. Es gibt einige Kontexte im Kernel, wo Heap-Speicherzuweisung muss überhaupt nicht durchgeführt werden.

Sie könnten versuchen, den Kernel zu ändern, dass er das Mono-Framework verwendet und läuft nur Code in Userspace verwaltet.

Sie können dies mit Kombination von Visual Studio .NET + Grashüpfer tun. Für mehr Informationen bitte dieses Linkes überprüfen. http://dev.mainsoft.com/Default.aspx?tabid=45

Der .NET-Framework enthält viele Utility-Klassen wie Strings oder Sammlungen.

Wie aus User-Space-Übergang Raum auf Kernel zu einem Preis kommt, Leistung würde sich eigentlich noch schlimmer, es sei denn, Sie verwalten Ihre gesamte Anwendung im Kernel-Raum laufen.

Wäre es nicht wollen, um einen syscall tut jedes Mal, wenn ich etwas zu einer Liste hinzuzufügen, oder überprüfen Sie die Länge eines Strings.

Was den Linux-Kernel laufen macht, sind die c-Laufzeitbibliotheken, fügen Sie so in den Mono-Bibliotheken und anderen Abhängigkeiten und ich denke, es möglich zu machen, um es (zumindest mit C #) zu arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top