CSSAPP 閱讀筆記 Chapter1

2021-08-19 09:23:48 字數 1279 閱讀 8157

全書內容的粗略概括,對後續章節的內容在總體上有大致了解。

程式的翻譯過程及編譯系統

預處理階段

預處理器(cpp)

根據命令修改原始程式,得到以

.i 作為副檔名的另乙個程式。

編譯階段

編譯器(ccl)

將文字檔案

***.i

翻譯成文字檔案

***.s

,其中包含乙個組合語言程式。

彙編階段

彙編器(as)

將***.s

檔案翻譯成機器語言指令,將指令打包成

可重定位目標程式

格式,並儲存在二進位制檔案

***.o

中。鏈結階段

鏈結器(ld)

將程式中呼叫的庫函式的目標檔案合併到

***.o

檔案,得到

可執行目標檔案

***。

執行階段

可執行檔案被載入到記憶體中,由系統執行。

系統的硬體組成

匯流排貫穿於系統的一組電子管道,負責攜帶資訊位元組在各部件間傳遞。

i/o裝置

系統與外界的聯絡通道,每個裝置通過乙個控制器或介面卡與i/o匯流排連線。

主存一組動態隨機訪問儲存器(dram)晶元組成的臨時儲存裝置,用於存放程式執行時的程式及其處理的資料。

處理器執行儲存在主存中指令的引擎,包含程式計數器(pc)、暫存器檔案、算術邏輯單元(alu)。

快取記憶體

暫時儲存區域,存放處理器近期可能需要的資訊。用於解決處理器與主存之間讀取資料的速度和儲存容量的差距。

儲存器層次結構

在該結構中,從上至下,裝置訪問速度越來越慢,容量越來越大,每位元組造價越來便宜。暫存器檔案在層次結構中位於最頂部,記為l0。

主要思想:一層上的儲存器作為低一層儲存器的快取記憶體。

作業系統管理

程序作業系統對乙個正在執行的程式的一種抽象。

上下文:程序執行所需的所有狀態資訊。

上下文切換:作業系統儲存當前程序的上下文、恢復新程序的上下文,將控制權從當前程序傳遞到新程序。

執行緒組成程序的執行單元,執行在程序的上下文中,共享同樣的**和資料。

虛擬儲存器

將所有儲存器看成乙個一致的儲存器,抽象為一整個虛擬位址空間。

計算機系統的抽象

檔案:對i/o裝置的抽象。

虛擬儲存器:對程式儲存器的抽象《主存+i/o裝置》

程序:對正在執行的程式的抽象《處理器+主存+i/o裝置》

虛擬機器:對整個計算機的抽象《作業系統+處理器+主存+i/o裝置》

CSSAPP稀里糊塗的讀書筆記(五)優化程式效能

本章主要 如何使用幾種不同型別的程式優化技術,使程式執行的更快。編寫高效程式需要做到以下幾點 第一,我們必須選擇一組適當的演算法和資料結構。第二,我們必須編寫出編譯器能夠有效優化以轉換成高效可執行 的源 第三,針對處理運算量特別大的計算,將乙個任務分成多個部分,這些部分可以在多核和多處理器的某種組合...

CSSAPP稀里糊塗的讀書筆記(十)系統級I O

本章介紹unix i o 和標準i o的一般概念,具體的細節什麼的還是看書比較好。乙個linux 檔案就是乙個 m 個位元組的序列,所有的i o裝置都被模型化為檔案,而所有的輸入和輸出都被當作對響應檔案的讀和寫來執行。這種將裝置優雅地對映為檔案地方式,允許linux核心引出乙個簡單 低階地應用介面,...

閱讀任務 閱讀筆記 4

功能驅動的設計 1 構造總體模型 2 構造功能列表 3 制定開發計畫 4 功能設計階段 5 實現具體功能 軟體測試按目的分類 1 功能測試 2 非功能測試 軟體測試的各種方法 1 單元測試和 覆蓋率測試 2 構建驗證測試 3 驗收測試 4 探索式的測試 5 回歸測試 6 場景 整合 系統測試 7 夥...