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

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

教材學習內容總結

第一章 計算機系統漫遊

讀後感

第一章給個人感受就是將一個大概而具體的過程展示給咱們,同時,每一個步驟的更加具體的細節部分也是以後每一章的內容。一方面講解了計算機系統的構成、文件在計算機中的存儲等問題。經過這一章的概述在看書的時候可以把這些內容結合本科階段學習的《微機原理與接口技術》大體聯繫起來,腦子中也有了相關的聯繫。同時也積累了之前沒有注意過的細節。現將知識點總結以下,方便之後查看複習。linux


信息的存儲

  • 文本文件 是指只由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運算後的結果再編譯成咱們人看的懂的圖形
問題:併發和並行併發

併發與並行函數

相關文章
相關標籤/搜索