標籤:自動 臨時 共用資料 適配器 裝置 32位 二進位 技術分享 組件
讀《深入理解電腦系統》Chapter1
基礎很弱,來補一下。
1. 電腦中的資訊表示形式
我們知道電腦底層是有一堆整合電路元件組成,每個整合電路元件有很多個引腳,每個引腳同上直流電壓之後只有0V/5V,所以每個只能表示兩種狀態,這就註定電腦中的資訊資料只能以二進位形式來處理,比如1,0,10,00...但是所有的資訊都以該形式表示時,同樣一串二進位序列碼在不同的環境中可能表示不同的資料或者時要執行的指令,所以讀到這些資料對象時的上下文就是用來區分不同的資料對象的唯一方法。因而資訊在電腦中的表示形式就是位(二進位)+上下文
2. 系統的硬體組成部分
馮·諾依曼結構電腦中組成部分包括:運算器、控制器、儲存空間、輸入裝置和輸出裝置
,其中運算器和控制器就對應到平常電腦中的CPU(Central Processing Unit),儲存空間就對應了記憶體和硬碟,輸入/輸出裝置就對應到平常使用的滑鼠、鍵盤、顯示器等。
系統中典型硬體組成部分包含:
2.1 匯流排
匯流排時貫穿系統中一組電子管道,它攜帶資訊位元組並負責在各個組件間傳遞。通常是傳送定長的位元組塊 - word
,每個word中的位元組個數是系統的一個參數,平常我們使用的32位作業系統、64位作業系統就是指每個word中的位元組個數(32位就是4個位元組長度、64位就是8個位元組長度)。
2.2 I/O裝置
是用於系統同外部世界的聯絡通道,每個I/O裝置通過一個控制器/適配器同IO匯流排相連,控制器/適配器用於IO匯流排和IO裝置之間傳遞資訊
2.3 主存
電腦運行中的一個臨時存放裝置,在處理執行程式時用於存放程式和程式所需處理的資料。
物理上由一組DRAM晶片集成,邏輯上由一組線性位元組數組組成(房子模型),每個位元組都有一個地址(從0開始)
2.4 處理器
CPU的一種簡稱,是用來解釋或執行儲存在主存中的指令的引擎。其內部有四大組成部分:運算器、控制器、寄存器和時鐘。寄存器分為很多種,其中的程式計數器(PC)用來儲存某條機器語言指令在主存中的地址。
CPU會執行到的指令可能會包括:
- 載入: 主存--->寄存器
- 儲存: 寄存器--->主存
- 操作: 基於寄存器中值和指向的內容指令進行操作處理
- 跳轉: 覆蓋程式計數器(PC)中的值
3. 緩衝
電腦中的存放裝置之間的訪問差異非常大,寄存器的訪問速度非常快但其儲存容量比較小,主存較寄存器訪問速度就很慢,但是它比寄存器能儲存的資料量多。同理主存同硬碟之間、本地硬碟同網路之間的差異亦是如此。為了屏蔽這種差異對電腦運算處理的影響,引入一個中介層:緩衝
,利用局部性原理讓其儲存一部分訪問慢的裝置上的資料讓計算達到良好的訪問效能。針對電腦處理器中寄存器同主存之間的差異設計出的存放裝置被稱為快取儲存空間。通常分為L1和L2二級快取(基於靜態隨記訪問儲存空間基數SRAM,目前還有L3快取)。電腦系統中的存放裝置階層圖:
4. 作業系統
作業系統可以看成是計算硬體同應用程式之間加入個一個抽象層,它主要用於
- 防止硬體資源被非法操作
- 屏蔽不同底層硬體之間的操作差異,提供簡便統一的硬體操作
它將電腦硬體中進行了一些抽象:
- a. 檔案:I/O裝置的抽象(檔案就是位元組序列)
- b. 虛擬記憶體:I/O裝置+主存的抽象
- c. 進程:I/O裝置+主存+處理器的抽象
其中進程是對系統中正在執行的程式的一個抽象。一個系統上可以同時運行多個進程,每個進程看上去像是獨佔的使用硬體。虛擬記憶體讓進程看上去像是獨佔的使用了主存,每個進程看到的記憶體都是一致的,每個進程看到的就是虛擬位址空間。
4.1 虛擬位址空間
空間圖:
組成部分(從下往上,記憶體位址逐漸增大)
- 唯讀程式+資料【這裡面的程式是機器語言】
- 運行時堆【在運行時會動態擴充和收縮,需要程式去申請可用記憶體地址儲存物件和回收不再使用的對象(JAVA有JVM幫我們做了這一步)】
- 共用庫記憶體
- 使用者棧【編譯器用其實現函數調用。同時在程式運行期間也是動態擴充和收縮,但是擴充和收縮所需的作業碼在被編譯器編譯成機器語言時會自動產生】
- 核心虛擬記憶體
4.2 並行和並發
簡單來說並發是一個cpu交替運行多個進程中的指令,並行是指多個cpu在同一時間執行了多個進程的指令。
並發過程中會涉及到進程的環境切換。上下文就是處理器跟蹤進程運行時所需的狀態資訊,比如該進程處理是寄存器檔案中的值、主存中的值等。在環境切換時需要儲存原進程的上下文資訊、恢複新進程的上下文資訊,再將控制權交由新進程,新的進程就會從它上次暫停地方繼續執行。其切換是由核心控制,所以切換時候會涉及到在使用者空間和核心空間的切換。
I. 線程級並發
現代作業系統中在進程中引入線程
這個更細粒度的執行單元。一個進程中包含了多個線程,所有線程運行在該進程的上下文環境中,同時共用其代碼同資料。鑒於多線程之間共用資料比多進程之間共用資料更便捷,多線程並發成為了越來越重要的變成模型。
II. 指令級並行
處理器同時執行多條指令。
III. 單指令、多資料並行
SIMD,同一條指令能產生多個可以並存執行的操作。多是為了提高處理影像、聲音和視頻資料應用的執行速度。
5. 總結
- 抽象
- 電腦中很多問題通過引入中介層來解決
- 局部性原理:時間和空間
【參考】[深入理解電腦系統] 第三版
sv
出處:https://www.cnblogs.com/sv00
著作權聲明:本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結。
讀《深入理解電腦系統》Chapter1