1. 程式人生 > >2018-2019-1 20189206 《深入理解計算機系統》第一章學習筆記

2018-2019-1 20189206 《深入理解計算機系統》第一章學習筆記

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

教材學習內容總結

第一章 計算機系統漫遊

讀後感

第一章給我的感覺就是將一個大概而具體的過程展現給我們,同時,每個步驟的更加具體的細節部分也是之後每一章的內容。一方面講解了計算機系統的構成、檔案在計算機中的儲存等問題。通過這一章的概述在看書的時候能夠把這些內容結合本科階段學習的《微機原理與介面技術》大致聯絡起來,腦子中也有了相關的聯絡。同時也積累了以前沒有注意過的細節。現將知識點總結如下,方便以後檢視複習。


資訊的儲存

  • 文字檔案 是指只由ASCII碼構成的檔案稱為文字檔案,其他檔案都稱為二進位制檔案
  • 系統中的資訊 系統中的所有資訊都是由一串位元表示的。區分它們的方式是這些資料物件的上下文

程式的編譯過程

為了在系統中執行.c程式,每條C語句都必須要轉化為低階的機器語言指令,然後這些指令按照 可執行目標程式 的格式打包好,以二進位制磁碟檔案的形式存放起來。

  • inux系統中我們剛剛學過 GCC 指令用於生成驅動檔案。
  • 編譯系統 翻譯過程可以分為四個階段,執行四個階段的程式稱為 編譯系統
    • 前處理器 預處理階段,主要工作將標頭檔案直接插入文字中 hello.i
    • 編譯器 將插入標頭檔案的.i檔案翻譯成文字檔案.s 包含一個組合語言程式
    • 彙編器 將.s翻譯成機器語言指令,將結果儲存在hello.o二進位制檔案中
    • 連結器 將程式中呼叫了C語言函式庫的函式連結到一個單獨預編譯好了的目標檔案中,得到了可執行的目標檔案。

系統的硬體組成

  • 匯流排
    • 匯流排是貫穿整個系統的一組電子管道,它攜帶資訊位元組並負責在各個部件間傳遞。通常匯流排被設計成傳送定長的位元組塊,也就是字。字的位元組數是一個基本的系統引數,現在一般是32位(4個位元組)或64位(8個位元組)。
  • I/O裝置
    • 是系統與外部世界的聯絡通道。(例如:鍵盤、滑鼠、顯示器、磁碟驅動器)每個I/O裝置都通過控制器或介面卡與I/O匯流排相連。
      • 控制器是I/O裝置本身或主機板上的晶片組
      • 控制器是在主機板插槽上的卡
  • 主存
    • 主存是一個臨時的儲存裝置,在執行程式時用來存放程式和程式處理的資料。
  • 處理器
    • 又稱為CPU,處理器的核心是大小為一個字的儲存裝置程式計數器,一直指向要執行的機器語言。(注:執行完一條指令後跳轉到的下一條指令不一定與記憶體中剛剛執行的指令相鄰)
    • 暫存器檔案 由一些單個字長的暫存器組成
    • ALU算數邏輯單元

快取記憶體的作用

較大的儲存裝置要比較小的儲存裝置執行的慢
為了提高程式執行的時間,採用更小更快的儲存裝置,能有有效提高速率,快取記憶體就是存放近期可能會需要處理的資料,作為暫時的集結區域。

作業系統管理硬體

  • 作業系統 可以理解為應用程式和硬體之間插入的一層軟體,所有應用程式對硬體的操作都必須通過作業系統。
  • 程序 是作業系統對一個正在執行的程式的一種抽象,一個系統可以同時執行多個程序,每個程序都好像在獨佔硬體。(併發執行 是指一個程序的指令和另一個程序的指令交錯執行)作業系統實現這種交錯執行的機制稱為上下文切換
    • 上下文 包含了作業系統保持跟蹤程序執行所需的所有狀態資訊。
    • 從一個程序到另一個程序的轉換是由作業系統核心管理的,核心是作業系統程式碼常駐主存部分,它是系統管理全部程序所用程式碼和資料結構的集合
      — 執行緒 一個程序可以由多個稱為執行緒的執行單元組成,每個執行緒都執行在程序的上下文中。多執行緒比多程序更容易共享資料,同時執行緒比程序更高效
  • 虛擬記憶體 抽象概念,提供了每個程序獨佔地使用主存的假象。每個程序看到的記憶體都是一致的,稱為虛擬地址空間。
    • 基本思想 把一個程序虛擬記憶體的內容儲存在磁碟上,然後用主存作為磁碟的快取記憶體。
  • 檔案 就是位元組序列

重要概念

  • amdahl定律 想要顯著加速整個系統,必須提升全系統中相當大的部分的速度。
  • 併發和並行
    • 併發 指一個同時具有多個活動的系統
    • 並行 利用併發使一個系統執行的更快
    • 執行緒級併發
      • 使用執行緒,可以在一個程序中執行多個控制流
    • 指令級並行
      • 現代處理器可以同時執行多條指令的屬性稱為指令級並行
    • 單指令、多資料並行
      • 允許一條指令產生多個可以並行執行的操作
  • 抽象
    • 檔案是對I/O裝置的抽象
    • 虛擬記憶體是對程式儲存器的抽象(主存和磁碟)
    • 程序是對正在執行的程式的抽象(處理器、主存和磁碟)
    • 虛擬機器是對整個計算機的抽象

教材學習中的問題和解決過程

問題:核心和CPU是什麼關係?
在看第一章的時候我同時看了《linux核心設計與實現》這本書,第一章講到核心是作業系統的內在核心,一個應用程式執行系統呼叫時,稱為應用程式執行在核心空間,核心稱為運行於程序上下文,第一章中講到上下文是作業系統實現程序交錯的機制,我就思考二者之間的聯絡。在網上看了部落格和百度後知道,核心是作業系統的核心屬於軟體部分,而CPU是實體屬於硬體。

我們給作業系統發出指令,作業系統通過核心解析指令然後指示CPU怎樣運作,然後回收CPU運算後的結果再編譯成我們人看的懂的圖形
問題:併發和並行

併發與並行