讀《深入理解計算機系統》

作爲12月初的開篇大戲,我將總結一下再次閱讀《深入理解計算機系統》的感覺。

 

《深入理解計算機系統》這本書真不知道用什麼修飾來形容它比較好。它是計算機專業的必讀之書;它是一本難得的好書;它的價值超越了同等重量的黃金;它將帶領你走向程序員“大牛”之道;等等,這些讚美之詞都不爲過。然而,我更喜歡下面的一個說法:當我畢業搬家時,在衆多的書籍中只能帶走一本的話,我會毫不猶豫地選擇它——《深入理解計算機系統》。

 

下面將一步一步走向計算機的天堂。
第一章:計算機系統漫遊。它僅僅通過最簡單的“hello world”程序,就讓我們瞭解一個程序是怎麼創建,怎麼編譯,怎麼執行的,它讓我們知道了在程序運行的過程中,計算機系統是怎麼一個狀況。真正應了書名《從程序員的視角看計算機系統》,而且起點很低,往往引入入勝,流連忘返。


第二章:信息的表示與處理。在這一方面,我覺得本書突出的重點非常好:無符號和二進制補碼。這兩種數據表示對我們程序員的影響比較大,因爲他們經常出現,而且經常給我們帶來迷惑。在看這一章的時候,我恰好在同步看《java puzzlers》這本書,而這本java解惑裏面涉及了很多的關於數據表示的問題,比如各種符號的轉換、擴展、截斷等等。而本書恰好給出的很多參考。


第三章:程序的機器級表示。這一章幾乎是一種教授逆向工程的方法在講授,剖析編譯器產生的彙編代碼,以此來加深對具體代碼實現的理解。通過學習這一章,我們很容易理解程序在機器上如何表示的。然而,本書主要是針對c程序員的,所以對於學習java的我來說,只能起到一個借鑑的作用了。


第四章:處理器體系結構。這一章主要講述設計模擬CPU來着,過於偏硬,對於剛開始學的人來說,可以先跳過。不過,我覺得這一章還是要看的,而且是重點看!畢竟,cpu、內存及IO是計算機系統三個最核心的概念了。瞭解了CPU,才能更加深刻地瞭解它是如何控制計算機執行程序的。


第五章:優化程序性能;第六章:存儲器層次結構;第七章:鏈接;第十章:虛擬存儲器;這四章可以說是本書的精華中的精華!應該一個字一個字把它們啃透。“優化程序性能”是全書最閃光的章節。作者對一個例子不斷優化,講循環效率和過程調用,到講存儲器引用,一直講到現代處理器的結構,講到IA32處理器的侷限,一路下來,暢快淋漓。“存儲器層次結構”實際上可以看作是“優化程序性能”一章的延伸,以及爲之後的“虛擬存儲器”做鋪墊。這章主要詳細解釋了高速緩存(cache)的工作方式,以及利用局部性使得cache達到最好效果的方法。其實我覺得它在考試或者面試時作用會更加大吧!鏈接的重要程度就更不用說了。而“虛擬存儲器”(Virtual Memory)則上升到了操作系統層面,詳細解析了VM的實現以及Linux系統上VM組織方式。說句令不好意思的話,以前一直不知道“虛擬存儲器”是啥玩意,有什麼用,呵呵!不過,我覺得最受用的是malloc/free實現的動態存儲器分配的具體方法以及對進程中具體存儲結構的瞭解,還有GC的策略。記得學操作系統時,我們背了很多內存分配策略,比如首次適配、最佳適配等等,釋放內存時的四種合併情況啦,這些概念過了一段時間就忘了。現在,你自己把它們實現了的時候,才知道malloc、free原來是這樣子的。這讓我想起了一句話:源碼面前,了無祕密呀!


而對於第十一章:系統級I/O;第十二章:網絡編程;第十三章:併發編程,這三章並非本書的重點,講述的也不是很多。但我讀完這幾章後確是這樣一種感覺:留下來的都是精華呀!

遨遊了一遍,最後談一下本書的書名吧!《深入理解計算機系統》,一聽此名,嚇走了不少人。本人在此隆重保證,本書很“簡單”!只要有c語言及彙編的經驗就可以看了,而且內容覆蓋比較廣,把程序執行時所涉及到的計算機組成原理、操作系統、編譯原理等整合了起來。通篇講得還是比較基礎的,沒有“深入”之說。所以,書的名字確實有點不符,《以程序員的視角看計算機系統》更形象吧!但名字不好聽,中國人不僅在乎內在美,外在美也很受關注呀!at last,不能認爲讀完了本書,自己就是“大牛”了。須知,後面的路還很長,還需要一步一步地走。。。

前幾天到網上一查,《深入理解計算機系統》第二版出來啦!鬱悶!我的纔買,就出新書了。看了一下,把修改的部分貼一下
《深入理解計算機系統》從第一版到第二版,已經是七年的時光了。由於計算機技術的飛速發展,第二版相對於第一版做了大量的修改。首先,針對硬件技術和編譯器技術的變化,第二版對系統的介紹,特別是實際使用部分,做了增加和修改。例如,既保持了原有的針對 32 位系統的說明,又增加了對 64 位系統的描述。其次,第二版增加了很多關於由算術運算溢出以及緩衝區溢出造成安全漏洞的內容。第三,更詳細講述了處理器對異常的發現和處理,這是計算機系統中的一個重點和難點。第四,對存儲器的描述改爲了基於 Intel Core i7 處理器的存儲器層次結構,還增加了固態硬盤的內容。第五,強調了併發性,併發性既體現在處理器的實現中,也體現在應用程序編程中。

最後,看了一下書的封面,恩,不喜歡!還是我的這本好,呵呵。。。

發佈了259 篇原創文章 · 獲贊 7 · 訪問量 51萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章