1. 程式人生 > >2018-2019-1 20189221 《深入理解計算機系統》第 1 周學習總結

2018-2019-1 20189221 《深入理解計算機系統》第 1 周學習總結

2018-2019-1 20189221 《深入學習計算機系統》第 1 周學習總結

第 1 章 計算機系統漫遊
這一章通過研究“hello,world”這個簡單程式的生命週期,介紹計算機系統的主要概念和主題

  • 1.1 資訊就是位+上下文
    計算機系統中的一切資料都是由一串位元表示的,區分不同資料物件的唯一方法是我們讀到這些資料物件時的上下文
    C語言與Unix作業系統關係密切,是為實踐目的設計的
  • 1.2 程式被其他程式翻譯成不同的格式
    如婁老師上課所講(以Linux中gcc為例):
    hello.c—>hello.i—>hello.s—>hello.o—>hello

    gcc -E hello.c -o hello.i  /*預處理生成編譯檔案*/
    gcc -S hello.i -o hello.s  /*編譯生成組合語言程式*/
    gcc -C hello.s -o hello.o /*彙編生成可重定位目標程式*/
    gcc hello.o -o hello /*連結生成可執行目標檔案*/
  • 1.3 瞭解編譯系統如何工作是大有益處的
    優化程式效能
    理解連結時出現的錯誤
    避免安全漏洞

  • 1.4 處理器讀並解釋儲存在儲存器中的指令

    • 1.4.1 系統的硬體組成
      典型的硬體組織:匯流排、I/O裝置、主存、處理器
    • 1.4.2 執行hello程式
  • 1.5 快取記憶體至關重要
    cache及調頁演算法對程式效能有極大影響
  • 1.6 儲存裝置形成層次結構
    上一層的儲存器作為低一層儲存器的快取記憶體
  • 1.7 作業系統管理硬體
    防止硬體被失控的應用程式濫用
    嚮應用程式提供簡單一致的機制來控制複雜而又通常大不相同的低階硬體裝置

    • 1.7.1 程序
      程序是OS對正在執行的程式的抽象
      上下文切換是儲存當前程序的上下文,恢復新程序的上下文
    • 1.7.2 執行緒
      程序可以由多個執行緒組成,執行緒不獨自佔有資源,更易被共享
    • 1.7.3 虛擬記憶體
      對每個程序都虛擬全部的記憶體資源,通過調頁演算法完成磁碟到主存的交換
    • 1.7.4 檔案
      檔案就是位元組序列
  • 1.8 系統之間利用網路通訊
    使用telnet伺服器在遠端主機上執行hello程式

    • 使用者在鍵盤上輸入hello

      • 客戶端向telnet伺服器傳送字串“hello”
      • 伺服器向shell傳送字串“hello”,shell執行hello程式並將輸出傳送給telnet伺服器
    • telnet伺服器向客戶端傳送輸出的字串“hello world\n”
    • 客戶端在顯示器上列印字串“hello world\n”

  • 1.9 重要主題

    • 1.9.1 Amdahl定律
      加速比為
      $$
      S = 1/((1-a)+a/k)
      $$
    • 1.9.2 併發和並行
      併發指同一時刻:執行緒級併發指多處理器或超執行緒(同時多執行緒)
      並行指同時間段:指令級並行指流水線或超標量處理器
    • 1.9.3 計算機系統中抽象的重要性
      檔案是對I/O裝置的抽象
      虛擬記憶體是對程式儲存器的抽象
      程序是對一個正在執行的程式的抽象
      虛擬機器是對整個計算機系統的抽象- ...