
如果直譯原書名,這本書更應該被稱為“以程序員的視角理解計算機系統”。它不是一本適合廣泛閱讀的科普讀物,反倒比較適用于那些想要寫出更快、更可靠程序的程序員。
在外界看來,闡述系統、C語言和匯編語言,該書必然是晦澀而深奧的。但其實不然,它是一本面向計算機專業初學者的好書,是頂尖學府大咖結合多年教學經驗寫出來的。作為一本入門級別的專業書,該書所談內容并不深入,不會把某個話題挖掘得過于細節化,而往往能從淺顯問題中一針見血地指出關鍵所在。通過掌握程序是如何映射到系統上,以及程序是如何執行的,閱讀者能夠更好地理解程序行為的發生及效率低下的原因。
全書的主要論題涵蓋甚廣,包括了數據表示、C程序的機器級表示、處理器結構、程序優化、網絡編程和并發編程等。它們如何影響應用和系統程序員,在它們的作用下計算機如何設計和工作,操作系統包含哪些重點及其作用又是什么……這是作者想要極力表達清楚的。隨著閱讀的推進,透過程序員視角,讀者能夠清楚地明白:學習計算機系統的內部工作原理對計算機科學研究者和工程師的工作具有怎樣的幫助,從而更有利于相關從業者為進一步學習計算機體系結構、操作系統、編譯器和網絡互連做好準備。
以講述數據表示為例,該書說明了能夠近似地表示整數和實數的數字方法是有限的;而轉換到有關高速緩存的敘述,該書討論了矩陣代碼中的循環變量順序是如何影響程序性能的;在討論網絡互連時,該書描述了并發服務器如何能有效地處理來自多個客戶端的請求……作為被眾多專業人士稱為“最偉大的計算機教材”之一的著作,《深入理解計算機系統》旨在解釋計算機系統的所有本質概念,并向讀者展示這些概念是如何實際地影響應用程序的正確性、性能和實用性。與其他主要針對系統構造人員的系統類書籍不同,該書更像是為軟件和硬件之間搭起了一個橋梁,給出一種幫助讀者分別從硬件和軟件的角度去理解一個程序及其行為的途徑,而這從某種程度上填補了國內計算機系統教學中的一項空白。
有人說,這本書最大優點在于覆蓋面廣泛、可以幫助讀者充分理解概念。它能讓讀者很清楚地在腦海中構造一個層次型的計算機系統,從最低層數據在內存中的表示(如我們一直陌生的浮點數表示)到流水線指令的構成、虛擬存儲器、編譯系統、動態加載庫,以及最后的用戶應用。同時,它還能使讀者對計算機系統各組件的工作方式有基本的理性認識,在一定程度上獲得鍛煉計算思維的方法。
書中提供了大量的例子、練習及部分答案,每一個基本概念都有相應的筆頭或程序試驗,對于加深讀者印象及理解深有裨益。這也能夠解釋為什么它的英文原著久負盛名,被當做課程教材使用多年。