2009-10-22 46 views
1

我是一名计算机科学工程专业的学生,​​我一直在.NET Framework上编程2-3年,但我没有使用Linux。我认为,对于我最后一年的项目,Linux发行版会很好。建立在.NET Framework上的Linux发行版

我在想实现它的一些方法,当这个疯狂的想法突然想到:

我们能不能首先实现Linux内核的.NET Framework和使用它搭建的休息吗?

这可能是最奇怪的问题,但请给我一个办法,如果我在这个问题是对的,如果我错了指正。

回答

6

的.NET Framework的功能过于丰富有道理打造这一切没有开始实质性的libc用户空间助手裸Linux内核之上。这不是不可能,但是对于一个学生的博士论文来说,这样做太过雄心勃勃,恕我直言,(如果你的目标程度低于博士学位,那么更是如此)。

查看mono获取.NET独立于Windows的实现,它依赖于 - 并考虑如何在自己的论文的跨度内减少(而不是消除;-)用户空间依赖关系你自己的Mono分支(当然,假设任何论文顾问都会注册支持你)。

+0

Mono适用于更多操作系统而不仅仅是Windows(以防万一从答案中不清楚)。 – 2009-10-22 05:56:54

-1

是什么让Linux内核运行的是C运行时库,所以在单库和其他依赖增加,我想使它有可能得到它的工作(至少在C#)。

3

对于您可能希望签出mono project这是.NET的C#中实现你的问题的第一部分。

至于第二部分,我不知道为什么你要执行的Linux籽粒中.NET。这似乎是一种接近事物的倒退方式。

如果你有兴趣在实现C#操作系统退房Singularity这是用C#开发的研究操作系统

+0

我同意。正确的答案(IMO)是可以在.NET中实现* a *内核,而不是依赖C的Linux内核。它不值得。 – 2009-10-22 05:33:53

0

你可以尝试修改内核,他使用的单框架,只运行用户空间中的托管代码。

1

CLR(又名.NET框架)已经在Mono的Linux上至少实现了一次。

诚然,你可以做一个Linux发行版,其船舶单声道,或者使用.NET的一些启动脚本/守护进程。那很好。有人可能已经这样做了。

我看不出究竟有哪些优势试图在内核中运行托管代码将赋予,大概没有。在内核中运行托管代码将非常困难,因为内核内存分配的许多部分都需要小心完成 - 您可能没有足够的控制权。而且,内核栈默认情况下可能太小了。在内核中有一些内存中根本不需要进行堆内存分配。

0

.NET框架包含许多类似字符串或集合的实用程序类。

由于从用户空间过渡到内核空间需要付出代价,除非您设法在内核空间中运行整个应用程序,否则性能实际上会变得更糟。

每次我向列表添加内容或检查字符串的长度时,都不想做系统调用。