《深入理解計算機系統》這本書從乙個程式設計師的視角詳細剖析了整個計算機系統,涵蓋了組成原理、組合語言、體系結構、作業系統、網路等計算機基礎知識。是很多人都推薦的一本書,所以有空的時候花了近乙個月的時間把我感興趣的地方都看了一遍。
在看完整本書之後,現在把我看過的內容整體回顧一遍,作為複習,也作為以後再回頭看這本書的索引和參考。
第一章——計算機系統漫遊
這章是對整本書所要講的內容的乙個簡介,整體的介紹了計算機體系結構,才看的時候對以前沒有接觸過的程序、執行緒的概念還是不能理解,但是在深入看了後面的內容後就理解了。然後在這章裡我覺得有兩個概念比較重要:
1)儲存裝置的層次結構;
2)關於作業系統的三個抽象:1、檔案是對i/o的抽象;2、虛擬儲存器是對程式儲存器的抽象;3、程序是對乙個正在執行的程式的抽象。
第二章——資訊的表示和處理
這一章介紹了資料在計算機如何被處理和儲存——以二進位制的方式 。由二進位制表示整數的方式具體分為:補碼、反碼、無符號的形式,這三種方式又是如何進行四則運算,如何進行相互轉換,並給出了推導公式;什麼情況下會產生溢位。這些內容雖然很細節化,很底層,但是由於大量的計算機安全漏洞都是由於計算機算術運算的微妙細節引起的,所以這一章的內容還是值得一看的。
筆記:2.1.9 邏輯運算與位級運算
位級運算:或「|」 與「&」 取反「 ~」 異或「^」(常見用法:實現掩碼運算)
邏輯運算:或「||」 與「&&」 取反「 !」
差異1:邏輯運算認為所有非0引數都表示true,引數0表示false
差異2:邏輯運算如果對第乙個引數求值就能確定表示式的結果,那麼邏輯運算子就不會對第二個引數求值。
關於浮點數的部分,由於我現在的階段用的並不多,所以暫時沒看,等以後用上了再看。
第三章——程式的機器級表示
這一章講了組合語言,很多地方都是以一種逆向工程的方式來教授,用gcc把寫好的c語言**轉化為彙編**,然後剖析產生的彙編**來加深對具體**的實現,因為太過於底層,所以只是看看最簡單的算術邏輯操作就沒再往下看了。
第四章——處理器體系結構
沒看
《深入理解計算機系統》讀後筆記二
第五章 優化程式效能 高效的程式所具備的特點 1 必須選擇一組合適的演算法與資料結構 參考資料結構與演算法的書 2 編寫出編譯器能有效優化來轉換成高效可執行的源 本章就這一點展開 3 充分利用計算機的多核 多處理器 在處理乙個運算量特別大的計算時,常常需要把乙個任務分解成多個部分,這些部分可以在多核...
深入理解計算機系統 筆記
cu control unit cpu暫存器,晶元的快取記憶體sram 晶元外的快取記憶體sram 主存dram 本地硬碟 網路分布式檔案系統。拷貝次數越少,越好,netty,零拷貝 dma控制器與cpu分時使用記憶體的三種方式 程序 作業系統對執行程式的一種抽象,乙個系統上,多個程序都好像獨佔硬體...
深入理解計算機系統
關鍵路徑是在迴圈的反覆執行中形成的資料相關鏈。迴圈展開是一種程式變換,通過增加每次迭代計算的元素的數量,減少迴圈的迭代次數。重新結合變換能夠減少計算中關鍵路徑上操作的數量,通過更好地利用功能單元的流水線能力得到更好的效能。浮點運算不保證是可結合的,通常迴圈展開和並行地累積在多個值中,是提高程式效能的...