讀《自己動手寫作業系統》

2021-04-02 18:42:59 字數 1520 閱讀 5443

用乙個月左右的時間讀了《自己動手寫作業系統》,這是一本讓人讀著很過癮,卻也特別累的一本書。

對作業系統的興趣由來已久,只是一直未能找到入門之徑。作業系統教材是個令人生畏的東西,它可以告訴人有什麼,卻不能告訴人為什麼,從那裡了解的作業系統有如盲人摸到的象,得到各個部分,卻不能擁有整體,加之缺乏實踐的支援,理論顯得蒼白空洞。如linux般的開源作業系統,雖然可以讓人坐擁全部原始碼,但一來規模龐大,讓人不知從何入手,二**碼背後更多的是業務——作業系統和硬體知識,不了解業務的人很難憑一己之力破解原始碼的奧秘。客觀如此,更重要的還是主觀的不努力。

《自己動手寫作業系統》則為如我一般挑剔的人開啟了一扇門,從一點一滴的小處著手,一步步構建出乙個簡陋的作業系統雛形——tinix,雖然它還不具備任何實際的價值,甚至算不上乙隻五臟俱全的麻雀,但對於想走近作業系統的人來說,這已經足夠了,如果能夠隨著它一路走來,至少可以具備更進一步的基礎,再去遨遊廣闊天地,便不會迷失於龐雜的理論與原始碼之中。

這本書的名字給人的提示是,它是一本以實踐為基礎的書,因此,閱讀之初我便給自己定下了步步緊跟的策略。照著書敲**也難免出錯,再者書中有一些遺漏,只有對比光碟中提供的原始碼才能發現其中的細微之處,所以,常常是一段**要花相當長的時間進行除錯。實踐證明,這種方法需要花費相當的精力,這也是我為什麼會認為讀這本書很累的原因。但是這種做法對於理解書中內容大有裨益。看明白,做一遍,除錯,這是幾個截然不同的境界。很多細節的東西,只有經過除錯才能發現。即便是自己編寫的**,如果沒有經過除錯,恐怕也難說真正的理解。

作者在後記中寫到,這本書最大的價值在於,它讓作業系統的實現這個問題變得具備「可操作性」。正是因為這樣,我才可以追隨它一步步走來。在這點上,我讀到第三章《保護模式》就已經體會頗深了。我曾經讀過很多關於保護模式的內容,不過,由於缺乏實驗,我只是了解一些概念,卻不曾深刻體會。在第三章中,通過乙個個簡單的小例子,切換至保護模式,設定gdt和ldt,使用分頁,中斷處理等等書本上的概念活靈活現的展現在我的面前,那些艱澀的概念一下子便得再簡單不過了。

市面上關於原始碼剖析的書很多,但是,即便像侯捷先生這樣教育大家編寫的《深入淺出mfc》、《stl原始碼剖析》大多數情況下也只是講了怎麼做,而無法說出為什麼,原因很簡單,這些書是站在旁觀者的角度看問題,而很多問題只有開發者才是真正理解的。所以,這些原始碼剖析的書有其價值,但深度上還存在相當的欠缺。這本書的作者恰恰是站在了開發者的角度來討論問題,所以,我們有機會看到了乙個思考的過程,而不僅僅是乙個結果。這一點從第六章《程序》中時鐘中斷處理程式的一步步進化便得以管中窺豹。

不得不提一下的是作者的寫作功力,讀過了許多生澀的技術書籍,這本讀起來很舒服的書倒顯得有些另類。它屬於我心目中期盼的那種「形神兼備」的好書,正是作者相當不錯的表達,才是這本書讓人享受技術的同時又可以體味閱讀的樂趣。當然,其中還是有些技術細節讓人昏昏欲睡。

讀書,首先要找到適合自己的書,這樣我們才能從中有所收穫,畢竟,技術書籍中很少能夠找到滿足所有層次需要的書。《自己動手寫作業系統》的定位是一本入門書,顯然,它不適合已經過了這個階段的人,如果因此埋怨這本書檔次太低,那就怪不得旁人,因為自己走錯了路。

如果你和我一樣,對作業系統有興趣卻不得門徑,不妨《自己動手寫作業系統》。

自己動手寫作業系統

virtual pc 5.2 下 dos7.1 中 執行.com檔案相關問題 2009 09 09 12 55 剛才在進入dos後,編譯.asm檔案獲得.com檔案,但系統會出現 emm386 unrecoverable privileged operation error n9.press ent...

自己動手寫作業系統

今天看了前兩章,現將重點記錄如下 作業系統的啟動,關鍵點時同bios的介面 這裡有兩個位址很重要,a,0x7c00 510 0x7dfe登記標誌位 兩個byte 0xaa55 b,0x7c00,作業系統載入的目標位址 系統啟動過程 1 bios清零cpu現場 傳送reset訊號 2 cpu從0xf ...

自己動手寫作業系統

2 自己動手寫作業系統 3自己動手寫作業系統 如何呼叫bios中斷 在一般的程式語言中,函式的呼叫是一件非常容易的事情。比如在c語言中,如果有乙個名為display的程式,它帶有兩個引數,其中引數 noofchar表示顯示的字元數,引數attr表示顯示字元的屬性。那麼要呼叫它,只需給出程式的名稱即可...