2011-09-17 102 views
2

我有寫,我希望能得到答覆操作系統中的一些非常具體的問題的問題:關於編寫操作系統

  1. 多少彙編代碼將我需要寫加載一個最小的C內核如果我使用GRUB作爲引導加載程序?

  2. 我的內核將用C語言編寫,它將加載我用C++編寫的命令行shell,它不會僅對標準庫調用進行任何API調用,我是否需要重寫整個C++標準庫來執行所以?

  3. 我可以用C++編寫視頻,鍵盤和軟驅嗎?

  4. GCC和G ++輸出16位實模式代碼嗎?

  5. 我可以在Windows上使用Mingw寫這個,還是必須寫在Linux上?

  6. 我是否需要處於實模式才能直接寫入視頻內存?

如果有人能回答我的問題,我將非常感激

+1

哇!整個操作系統?看起來我們正在談論這幾年的努力! –

+3

http://wiki.osdev.org/Main_Page對所有問題都有答案。 – user786653

+0

2件事,你曾經修改過一個操作系統嗎?如果沒有,你可能只想從那開始。抓住一個Linux發行版並修改一些東西,看看它是如何工作的。第二個約5,我在窗口中做了一大堆mingw編程的東西,除此之外我還需要一些文件,我從來沒有遇到過問題。我的建議不過是安裝虛擬機,以防你需要,再加上你可以測試你的操作系統。 Virtualbox非常好,而且免費。 – Matt

回答

3

1:你應該只需要組裝少量處理引導過程並加載C代碼。不應該超過20-30條線我想。

2-4:我還沒有真正將C++用於操作系統開發,但我想我記得讀過它需要更多工作才能讓它在某處運行。對不起,我不能有更多的幫助。

5:你可以使用MinGW做到這一點,但從我的經驗來看,它大都使事情複雜化。我永遠無法真正獲得Windows環境的工作,但我也沒有太多努力就放棄了。

編輯:這是一些示例程序集的鏈接。這是我曾經使用過的所有東西: http://www.jamesmolloy.co.uk/tutorial_html/2.-Genesis.html

如果你對這種事情感興趣,那麼其他的網站也是一個很好的教程。

+0

只需添加幾件事。 4是一個普通的「否」。很少編譯器仍然可以生成16位代碼。 6也是「不」。只要映射到您的虛擬內存,您就可以從任何模式寫入視頻內存。 – ughoavgfhw

+0

請注意,本教程的某些部分有一些細微的錯誤,所以要小心(例如假定在第一次使用之前清除任意內存)。雖然仍然是一個很好的教程 - 我應該寫一些關於這些問題的作者。但是,那麼任何遵循教程並試圖理解代碼的人都應該注意到它們。 – Voo