第一章:計算機(jī)漫游

計算機(jī)系統(tǒng)漫游

信息就是位+上下文

程序被其他程序翻譯成不同的格式

預(yù)處理器、編譯器、匯編器、鏈接器一起構(gòu)成了編譯系統(tǒng)。

  • 預(yù)處理階段,預(yù)處理器cpp會修改原始的C程序,比如會把#include <stdio.h>命令告訴預(yù)處理器讀取系統(tǒng)頭文件stdio.h的內(nèi)容,并插入程序文本中,得到了另一個c程序,通常以.i為擴(kuò)展名
  • 編譯階段,編譯器ccl將.i文件翻譯成.s文件,包含一個匯編語言程序。
  • 匯編階段,匯編器as會將.s翻譯成機(jī)器語言指令,把這些指令打包成一種叫做可重定位目標(biāo)程序的格式,并將結(jié)果保存在目標(biāo).o文件中。.o文件是一個二進(jìn)制文件。
  • 鏈接階段,鏈接器ld負(fù)責(zé)將程序中調(diào)用標(biāo)準(zhǔn)庫的函數(shù)同函數(shù)所在的預(yù)編譯文件進(jìn)行鏈接,得到一個可執(zhí)行的目標(biāo)文件,此文件可以被加載到內(nèi)存中,由系統(tǒng)執(zhí)行。

了解編譯系統(tǒng)如何工作是大有益處的

處理器讀并解釋存儲在內(nèi)存中的指令

系統(tǒng)的硬件組成

  1. 總線,它攜帶信息字節(jié)并負(fù)責(zé)在各個部件間傳遞。
  2. I/O設(shè)備,每個I/O設(shè)備都通過一個控制器或適配器與I/O總線相連。控制器是I/O設(shè)備本身或系統(tǒng)的主板上的芯片組,適配器是一塊插在主板插槽上的卡。
  3. 主存,是臨時存儲設(shè)備。物理上來說,主存是一組動態(tài)隨機(jī)存取存儲器DRAM芯片組成的。從邏輯上說,存儲器是一個線性的字節(jié)數(shù)組,每個字節(jié)都有其唯一的地址,地址從零開始。
  4. 處理器,CPU,是解釋或執(zhí)行存儲在主存中指令的引擎,處理器核心是一個大小為一個字的存儲設(shè)備(寄存器),稱為程序計數(shù)器PC,任何時刻PC都指向主存中某條機(jī)器語言指令。

例子,CPU在指令的要求下可能會執(zhí)行這些操作:

  • 加載:從主存復(fù)制一個字節(jié)或一個字到寄存器,以覆蓋寄存器原來的內(nèi)容。
  • 存儲:從寄存器復(fù)制一個字節(jié)或一個字到主存的某個位置,以覆蓋原來的內(nèi)容。
  • 操作:把兩個寄存器的內(nèi)容復(fù)制到ALU,ALU對這兩個字做算術(shù)運(yùn)算,并將結(jié)果放到一個寄存器中,以覆蓋該寄存器中原來的內(nèi)容。
  • 跳轉(zhuǎn):從指令本身中抽取一個字,并將這個子復(fù)制到程序計數(shù)器PC中,以覆蓋PC中原來的值。

執(zhí)行hello程序

高速緩存至關(guān)重要

存儲設(shè)備形成層次結(jié)構(gòu)

進(jìn)程

進(jìn)程是操作系統(tǒng)對一個正在運(yùn)行的程序的一種抽象。

線程

虛擬內(nèi)存

  • 程序代碼和數(shù)據(jù)
  • 共享庫
  • 內(nèi)核虛擬內(nèi)存

文件

文件就是字節(jié)序列。

系統(tǒng)之間利用網(wǎng)絡(luò)通信

重要主題

并發(fā)和并行

  1. 線程級并發(fā)
  2. 指令級并行
  3. 單指令、多數(shù)據(jù)并行
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容