CSAPP(深刻理解計算機系統)讀後感

9月到10月8號,包括國慶七天,大概天天5小時以上的時間,把Computer System: A Programmer Perspective 2rd version (深刻理解計算機系統)的英文版啃完,收穫很大。html

第一部分 主要內容程序員

    我印象比較深的內容有:算法

  • 計算機如何表示數,無符號數,有符號的表示,以及C語言中有符號與無符號之間運算要注意的問題,好比x>y 與x -y > 0 並非任什麼時候候均可以互換。

 

  •  IA3彙編語言(書裏會將一些要理解的東西放在穿插在正文裏面的習題裏,在我看來,習題也是正文的一部分,基本上每一題我都寫了,並對照答案。)

 

  • CPU的結構 ,經過實現一套簡單的Y86指令集來說解CPU的流水線,pipeline hazars , data hazards. 

 

  • 第五章主要講了程序性能的優化,經過不斷改進一個求和程序,來說解一些經常使用的性能優化的方法,好比減小循環(又叫循環展開),減小沒必要要的內容引用(如函數內使用局部變量存儲中間結果而不是全局變量,由於局部變量可使用寄存器存儲), 使用並行的方法等等。講解了局部性原理,不論數據仍是指令若是知足局部性原理會更優。

 

  • 存儲器架構,這部分講解了存儲器的內容,特別是緩存這部分講得很清晰明白,看了讓人對緩存有了必定的認識,再也不對緩存抱有什麼神祕,以及經過講解局部性原理,如何書寫Cache-friendly code。

 

  • 程序在系統裏是如何運行的,講了符號解析,連接裏的靜態連接,加載時連接,運行時連接,以及在二進制代碼裏如何實現PIC(Position-Independent-Code), 

 

  • 計算機裏的異常,包括中斷, 陷入,錯誤,停止。

 

  • 虛擬存儲,計算機如何管理磁盤和內存,物理地址、虛擬地址之間的映射,頁錯誤機制。

 

  • 網絡編程,經過實現一個小型的客戶端和服務器的代碼講解基本的網絡編程概念。

 

  • 併發編程(Concurrent Programming) 多線程,子線程資源回收,經過使用信號量解決Race問題。

 

 

第二部分 個人感覺編程

不一樣的書面向的讀者不一樣,若是你已經對計算機有了必定的瞭解,這本書可能對你來講比較長和囉嗦。可是這本號稱計算機專業的聖經之一的書對個人幫助很大,讓我讀起來愛不釋手。緩存

當初若是本科大二或者大三看這本書,那麼我起步會更早,對計算機的理解也會更加深刻,學習其餘計算機知識也會更加迅速。從而避免許多彎路。性能優化

不過如今還好,如今讀完總比沒有本身若是一直沒讀的好。謝謝那些推薦這些書的人,好多好多。服務器

從程序員的角度講解操做系統,對許多應該瞭解的知識都覆蓋了,又避免了過深和多餘的論述。適合剛入門或想入門的同窗學習。若是功力深厚了,能夠挑選本身感興趣的章節閱讀。網絡

我讀的是英文版的第二版,前5章是電子版的PDF,後面在一個網站上花了100大洋買了實體書,繼續學習。中間由於浮點數和CPU架構一章興趣不大,就讀了中文的,其餘的章節基本是邊讀英文邊作題,一共花了大概一個月的時間。多線程

本文是記錄本身學習的歷程,許多知識點就不一一寫出來了,繼續個人探索之旅,接下來是算法導論的selected topic和<<THE C Programming Language>>架構

相關文章
相關標籤/搜索