如何從零開始寫一個簡單的操作系統?
01-22
大二下學期的時候,迷上了操作系統,於是去圖書館借了一本於淵的《一個操作系統的實現》,然後就開始一步一步跟著寫,這個系統底層是基於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有沒有什麼區別?
※想轉計算機,我還有希望么?
※寫編譯器的作用?
分頁阅读: 1 2