深入理解計算機系統筆記 備忘

2021-09-27 09:39:07 字數 1185 閱讀 8665

多核cpu:將多個cpu(稱為「核」)整合到乙個積體電路晶元上、

超執行緒:允許乙個cpu執行多個控制流的技術,cpu的某些硬體有多個備份,比如程式計數器(pc)和暫存器,而其他的硬體可能只有乙份,比如浮點運算單元。超執行緒技術可以使cpu(核)在單個週期的基礎上決定要執行哪個執行緒,而傳統cpu可能需要20 000個時鐘週期完成執行緒的切換。(從這裡來看,乙個核同一時刻還是只能執行乙個控制流的,只不過快的多的執行緒切換速度可以將乙個核模擬為兩個核)

檔案是對i/o裝置的抽象,虛擬記憶體是對程式儲存器的抽象,程序是對乙個正在執行程式的抽象

乙個模組中的兩個c檔案中可以定義兩個同名的全域性變數,但其中要有弱定義的。比如乙個強定義,乙個弱定義,或者多個弱定義。強定義:可以被外部檔案呼叫的函式名,初始化了的全域性變數;弱定義:比如未賦值的全域性變數。 鏈結器處理多重定義符號的規則:1.不允許有多個同名的強符號2.若有乙個強符號和多個弱符號,那麼選擇強符號3.如果是多個弱符號同名,任意選乙個;注意:若這些同名符號不同型別,也是可以鏈結過的。。。。。

鏈結可執行於編譯時,載入時,執行時。

編譯時指定庫的順序:被依賴的要放在依賴它的的右邊,若存在相互引用,可以重複出現,比如foo.c依賴libx.a,libx.a依賴liby.a,而liby.a又依賴libx.a那麼,gcc foo.c libx.a liby.a libx.a

程式的執行時記憶體映像,**段總是從0x400000開始,後面是資料段,執行時堆。使用者棧最大合法使用者位址空間位2的48次方。再往上的位址就是核心的**和資料了。**段與資料段之間有空隙(為了對齊要求),而棧,共享模組,堆由於安全性還會使用位址空間布局隨機化,每次程式執行時,他們的位址都會改變。

處理目標檔案的工具:

strings:列出乙個目標檔案中所有可列印的字串

strip:從目標檔案中刪除符號表資訊

nm:列出乙個目標檔案中的符號表中定義的符號

size:顯示目標檔案中節的名字和大小

readelf:顯示乙個目標檔案的完整結構,包括elf頭中編碼的所有資訊,包含size和nm的功能

objdump:能夠顯示乙個目標檔案中的所有資訊,它最大的作用時反彙編.text段中的二進位制指令

操作程序的工具

strace:列印乙個程序及其子程序呼叫的每個系統呼叫的軌跡

strace -fp 可以跟蹤所有執行緒的系統呼叫 進一步的,指定執行緒的tid可以監視特定執行緒的系統呼叫

pstack 列印棧資訊

深入理解計算機系統 筆記

cu control unit cpu暫存器,晶元的快取記憶體sram 晶元外的快取記憶體sram 主存dram 本地硬碟 網路分布式檔案系統。拷貝次數越少,越好,netty,零拷貝 dma控制器與cpu分時使用記憶體的三種方式 程序 作業系統對執行程式的一種抽象,乙個系統上,多個程序都好像獨佔硬體...

深入理解計算機系統

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

《深入理解計算機系統》

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