1. 程式人生 > >深入理解計算機系統(一)

深入理解計算機系統(一)

並發 alt com height 同時 如何 實現 strong 程序計數器

對於程序員來說,計算機基礎也是非常重要的一個部分,對於了解程序的執行過程、優化都是非常有幫助的。

一、系統的硬件組成

技術分享圖片

1、總線

貫穿整個系統的是一組電子管道,簡稱總線,總線攜帶信息字節並且負責在各個組件中傳遞。總線被設計成傳遞定長的字節塊,例如32位系統(4個字節)以及64位系統(8個字節)。

2、I/O設備

通常所使用的鍵盤、鼠標、磁盤以及顯示器等等都是I/O設備。每一個I/O設備都通過控制器或適配器與I/O總線相連接。

3、主存

主存是一個臨時存放數據的物質,用來存放指令以及程序運行時的數據。是由一組動態隨機存取存儲器芯片組成,從邏輯上來說,主存是一個線性的字節數組,每個字節都有其對應的唯一的地址。

4、處理器

處理器是計算機系統中的計算處理核心,解釋存放在主存中的指令,並且處理器中包含程序計數器,計數器中存放指向主存中的指令地址,處理器獲取指令並且執行。

二、一個hello world程序是如何運行的?

技術分享圖片

技術分享圖片

三、高速緩存

cpu從寄存器中讀取信息的速度比從主存中讀取快100倍,讀取磁盤中的信息速度就更慢了,因此為了解決不同組件讀取速度的差異,引入了高速緩存。

技術分享圖片

四、操作系統

軟件跟硬件之間的關系由操作系統連接:

技術分享圖片

操作系統主要提供兩個主要的功能:

a、防止程序濫用硬件資源

b、向程序提供簡單、統一的機制來控制硬件

為了實現這兩個功能,操作系統抽象了幾個概念:

技術分享圖片

1、進程

進程是對系統中正在運行的程序的一種抽象,每個進程都好像是占有整個計算機系統的資源,不同的進程獨立運行。對於單核cpu(多核cpu則多個進程並行運行)來說,操作系統通過上下文的切換(由操作系統內核管理)達到並發的效果。

所謂並發就是看起來是多個進程同時運行,但是在某個具體的時間點,只有一個進程運行。這麽設計的主要原因就是提高運行速度,最大限度的榨取cpu的性能,原因如下:

現在系統中存在兩個進程A、B,A進程先運行,然後執行I/O操作,例如入庫或是寫入到磁盤等等,cpu的運行速度可能比磁盤速度快100萬倍,如果這時候cpu阻塞在這,大大浪費性能;因此通過上下文切換的方式,讓B進程執行,大大提高性能。

2、線程

在現代系統中,線程是程序運行的最小單位,主要是由於線程更輕量級,線程之間切換的成本小於進程之間的切換,而且多線程之間更容易共享數據。

3、虛擬內存

在每個運行的進程中,都會存在這樣一種假象,就是進程獨占內存。每個進程看到的內存都是一致的,稱為虛擬地址空間。

深入理解計算機系統(一)