首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

【转载?共享】打破传统,C#也能开发操作系统!该怎么解决

2012-02-25 
【转载?共享】打破传统,C#也能开发操作系统!/***********************************************************

【转载?共享】打破传统,C#也能开发操作系统!
/****************************************************************************************
前言:
我刚看了一遍文章——用C#或VB.NET开发你自己的操作系统,我觉得挺有意思的,现将文章翻译一下转载过来,
由于本人英语能力有限,部分有可能不准确,各位可以查看原文,只想与各位分享一下,顺便探讨一下可能性。
  原来国外早就有了用C#开发操作系统的探索,还开发出了原型机,我更有信心坚定学习C#的信心了!
****************************************************************************************/
原文地址:
http://www.codeproject.com/KB/cs/CosmosMS5.aspx

[b]用C#或VB.NET开发你自己的操作系统[/b]
Cosmos介绍:
(注:Cosmos谷哥译为“宇宙”,个人觉得不好听,就采用原文名称)
Cosmos(C#开源管理操作系统)是用于Visual Studio及其开发环境的一个操作系统开发工具包。尽管使用C#作为名称,但可以使用基于.NET的任何语言包括VB.NET, Fortran, Delphi Prism, IronPython, F# 等等。Cosmos本身和内核程序主要是用C#编写的,就像它的名字。除此以外,NOSMOS (.NET Open Source Managed Operating System)的发音听起来很讨厌。

Cosmos并不是一个传统意义上的操作系统,恰好相反,它是一个“操作系统工具包”,或者像我喜欢说的“操作系统积木”。(注:积木,有些人喜欢将写程序称为搭积木)Cosmos让你创建操作系统就像Visual Studio和C#通常创建应用程序一样。全部使用Visual Studio(编写),大部分用户在短短几分钟之内就可以编写和启动他们的系统。里程碑5包括的新功能如Visual Studio里的集成项目类型,和集成调试。你可以在Visual Studio使用断点直接调试你的操作系统。

Cosmos 分为两个部分,一个是开发工具包(开发套件),另一个是用户套件。开发套件是为要想开发Cosmos本身而设计。用户套件是为那些对建立他们自己的操作系统感兴趣并做着和Cosmos相同的工作而设计的。开发套件可以被认为是一个Cosmos SDK。大多数用户应该从用户套件开始,因为它并不像开发套件一样反应热烈。本文侧重于用户套件。

编写你的第一个操作系统:
就像你创建其它C#项目一样创建一个新的项目,不过要选择Cosmos项目类型。



将创建一个启动项目,它看起来非常像一个标准的C#控制台应用程序。



Program.cs中包含了启动和执行的代码。但在Windows控制台窗口中,你将看到如下:



这是你的操作系统在VMWare Player中运行!Cosmos当然也可以由虚拟工作站、Hyper-V,、Virtual PC或者真实计算机启动,但默认的,Cosmos 使用VMWare Player,因为它免费,可靠。Cosmos甚至可以在其它机器运行的时候在Visual Studio中调试。

集成调试:
调试是一个操作系统发展的主要问题。Cosmos团队并不满足于简单的建立和部署,我们希望做到开发操作系统像开发Windows应用程序一样简单。调试Cosmos的操作系统对你来说应该感到很熟悉。让我们一点点修改项目并显示其效果,并设置一个断点。



现在重新运行一次项目:



注意为什么在"One"那里停止执行?因为在Visual Studio中,我们的项目已在断点处停止。只需按F5继续,就像你在一个平常的应用程序!

除了断点,Cosmos还支持单步(F11)。但跟踪(F10)还不支持。

调试器通信:
调试器使用串行端口进行通信。正因为如此,调试只支持串行端口如VMWare的虚拟化环境。 QEMU也支持串行端口,但它的串行端口在Windows上执行时被严重破坏并且无法使用QEMU调试。要在真实的计算机中调试,你必须使用一个物理串行电缆。在未来,Cosmos也将支持通过以太网调试。

附加调试:

Cosmos将提供一些详细的方法用于与调试器通信作为附加功能。它是访问Cosmos.Kernel程序集中Cosmos.Debug命名空间下的Debugger类。此程序集适用于所有的Cosmos项目。

基于断点的代码:

C# code
Debugger.Break();

Break 可用于发布代码的中断,Visual Studio执行这条语句后就中断了。



由于Cosmos还不支持在IDE中的有条件的断点。有断点的代码在实施中非常有用。例如:
C# code
if (x == 5) {    Debugger.Break();}

或者,你可以调用NET类库中断。
C# code
System.Diagnostics.Debugger.Break();


这两个方法会产生相同的结果。

调试输出:
调试字符串输出到主机的调试窗口。由于Cosmos还不支持watches(注:这个watches我有点不明白),但这个功能对监视变量值和执行无断点跟踪是非常有用的。
C# code
Debugger.Send("Hello from Cosmos!");

当执行这句时,它会通过调试通道发送一条信息并显示在Visual Studio输出窗体上。



有什么收获?
确实没有收获。我这里运行的一切只是作个演示。没有使用实体模型。但是我们还有很多工作去做。我们当前的任务包括接口(foreach必备),文件系统(部分支持硬件)(注:partial support exists估计不太准确),线程,网络,和图形。我们拥有所有的原型和实验,但还没有一个被纳入Cosmos开发的主流程。

当我看到启动时Syslinux在做什么事情?
Cosmos没有在Linux上运行。被称为Syslinux的启动加载程序用以启动Cosmos。开机后, SYSLINUX不再使用。 SYSLINUX是一个引导加载程序,而不是一个Linux发行版。

获取Cosmos:
  ?Cosmos 网站:http://www.GoCosmos.org 
  ?源码 – 开发套件和用户套件:http://Cosmos.CodePlex.com

许可证:
本文,连同任何相关的源代码和文件是在BSD许可证下授权。

关于作者:Chad Z. Hower aka Kudzu
翻译:ohkuy

/*-----------------------


注:本文系原创翻译过来,版权所有,如果转载,请标明出处!
(特别是抓包的,不要忘了!)
-------------------------*/

[解决办法]
已推荐。
[解决办法]
牛X。。。。。。。哈啊哈哈哈哈
[解决办法]
好。。
[解决办法]
学习了。增长见识了。
[解决办法]
Why Cosmos?
Because its fun! Do we need any more reasons? Well if you do, here are a list of many real world scenarios we envision.
为什么要Cosmos?因为好玩。如果你有更好的理由,我很乐见。

How does Cosmos work?
Cosmos includes a compiler (IL2CPU, which is part of Cosmos) that reads the input file (usually the shell) and Cosmos libraries and compiles the resulting IL to x86 code. IL2CPU has a layer for cross platform and we plan to support other processors and platforms, including x64. IL2CPU also supports certain extension methods which allow C# code to interact directly with the CPU, registers, and ports in the kernel. IL2CPU contains some inline assembler, but there are no ASM files that need to be linked in.
Cosmos运行机制
Cosmos包含一个IL to CPU的编译器(听上去像JIT),然后Cosmos的库跨平台去模拟.NET库

Currently IL2CPU first outputs raw asm files (with IL comments) and then processes them through nasm (a free assembler). Later we plan to emit directly to binary.


[解决办法]
用C#开发操作系统?

要开发操作系统 首先要有自己的核心芯片
[解决办法]
是的,有自己核心芯片当然不错了
[解决办法]
进来学习一下
[解决办法]

要干大事啊。。。只能说他很乐观。。。
[解决办法]
。。。我想起了那个悲剧的vista。。。
当初貌似就是用.net写的,后来。。。写不下去了~~
[解决办法]
脚本语言开发系统,还是感觉不靠谱
[解决办法]
牛人啊
[解决办法]
对于os 运行速度是关键的,C#速度能行吗?
[解决办法]
期待。
[解决办法]
可行吗?
[解决办法]

[解决办法]
大致想一想,即使开发出来,也是windows的“孩子”,一个用C#写的可运行的程序,这里除了自己写的东西外,还包括了windows系统的成分
[解决办法]
微软出了个c++的变种,语法有点像c#
[解决办法]
同意楼上的!!!
[解决办法]
你真2.
[解决办法]
概念炒作,对于操作系统,不能忘了前提条件。
[解决办法]
我觉得还是算了吧
[解决办法]
希望能成功
[解决办法]
C#真的很好用。
------解决方案--------------------


顶新鲜的
[解决办法]
好几年前的东西了
就是for fun
[解决办法]
对于os 运行速度是关键的,C#速度能行吗? 
 

[解决办法]

探讨
引用:
Currently IL2CPU first outputs raw asm files (with IL comments) and then processes them through nasm (a free assembler). Later we plan to emit directly to binary.



你的意思是说Cosm……

[解决办法]
好几年前的?刚看着,学习一下。貌似vs2010不支持Cosmos的项目了。
[解决办法]
工本费的年凤冈县
[解决办法]
真的不支持了吗?
[解决办法]
大学骨化风成个 国防大学
[解决办法]
刚发的刚发的香港大学
[解决办法]
我觉得会是个悲剧。。。
[解决办法]
学习了,学习了,学习了,学习了,学习了,学习了,学习了,学习了,学习了,学习了,
[解决办法]
在应用的角度上看,操作系统做出来以后,一定要好用,性能要好,兼容要强。。。
[解决办法]
学习并支持
[解决办法]
非常有用!
[解决办法]
探讨
概念炒作,对于操作系统,不能忘了前提条件。

[解决办法]
开发出来的是玩具操作系统,不具备实用性。
[解决办法]
牛人很多。 肯定能开发出来的。
[解决办法]

[解决办法]
菜鸟啊,要积分
[解决办法]
怎么看上去象是只是把c#的VM搬到了裸机上而已??
[解决办法]
我们公司就有个项目,是关于苹果手机的系统。
项目难度相当大,老总都没敢接...



[解决办法]
哇,看看。。
[解决办法]
想法蛮不错
[解决办法]
这么强啊 。
[解决办法]
想法不错啊
[解决办法]
xp系统的一部分是用C#编写的,但要是全部用C#编写一个系统,这还有待努力啊···
[解决办法]
最好用汇编来开发,现在的操作系统,都是老牛
--reply by CSDN Study V1.0.0.3 (starts_2000)
[解决办法]
真是这样吗
[解决办法]
看看。。
[解决办法]
必须顶一下(就冲着名字.哇哈哈哈)
曾经关注过,后来关注着关注着......就淡忘了

[解决办法]

探讨

引用:
脚本语言开发系统,还是感觉不靠谱

大哥,你从哪本书上看到C#是“脚本语言”?

[解决办法]
探讨

最好用汇编来开发,现在的操作系统,都是老牛
--reply by CSDN Study V1.0.0.3 (starts_2000)

[解决办法]

 本来可以坐车到达目的地,偏偏要走路去有什么办法~~
[解决办法]
扯jb蛋,能写操作系统。
[解决办法]
什么时候用用
[解决办法]
学习 中 ···
[解决办法]
探讨
xp系统的一部分是用C#编写的,但要是全部用C#编写一个系统,这还有待努力啊···

[解决办法]
感觉不太可能啊
[解决办法]
其实我想知道,运行速度如何?
[解决办法]
能行吗?
[解决办法]
探讨
引用:
xp系统的一部分是用C#编写的,但要是全部用C#编写一个系统,这还有待努力啊···

Bullshit

[解决办法]
探讨

引用:
引用:
xp系统的一部分是用C#编写的,但要是全部用C#编写一个系统,这还有待努力啊···

Bullshit

没错。Windows 98是BASIC写的。所以不如XP稳定。Windows 8已经使用C##编写了。

[解决办法]
看看,学习!
[解决办法]
探讨
引用:

引用:
引用:
xp系统的一部分是用C#编写的,但要是全部用C#编写一个系统,这还有待努力啊···

Bullshit

没错。Windows 98是BASIC写的。所以不如XP稳定。Windows 8已经使用C##编写了。


都人才

[解决办法]
牛人怎么这么多呢!
[解决办法]
人才人才,膜拜
[解决办法]
膜拜~
[解决办法]
非常感谢楼主推荐

热点排行