Question

Je suis un étudiant en ingénierie informatique et je programme sur le .NET Framework depuis 2 ou 3 ans mais je n’ai pas utilisé Linux. Je pensais que, pour mon projet de dernière année, une distribution Linux serait bien.

Je pensais à quelques façons de le mettre en œuvre, lorsque cette idée folle m'est venue à l'esprit:

  

Pouvons-nous d'abord implémenter le .NET Framework sur le noyau Linux et construire le reste à l'aide?

Cela pourrait être la question la plus étrange, mais merci de me donner un moyen si je me trompe de poser la question et de me corriger si je me trompe.

Était-ce utile?

La solution

La fonctionnalité du framework .NET est trop riche pour qu'il soit logique de tout construire à partir d'un noyau Linux nu, sans aide substantielle de l'espace utilisateur commençant par libc. Pas impossible, mais beaucoup trop ambitieux, à mon humble avis, pour une thèse de doctorat (et bien davantage si vous visez un degré inférieur à celui d’un doctorat).

Regardez mono pour une implémentation de .NET indépendante de Windows et de tout ce qui en dépend - et pensez à la façon dont vous pourriez réduire (et non pas éliminer ;-) les dépendances de l’espace utilisateur par vous-même, dans l’envergure de votre thèse, dans votre propre fork de Mono (en supposant que tout conseiller en thèse s’inscrirait pour vous aider, bien entendu). .

Autres conseils

Pour la première partie de votre question, vous souhaiterez peut-être consulter le projet mono , qui est une implémentation. de .net en c #.

En ce qui concerne la deuxième partie, je ne sais pas pourquoi vous voudriez implémenter Linux Kernal dans .net. Cela ressemble à une approche un peu arriérée de la chose.

Si vous souhaitez implémenter un système d'exploitation en c #, consultez Singularity qui est un système d'exploitation de recherche développé en c #

Le CLR (ou .NET Framework) a été implémenté au moins une fois sous Linux, en mono.

Certes, vous pouvez créer une distribution Linux livrée avec Mono ou utiliser .NET pour certains de ses scripts / daemons de démarrage. Ça serait bien. Quelqu'un l'a probablement déjà fait.

Je ne vois pas exactement quel avantage conférerait un risque d'exécuter du code managé dans le noyau, probablement aucun. Exécuter du code managé dans le noyau serait très difficile car dans de nombreuses parties du noyau, l’allocation de mémoire doit être faite avec précaution - vous n’auriez probablement pas assez de contrôle. De plus, les piles du noyau sont probablement trop petites par défaut, etc. Il existe des contextes dans le noyau dans lesquels l’allocation de mémoire en tas ne doit pas du tout être effectuée.

Vous pouvez essayer de modifier le noyau, qu’il utilise le mono-framework et n’exécute que du code géré dans l’espace utilisateur.

vous pouvez le faire en utilisant une combinaison de Visual Studio .NET + Grasshopper. Veuillez vérifier cette ligne pour plus d'informations. http://dev.mainsoft.com/Default.aspx?tabid=45

Le framework .NET contient un grand nombre de classes d’utilitaires telles que des chaînes ou des collections.

Etant donné que la transition d'espace utilisateur vers espace noyau entraîne des coûts, les performances pourraient en réalité empirer, à moins que vous ne puissiez exécuter l'ensemble de votre application dans l'espace noyau.

Je ne voudrais pas faire d'appels système chaque fois que j'ajoute quelque chose à une liste ou que je vérifie la longueur d'une chaîne.

Ce qui fait que le noyau Linux est exécuté, ce sont les bibliothèques runtime c, alors ajoutez-y les bibliothèques mono et autres dépendances et je suppose qu’il est possible de le faire fonctionner (au moins avec C #).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top