【转载•共享】打破传统,C#也能开发操作系统!

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

用C#或VB.NET开发你自己的操作系统

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();

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



由于Cosmos还不支持在IDE中的有条件的断点。有断点的代码在实施中非常有用。例如:

if (x == 5) {
Debugger.Break();
}

或者,你可以调用NET类库中断。

System.Diagnostics.Debugger.Break();


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

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

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

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

-------------------------------------------------------------*/
...全文
6784 339 打赏 收藏 转发到动态 举报
写回复
用AI写文章
339 条回复
切换为时间正序
请发表友善的回复…
发表回复
fomyth 2014-01-15
  • 打赏
  • 举报
回复
真是niubility
Change_Land 2013-05-26
  • 打赏
  • 举报
回复
引用 331 楼 mgcoco 的回复:
这是他们程序里底层部分的一段代码: public override void WriteText( Cosmos.Compiler.Assembler.Assembler aAssembler, System.IO.TextWriter aOutput ) { if ((Prefixes & InstructionPrefixes.Repeat) != 0) { aOutput.Write("rep "); } switch (Size) { case 32: aOutput.Write("movsd"); return; case 16: aOutput.Write("movsw"); return; case 8: aOutput.Write("movsb"); return; default: throw new Exception("Size not supported!"); } } 说明,他们是将C#翻译成了汇编,然后再通过其他汇编编译器编译成机器码的吧。 最后写成的操作系统快不快,就看他们这底层翻译的好不好了。
赞同你的观点,C#开发操作系统意义不大。
Change_Land 2013-05-26
  • 打赏
  • 举报
回复
高级语言的优势在于中小型应用程序领域,或少数大型软件开发领域,超大型软件的开发还是需要用中层语言如C++语言进行开发,操作系统,微型的话,C#或许还有用,你推荐的东西最多就是拿来自娱自乐,事实上现在自己开发操作系统的意义在于了解底层,研究底层,使用C#的话封装过多,很多底层细节无法接触到,于是就失去了研究的价值。
hui_zaige123 2013-04-09
  • 打赏
  • 举报
回复
MARK
wzuomin 2012-04-17
  • 打赏
  • 举报
回复
关注。。。。。
jsmlbl 2012-01-31
  • 打赏
  • 举报
回复
过去看看,牛啊!好好学习下
m350780837 2011-12-04
  • 打赏
  • 举报
回复
新手表示看不懂!牛人很多!膜拜一下!
mgcoco 2011-11-06
  • 打赏
  • 举报
回复
这是他们程序里底层部分的一段代码:
public override void WriteText( Cosmos.Compiler.Assembler.Assembler aAssembler, System.IO.TextWriter aOutput )
{
if ((Prefixes & InstructionPrefixes.Repeat) != 0) {
aOutput.Write("rep ");
}
switch (Size) {
case 32:
aOutput.Write("movsd");
return;
case 16:
aOutput.Write("movsw");
return;
case 8:
aOutput.Write("movsb");
return;
default: throw new Exception("Size not supported!");
}
}
说明,他们是将C#翻译成了汇编,然后再通过其他汇编编译器编译成机器码的吧。
最后写成的操作系统快不快,就看他们这底层翻译的好不好了。
fly4free 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 86 楼 wwsyxy 的回复:]
Cosmos 依赖 C#
C# 依赖 .net framework
.net framework 依赖 windows
windows 依赖 cpu
Cosmos 离 cpu 太远了 这叫什么操作系统啊
[/Quote]

把这些间接依赖全部直接合并成一个,il2cpu就是干这个的吧。。

不过我猜测,最后出来的也许是“能编写操作系统的C#语言”。。。


tokimemo 2011-09-14
  • 打赏
  • 举报
回复
我个人感觉目前cosmos还只是一个把C#的中间代码(IL)转换为for X86的机器码的编译器而已,要说操作系统,目前有点为时尚早,不过完全是可能的。
看了以上所有人的发言,很多人都陷入了一个误区。就是操作系统一定是汇编、c、c++这些语言才能编写的。其实不然,他们只是最接近机器码或者很容易在不同CPU的计算机上移植。所以,才做为目前我们常见的多种操作系统的主要编写语言。
所以,只要是能最终将程序转换为机器码,理论上(注意,是理论上)都可以编写类似cosmos的“操作系统”。因为,你们看到的最终产品是二进制代码,而不是C#,也不是C或C++。
虽然C#较C或C++离机器码很远,但是并不会阻碍它成为机器码。无非是所消耗的精力多一点而已,事情会更复杂而已,从理论上讲是没有任何问题的。
因为是机器码,所以c#的一切特性都没有了,你也不用顾忌是不是托管代码,也不用担心效率问题,更不用顾虑虚拟机(跑机器码还用虚拟机???),因为最后它只是机器码而已。
目前的cosmos只是转换工具而已(这话有点偏激,不过这个是核心功能),它的最终产品和C#已经没有太多联系了,为什么还要拽着C#不放手呢。
rita_cai 2011-08-12
  • 打赏
  • 举报
