1. 程式人生 > >深入理解計算機系統————第一筆記

深入理解計算機系統————第一筆記

計算機系統是由硬體和系統軟體組成,他們共同工作來執行應用程式,這本書的目的就在於幫助人們理解·當系統在執行hello程式時,系統發生了什麼以及為什麼會這樣,換句話說,當執行簡單程式hello時,整個電腦系統從應用程式,作業系統,快取裝置,等等,在這個程式執行的過程中做了什麼,以及為什麼會這樣。
在這裡插入圖片描述

1.編譯系統
將原始檔轉化為可執行目標檔案的過程。即將c語言轉化為計算機能夠理解和執行的語言系統組合語言,形成可執行目標檔案。
主要有四部分組成:前處理器,編譯器,彙編器,連結器。
在這裡插入圖片描述

  • 預處理階段:根據字元#開頭的命令,修改原始的c程式

  • 編譯階段:將c語言轉化為組合語言

  • 彙編階段:彙編器(as) 將.s 檔案翻譯成機器語言指令,並將其打包成可重定位目標程式的格式。並將結構儲存在.o

  • 連結階段: 將會把一個工程中所有的.o檔案連結合併成一個可執行目標檔案,可以被載入在記憶體中,由系統執行。

2 硬體組成
計算機硬體系統主要有匯流排,I/O裝置,主存和處理器組成。
在這裡插入圖片描述

  • 匯流排:貫穿整個系統的一組電子管道
    作用:攜帶資訊位元組並負責在各個組建之間傳遞。
  • I/O裝置:系統和外部世界的連線通道。通過控制器或介面卡與匯流排相連。
    常見的I/O裝置:作為使用者輸入的鍵盤和滑鼠,作為使用者輸出的顯示器,用來長期儲存資料和程式的磁碟。
  • 主存:物理結構,一組動態隨機存取儲存器(DRAM),邏輯結構:一個線性的位元組陣列。
    作用:用來存放資料和程式。
  • 處理器:CPU,一個大小為一個字的儲存裝置,即程式計數器
    作用:解釋或執行儲存在竹村中的指令。CPU常見操作:載入,儲存,操作,跳轉。
    執行hello程式的步驟:鍵盤讀入命令到暫存器中,再存到主存中。按回車後通過DMA將hello檔案和資料載入到記憶體中。載入完成後,CPU開始執行hello程式,將輸出的資料複製到顯示裝置
    3 快取裝置
    在這裡插入圖片描述
    儲存器結構層次的主要思想是:上一層儲存器作為第一層儲存器的快取記憶體。
    4.作業系統管理硬體
    作業系統可以看成應用軟體和硬體之間的一層軟體。作業系統有兩個基本功能:1)防止硬體被失控的應用程式濫用。2)嚮應用程式提供簡單一致的機制來控制複雜而又通常大相徑庭的低階硬體裝置。
    作業系統的三個抽象:檔案是對於I/O裝置的抽象,虛擬記憶體是對於程式儲存器的抽象,程序是對於以後個正在執行的程式的抽象。
  • 執行緒和程序
    程序:是作業系統對一個正在執行的程式的抽象,多個程序併發執行,一個CPU會在多個程序間切換,這種機制稱為上下文切換。
    核心:作業系統程式碼常駐主存的部分,是系統管理全部程序所用的程式碼和資料結合的集合。
    執行緒:一個程序有多個執行緒組成,共享程序的程式碼和全域性資料,。
  • 虛擬記憶體
    虛擬記憶體:為每個程序提供一個假象,即每個程序都在獨立地使用主存。每個程序看到的記憶體是一致的,稱為虛擬地址空間。圖中地址是從下往上增大的。
    主要思想是:把一個程序虛擬記憶體的內容儲存在磁碟上,然後用主存作為磁碟的虛擬記憶體
    主要有:程式程式碼和資料,堆,共享庫,使用者棧,核心虛擬儲存器。
    在這裡插入圖片描述
  • 網路通訊
    網際網路的應用讓我們將系統不僅僅看作為一個孤立的軟體和硬體的集合體,而是基於同一網際網路下的整體,是一種特殊的I/O裝置。
  • 併發和並行
    併發指同時具有多個活動的系統,並行指利用併發使系統執行的更快。

¥¥備註: