【转载?共享】打破传统,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项目。
基于断点的代码:
Debugger.Break();
if (x == 5) { Debugger.Break();}
System.Diagnostics.Debugger.Break();
Debugger.Send("Hello from Cosmos!");
注:本文系原创翻译过来,版权所有,如果转载,请标明出处!
(特别是抓包的,不要忘了!)
-------------------------*/
[解决办法]
已推荐。
[解决办法]
牛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#速度能行吗?
[解决办法]
[解决办法]