深刻理解計算機系統第一章

深刻理解計算機系統

1.1

  • 010101(比特序列)八位一字節,一字節表示某些文本字符。ASCII即用單字節大小的整數值表示字符
  • 只有ASCII碼字符構成的文件爲文本文件,其餘爲二進制文件

1.2

  • 預處理
    • 根據#讀取頭文件中內容並插入原文本文件.c獲得.i文本文件
  • 編譯
    • 編譯器(ccl)將.i文本文件翻譯成.s文本文件,包含彙編語言程序
  • 彙編
    • 將.s翻譯成機械語言指令,打包成可重定位目標程序格式,保存在.o二進制文件中
  • 連接
    • 調用printf.o中的printf函數,合併入.o程序,變爲可執行目標文件

1.3

  • 瞭解編譯系統——好!

1.4

  • shell是一個命令行解釋器shell

    1.4.1

  1. 總線
    • 貫穿整個系統,攜帶並傳遞信息字節,一般傳輸定長的字節塊:32位——4字節,64位——8字節
  2. I/O設備
    • 輸入/輸出設備(In/Out)聯繫系統與外部:鍵鼠、顯示器、磁盤……
    • I/O設備經過控制器適配器與I/O總線相連。相同的是,控制器和適配器用於在I/O設備和總線之間傳遞信息。不一樣的是,控制器是設備自己或系統的主板上的芯片組,適配器是插在主板插槽上的
  3. 主存
    • 主存在處理執行程序時用來存放程序和程序處理的數據。物理上是由一組動態隨機存取存儲器(DRAM)芯片組成。邏輯上是一個線性字節數組
  4. 處理器
    • CPU解釋主存中指令,核心是程序計數器(PC)(此處核心指關鍵設備),爲一字大小儲存設備,PC始終指向主存中某條機械語言指令
    • 處理器從PC指向的內存處讀取、結束、執行指令,而後更新PC

1.5

  • 存儲空間越大,運行越慢。因而在空間小的高速處理器與空間大的低速主存之間插入高速緩存(cache),利用高速緩存的局部性原理,在高速內存中存放可能常常訪問的數據,使大部分操做可在高速緩存中完成。

1.6

  • 經過一個從小到大,從快到慢(寄存器->高速緩存->主存->二級存儲)的存儲器層次結構,能夠提升程序的性能。

1.7

  • 操做系統鏈接程序和硬件。
  • 操做系統的基本功能:
    1. 防止硬件被失控的應用程序濫用
    2. 嚮應用程序提供簡單一致的機制來控制複雜的低級硬件設備

1.7.1

  • 進程是計算機科學中最重要和最成功的概念之一
  • 處理器看似併發運行程序,實則交錯切換執行。例如須要運行的進程數多於可運行CPU。被稱爲上下文切換:保存當前進程的上下文、恢復新進程的上下文,將控制權傳遞到新進程。
  • 進程轉換由系統內核(kernel)管理,內核是操做系統代碼常駐主存的部分,它是系統管理所有進程所用代碼和數據結構的集合。
  • 第八章

1.7.2

  • 多線程併發balabalaba在第十二章

1.7.3

低地址數組

  • 程序代碼與數據——在開始就被規定大小
  • ——在運行是可動態擴展或收縮
  • 共享庫——存放C標準庫和數學庫這樣的公用代碼(第七章)
  • ——編譯器用它來實現函數調用,調用增加,返回收縮(第三章)
  • 內存虛擬內存——爲內核保留,不容許程序讀寫或調用

高地址緩存

1.7.4

  • 文件就是字節序列,每一個I/O設備均可當作文件

1.8

  • 網絡可視爲一個I/O設備,多個系統經過網絡讀取/發送其餘/本身的數據

1.9

  • 系統是硬件與軟件互相交織的集合體

1.9.1

  • Amdahl定律:想要顯著加速整個系統,必須提高全系統中至關大的部分的速度(考慮到分權)

1.9.2

  • 併發:一個同時具備多個活動的系統
  • 並行:用併發來使一個系統運行地更快
    1. 線程級併發
      • 咱們可以設計出同時有多個程序執行的系統,這致使了併發
      • 超線程/同時多線程容許一個cpu執行多個控制流
    2. 指令級並行
      • 流水線經過將執行一條指令所須要的活動劃分爲不一樣的步驟,將處理器的硬件組織成一系列的階段,每一個階段執行一個步驟。這些階段能夠並行地操做,用來處理不一樣指令的不一樣部分
    3. 單指令、多數據並行
      • 在最低層次上,一些特殊的硬件容許一條指令產生多個可並行執行的操做,這種方式被稱爲單指令、多數據

1.9.3

  • 抽象的使用是計算機科學中最爲重要的概念之一。
  • 文件是多I/O設備的抽象,虛擬內存是對程序存儲器的抽象,進程是對一個正在運行的程序的抽象,虛擬機是對整個計算機的抽象。
相關文章
相關標籤/搜索