回复
观摩顶礼ing……牛人一大叉,俺们小菜鸟慢慢埋头C#去,有C#学习ing的加个好友~~
j9dai 2011-08-02
  • 打赏
  • 举报
回复
上岸の鱼 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 100 楼 gyk120 的回复:]
人家是在吐槽呢……
随便用脑子想想就知道,.Net这种高度依赖于虚拟机的语言怎么可能这么容易写出一个操作系统,你要实现一个操作系统必须先弄一个适合容纳这个操作系统的虚拟机,那虚拟机又要运行在哪个平台上面呢?
[/Quote]

真理+1

楼主,赶紧放弃你那愚蠢的念头吧,别误人子弟了。。
你要说重新造一个语言,我还是支持你的
zack_hoo 2011-08-01
  • 打赏
  • 举报
回复
好贴就是得顶!
牛奶咖啡 2011-08-01
  • 打赏
  • 举报
回复
没那么简单。。。
adsw001 2011-08-01
  • 打赏
  • 举报
回复
牛人啊
神-气 2011-07-31
  • 打赏
  • 举报
回复
学c#的都这样么...全是人才。。。
mrsupersky 2011-07-31
  • 打赏
  • 举报
回复
不要 总是疑问疑问
等到 人家 开发出来了 看你还有什么屁放。。。!!!
小堇 2011-07-31
  • 打赏
  • 举报
回复
恩 挺有意思的 用C#编写os觉得有些困难 还是帮顶~~!
天涯倦客 2011-07-31
  • 打赏
  • 举报
回复
[Quote=引用 221 楼 aaadddzxc 的回复:]

