系統的硬體組成
快取記憶體
作業系統管理硬體
程序虛擬記憶體
檔案amdahl定律
併發和並行
0和1組成的位序列,又稱為位元序列,8個位被組織成一組,成為位元組。每個位元組表示程式中的某些文字字元。
系統中的所有資訊–包括磁碟檔案、記憶體中的程式、記憶體中存放的的使用者資料以及網路上傳送的資料,都是有一串位元表示的。區分不同資料物件的唯一方法是我們讀到這些資料物件時的上下文。
大部分unix核心(作業系統的核心)以及所有支撐工具和函式庫都是用c語言編寫的。
每條c語句必須被其他程式裝華為一系列的低階機器語言指令,然後打包成可執行目標程式的格式,以二進位制磁碟檔案存放起來。
在unix系統上,從原始檔到目標檔案的轉化是由編譯器驅動程式完成的:
gcc -o hello hello.c
編譯過程:
預處理階段
預處理器(cpp)根據以字元#開頭的命令,修改原始的c程式。通常以」.i」為副檔名。
編譯階段
編譯器(ccl)將「.i」檔案翻譯成「.s」檔案,它包含乙個組合語言程式。
彙編階段
彙編器(as)將「.s」檔案翻譯成機器語言指令,打包成克重定位目標程式的格式,儲存在「.o」的二進位制檔案中。
鏈結階段
鏈結器(ld)將「.o」檔案與其中引用函式的預編譯好的目標檔案合併,得到可執行目標檔案。
匯流排 貫穿整個系統的一組電子管道,負責攜帶資訊在各個部件之間傳遞。
i/o裝置
系統與外部世界的聯絡通道。鍵盤、滑鼠、顯示器、磁碟驅動器。每個i/o裝置都通過乙個控制器或者介面卡與i/o匯流排相連。
主存 臨時儲存裝置,用來存放處理器執行程式時程式和其處理的資料。物理上,主存是一組動態隨機訪問儲存器(dram)晶元組成的;邏輯上,儲存器是乙個線性的位元組陣列。
處理器
解釋或執行儲存在主存中指令的引擎。處理器的核心是乙個大小為乙個字的儲存裝置或暫存器,成為程式計數器(pc)。任何時刻,pc都指向主存中的某條機器語言指令。
根據機械原理,較大的儲存裝置比較小的儲存裝置執行的慢,而快速裝置的造價遠高於同類的低速裝置。
快取記憶體儲存器,作為暫時的的集結區域,存放處理器近期可能會需要的資訊。l1和l2快取記憶體是用一種叫做靜態隨機訪問儲存器(sram)的硬體技術實現的。
shell 和可執行程式並沒有直接訪問硬體,而是依靠作業系統提供的服務。
作業系統基本功能:
防止硬體被失控的應用程式濫用;
向應用程式提供簡單一致的機制來控制複雜而又通常大不相同的低階硬體裝置。
實現方式:
通過幾個基本的抽象概念(程序、虛擬記憶體和檔案)。檔案是對i/o裝置的抽象表示,虛擬記憶體是對主存和磁碟i/o裝置的抽象表示,程序則是對處理器、主存和i/o裝置的抽象表示。
程序間的切換是由作業系統核心管理的。核心是作業系統**常駐主存的部分。
每個程序看到的記憶體是一致的,稱為虛擬位址空間。
位元組序列。每個i/o裝置都可以看成是檔案。檔案向應用程式提供了乙個統一的檢視,來看待系統中可能含有的所有的i/o裝置。
主要思想:tn
ew=(
1−α)
told
+(αt
old)
/k=t
old[
(1−α
+α/k
)]
加速比s=t
old/
tnew
=11−
α+α/
k 併發指乙個同時具有多個活動的系統。並行指用併發來是乙個系統執行的更快。
執行緒級併發
單處理器模擬併發、多核處理器、超執行緒
指令級並行
現代處理器可以同時執行多條指令的屬性
3.單指令、多資料並行
許多現代處理器擁有特殊的硬體,允許一條指令產生多個可以並行執行的操作,這種方式稱為單指令、多資料,即simd並行。
深入理解計算機系統
關鍵路徑是在迴圈的反覆執行中形成的資料相關鏈。迴圈展開是一種程式變換,通過增加每次迭代計算的元素的數量,減少迴圈的迭代次數。重新結合變換能夠減少計算中關鍵路徑上操作的數量,通過更好地利用功能單元的流水線能力得到更好的效能。浮點運算不保證是可結合的,通常迴圈展開和並行地累積在多個值中,是提高程式效能的...
《深入理解計算機系統》
知乎 深入理解計算機系統 這本書需要什麼水平能看懂?15 213 18 218 15 513 introduction to computer systems schedule fall 2016 鏈結失效則 cmu15 213的課程主頁,有ppt,還有錄影,主講人就是這本書的作者。備註 備註 詳細...
《深入理解計算機系統》
最近一直覺得在技術上很難有更大的突破 主要是思想上 一直想找一本合適的書。有人給我推薦了 深入理解計算機系統 嗯,不錯。我又一次把自己歸零,從頭開始學。我經常這樣,在學一門新技術的時候,或者再一次熟悉老技術的時候,我總是再一次把自己放到初學者的位置 就當自己沒學過 每次都能有一定的收穫。處理器 執行...