Linux Distro построен на .NET Framework - PullRequest
1 голос
/ 22 октября 2009

Я учусь на инженера по компьютерным наукам, и я программирую на .NET Framework в течение 2-3 лет, но я не использовал Linux. Я думал, что для моего последнего года проекта дистрибутив Linux будет хорошим.

Я думал о нескольких способах ее реализации, когда мне пришла в голову эта сумасшедшая идея:

Можем ли мы сначала внедрить .NET Framework в ядре Linux и собрать остальное, используя его?

Это может быть самый странный вопрос, но, пожалуйста, дайте мне способ, если я прав в , задаю вопрос и исправьте меня, если я неправ.

Ответы [ 7 ]

6 голосов
/ 22 октября 2009

Функциональность .NET Framework слишком богата, чтобы иметь смысл строить все это на чистом ядре Linux без существенных помощников в пользовательском пространстве, начиная с libc. Не невозможно, но слишком амбициозно, ИМХО, для докторской диссертации одного студента (и даже более того, если вы стремитесь получить более низкую степень, чем докторская степень).

Посмотрите на mono для независимой от Windows реализации .NET и всего, что от нее зависит - и подумайте, как вы можете уменьшить (не устранить ;-) зависимости пользовательского пространства самостоятельно, в рамках своей диссертации). 'span, на собственной вилке Mono (при условии, что любой тезис-консультант подпишется, чтобы поддержать вас в этом, конечно).

3 голосов
/ 22 октября 2009

Для первой части вашего вопроса вы можете обратиться к моно-проекту , который является реализацией .net в c #.

Что касается второй части, я не знаю, почему вы хотите внедрить Linux Kernal в .net. Кажется, это немного отсталый способ приблизиться к вещи.

Если вы заинтересованы во внедрении операционной системы в c #, посмотрите Singularity , которая является исследовательской операционной системой, разработанной в c #

1 голос
/ 22 октября 2009

CLR (он же .NET Framework) был реализован хотя бы один раз в Linux, в Mono.

Правда, вы можете создать дистрибутив Linux, который поставляется с Mono, или использует .NET для некоторых из своих скриптов запуска / демонов. Это было бы хорошо. Кто-то, вероятно, уже сделал это.

Я не вижу, какое именно преимущество дает запуск управляемого кода в ядре, вероятно, нет. Запуск управляемого кода в ядре будет очень трудным, потому что во многих частях ядра выделение памяти должно выполняться осторожно - у вас, вероятно, не будет достаточно контроля. Более того, стеки ядра, вероятно, слишком малы по умолчанию и т. Д. В ядре есть несколько контекстов, где выделение кучи памяти вообще не должно выполняться.

0 голосов
/ 17 июня 2017

.NET Framework содержит множество служебных классов, таких как строки или коллекции.

Поскольку переход от пространства пользователя к пространству ядра обходится дорого, производительность фактически ухудшится, если вам не удастся запустить все приложение в пространстве ядра.

Не хочу делать системный вызов каждый раз, когда я добавляю что-то в список или проверяю длину строки.

0 голосов
/ 22 октября 2009

вы можете сделать это, используя комбинацию Visual Studio .NET + Grasshopper. Пожалуйста, проверьте эту ссылку для получения дополнительной информации. http://dev.mainsoft.com/Default.aspx?tabid=45

0 голосов
/ 22 октября 2009

Вы можете попытаться изменить ядро, чтобы он использовал моно-фреймворк и запускал только управляемый код в пользовательском пространстве.

0 голосов
/ 22 октября 2009

Что запускает ядро ​​Linux, так это библиотеки времени выполнения c, поэтому добавьте моно-библиотеки и другие зависимости, и я думаю, что это даст возможность заставить его работать (по крайней мере, с C #).

...