速讀《深入理解計算機系統》

2022-08-09 06:24:13 字數 1200 閱讀 4827

本週速讀了《深入理解計算機系統》這本書,這本書從程式設計師的角度介紹了計算機系統的內在運作,展示了一些本質概念是如何實際的影響應用程式的正確性、效能和實用性的。收穫如下:

movw:傳送兩個位元組,當乙個運算元為暫存器時,必須為下圖中八個雙位元組暫存器元素中的乙個。

movb:傳遞乙個位元組,當乙個運算元為暫存器時,必須為下圖中八個單位元組暫存器元素中的乙個。

movsbl和movzbl負責拷貝乙個位元組,並設定目的運算元中其餘的位。

ia32採用了一組統一的暫存器使用慣例,根據慣例,暫存器eax、edx、ecx被劃分為呼叫者儲存暫存器,當過程p呼叫q時,q可以覆蓋這些暫存器,二不會破壞任何p所需要的資料;ebx、esi、edi被劃分為被呼叫者儲存暫存器,這意味著q必須在覆蓋這些暫存器之前,將這些暫存器中的值儲存到棧中,並在返回前恢復它們,因為p可能會在今後的計算中需要這些值。由此根據慣例,必須保持暫存器ebp、esp。
gene amdahl做出了乙個關於提高系統一部分效能的效果的簡單但富有洞察力的觀察,被稱為amdahl定律。其主要思想是當我們加快系統乙個部分的速度時,對系統整體效能的影響依賴於這個部分有多重要和速度提高了多少。

考慮乙個系統在其中執行某個應用程式需要時間t,設系統某部分需要這個時間的百分比為a,二我們將它的效能提高到了k倍,因此整個執行時間為t=(1-a)t+(at)/k=t[(1-a)+a/k],由此可以得出加速s=1/[(1-a)+a/k]。例如原來占用60%時間的部分提高到了三倍即a=0.6,k=3,此時加速s=1.67。可以看出我們大幅度改進了系統的乙個主要部分,但是淨加速還是很小。

所以amdahl定律的主要觀點就是要想大幅度提高整個系統的速度,必須提高整個系統很大一部分的速度。

重定位由兩步組成:

使用這個庫函式查詢系統時鐘以確定當前的日期和時間。這個函式把時間寫入到乙個呼叫者傳遞過來的結構中,這個結構包括乙個單位為s的字段,還有乙個單位為μs的字段。

垃圾收集器是一種動態儲存分配器,它自動釋放程式不再需要的已分配塊,這些塊被稱為垃圾。自動**堆儲存的過程叫做垃圾收集。在乙個支援垃圾收集的系統中,應用顯式分配堆塊,但從不顯式地釋放它們。在c程式的上下文中,應用呼叫malloc,但從不呼叫free。垃圾收集器定期識別垃圾塊,並相應地呼叫free,將這些塊放回空閒鍊錶中。

深入理解計算機系統(速讀筆記)

程序和執行緒都是乙個時間段的描述,程式執行時,cpu處理速度太快,只有暫存器能夠趕上cpu的速度,ram速度遠遠趕不上,當處理多個任務時,只能乙個乙個輪流處理,具體的輪流方法就是 先引導程式a的上下文,然後開始執行a,儲存程式a的上下文,調入下乙個要執行的程式b的程式上下文,然後開始執行b,儲存程式...

深入理解計算機系統

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

《深入理解計算機系統》

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