如何從零開始寫一個簡單的操作系統?

大二下學期的時候,迷上了操作系統,於是去圖書館借了一本於淵的《一個操作系統的實現》,然後就開始一步一步跟著寫,這個系統底層是基於x86的。前後大概寫了有三四次吧。前兩次都是跟著寫,然而經常會被各種考試之類的打斷,很難再接著原來的思路進展。後來第三次第四次的時候感覺已經駕輕就熟了,就索性脫開書去做,當然還是照著作者的思路,只不按自己的理解重新去實現一遍,期間也參考了其他的一些相關資料。基本上把內存保護映射,異常處理,進程切換,外設驅動,字元終端,圖像顯示之類的都簡單實現了一遍。後來不滿足於虛擬機里玩,又把系統寫進了我的U盤,有時候無聊了,就把U盤插電腦上跑一跑,自我滿足一下。

後來接觸到51、ARM等系列的晶元,也在上面簡單的實現過。不過可用資源大都很少,簡單的實現一下進程切換而已了。

再後來入坑linux,看了一些內核代碼,驅動代碼,感覺自己原來的代碼很low,就沒在繼續了


https://github.com/wuxx/8086sos

x86上實現的一個極簡的「操作系統」,兩個任務互相切換,300行8086彙編,代碼僅佔用在一個MBR里。

https://github.com/wuxx/sos

最近在寫的一個嵌入式操作系統,基於樹莓派,目前實現了多任務,信號量,郵箱,自寫了一個簡單的libc。


先挖一個坑,我會來填的,等我乾貨滿滿(?ì _ í?)

大三上的flag,待續


&<&<操作系統實現之路&>&> 機械工業出版社


寫出一個可調度的內核不複雜,參考ucos ii,5000行代碼左右,Micrium | Real Time Operating Systems。這個市面已經有大量相關的書籍了。

如果要在這基礎上完善出file system,driver, network, 就要很多工作量了,可以參考國內開源的 RT-Thread,RT-Thread; RTOS; 實時; 操作系統。這個文檔也很全面。


我也來挖個坑,希望半年後不會自己刪回答


1、有現成的教學用OS可以參考,你可以知道一個最簡易的OS需要什麼。

2、有現成的使用最廣泛的Linux架構可以參考,你可以知道實際上可以投入生產的OS是怎麼樣的。

3、無論如何,第一步是完成自舉!


這本書不全吧,到載入磁碟就沒有了。


自己也想寫一個操作系統,但是現在的基礎甚是薄弱,不知道集中精力用時2年能不能寫完?我大學學習過這門課,學習過java,其他方面真心就不懂了!

看著那些可以寫出來操作系統的人,真是大牛啊!

佩服的五體投地!很快要開始嘗試了!一定要搞定!


操作系統真相還原


操作系統真象還原

《操作系統真象還原》(鄭鋼)【摘要 書評 試讀】


最簡單的就是一個while循環。應該是系統驅動開發經典《linux設備驅動》介紹的。


《一個操作系統的實現》


可以考慮寫一個嵌入式系統,有事件觸發機制和線程管理框架,再做一個事件池~ 就能跑起來了


推薦閱讀:

學習C語言會耽誤學C++嗎?
計算機技術行業從業的門檻高嗎?
在C++中,a==b和b==a有沒有什麼區別?
想轉計算機,我還有希望么?
寫編譯器的作用?

TAG:操作系統 | 編程學習 |

分頁阅读: 1 2