2010-01-27 102 views
30

什么是使用C++创建我自己的操作系统的方法。我已经创建了引导装载程序(使用nasm,qemu),但是我不知道向该引导装载程序添加内核。使用C++编写操作系统

+9

我认为这实际上是一个很好的,建设性的问题。 – Renra 2014-05-13 15:48:37

+1

也许它的性质很广泛,但它肯定给我提供了很好的线索来探索 – Renra 2014-05-13 15:55:10

+1

有没有愚蠢的问题,只有愚蠢的人。 – SasQ 2015-01-29 17:31:30

回答

13

这里有一个ton of information,你最终会需要,可怕的OS编程常见问题解答。

5

你可以考虑看MINIX这是一个小型的操作系统为x86系统。它最初是作为一个教学项目而设计的,并且已经演变成旨在在现实世界中有用的东西。

2

你可以看看MINIX 3的源代码。它是一个非常简单的操作系统,其目的是了解操作系统如何工作。

你也可以学习关于操作系统的所有的Tanenbaum的书。他们都非常完整,我记得有一本书有附加minix的完整源代码,并提出了评论

7

也添加,This book Tanenbaum,他在那里解释了minix的实现细节。

+1

+1:我有这本书,并且会提出相同的建议。即使你最终没有使用与Tanenbaum相同的概念,至少你会知道这些概念是什么! – 2010-01-27 09:25:21

+0

优秀的书籍...愉快的阅读;) – t0mm13b 2010-02-03 18:24:01

2

我不熟悉细节,但据我所知BeOS是用C++编写的。资料来源应该是免费的,以及文件。

+0

对于内核,你可以看看http://newos.org/(写一个前Be员工*和*使用http://haiku-os.org/他们是克隆)。 – 2010-01-27 10:17:39

13

小心,C++是一个操作系统内核相当重量级的。

  • 有像服务异常,你将不得不支持运行时库。
  • 直到你添加一个堆,它才会感觉像C++。
  • 内核对分配对象的位置非常敏感;通常在C++中使用的单堆模型并不适合。
  • 将API耦合到数据结构是一个坏主意。 BeOS有这个问题。你需要隐藏用户内部结构的大小,这意味着当API是成员函数时,跳过圈套(Pimpl,私有构造函数,虚函数)。

这听起来像你已经比大多数人更进一步,所以不断问问题,你可能会结束在一个很好的地方! :vD

1

对于C++操作系统,您可能需要查看NewOSUnixLite

1

可以在L4的顶部开发一个可用的操作系统,即使一个学期的单个学生连同其他课程(但所有驱动程序问题已经解决)都可以开发。如果发现这是一个伟大的冒险,并且L4微内核也是先进的。