從「一步一步寫作業系統」到「一步一步抄作業系統」

2021-08-26 21:29:00 字數 686 閱讀 1507

前段時間在閱讀《一步一步寫嵌入式作業系統》,按照書本的內容一步一步寫作業系統。

於是產生了一步一步「抄」乙個作業系統的想法,基本做法就是按照《一步一步寫嵌入式作業系統》一書的內容自己建構彙編和c的**檔案,然後將樣例**中的**一段一段拷貝進來,拷貝的時候務求理解每段**的工作方式。這樣既可以避免重複勞動,又可以避免走馬觀花。

其中總結的乙個小技巧就是**拷貝的粒度要把握好,最好以方法為單位粒度。同時方法的名稱在拷貝時可以稍作修改,使其它部分的樣例**無法直接使用,必須根據新的方法名作**修改才能使用。

通過這種方式,很快《一步一步寫嵌入式作業系統》書中的樣例就不夠抄了,於是狠下心開始抄linux 2.6的核心。基本做法類似,不過linux更為複雜,需要考慮許多周邊的因素,特別是makefile和kbuild。最後用了一種取巧的方法,就是通過linux的make命令對linux核心進行編譯,編譯過程中帶v=1引數,將詳細的編譯命令儲存在日誌檔案中供參考。同時編譯執行正確後不執行make clean命令,充分利用make命令生成的中間檔案。

目前已經完成啟動到保護模式的分段編譯,感覺效果比較好,比較深入地了解了linux 2.6核心從啟動到保護模式的執行過程。

建議希望深入學習linux作業系統的同學們使用這種方式進行學習。

我分步編譯的**已經上傳到github上了,鏈結是

有興趣的同學可以看看

以後有時間和大家分享具體細節。

一步一步 Sql Azure

一步一步 sql azure 1.使用 windowsazure 平台賬號登陸 2.新建sqlazure server 3.新建資料庫 4.為sql azure server 新增防火牆規則,只有將本機新增到規則裡才能從本機連線到該sqlazure server 5.連線到sql azure ser...

一步一步寫演算法(開篇)

演算法是計算機的生命。沒有演算法,就沒有軟體,計算機也就成了乙個冰冷的機器,沒有什麼實用價值。很多人認為,演算法是數學的內容,學起來特別麻煩。我們不能認為這種觀點是錯誤的。但是我們也知道,軟體是一種復合的技術,如果乙個人只知道演算法,但是不能用程式語言很好地實現,那麼再優秀的演算法也不能發揮作用。乙...

一步一步寫演算法(開篇)

演算法是計算機的生命。沒有演算法,就沒有軟體,計算機也就成了乙個冰冷的機器,沒有什麼實用價值。很多人認為,演算法是數學的內容,學起來特別麻煩。我們不能認為這種觀點是錯誤的。但是我們也知道,軟體是一種復合的技術,如果乙個人只知道演算法,但是不能用程式語言很好地實現,那麼再優秀的演算法也不能發揮作用。乙...