为了从头开始编写自己的 x86 操作系统,最好学习什么操作系统?
9 回答
我认为Minix就是为了这个目的而创建的。
玩得开心!
我刚刚从头开始编写了我的 x86 内核版本!(对于我的操作系统类项目)那是我可能无法描述的经历。您可以在上面的链接中找到有价值的资源。
这完全取决于您希望您的操作系统如何运行,如果您想要一个微内核,您可能应该学习 Minix 3,或者如果您想要一个单片内核,当前的 linux 内核是一个很好的起点(提示:查看 arch/ x86/boot,里面有一些非常有趣的代码)。不过我个人认为你应该通读 Intel 和 AMD 手册,然后在 osdev.org 论坛和 wiki 上做一些阅读。他们有大量的代码要学习,通常对新手很有帮助。
对于我在大学的操作系统课,我们使用了Nachos OS 项目并实现了它。我做了 C++ 版本,但我认为也有一个 Java 端口。我记得这很有趣,学到了很多东西,尽管工作量很大。
老实说,您可能不应该从 x86 架构甚至操作系统开始,而应该从 8 位入门工具包之类的东西开始,比如基本的Fox11 开发工具包。在大学里,我为 M68HC11 处理器(套件中的那个)编写了我的第一个(也是唯一一个)汇编操作系统。
如果您真的想从头开始构建自己的操作系统,那么您还有很长的路要走。
我认为阅读许多不同操作系统源代码的最佳方式,绝对是 osdev 准系统教程、操作系统研究白皮书和目标硬件文档。
我个人建议看一下 l4-ka pistachio 内核,它是用相当不错的 C++ 编写的。还有多个较小的项目绝对值得一试,例如 jimix 或 pedigree。
最好留在 osdev 论坛和 wiki - 那里已经回答了很多信息 - 请参阅http://forum.osdev.org和http://wiki.osdev.org
不久前我读过这篇文章。你可能会觉得很有趣。这个人当年写MINIX的目的就是为了教授操作系统的概念。所以它可能是一个很好的简单操作系统来学习。http://www.cs.vu.nl/~ast/brown/
然而,正如 Martin 和 Cory 所提到的,这是一大块要咀嚼的东西。
研究过时的操作系统没有多大意义,因为它们的寿命往往很长,几乎是所有当前的操作系统。看看一些新鲜的想法(尽管基于久经考验的真实),比如Singularity