《深入理解計算機系統 程式結構》讀書筆記

2022-08-25 08:52:07 字數 981 閱讀 3574

計算機系統是由硬體和系統軟體組成的,他們共同工作來執行應用程式。在《深入理解計算機系統》一書中將會學到很多實踐的技巧。例如:了解編譯器是如何實現過程呼叫的、避免緩衝區溢位錯誤帶來的安全漏洞、理解併發帶來的希望和陷阱等。

翻譯過程分為4個階段

了解編譯系統如何工作是大有益處的

執行程式

快取記憶體儲存器:

儲存裝置結構層次

執行緒虛擬記憶體

程式開始是ascii文字,然後被編譯器翻譯成二進位制可執行檔案。處理器讀取並解釋存放在主存裡的二進位制指令。

整數運算:整數是有限數量的位,當太大時就會溢位。只能表示相對較小的數值範圍,但是很精確。

浮點數運算:可以表示乙個較大的數值範圍,但是這種表示只是近似。

十六進製制表示法:十六進製制由0~9以及a-f表示。

字資料大小:

定址和位元組順序

表示字串

表示**

布林代數簡介

無符號和有符號的轉換

大多數機器,整數乘法指令需要10個以上的時鐘週期。除法需要30個以上的時鐘週期。因為是使用邏輯位移和算術位移達到目的。

ieee浮點表示

捨入浮點數運算

c語言的浮點數:float單精度浮點數和double雙精度浮點數。

機器級**

x86-64的機器**

訪問條件碼:,條件碼通常不直接讀取,常用的使用三種方法:

跳轉指令

用條件控制來實現條件分支

while迴圈

for迴圈

switch語句

執行時棧

轉移控制

資料傳遞

棧上的區域性儲存

暫存器中的區域性儲存空間

遞迴過程

指標運算

巢狀元素陣列

定長陣列:c語言編譯器能夠優化定長多維陣列上的操作**。

變長陣列:歷史上c語言只支援定長陣列。iso c99引入了一種功能,允許陣列的維度是表示式,在陣列被分配的時候才計算出來。

深入理解計算機系統

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

《深入理解計算機系統》

知乎 深入理解計算機系統 這本書需要什麼水平能看懂?15 213 18 218 15 513 introduction to computer systems schedule fall 2016 鏈結失效則 cmu15 213的課程主頁,有ppt,還有錄影,主講人就是這本書的作者。備註 備註 詳細...

深入理解計算機系統

系統的硬體組成 快取記憶體 作業系統管理硬體 程序虛擬記憶體 檔案amdahl定律 併發和並行 0和1組成的位序列,又稱為位元序列,8個位被組織成一組,成為位元組。每個位元組表示程式中的某些文字字元。系統中的所有資訊 包括磁碟檔案 記憶體中的程式 記憶體中存放的的使用者資料以及網路上傳送的資料,都是...