寫乙個作業系統核心有多難?大概的內容 步驟是什麼?

時間 2021-05-06 02:12:35

1樓:MOZ

不錯,收藏了,

感覺我們中國那麼多人應該集合一下,腳踏實地的寫乙個系統,而不是受制於人

最討厭那些裝逼犯,說多難多難,不給個指點就打道回府了

2樓:Thomas Lau

取決於你對作業系統怎麼理解以及理解的程度

如果只是簡單初版dos或者做到讀寫檔案和簡單外設互動,那麼不用等碩士畢業,我記得當年有人畢業設計就是簡單os(啟動/執行/檔案互動/退出)實現,而且後來出了幾本動手一步步實現os的書,基本大三os課程學完就能看懂。如果是如今的Linux級別的,那一口吃成胖子不大可能,不管你是碩士畢業還是博士畢業花十年去實現。

3樓:Billy.Z

看到這個問題,感慨頗多。作業系統,圖形學,程式設計師最浪漫的事不過於此。大學時的畢業設計就是想搞乙個微核心,破破爛爛拼拼湊湊的整了乙個。

怎麼說呢,做了之後才開始真正的理解課本裡作業系統原理的內容,對理論的理解還是很有幫助的。

由於工作從事影象類演算法,那個經歷只能當作美好的回憶。

自己寫個核心,也就差不多玩具水平,拿著fuchsia的核心好好閱讀一下,出本書也不差,你看android原始碼閱讀的書不也很多嗎,名利雙收。4

4樓:使用者名稱18238

玩具作業系統如其他人所說,甚至一本書就能夠教會。

但是實際作業系統並沒這麼簡單,單單tcp協議,tpc/ip協議詳解用了三本書介紹。

然後其他各個功能都很麻煩。

5樓:

如果指的是參考已有方案完成記憶體管理、檔案系統、執行緒、啟動這些,很簡單本科時mit6.828就是

但是真正能用,還要驅動、生態

以及debug

6樓:

7樓:高興

想學習相關知識,嘗試寫點作業系統核心方面的東西有沒有彎道超車的可能性,必須從實模式到保護模式學起嗎?哪個方向有點實用價值呢?

8樓:大俠童海川

網易雲課堂《自己動手從0到1寫嵌入式作業系統》,我前段時間剛完成的乙個學習專案,全程C語言,不過要求C語言掌握的極其深刻,對指標,巨集,函式,標頭檔案要求非常熟練。程式設計編譯環境keil μvision5,基於Cortex M3核心。

9樓:andrew show

如果只是個玩具作業系統,那麼可能不會太難,就好比一些教學作業系統,但是如果需要考慮

支援不同的硬體架構(x86, MIPS, PPC, ARM)?

支援多處理器。

高效能(高效的記憶體管理,程序排程,中斷處理,檔案系統,IO)。

穩定性(程序位址空間隔離,保護)

靈活可擴充套件的驅動框架。

那還是蠻難的。

甚至有些人說作業系統裡邊沒啥演算法,如果是玩具作業系統,那麼可能的確不需要什麼演算法,因為演算法本來就是為了滿足效能,效率等需求而產生的。但是,商業的作業系統裡邊,肯定是有很多演算法的,別說記憶體分配,程序排程,或者檔案系統了。就算是最基本的自旋鎖,都有好幾種演算法。

10樓:lc4t

不難!《Orange s 乙個作業系統的實現》

你只需要自學c和彙編,just do it!

Try Do & Do & Done!

大概會花費半年到一年的時間。

PS:某實驗室在剛加入的要求就是寫乙個作業系統核心,大一也能完成喔:)而且大一併沒有學什麼,都是自學+努力。

11樓:

收穫一讚時,補充解釋。

~~~~~~~看不見的分割線~~~~~~~嗯,一切以不實際使用起來為目的寫的 kernel,都是簡單的。。

你也可以跟上面答主一樣實現乙個kernel,不論出於什麼想法。

比如說,當你想用在工控上時,你會考慮

1 contex switch 代價是否足夠少2 確定性分析是如何的

3 如何從一定程度上避免死鎖

4 快速啟動

當你想實現事件觸發的機制,你會考慮

1 事件的優先順序

2 容許事件巢狀的深度

3 是否有必要搞個contex switch那一套東西於2016最後編輯

20180301 自動更新

