深入理解計算機系統系列(第一章--計算機系統漫遊)

HowieLee59發表於2019-01-18

這本書在很早以前就想拜讀一下,上一學期一直沒有時間,正好趁假期的時間看一遍,也當做是為考研做鋪墊了。All in for BUPT!

步入正文,挑重點進行記錄:

1.大部分的現代計算機系統都使用ASCII標準來表示文字字元,這種方式實際上就是用一個唯一的單位元組大小的整數值來表示每個字元。

2.編譯階段的四個步驟程式(預處理,編譯器,彙編器,連結器)

gcc編譯流程分為4個步驟,分別為:

  1. 預處理(Pre-Processing)
  2. 編譯(compiling)
  3. 彙編(Assembling)
  4. 連結(Linking)

這個部落格講解的很好

3.主存:主存是一個臨時儲存裝置,在處理器執行程式時,用來存放程式和程式出來的資料。從物理上來說,主存是由一組動態隨機存取儲存器(DRAM)晶片組成的。從邏輯上來說,儲存器是一個線性的位元組陣列,每個位元組都有其唯一的地址(陣列索引),這些地市是從零開始的。

4.處理器:處理器的核心是一個大小為一個字的儲存裝置(或暫存器),成為程式計數器。在任何時刻,PC都指向主存中的某條機器語言指令(即含有該條指令的地址)

5.快取記憶體部分:一個典型系統上的磁碟驅動器可能比主存大1000倍,但是對於處理器而言,從磁碟驅動器上讀取一個字的時間開銷要比主存中讀取的開銷大1000萬倍。

6.作業系統有兩個基本動能:1)當值硬體被時空的應用程式濫用 2)嚮應用程式提供簡單一致的機制來控制複雜而又通常大不相同的低階硬體裝置。

7.程式的虛擬地址空間

在Linux中,地址空間最下面的區域是保留給作業系統中的程式碼和資料的,這對所有程式來說都是一樣的,地址空間的上面的區域使用者程式定義的程式碼和資料。

8.棧和堆

  程式碼和資料區在程式一開始執行就被制定了大小,與此不同,當呼叫像malloc和free這樣的C標準庫函式的時候,堆可以在執行時動態的擴充套件和收縮。

  棧位於使用者虛擬地址空間頂部的是使用者棧,編譯器用來實現函式呼叫。特別的,每次我們呼叫一個函式時,棧就會增長,當從一個函式返回的時候,棧就會收縮。

9.檔案是對I/O裝置的抽象,虛擬記憶體是對程式儲存器的抽象,而程式是對一個正在執行的程式的抽象。

圖形化表示

相關文章