第一章 計(jì)算機(jī)系統(tǒng)漫游

信息 = 位 + 上下文

  • 源程序:0和1組成的比特序列(字節(jié)序列),序列中每個(gè)字節(jié)對(duì)應(yīng)程序的一個(gè)字符。
  • 所有信息都是一串比特,區(qū)分?jǐn)?shù)據(jù)對(duì)象的唯一方法是上下文。
  • 只由ASCII碼字符構(gòu)成的文件稱為文本文件, 其他文件成為二進(jìn)制文件。

程序被其他程序翻譯成不同的格式(編譯系統(tǒng))

編譯系統(tǒng)

處理器讀并解釋儲(chǔ)存在內(nèi)存中的指令(程序運(yùn)行)

  • 編譯系統(tǒng)的翻譯結(jié)果儲(chǔ)存在磁盤上,等待命令行調(diào)用后運(yùn)行。

  • shell:命令行解釋器

    系統(tǒng)的硬件組成
    • I/O總線:傳送字節(jié)或字(字節(jié)塊)[1]

    • I/O設(shè)備:用戶輸入,用戶輸出,磁盤

      每個(gè)I/O設(shè)備都通過控制器或適配器與總線相連

    • 主存:臨時(shí)存儲(chǔ)設(shè)備,存儲(chǔ)程序和數(shù)據(jù)(可以理解為線性字節(jié)數(shù)組

    • 處理器CPU:驅(qū)動(dòng)解釋或執(zhí)行主存中的指令

      • PC:程序計(jì)數(shù)器,指向主存中的命令地址
      • ALU:算術(shù)/邏輯單元,對(duì)數(shù)據(jù)或地址進(jìn)行算術(shù)運(yùn)算
      • 寄存器文件
    程序運(yùn)行過程
寄存器接受輸入的hello命令并存入主存
磁盤將hello.o載入主存

PC執(zhí)行指令,寄存器從主存讀取"hello world\n"并寫入顯示器
高速緩存存儲(chǔ)器
  • 用于存儲(chǔ)處理器近期可能用到的信息,使得大部分內(nèi)存操作都可以在高速緩存中完成
  • 多級(jí)高速緩存:兩級(jí)(L1,L2)、三級(jí)(L1,L2,L3)
存儲(chǔ)器層次結(jié)構(gòu)
  • 上一層存儲(chǔ)器作為下一層的高速緩存

操作系統(tǒng)

  • 操作系統(tǒng)可以理解為應(yīng)用程序和硬件之間插入的一層軟件。

  • 操作系統(tǒng)的基本功能

    • 防止硬件被失控的應(yīng)用程序?yàn)E用
    • 為應(yīng)用程序提供控制硬件的機(jī)制
  • 操作系統(tǒng)的三個(gè)基本抽象概念

文件,虛擬內(nèi)存,進(jìn)程
  • 進(jìn)程:運(yùn)行中的程序

    • 并發(fā)運(yùn)行:兩個(gè)進(jìn)程的指令交錯(cuò)執(zhí)行,通過處理器的上下文切換實(shí)現(xiàn)。

    • 上下文:進(jìn)程運(yùn)行所需的狀態(tài)信息,包括PC和寄存器文件的當(dāng)前值和主存內(nèi)容等。

    • 上下文切換:保存當(dāng)前進(jìn)程上下文,恢復(fù)新進(jìn)程上下文,并將控制權(quán)交給新進(jìn)程。

    • 操作系統(tǒng)內(nèi)核:系統(tǒng)管理進(jìn)程所用代碼和數(shù)據(jù)的集合,操作系統(tǒng)擁有控制權(quán)實(shí)際上內(nèi)核掌握控制權(quán)。

    • 線程:進(jìn)程的執(zhí)行單元,一個(gè)線程可以理解為一個(gè)控制流。相較于多進(jìn)程,多線程之間更容易共享數(shù)據(jù)且更高效。

控制權(quán)傳遞過程
  • 虛擬內(nèi)存:每個(gè)進(jìn)程看到相同的內(nèi)存空間

    • 程序代碼和數(shù)據(jù)
    • 堆:malloc/free
    • 共享庫:C標(biāo)準(zhǔn)庫、數(shù)學(xué)庫等
    • 棧:函數(shù)
    • 內(nèi)核虛擬內(nèi)存:應(yīng)用程序不能直接讀寫內(nèi)核文件或調(diào)用內(nèi)核函數(shù),必須通過調(diào)用內(nèi)核來執(zhí)行這些操作
  • 文件:文件就是字節(jié)序列。所有I\O設(shè)備(包括網(wǎng)絡(luò))都可以看做文件。

網(wǎng)絡(luò)

  • 網(wǎng)絡(luò)也是一種I/O設(shè)備。
  • 網(wǎng)絡(luò)的功能
    • 將信息從一臺(tái)機(jī)器復(fù)制到另外一臺(tái)機(jī)器,如電子郵件,即時(shí)通信等。
    • 本地服務(wù)器可以通過網(wǎng)絡(luò)在遠(yuǎn)程服務(wù)器上執(zhí)行程序并返回到本地。

一些重要概念

Amdahl定律

系統(tǒng)某個(gè)部分加速后,對(duì)系統(tǒng)總性能的影響取決于該部分的比例加速程度。

要想顯著加速系統(tǒng),就需要提升系統(tǒng)中相當(dāng)大部分的速度。


Amdahl定律
并發(fā)與并行

并發(fā):具有多個(gè)活動(dòng)的系統(tǒng)

并行:用并發(fā)使系統(tǒng)運(yùn)行更快

  • 線程級(jí)并發(fā)
    • 單處理器系統(tǒng)只能模擬進(jìn)程的并發(fā)執(zhí)行(上下文切換)。
    • 多處理器系統(tǒng)減少了模擬進(jìn)程并發(fā)的需要。
    • 超線程處理器允許一個(gè)處理器執(zhí)行多個(gè)控制流,可以實(shí)現(xiàn)多線程并行執(zhí)行。
  • 指令級(jí)并行
    • 現(xiàn)代處理器可以同時(shí)執(zhí)行多條指令。
    • 流水線(pipelining):將指令分為多個(gè)不同步驟,處理器分為多個(gè)不同階段,一個(gè)階段執(zhí)行一個(gè)步驟,且不同階段可以并行操作。
    • 超標(biāo)量處理器:執(zhí)行速率比一個(gè)周期執(zhí)行一條指令更快。
  • 單指令、多數(shù)據(jù)并行(SIMD并行)
    • 允許一條指令產(chǎn)生多個(gè)可以并行的操作,如單精度浮點(diǎn)數(shù)加法。
抽象

進(jìn)程:對(duì)運(yùn)行中的程序的抽象

虛擬內(nèi)存:對(duì)程序存儲(chǔ)器的抽象

文件:對(duì)I/O設(shè)備的抽象

指令集架構(gòu):對(duì)處理器的抽象

虛擬機(jī):對(duì)整個(gè)計(jì)算機(jī)的抽象,包括操作系統(tǒng)、處理器、程序


  1. 我們所說的32位,64位均指機(jī)器字長(zhǎng) ?

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

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

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