1. 程式人生 > >多執行緒第一節~程序、執行緒、

多執行緒第一節~程序、執行緒、

一、計算機的組成以及作業系統

1、中央處理器(CPU):計算機的核心,負責處理一些運算和控制。

CPU===>ALU(算數邏輯單元):負責一些運算,包括:算數運算(加減乘除)、邏輯運算(與或非)、關係運算(大於等於)

                  CU(邏輯控制單元):負責各個邏輯部件的協調工作,充當指揮官的角色

2、主暫存器:儲存資料

分為RAM和ROM,RAM:隨機儲存器,就是所謂的記憶體;ROM:只讀儲存器,就是所謂的磁碟

3、IO:各種輸入輸出裝置(滑鼠、鍵盤、顯示器、網絡卡、音效卡、顯示卡等)

4、匯流排(Bus):計算機各種功能部件之間傳送資訊的公共通訊幹線,它是由導線組成的傳輸線束。按照計算機所傳輸的資訊種類,計算機的匯流排可以分為:資料匯流排、地址匯流排、控制匯流排,分別用來傳輸資料、資料地和控制訊號。

作業系統

作業系統有2個基本功能:1)對普通程式對硬體的訪問進行限制,防止硬體被失控的應用程式濫用;

                                              2)嚮應用程式提供簡單一致的機制來控制複雜而又大相徑庭的低階硬體裝置。

作業系統通過程序、虛擬儲存器、檔案來實現這兩個功能

其中檔案是對IO裝置的抽象,虛擬儲存器是對主存和磁碟IO裝置的抽象表示,程序是對處理器、主存、IO裝置的抽象表示。

作業系統接管了計算機的所有硬體資源並對硬體控制具有最高的許可權,在作業系統執行的程式中,都以程序的方式執行在更低的許可權中,由作業系統根據程序的優先順序以及程序的執行狀況進行統一的調配。

二、程序、執行緒、協程

1、程序

通俗的可以將程序理解為“正在執行的程式”,程序是作業系統進行資源分配和排程的基本單位,是作業系統的基礎。

程式是死的(只是存在於磁碟上的一對程式碼和指令),程序是活的(會佔用CPU、記憶體、檔案資源、IO等)

程序就是程式的執行實體,佔據獨立的記憶體。

2、執行緒

執行緒是程序的實體,是CPU排程和分派的基本單位,是作業系統能夠進行運算排程的最小單位,是最小的資源分配單元。

執行緒基本上不擁有系統資源,只是擁有在執行中所必需的資源(棧、程式計數器),但是它可以與同屬一個程序的其他執行緒共享程序所擁有的全部資源。執行緒之間的通訊主要靠共享記憶體。

3、執行緒與程序之間的關係以及區別

關係:一個程序可以對應多個執行緒(一對多的關係)

區別:

(1)地址空間:執行緒是程序內的一個執行單元,一個程序內至少有一個執行緒,執行緒共享程序的地址空間,程序有自己的獨立地址空間。

(2)資源擁有:程序是資源分配的單位,同一個程序中的執行緒共享程序的資源。

(3)健壯性:程序與程序之間相互隔離,一個程序奔潰不會影響其他的程序,一個執行緒奔潰可能導致整個程序崩潰,程序的健壯性要比執行緒好。

(4)每一個獨立的執行緒都有一個程式執行的入口、順序執行序列和程式的出口,但是執行緒不可以獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。

4、協程

協程是一種使用者態的輕量級執行緒,又稱微執行緒。協程的排程完全由使用者控制,協程排程切換時,將暫存器上下文和棧儲存在其他地方,在切回來的時候,恢復先前儲存的暫存器上下文和棧,直接操作棧則沒有核心切換的開銷,可以不加鎖的訪問全域性變數,上下文切換非常快。

5、協程與執行緒的比較

(1)一個執行緒可以有多個協程,一個程序也可以有多個協程。

(2)執行緒機制都是同步的,協程機制是非同步的。

(3)協程能夠保留上一次呼叫時的狀態,每次過程重入時,就相當於進入了上一次呼叫的狀態。