CSAPP 1 計算機系統的漫遊

2021-07-27 09:57:34 字數 1929 閱讀 5036

首先,儲存與計算機上的資訊都是位,計算機通過上下文判斷儲存資訊的型別(文字檔案、二進位制檔案)

1.c程式格式的流轉

0 hello.c 通過預處理器(cpp)增加標頭檔案後得到hello.i

0 hello.i通過編譯器編譯(ccl)得到hello.s(匯程式設計序)

0 hello.s通過彙編器(as)得到hello.o(二進位制 可重定位目標程式)

0 hello.o與其他(如printf.o)通過鏈結器(ld) 得到hello(可執行目標程式 二進位制)

其次,系統的硬體組成(匯流排、i/o裝置、主存、處理器)

0 匯流排:貫穿整個系統的一組電子管道,攜帶資訊位元組並負責各個部件間的傳遞

0 i/o裝置:系統與外部世界的聯絡通道,磁碟、滑鼠…

——都通過乙個控制器(i/o裝置本身或主機板上的晶元組)或介面卡(一塊插再主機板插槽的卡)與i/o匯流排相連

0 記憶體:存放程式和程式處理的資料,由一組動態隨機訪問儲存器(dram)組成

0 處理器:cpu,解釋(或執行)儲存在主存中指令的引擎。

——其核心是大小為乙個字的儲存裝置(或暫存器),稱為程式計數器(pc)——指向主存中的某條指令

——操作主要圍繞主存、暫存器檔案、算術/邏輯單元(alu)。載入、儲存、操作、跳轉

——處理器的指令集構架:每條機器**指令的效果

——處理器的微體系結構:處理器實際如何實現

2.執行hello

0 shell程式執行他的指令,等待我們輸入命令,我們輸入」./hello」,shell將字元逐一讀入暫存器,再放於記憶體

——鍵盤->i/o橋->i/o匯流排->i/o橋->匯流排->暫存器->匯流排->i/o橋->記憶體匯流排->主儲存器

0 hello目標檔案從

——通過直接儲存器訪問(dma)不通過cpu:鍵盤->i/o匯流排->i/o橋->記憶體匯流排->主儲存器

0 cpu開始執行hello程式的main程式中的機器語言指令

——」hello,world\n」從主存->…->暫存器->匯流排介面->i/o橋->i/o匯流排->圖形介面卡->顯示器

由此可見,系統花費了大量的時間來移動資訊,為使移動更快,增加了快取記憶體儲存器,l1、l2快取記憶體是用一種靜態隨機訪問儲存器(sram)的硬體技術實現,增大訪問速度的原因是利用區域性性原理,儲存最容易要用的東西再告訴快取中。

——儲存裝置形成層次結構(如暫存器->l1快取記憶體(sram)->l2快取記憶體->l3快取記憶體->主存(dram)->本地磁碟->遠端二級儲存)

3.hello程式輸出自己的資訊,hello程式本身沒有直接訪問顯示器等,他是依靠作業系統提供的服務。

作業系統的兩個基本功能:1、防止硬體被失控的程式濫用 2、向應用程式提供簡單一致的介面,便於控制硬體

0 實現:3個基本的抽象:檔案(i/o的抽象)、虛擬記憶體(i/o和主存的抽象)、程序(處理器和主存i/o的抽象)

——程序:作業系統對乙個正在執行的程式的抽象(作業系統實現併發執行的機制稱為上下文切換(核心**))

——0 執行緒:程序由多個稱為執行緒的執行單元組成

——虛擬記憶體:給每個程序乙個獨佔地使用主存的假象(程式**和資料、堆、共享庫、棧、核心虛擬記憶體)

——檔案: i/o裝置都可以看成檔案,所有的輸入輸出都可看成檔案的讀寫(網路通訊)

amdahi定律:加速比s=t(old)/t(new)=1/((1-α)+α/k) (α是提公升部位所佔比例,k是此部位提公升比例(加速比))

併發:乙個同時具有多個活動的系統 並行:用併發來使乙個系統執行得更快

0 1.執行緒級併發:1個程序執行多個控制流,再比如intel i7每個核可執行兩個執行緒,所以4核系統可並行執行8個執行緒

0 2.指令級並行:現代處理器可同時處理多條指令

0 3.單指令、多資料並行:允許一條指令產生多個可執行的操作,simd並行

最後增加乙個抽象:虛擬機器:對整個計算機的抽象,包括作業系統、處理器、程式

CSAPP 計算機系統漫遊

資訊 位 上下文 include int main 在linux中可以通過hexdump c hello.c的ascii碼表示 由於書中顯示的是十進位制,故轉換成十進位制與書中一致,例如 n 十六進製制0a 對應的10進製 10 高階語言 機器語言 為了能讓hello.c執行,每條c語言 高階語言 ...

CSAPP讀書筆記1 計算機系統漫遊

第一章介紹了乙個程式的生命週期,串起了計算機系統的主要概念和主題,實在是精彩,值得一讀。原書的總結就非常好了,在這摘錄一下 計算機系統由軟體和硬體構成,他們共同協作以執行應用程式。計算機內部的資訊用位表示,在不同的上下文中有不同的解釋方式。從文字到可執行檔案,經歷了預處理 編譯 彙編和鏈結四個階段。...

計算機系統漫遊

經過昨天的游泳,雖然早上起來有些疲憊,但還是看了 深入了解計算機系統 的書的第一章,在今天的學習中,我對快取的概念有了重新的認識 暫存器是l1快取的快取,l1快取是l2快取的快取,l2快取是主存的快取,主存是本地磁碟的快取,本地磁碟是網路上遠端伺服器硬碟的快取。雖然以前對快取的概念很清楚,但從沒想的...