1

私はコンピュータ サイエンス エンジニアリングの学生で、.NET Framework で 2 ~ 3 年間プログラミングを行っていますが、Linux は使用したことがありません。私の最終年度のプロジェクトには、Linux ディストリビューションが適していると思いました。

このクレイジーなアイデアが私に浮かんだとき、私はそれを実装するいくつかの方法を考えていました:

最初に Linux カーネルに .NET Framework を実装し、それを使用して残りをビルドすることはできますか?

これは最も奇妙な質問かもしれませんが、私が質問をするのが正しい場合は方法を教えてください間違っている場合は修正してください。

4

7 に答える 7

6

.NET フレームワークの機能は豊富すぎて、libc で始まる実質的なユーザー空間ヘルパーなしで、裸の Linux カーネルの上にすべてを構築することは意味がありません。不可能ではありませんが、野心的すぎます.

Windows に依存しない .NET の実装とそれが依存するすべてのmonoを見てください。そして、Mono のフォークで、論文の範囲内で、独自にユーザー空間の依存関係を減らす (なくすのではなく;-) 方法を考えてください。あなた自身のものです(もちろん、論文アドバイザーがあなたをサポートするためにサインアップすると仮定します).

于 2009-10-22T05:30:08.487 に答える
3

質問の最初の部分については、C# での .net の実装であるmono プロジェクトをチェックアウトすることをお勧めします。

2 番目の部分については、Linux カーネルを .net に実装する理由がわかりません。それは物事へのアプローチの少し後ろ向きの方法のようです.

C# でオペレーティング システムを実装することに興味がある場合は、C# で開発された研究用オペレーティング システムであるSingularityをチェックしてください。

于 2009-10-22T05:30:33.880 に答える
1

CLR(別名.NET Framework)は、LinuxのMonoに少なくとも1回実装されています。

確かに、Monoを出荷するLinuxディストリビューションを作成することも、スタートアップスクリプト/デーモンの一部に.NETを使用することもできます。それは大丈夫だろう。おそらく誰かがすでにこれを行っています。

カーネルでマネージコードを実行しようとすると、どのような利点が得られるのか正確にはわかりません。おそらく何もありません。カーネルの多くの部分でメモリ割り当てを慎重に行う必要があるため、カーネルでマネージコードを実行することは非常に困難です。おそらく、十分な制御ができないでしょう。さらに、カーネルスタックは、デフォルトでは小さすぎる可能性があります。カーネルには、ヒープメモリの割り当てをまったく行わない必要があるコンテキストがいくつかあります。

于 2009-10-22T06:46:43.680 に答える
0

彼がモノフレームワークを使用し、ユーザー空間でマネージドコードのみを実行するように、カーネルを変更することを試みることができます。

于 2009-10-22T05:31:35.467 に答える
0

これは、Visual Studio .NET + Grasshopper の組み合わせを使用して行うことができます。詳細については、このリンクを確認してください。 http://dev.mainsoft.com/Default.aspx?tabid=45

于 2009-10-22T05:40:53.717 に答える
-1

Linuxカーネルを実行するのはcランタイムライブラリであるため、モノライブラリとその他の依存関係を追加すると、(少なくともC#で)動作させることが可能になると思います。

于 2009-10-22T05:28:51.027 に答える