讀 自己動手寫操作系統
用一個月左右的時間讀了《自己動手寫操作系統》,這是一本讓人讀著很過癮,卻也特別累的一本書。
http://ike.126.com
對操作系統的興趣由來已久,只是一直未能找到入門之徑。操作系統教材是個令人生畏的東西,它可以告訴人有什麽,卻不能告訴人為什麽,從那裏了解的操作系統有如盲人摸到的象,得到各個部分,卻不能擁有整體,加之缺乏實踐的支持,理論顯得蒼白空洞。如Linux般的開源操作系統,雖然可以讓人坐擁全部源碼,但一來規模龐大,讓人不知從何入手,二來源碼背後更多的是業務——操作系統和硬件知識,不了解業務的人很難憑一己之力破解源碼的奧秘。客觀如此,更重要的還是主觀的不努力。
《自己動手寫操作系統》則為如我一般挑剔的人打開了一扇門,從一點一滴的小處著手,一步步構建出一個簡陋的操作系統雛形——Tinix,雖然它還不具備任何實際的價值,甚至算不上一只五臟俱全的麻雀,但對於想走近操作系統的人來說,這已經足夠了,如果能夠隨著它一路走來,至少可以具備更進一步的基礎,再去遨遊廣闊天地,便不會迷失於龐雜的理論與源碼之中。
這本書的名字給人的提示是,它是一本以實踐為基礎的書,因此,閱讀之初我便給自己定下了步步緊跟的策略。照著書敲代碼也難免出錯,再者書中有一些遺漏,只有對比光盤中提供的源碼才能發現其中的細微之處,所以,常常是一段代碼要花相當長的時間進行調試。實踐證明,這種方法需要花費相當的精力,這也是我為什麽會認為讀這本書很累的原因。但是這種做法對於理解書中內容大有裨益。看明白,做一遍,調試,這是幾個截然不同的境界。很多細節的東西,只有經過調試才能發現。即便是自己編寫的代碼,如果沒有經過調試,恐怕也難說真正的理解。
作者在後記中寫到,這本書最大的價值在於,它讓操作系統的實現這個問題變得具備“可操作性”。正是因為這樣,我才可以追隨它一步步走來。在這點上,我讀到第三章《保護模式》就已經體會頗深了。我曾經讀過很多關於保護模式的內容,不過,由於缺乏實驗,我只是了解一些概念,卻不曾深刻體會。在第三章中,通過一個個簡單的小例子,切換至保護模式,設置GDT和LDT,使用分頁,中斷處理等等書本上的概念活靈活現的展現在我的面前,那些艱澀的概念一下子便得再簡單不過了。
市面上關於源碼剖析的書很多,但是,即便像侯捷先生這樣教育大家編寫的《深入淺出MFC》、《STL源碼剖析》大多數情況下也只是講了怎麽做,而無法說出為什麽,原因很簡單,這些書是站在旁觀者的角度看問題,而很多問題只有開發者才是真正理解的。所以,這些源碼剖析的書有其價值,但深度上還存在相當的欠缺。這本書的作者恰恰是站在了開發者的角度來討論問題,所以,我們有機會看到了一個思考的過程,而不僅僅是一個結果。這一點從第六章《進程》中時鐘中斷處理程序的一步步進化便得以管中窺豹。
不得不提一下的是作者的寫作功力,讀過了許多生澀的技術書籍,這本讀起來很舒服的書倒顯得有些另類。它屬於我心目中期盼的那種“形神兼備”的好書,正是作者相當不錯的表達,才是這本書讓人享受技術的同時又可以體味閱讀的樂趣。當然,其中還是有些技術細節讓人昏昏欲睡。
讀書,首先要找到適合自己的書,這樣我們才能從中有所收獲,畢竟,技術書籍中很少能夠找到滿足所有層次需要的書。《自己動手寫操作系統》的定位是一本入門書,顯然,它不適合已經過了這個階段的人,如果因此埋怨這本書檔次太低,那就怪不得旁人,因為自己走錯了路。
如果你和我一樣,對操作系統有興趣卻不得門徑,不妨《自己動手寫操作系統》。
再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow
讀 自己動手寫操作系統