深入理解計算系統-《計算機系統漫談》

計算機系統漫談


————本章介紹深入理解計算系統主要需要了解的內容
《深入理解計算機系統》經典書籍,強烈推薦細讀。

計算系統分層視圖

計算機系統包含兩部分:軟件 & 硬件
(1)軟件:應用程序、操作系統
(2)硬件:I/O設備、緩存(SRAM)、主存(DRAM)、處理器、磁盤、顯示器等。
進程、虛擬內存、文件是計算機系統運行過程中的一種抽象產物。
程序起初是ASCII文本,經過編譯器編譯和連接器鏈接後翻譯成二進制可執行文件,執行該二進制可執行文件後該文件存儲在主存中。程序運行期間,最近執行的指令和數據會被加載進cpu寄存器中,USB\顯示器\磁盤等外部設備通過IO接口操作,因此程序執行期間,將花費大量的時間在內存、IO設備、CPU寄存器之間複製數據。
操作系統作爲硬件和應用程序中的媒介,提供了三層抽象:
(1)文件是對IO設備的抽象;
(2)虛擬內存是對磁盤和主存的抽象;
(3)進程是對處理器、主存、IO設備的抽象;
在這裏插入圖片描述
(1)進程:可以將每個獨立運行的程序視作一個進程,現在的多核操作系統中,多個進程“並行運行”,但是針對一個時刻,單個處理器只能執行一個進程代碼,因此實現多進程“並行運行”過程中必然會存在進程的上下文切換。
關於進程上下文切換和線程上下文切換可參考文章如下:
https://zhuanlan.zhihu.com/p/52845869
(2)虛擬地址空間:
虛擬地址空間其實是一種物理地址到邏輯地址的映射,並不真實存在。鑑於物理地址空間有限,難以滿足所以的進程都分配到所申請的空間大小,採用虛擬地址空間得以解決該問題。若每個進程需要4GB大小的地址空間,可分配4GB虛擬地址空間給予進程,然後通過頁表搭建進程實際使用的物理空間和虛擬地址空間映射關係。
在這裏插入圖片描述
(3)計算機系統中每個IO設備:磁盤、顯示器、鍵盤、網絡等,都可以看成文件,IO模式????

存儲

本書將自頂向下闡述計算機系統中必備的存儲只是,及瞭解的L1、L2、L3三級緩存對於對線程開發必要性。自底向上,每一層存儲器的訪問速度更快,可容納的空間越大,且成本越貴。
在這裏插入圖片描述

針對現代多核的處理器,計算機底層的存儲格式如下:

在這裏插入圖片描述
L1數據高速緩存–緩存處理器需要使用的數據
L1指令高速緩存–緩存最近取到的指令
鑑於CPU中某些硬件資源有多重備份,例如,程序計數器、寄存器文件
但是部分硬件資源只有一份,例如,浮點算術運算單元
所以針對多份的硬件資源,cpu可以並行執行多個控制流(即多線程)
針對單份的硬件資源,cpu會存在線程間的轉換。
所謂的並行,即線程A可能需要將部分數據加載進高速緩存才得以執行,這期間,處理器便可以先執行另一個線程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章