參見該問題的前序問題(搞懂 RTOS 需要哪些方面的知識儲備?)中我的回答

學Linux核心的作用與方法?

搞懂 RTOS 需要哪些方面的知識儲備?

12樓:sonald

樓上各位說得都很多了,你也可以看看我在這裡的回答 如何編寫作業系統? - sonald 的回答,其實最大的問題在於心裡障礙,客服了內心的恐懼加上不服輸的勁,能走多遠都是可能的

13樓:wjiang

題主可以考慮實現乙個基於微核心的小OS。

這樣就可以省去考慮一些太過底層東西,而把精力放到更能鍛鍊程式設計能力的部分,比如實現paging和multi-process。因為根據我的感受,實現這兩個東西之後,debug的難度明顯比之前高了好幾台階。。。

14樓:ss wan

據我淺顯的理解,當前作業系統的最終目標之一,就是在任何情況下,都能讓硬體的資源能夠完全的(高效的也行)被正確的利用。在現今資訊如此豐富的情況下,寫乙個作業系統跑起來,真不是太難的事情。但要達到上面的目標,路還非常長,目前基本上的解決思路應該是集中全力解決已知的、有較大範圍影響的問題。

15樓:

具體要看做到什麼程度吧……

學校某老師成立了乙個小組,男性成員都要求做乙個ARM裸板串列埠驅動,和乙個簡單的作業系統……

當然,作業系統不要求多精緻,畢竟主要目的是為了研究。乙個學弟寫執行緒排程只是簡單的迴圈佇列。

但是,做出來的就是比只會吹牛的強。

16樓:

高三寒假時看的《深入理解計算機作業系統》,自己已經能寫出一部分了。我朋友小學六年級時已經會寫類似學習機的作業系統了,所以作業系統不難,相對其它程式,演算法和資料結構都是簡單易懂的,就是個體力活。

17樓:于浩

如果是研究學習,的確可以自己寫乙個作業系統核心。

但如果想自己做乙個完整的能用的作業系統,還是洗洗睡吧。

原因很簡單,硬體驅動得不到廠商支援,你自己寫到死?

18樓:

作業系統主要實現

在段模式下進行一些初始化

建立虛擬頁表,並跳轉到頁表管理模式。

實現程序管理和中斷。

寫些驅動。

簡單的核心就能執行了。

本科生寫不出是很奇怪的。

19樓:金剛害蟲

反對排名一二三的回答。

這幾個回答全都侷限於x86的框架。這個世界除了x86以外,還有嵌入式系統。嵌入式系統的作業系統真的不難,連我這個財會專業畢業生,都寫過作業系統,freertos核心只有三個檔案。

嵌入作業系統比桌面應用會和伺服器簡單太多了。靜下心研究開源的freertos,ucos,djyos,應該一學期足夠弄個類似的出來。

20樓:Xana Hopper

真不難……相信我

你需要了解的只是平台相關的一點知識,配合作業系統的原理,寫乙個簡單的能跑起來的核心真的一點都不困難。

我大四的時候就自己寫了乙個……

怎樣自己寫乙個簡單的作業系統?

長纓 現在作業系統的工程開發已經很少重新開發核心了,一般都是在某個作業系統的核心基礎上結合各種第三方開源庫開發發行版,比如Linux的各種桌面和嵌入式發行版 Android Firefox OS Chrome OS Tizen等等。 石緯 瀉邀。可以參考CMU的Operating System De...

如何利用linux核心組裝乙個作業系統發行版?

已登出 問題前半部分的描述,Linux from scratch http www.linuxfromscratch.org 可以達到題主的要求,不過 LFS 是個體力活,以前我編譯完第一部分 基本系統 頸椎都難受。問題後半部分。你可以看看那些企業級別的發行版,比如紅帽系列,SUSE 系列。另外核心...

能用VHDL語言寫乙個作業系統嗎,實時作業系統之類的?

靈劍 先用VHDL寫乙個軟核和乙個ROM,然後往ROM裡載入靜態的bin檔案,再為生成這個bin檔案寫乙個C編譯器 要知道,實際上現在的x86 CPU的硬體指令都是這麼實現的 精簡核 微指令ROM 所以比這還複雜的作業系統,我猜大概也這麼實現比較好 如果要說可能還是不可能的話 我認為是可能的 畢竟語...