呵呵,引导必须汇编,你不引导 啥都是白扯,驱动必须汇编,不然没法调到操作硬件
[/Quote]
汇编也是 最终也是磁盘文件。。。
加载更多回复(300)
管理系统,作为一种高效的企业运营管理工具,旨在通过集成化、系统化的手段,对组织内部的各类资源进行规划、协调、控制和优化,以实现企业战略目标,提升运营效率,增强核心竞争力。以下是对管理系统的详细介绍: 一、定义与构成 管理系统是指由硬件设备、软件应用、数据资源、人员以及相关管理制度共同构建的,用于处理、监控、分析和决策各类业务活动的综合信息系统。它通常包括以下几个核心组成部分: 数据采集模块:负责从各类业务环节中实时、准确地收集信息,形成企业的基础数据资源。 数据分析模块:运用统计学、人工智能等技术对数据进行深度挖掘和智能分析,提供决策支持。 业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。 决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。 用户界面与交互模块:提供友好的人机交互界面,方便用户操作使用。 二、主要类型与功能 管理系统根据所针对的管理对象和领域,可分为多种类型,如: 人力资源管理系统(HRM):涵盖招聘、培训、绩效考核、薪酬福利等人力资源全流程管理,提升人才效能。 客户关系管理系统(CRM):集中管理客户信息,优化销售、营销和服务流程,提升客户满意度和忠诚度。 供应链管理系统(SCM):整合供应商、制造商、分销商、零售商等供应链各环节,实现物流、资金流、信息流的协同运作。 企业资源计划系统(ERP):对企业内部财务、生产、采购、库存、销售等各项资源进行全面集成管理,提高整体运营效率。 项目管理系统(PM):对项目全生命周期进行规划、跟踪、控制,确保项目按时、按质、按预算完成。 三、价值与优势 提高效率:自动化工作流程、标准化业务操作,显著减少人工干预,提升工作效率。 优化决策:实时数据分析与预测,提供精准的决策依据,助力管理层做出明智选择。 资源整合:打破部门壁垒,实现信息共享,优化资源配置,降低运营成本。 合规风控:内置法规遵循机制,强化内部控制,降低经营风险。 持续改进:通过对系统数据的持续监控与分析,驱动业务流程持续优化,促进企业创新与发展。 总的来说,管理系统作为现代企业管理的重要工具,以其强大的数据处理能力、智能化的决策支持和高效的业务流程管理,有力推动了企业的数字化转型,助力企业在日益激烈的市场竞争中保持竞争优势。
管理系统,作为一种高效的企业运营管理工具,旨在通过集成化、系统化的手段,对组织内部的各类资源进行规划、协调、控制和优化,以实现企业战略目标,提升运营效率,增强核心竞争力。以下是对管理系统的详细介绍: 一、定义与构成 管理系统是指由硬件设备、软件应用、数据资源、人员以及相关管理制度共同构建的,用于处理、监控、分析和决策各类业务活动的综合信息系统。它通常包括以下几个核心组成部分: 数据采集模块:负责从各类业务环节中实时、准确地收集信息,形成企业的基础数据资源。 数据分析模块:运用统计学、人工智能等技术对数据进行深度挖掘和智能分析,提供决策支持。 业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。 决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。 用户界面与交互模块:提供友好的人机交互界面,方便用户操作使用。 二、主要类型与功能 管理系统根据所针对的管理对象和领域,可分为多种类型,如: 人力资源管理系统(HRM):涵盖招聘、培训、绩效考核、薪酬福利等人力资源全流程管理,提升人才效能。 客户关系管理系统(CRM):集中管理客户信息,优化销售、营销和服务流程,提升客户满意度和忠诚度。 供应链管理系统(SCM):整合供应商、制造商、分销商、零售商等供应链各环节,实现物流、资金流、信息流的协同运作。 企业资源计划系统(ERP):对企业内部财务、生产、采购、库存、销售等各项资源进行全面集成管理,提高整体运营效率。 项目管理系统(PM):对项目全生命周期进行规划、跟踪、控制,确保项目按时、按质、按预算完成。 三、价值与优势 提高效率:自动化工作流程、标准化业务操作,显著减少人工干预,提升工作效率。 优化决策:实时数据分析与预测,提供精准的决策依据,助力管理层做出明智选择。 资源整合:打破部门壁垒,实现信息共享,优化资源配置,降低运营成本。 合规风控:内置法规遵循机制,强化内部控制,降低经营风险。 持续改进:通过对系统数据的持续监控与分析,驱动业务流程持续优化,促进企业创新与发展。 总的来说,管理系统作为现代企业管理的重要工具,以其强大的数据处理能力、智能化的决策支持和高效的业务流程管理,有力推动了企业的数字化转型,助力企业在日益激烈的市场竞争中保持竞争优势。
管理系统,作为一种高效的企业运营管理工具,旨在通过集成化、系统化的手段,对组织内部的各类资源进行规划、协调、控制和优化,以实现企业战略目标,提升运营效率,增强核心竞争力。以下是对管理系统的详细介绍: 一、定义与构成 管理系统是指由硬件设备、软件应用、数据资源、人员以及相关管理制度共同构建的,用于处理、监控、分析和决策各类业务活动的综合信息系统。它通常包括以下几个核心组成部分: 数据采集模块:负责从各类业务环节中实时、准确地收集信息,形成企业的基础数据资源。 数据分析模块:运用统计学、人工智能等技术对数据进行深度挖掘和智能分析,提供决策支持。 业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。 决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。 用户界面与交互模块:提供友好的人机交互界面,方便用户操作使用。 二、主要类型与功能 管理系统根据所针对的管理对象和领域,可分为多种类型,如: 人力资源管理系统(HRM):涵盖招聘、培训、绩效考核、薪酬福利等人力资源全流程管理,提升人才效能。 客户关系管理系统(CRM):集中管理客户信息,优化销售、营销和服务流程,提升客户满意度和忠诚度。 供应链管理系统(SCM):整合供应商、制造商、分销商、零售商等供应链各环节,实现物流、资金流、信息流的协同运作。 企业资源计划系统(ERP):对企业内部财务、生产、采购、库存、销售等各项资源进行全面集成管理,提高整体运营效率。 项目管理系统(PM):对项目全生命周期进行规划、跟踪、控制,确保项目按时、按质、按预算完成。 三、价值与优势 提高效率:自动化工作流程、标准化业务操作,显著减少人工干预,提升工作效率。 优化决策:实时数据分析与预测,提供精准的决策依据,助力管理层做出明智选择。 资源整合:打破部门壁垒,实现信息共享,优化资源配置,降低运营成本。 合规风控:内置法规遵循机制,强化内部控制,降低经营风险。 持续改进:通过对系统数据的持续监控与分析,驱动业务流程持续优化,促进企业创新与发展。 总的来说,管理系统作为现代企业管理的重要工具,以其强大的数据处理能力、智能化的决策支持和高效的业务流程管理,有力推动了企业的数字化转型,助力企业在日益激烈的市场竞争中保持竞争优势。

110,530

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