讀完了csapp 中文名 深入理解計算機系統

2021-09-06 16:33:27 字數 1653 閱讀 5918

看完了。

我買的是中文版的,由於除了貌似評價不錯以外,由於涉及到些自己不了解的底層東西,怕是看英文會雲裡霧裡。如今看來,大概不能算是個長處,可是的確可以加快我的看書速度,否則一星期還真不大可能把這書搞定。

書的確是難得的書。我第一次試圖讀這本書是幾個月曾經,當時第2章「資訊的表示和處理」沒看完就放下了,認為講了一大堆數字表達方式非常沒意思……這次略微堅持了一下,沒想到就一口氣讀下來了……

重點推薦第3章「程式的機器級表示」第5章「優化程式效能」第6章「儲存器層次結構」第10章「虛擬儲存器」。認為這四章乃是全書之精華,看得人欲罷不能。

「程式的機器級表示」一章差點兒是一種教授逆向project的方法在講授,剖析編譯器產生的彙編**,以此來加深對詳細**實現的理解。大量的習題都是依據彙編來猜源程式是什麼,有趣極了。這一章還覆蓋了緩衝區攻擊——可是這點講得太少了,不解渴,有時間自己弄弄……

講底層離不了彙編這個有點棘手的東西,我還一度操心自己彙編學得不太過關,會碰到障礙。但這裡作者提出乙個非常實際的要求:曾經要求程式猿都會寫彙編,如今要求程式猿都會讀彙編。這裡以一種「讀」的方式教人用彙編,不侷限於非常多細小的語法,讓只懂得c的程式猿也毫無障礙。只100多頁,不僅初步講了彙編的語法和使用,還配合大量的樣例分析來解讀產生的彙編**,讓人理解深刻,實在是技高一籌。

「優化程式效能」是全書最閃光的章節。作者對乙個樣例不斷優化,講迴圈效率和過程呼叫,到講儲存器引用,一直講到現代處理器的結構,講到ia32處理器的侷限,一路下來,暢快淋漓。還將ia32處理器的優化結果和compaq alpha 21164做對照,一目了然的看出哪些優化是處理器相關的,最後講到profiling(程式剖析)指導優化,可以說平時可以用到的最高技巧(畢竟我還不是編譯器開發者……)和流程走了一邊,現實意義相當之高。

這章把可以用到的所有技巧的原理所有解說得清清楚楚,不做不必要的挖深,結合**,讓人絲毫不覺枯燥,真是佩服得五體投地。儘管章節後對編譯器優化還提供了參考文獻以及加深的內容,只是我認為這章的內容已經足夠我受用非常久了。

「儲存器層次結構」實際上可以看作是「優化程式效能」一章的延伸,以及為之後的「虛擬儲存器」做鋪墊。這章主要詳解了快速快取(cache)的工作方式,以及利用區域性性使得cache達到最好效果的方法。

「虛擬儲存器」(virtual memory)則上公升到了作業系統層面,詳細解析了vm的實現以及linux系統上vm組織方式。自己認為最受用的是malloc/free實現的動態儲存器分配的詳細方法以及對程序中詳細儲存結構的了解,還有gc的策略。這些讓我感覺自己可以做到的事情似乎又多了一點,一直無法理解的valgrind之類軟體的原理似乎也有了點眉目。

這兩章講得比較仔細,以至於略微顯得有點枯燥。事實上我自己喜歡這兩章的主要原因是解了我多年來關於儲存器的困惑。只是儲存器方面的內容實在博大精深,自己這全然是得了點皮毛就沾沾自喜。

最後,我們衷心感謝偉大的技術作家brian kernigam以及後來的w.richard stevens,他們向我們證明了技術書籍也能寫得如此優美。

讀完了csapp 中文名 深入理解計算機系統

看完了。我買的是中文版的,由於除了貌似評價不錯以外,由於涉及到些自己不了解的底層東西,怕是看英文會雲裡霧裡。如今看來,大概不能算是個長處,可是的確可以加快我的看書速度,否則一星期還真不大可能把這書搞定。書的確是難得的書。我第一次試圖讀這本書是幾個月曾經,當時第2章 資訊的表示和處理 沒看完就放下了,...

深入理解計算機系統第四版 深入理解計算機系統

記憶體從概念上來說就是乙個很大的位元組陣列,儲存著程式和資料。程式用虛擬位址來引用記憶體位置。硬體和作業系統軟體聯合起來將虛擬位址翻譯成實際或實體地址,指明資料實際存在記憶體中哪個地方。指令集的乙個重要性質就是位元組編碼必須有唯一的解釋。任意乙個位元組序列要麼是乙個唯一的指令序列的編碼,要麼就不是乙...

深入理解計算機系統

關鍵路徑是在迴圈的反覆執行中形成的資料相關鏈。迴圈展開是一種程式變換,通過增加每次迭代計算的元素的數量,減少迴圈的迭代次數。重新結合變換能夠減少計算中關鍵路徑上操作的數量,通過更好地利用功能單元的流水線能力得到更好的效能。浮點運算不保證是可結合的,通常迴圈展開和並行地累積在多個值中,是提高程式效能的...