2010-01-27 91 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微內核也是先進的。