2012-01-10 123 views
3

我有興趣學習如何創建自己的操作系統。推薦學習創建您自己的操作系統?

我知道這不是一夜之間發生的事情。

我有幾個問題:

  • 我想熟悉這樣做有什麼樣的知識,什麼概念?
  • 是否有關於此主題的推薦閱讀?
  • 我最喜歡的語言是C#,是否可以用這種語言編寫操作系統?
+0

我推薦從這個問題開始:創建新的os的原因是什麼? – 4ndrew 2012-01-10 16:18:44

+9

我的理由是學習。 – Rakso 2012-01-10 16:21:12

+1

Linux或BSD將是一個很好的開始,並且有大量的東西可以插入。另一個選擇是像PIC微控制器那樣的一些選擇。請注意,你需要真正在硬件上。因此,另一個開始的選擇是編寫驅動程序並將其添加到現有的操作系​​統。哦,快樂的學習,即使你什麼都沒有成功,你會學到很多東西。 – 2012-01-10 16:38:00

回答

6

我建議安德魯·斯圖爾特·塔能鮑姆,Operating Systems: Design and Implementation

良好的開端是有利於提高完成操作系統(如Cosmos如果你喜歡C#)。

UPD

一些有用的資源:

+1

+新聞組:[alt.os.development](http://groups.google.com/group/alt.os.development/topics?gvc=2)和[comp.lang.asm.x86](http://groups.google.com/group/comp.lang.asm.x86/topics?gvc=2) – 2012-01-11 20:24:17

3

首先通過操作系統的基本知識...閱讀高爾文(最好的書),然後決定你想如何接近發展。我的同事正在UBUNTU開發操作系統。

2

取決於你有多棒。可能最好的開始是通過做你自己的Linux發行版,並在此基礎上發展。 c#不是構建操作系統的最佳語言。在代碼項目上有一個實現,但是,最好的開始是組裝,然後在此基礎上進行構建。 Windows是c/C++,因爲我認爲大部分操作系統都在彙編部分之上。

+0

Linux也是用C/C++編寫的嗎? – Rakso 2012-01-10 16:22:51

+0

這樣想,可以依賴發行版 – 2012-01-10 16:23:15

+1

@TheCompBoy形式上,Linux不是一個操作系統。它是OS的一個內核。看看編程語言的圖表https://github.com/torvalds/linux/graphs/languages – 4ndrew 2012-01-10 16:27:51

2

是否可以在C#中編寫操作系統?,

http://www.silveos.com/ Silverlight的操作系統,它運行在WP7

不錯

如果你想有一個本地OS,這是「不可能的」,使完全出於C#,因爲C#運行在一個虛擬機,以及VM運行在OS XD上。

製作操作系統的最佳方法是鎖定低範圍嵌入式系統,因爲您不必擔心虛擬內存和其他複雜的東西。如果你想這樣去檢查https://github.com/DVDPT/Micro-Operating-System,我自己的操作系統爲ARM和AVR嵌入式系統。

最後閱讀操作系統概念和研究像TNKernel,FreeRTOS,eCos這樣的小型操作系統。然後跳轉到主要的操作系統,如Linux或Windows。

+2

Silveos並不是一個真正的操作系統。 – 2012-01-11 20:21:09

1

簡答題:

長答案:不完全。

你必須在彙編中編寫某些部分,你也會遇到CLR的問題,但這可以通過使用.NET Micro Framework來克服。而且,對於某些部分,這已由Microsoft在其Singularity OS中完成。如果你想進入操作系統開發,我建議閱讀一些教程在OSDev Wiki或檢查Bona Fide OS Developer