《深刻理解計算機系統》學習總結(一)

1.1 信息就是位+上下文

  • 位(bit) 來自英文bit,音譯爲「比特」,表示二進制位。位是計算機內部數據儲存的最小單位
  • 位之上又有字節(byte) 8個位組成1個字
  • 計算機中儲存信息用0和1(也就是位)來存儲 但單獨的位又沒法達到存儲信息的目的 只有連續的位才能達到存儲的信息的目的 即位+上下文就是信息

1.2程序被其餘程序翻譯成不一樣的程序

在用戶端編寫的程序都須要被其餘程序翻譯成不一樣的格式來使計算機執行某種指令

例如hello程序shell

#include <stdio.h>

 int main()
 {
     printf("hello,world\n");
     return 0;
 }
複製代碼

hello程序在計算機中通過一系列翻譯最終獲得一個可執行目標程序緩存

預處理器 編譯器 彙編器 連接器一塊兒構成編譯系統

  • 預處理主要是處理一些宏定義,好比 #define、#include、#if 等。預處理的實現有不少種,有的編譯器會在詞法分析前先進行預處理,替換掉全部 # 開頭的宏,而有的編譯器則是在詞法分析的過程當中進行預處理。當分析到 # 開頭的單詞時才進行替換。當文件被預處理後就會生成另外一個文件(即圖片中hello.c預處理後生成hello.i)
  • 編譯器降源程序代碼編譯爲彙編語言進入彙編器
  • 彙編器將編譯器生成的彙編語言程序翻譯爲機器語言指令 將指令打包打包成一種叫作可重複定位目標程序的文件,並將結果保存在hello.o中 (hello.o爲二進制文件)
  • 連接階段,程序調用標誌C庫裏面的函數如‘printf’函數。‘printf’函數存在於一個名爲printf.o的單獨的預編譯好的目標文件中。連接便是hello.o和print.o經過某種方式合併在一塊兒,結果獲得hello文件(可執行目標文件)

1.3瞭解編譯系統如何工做是大有益處的

  • 優化程序性能
  • 理解連接是出現的錯誤
  • 避免安全漏銅

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

1.41系統的硬件成組成安全

  • 總線:貫穿整個系統的一組電子管道
  • I/O設備:即輸入和輸出設備
  • 主存:即咱們平時所說的運行內存
  • 處理器:中央處理單元(CPU)

1.42運行hello程序bash

  • shell從鍵盤上讀取hello命令
  • shell執行一系列指令來使可執行hello文件從磁盤加載到主存
  • 處理器執行hello程序的main程序中的機器語言指令
  • 這些指令將字符串中的字節從主存複製到寄存器文件,再從寄存器文件中複製到顯示設備

1.5高速緩存相當重要

  • 根據機械原理,較大的存儲設備要比較小的存儲設備運行得慢
  • 計算機運行快慢:磁盤<主存<處理器
  • 針對磁盤、主存、處理器之間的差別,設計了一種更小更快的存儲設備,稱爲高速緩存,做爲暫時的集結區域,存放處理器近期可能會須要的信息

1.6存儲設備造成層次結構

存儲器層次結構的主要思想是上一層的存儲器做爲低一層存儲器的高速緩存併發

1.7操做系統管理硬件

  • 進程:進程是操做系統對一個正在運行的程序的一種抽象
  • 一個CPU看上去能夠併發地處理多個進程,這是經過處理器在進程間切換來實現的
  • 操做系統實現這種交錯執行的機制稱爲上下文切換
  • 線程:多個線程組成一個進程,每一個線程都運行在進程的上下文中,並共享同一的代碼和全局數據
  • 虛擬內存:虛擬內存爲一個抽象概念,它爲每一個進程提供了一個假象,即每一個進程都在獨佔地使用主存
  • 文件:廣義說,全部輸出輸入設備均可以成爲文件(顯示屏、鍵盤、鼠標)

1.8重要主題

Amdahl定律:當咱們對系統的某個部分加速時,其對系統總體性能的影響取決於該部分的重要性和加速程度函數

  • 併發:併發是指一個時間段內,有幾個程序都在同一個CPU上運行,但任意一個時刻點上只有一個程序在處理機上運行。
  • 並行:並行是指一個時間段內,有幾個程序都在幾個CPU上運行,任意一個時刻點上,有多個程序在同時運行,而且多道程序之間互不干擾。
相關文章
相關標籤/搜索