Operating system 为x86体系结构开发操作系统

Operating system 为x86体系结构开发操作系统,operating-system,x86,osdev,Operating System,X86,Osdev,我计划为x86体系结构开发一个操作系统 我有哪些编程语言选项 有哪些类型的编译器可用,最好是在Windows环境中 有没有什么好的资源可以帮助我了解更多关于操作系统开发的知识 在虚拟机或物理硬件上测试我的操作系统更好吗 有什么建议吗?如果你要制作一个完整的操作系统,你需要使用多种语言。我希望汇编,C和C++至少。 我将使用虚拟机进行大部分测试。您可能需要查找XINU。这是一个用于x86的小型操作系统,除了供学生解剖外,它实际上不用于任何其他用途。如果你想编写一个操作系统,那么你需要几个人。一

我计划为x86体系结构开发一个操作系统

  • 我有哪些编程语言选项
  • 有哪些类型的编译器可用,最好是在Windows环境中
  • 有没有什么好的资源可以帮助我了解更多关于操作系统开发的知识
  • 在虚拟机或物理硬件上测试我的操作系统更好吗

有什么建议吗?

如果你要制作一个完整的操作系统,你需要使用多种语言。我希望汇编,C和C++至少。


我将使用虚拟机进行大部分测试。

您可能需要查找XINU。这是一个用于x86的小型操作系统,除了供学生解剖外,它实际上不用于任何其他用途。

如果你想编写一个操作系统,那么你需要几个人。一个操作系统不能写一个人。我认为最好是在现有的操作系统项目上工作

  • -->C,汇编程序
  • -->C#
  • -->Java

这只是操作系统项目的简短列表。您可以看到,每种可能的语言都有一个项目。

我曾经为PCI板上的386SX做过一次。关于如何在保护模式下启动X86 cpu的一个很好的源代码是linux的源代码。这只是几个汇编语句。之后,您可以使用gcc编译您的C代码。结果是ELF格式的objectcode。我编写了自己的链接器,用objectcode制作一个程序。是的,成功了!祝您好运。

语言和编译器完全取决于您要完成的任务。不过,我建议,你可能从一个太低的层次来处理这个问题

有很多关于操作系统基础知识的资料。通读一下,看看像这样的东西


了解外面的情况。开始修补东西。借用一些想法,看看它们会走向何方。如果你真的愿意,你可以重新发明轮子,但是你可以在别人的基础上学习更多。

使用ANSI C,从仿真器开始。 当你移植到一台真正的机器上时,会有一些汇编代码。上下文切换和中断处理(例如)更容易在汇编程序中编写

Andy Tannenbaum写了一本关于操作系统的好书。还有许多其他的好方法


祝你好运!没有什么比编写自己的操作系统更好的了,不管它有多小。

另外,请查看包含入门所需所有信息的操作系统。

在我大学的最后一年项目中,我开发了一个小型x86操作系统,带有虚拟内存管理器、虚拟文件系统和完全抢占式多任务处理。我将其开源,代码被大量评论,请访问其source forge页面:

根据我的经验,我可以推荐以下几点:

各种部件都需要x86汇编语言,这是不可避免的,但可以保持在最低限度。您很快就会运行C代码,这是操作系统开发的一个经验证的选择。一旦你有了某种内存管理器,如果你喜欢的话,你可以进入C++(你需要一些新的内存管理器和删除的内存管理器)。 无论您选择哪种语言,您仍然需要assembly&C将BIOS留给您的系统从引导带到任何可用形式

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

我的开发环境是GNU开发工具和汇编程序的Windows端口。在我的示例中,我使用了IBM的Eclipse和插件,该插件在Eclipse中提供了一个C/C++开发环境

对于测试,我建议使用开源x86 PC仿真器。它可以让您快速启动操作系统,这对于测试非常有用,并且可以集成到eclipse中,这样您只需按一下按钮就可以构建和运行操作系统。我还建议您偶尔使用VMWare和物理PC,因为这样您可能会发现一些细微的错误


p.S.操作系统开发非常有趣,但非常密集,我的花了12个月的大部分时间。我的建议是好好计划,你的设计是关键!享受:)

你选择哪种语言并不重要。如果语言是图灵完备的,那么您可以用它编写操作系统

然而,语言的表达能力会使某些类型的设计很容易或很难实现。例如,旧Smalltalk OSs的“活力”和活力取决于它们是在Smalltalk中实现的。你也可以在C语言中这样做,但这可能太难了,你甚至想都不想。JavaScript或Ruby OTOH可能非常适合

这是另一个例子。除了Sing#和(或类似的语言)之外,它无法用任何其他语言实现,因为体系结构的很多部分都依赖于这些语言的静态类型安全性和静态可验证性

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


尝试用Erlang或Io编写操作系统,看看这会如何影响您对操作系统的思考 有关如何在课程中使用它的示例,请查看以前在课堂上提供的课程。在那里,您将发现您必须向GeekOS添加不同功能的任务

这是熟悉在x86 archite上运行的小型简单操作系统的好方法