当前位置:  开发笔记 > 编程语言 > 正文

为x86架构开发操作系统

如何解决《为x86架构开发操作系统》经验,为你挑选了3个好方法。

我计划为x86架构开发一个操作系统.

我有哪些编程语言选项?

有哪些类型的编译器可用,最好是在Windows环境中?

是否有任何好的资源可以帮助我了解有关操作系统开发的更多信息?

在虚拟机或物理硬件上测试我的操作系统是否更好?

有什么建议?



1> QAZ..:

对于我拼贴的最后一年项目,我开发了一个带有虚拟内存管理器,虚拟文件​​系统和完全抢占式多任务处理的小型x86操作系统.我把它作为开源代码并且代码被大量评论,请查看其源代码页面:

https://github.com/stephenfewer/NoNameOS

根据我的经验,我可以推荐以下内容:

需要x86汇编语言的各个部分,这是不可避免的,但可以保持在最低限度.相当快,您将获得运行C代码,这是OS开发的可靠选择.一旦你有了某种内存管理器,如果你愿意,可以使用C++(你需要某种内存管理器来处理新的和删除的东西).

无论您选择何种语言,您仍然需要汇编和C才能将系统从BIOS启动后带入任何可用的形式.

最终,您选择的主要语言将取决于您要开发的操作系统类型.

我的开发环境是GNU开发工具DJGPP的Windows端口以及NASM汇编器.对于我的IDE,我使用IBM的Eclipse和CDT插件,该插件在Eclipse中提供了一个C/C++开发环境.

为了测试,我推荐BOCHS,一个开源的x86 PC仿真器.它允许您快速启动操作系统,这非常适合测试,并且可以集成到eclipse中,因此您只需按一下按钮即可构建和运行操作系统.我还建议偶尔同时使用VMWare和物理PC,因为你可以通过这种方式获取一些微妙的错误.

PS OS开发真的很有趣,但非常密集,我的12个月中最好的部分.我的建议是计划好,你的设计是关键!请享用 :)



2> Darcy Cassel..:

语言和编译器完全取决于您尝试完成的任务.不过,我建议您可能从太低的水平接近问题.

有关于操作系统基础知识的材料. 麻省理工学院有关于这个主题的OpenCourseware.阅读Andrew Tannenbaum的操作系统系列,看看像Minix这样的东西.

了解那里有什么.开始摆弄东西.借用想法,看看他们去哪里.如果你真的想要,你可以重新发明轮子,但你可以通过建立他人的作品来学习更多.



3> Jörg W Mitta..:

这并不重要,你选择什么语言.如果语言是Turing-complete,那么您可以在其中编写OS.

然而,语言的表现力会使某些类型的设计变得非常容易或很难实现.例如,旧的Smalltalk操作系统的"活力"和动态取决于它们是在Smalltalk中实现的.你也可以在C中做到这一点,但它可能会很难你甚至不会想到它.JavaScript或Ruby OTOH可能非常合适.

Microsoft Research的Singularity是另一个例子.除了Sing#,Spec#和C#(或类似语言)之外,它根本无法实现,因为很多架构都依赖于这些语言的静态类型安全性和静态可验证性.

需要记住的一件事是:用C实现的操作系统的设计空间已经得到了充分的探索.其中有成千上万.但是,在其他语言中,您可能会发现以前没有人发现过的东西!只有大约十几个用Java编写的操作系统,大约有六个用C#编写,有些是Haskell中两个操作系统的顺序,只有一个在Python中,而在Ruby或JavaScript中没有.

尝试在Erlang或Io中编写操作系统,看看它会如何影响您对操作系统的思考!


"如果语言是Turing-complete,那么你可以在其中编写操作系统." 这不是真的.Java是图灵完备的,但是有些部分操作系统无法用Java完成(例如端口I/O).图灵完成确实*不*意味着你可以用它做任何事情.
@JörgWMittag我想看到你在不使用任何程序集的情况下启动x86操作系统.(多重启动不计算在内.)
推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有