我喜歡代碼,但我目前只在做web開發。我希望做一些與網絡編程相比獨特而有趣的事情。如何編程操作系統?
是的,這可能是一個愚蠢的問題,但我認爲構建一個非常簡單的操作系統真的很酷。所以請不要說任何粗魯的話。我只想知道以下幾點:
*從哪裏開始? *參考資料 *我可以使用哪種語言?
我通過閱讀一些操作系統書想一些簡單的像基於
我喜歡代碼,但我目前只在做web開發。我希望做一些與網絡編程相比獨特而有趣的事情。如何編程操作系統?
是的,這可能是一個愚蠢的問題,但我認爲構建一個非常簡單的操作系統真的很酷。所以請不要說任何粗魯的話。我只想知道以下幾點:
*從哪裏開始? *參考資料 *我可以使用哪種語言?
我通過閱讀一些操作系統書想一些簡單的像基於
在操作系統的設計絕對的「聖經」是,是安德魯的Tanenbaum的Operating Systems Design and Implementation - 「龍」書:-)
還有許多其他的引用,也如Developing Your Own 32-Bit Operating System。
微軟研究院也/有一個項目在託管代碼中創建操作系統(C#)稱爲Singularity - 這可能會提供一些見解/報紙等
寫一個完整的操作系統既不是微不足道的,也不是一個快速任務,雖然.....
啓動CMD - 像Tanenbaums' Modern operating systems。
這應該讓你瞭解編寫操作系統時需要解決哪些問題。
我想你最好開始探索Andrew S. Tanenbaum's工作。
當你爲他們的谷歌有相當一些資源,但我會鼓勵你不是邁出這一步呢!
要編寫一個操作系統,即使是一個簡單的操作系統,您也需要很好地理解您的計算機在低級別上的工作方式,而且您至少需要C或C++,最好還需要Assembly。沒有這些技能,這將是一個乏味而令人沮喪的項目。即使對熟練的C程序員來說也很困難和具有挑戰性。
這裏有一些鏈接,讓你開始:
http://www.brokenthorn.com/Resources
http://wiki.osdev.org/Main_Page/
你會需要GCC和NASM。 我想你也可以使用GASM。
學習BIOS中斷。
而且之前,你甚至開始搶了一堆的標準,如: APIC A20門 PCI & PCIEX - 祝你好運試圖獲得其中的一個。花費一些改變。 英特爾& AMD - 看看這些,給你很多信息。 VGA ATA & SATA etc ...有很多。
也搶仿真器,如:Bochs的和QEMU
瞭解如何在計算機工作,也就是說,它是如何開機。
有很多信息,你只需要做你的研究。
祝你好運。
從webdev切換到後端將非常令人沮喪。
首先,選擇一個電路板/硬件/體系結構 - 甚至可以使用可以在您的機器上運行的OS模擬器。學習C和一些程序集(intel,MIPS,ARM,coldfire/motorolla 68k),這取決於你在爲哪種CPU架構構建你的操作系統。
我已經看到C++包允許你在C++中創建一個操作系統,然後自動將它轉換爲程序集,但是讓它們正確轉換是件很頭痛的事情。我不會推薦他們。
在開始編寫代碼之前,您應該設計您的操作系統。甚至可以把你的設計決定放在一張帶有一些圖表的50頁的論文中。
有些事情要考慮:
message envelopes {sender process id, receiver process id, message type, message}
)message envelopes {sender process id, receiver process id, message type, message}
)編輯 - URL更新 開發自己的32位操作系統是絕版的,但可在網上: http://www.ipdatacorp.com/mmurtl/mmurtlv1.pdf
寫操作系統很難。我建議在成爲OS開發人員之前成爲開發人員。您將需要了解C/C++和彙編以構建基本的操作系統。您將需要考慮如何使您的操作系統,即內核類型,實模式或保護模式,內存映射和許多其他事情。
在開始接近編寫實際控制檯/「cmd」軟件的位置之前,您將編寫大量代碼。 – Joe 2010-12-21 18:18:08
感謝您的投票,這真的有幫助 – Kevin 2010-12-21 18:37:21