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