你能用C编写操作系统吗?

时间:2011-01-11 17:45:06

标签: c# java c operating-system

我得到C及其超级集允许您进行低级别访问,但是您可以使用其他语言。例如Visual Basic,C#甚至Java?我只是好奇,因为从C开始以来似乎应该有更好的东西。

11 个答案:

答案 0 :(得分:8)

您可以使用您选择的任何语言编写操作系统 - 只要您具有将其编译到该平台所需的引导。

例如,JNode是一个基于Java的操作系统(带有少量汇编程序)。

答案 1 :(得分:7)

您可以使用其中任何一个来编写操作系统。但是,您需要一个引导程序(可能用C语言编写)来加载和运行您的语言的运行时。

Google学术搜索为研究提供了一些很好的起点:http://scholar.google.com/scholar?q=java+operating+system&hl=en&btnG=Search&as_sdt=1,5&as_sdtp=on

答案 2 :(得分:4)

答案 3 :(得分:3)

您几乎可以使用任何编程语言。您可能需要一些汇编和/或C粘合代码来使用任何托管编程语言。

您可以在OSDev wikiforum获得大量信息。

有一个项目,他们甚至创建了直接编译到机器代码的C#编译器,因此内核中可能没有任何C或其他代码。任何内核都需要一些程序集。

答案 4 :(得分:2)

我很确定你可以,但正如你所说的那样使用C,因为它允许你进行低级别的访问,但是,Visual Basic,Java和C#都是在框架下工作的地方

答案 5 :(得分:2)

可能有工具可以采用字节码(或者在C#的情况下为IL)并将其编译为当前处理器架构可以理解的机器级代码。不过,我自己也不知道。

答案 6 :(得分:1)

ASSEMBLER就是答案!单独的C不能生成一个很好的bootsector,因为你没有正确的输出格式。但是大多数操作系统认为C是其大部分部分的好语言。

答案 7 :(得分:1)

答案 8 :(得分:1)

有几种语言可以“开箱即用”来编写操作系统,如C ++,D,汇编。

如果要使用C#,Java或VB等语言,则需要具有运行时环境(在某些情况下包括JIT编译器)。这意味着,您必须编写这些运行时,并且您将无法使用Java等语言执行此操作。您必须使用C / C ++ / Assembly等语言编写运行时代码,然后运行时可以加载Java / VB代码。

另一种方法是为C#/ Java / VB编写一个新的编译器,它将编译为机器代码或程序集。这样可行,但是在OS / Executive级别使用VB或Java等语言会有很多麻烦,因为它们不允许你像C / C ++一样进行内存访问。也不允许您直接运行CPU指令。

答案 9 :(得分:0)

似乎从所有的答案中可以肯定,但它不会像创建一个用C编写的那样简单或容易。很可能它需要硬件支持或至少需要一些c或c ++“胶水代码”

答案 10 :(得分:0)

Cosmos - C#开源管理操作系统

http://www.codeproject.com/KB/system/CosmosIntro.aspx