程式 程序 執行緒的概念

2022-09-02 12:12:07 字數 1846 閱讀 5240

1、程式(program)

程式是乙個具體的檔案,是計算機指令的集合,儲存在磁碟上,如exe檔案。

2、程序(process)

程序:是乙個正在執行程式的例項,是程式在其自身的位址空間中的一次執行活動。

程序是資源申請、排程和獨立執行的單位,因此,它使用系統中的執行資源;而程式不能申請系統資源,不能被系統排程,也不能作為獨立運

行的單位,因此,程式不占用系統的執行資源。

程序由兩個部分組成:

核心物件:作業系統用它來管理程序。是系統用來存放程序的統計資訊的地方。

位址空間:包含所有可執行模組或dll模組的**和資料,以及動態記憶體所分配的空間,如堆空間和棧空間。

程序是不活潑的。程序從來不執行任何東西,它只是執行緒的容器。若要使程序完成某項操作,它必須擁有乙個在它的環境中執行的執行緒,此線

程負責執行包含在程序位址空間中的**。

單個程序可能包含若干個執行緒,這些執行緒都「同時」 執行程序位址空間中的**。

每個程序至少擁有乙個執行緒,來執行程序的位址空間中的**。當作業系統建立乙個程序時,會自動建立這個程序的第乙個執行緒,稱為主線程

。此後,主線程可以建立其他的執行緒。如main()、winmain()所在的執行緒一般就是主線程。

系統賦予每個程序獨立的虛擬位址空間。對於32位程序來說,這個位址空間是4gb。

每個程序有它自己的私有位址空間。

3、執行緒(thread)

執行緒也由兩個部分組成:

核心物件:作業系統用它來管理執行緒。是系統用來存放執行緒的統計資訊的地方。

執行緒堆疊:它用於維護執行緒在執行**時需要的所有引數和區域性變數。

當建立執行緒時,系統建立乙個執行緒的核心物件。該核心物件不是執行緒本身,而是作業系統用來管理執行緒的較小的資料結構。該資料結構儲存了

執行緒的相關統計資訊。

執行緒總是在某個程序中建立。系統從程序的位址空間中分配記憶體,供執行緒的堆疊使用。新執行緒執行的程序環境與建立執行緒的環境相同。因此,

新執行緒可以訪問程序的核心物件的所有控制代碼、程序中的所有記憶體,以及同一程序中的所有其他執行緒的堆疊。這使得單個程序中的多個執行緒能夠

非常容易地互相通訊。

執行緒只有乙個核心物件和乙個堆疊,保留的記錄很少,因此所需要的記憶體也很少。

因為執行緒需要的開銷比程序少,因此在程式設計中經常採用多執行緒來解決程式設計問題,而盡量避免建立新的程序。

作業系統為每乙個執行的執行緒分配一定的cpu時間----時間片。系統通過一種迴圈的方式為執行緒提供時間片,執行緒在自己的時間內執行,因時間

片相當短,因此,給使用者的感覺,就好像執行緒是同時執行的一樣。

sleep()函式會主動暫停當前執行緒的時間片,暫時交出控制權,自己去「睡覺」。

如果計算機擁有多個cpu,多個執行緒就能真正意義上同時執行了。

使同一程序中的各執行緒協調一致地工作稱為執行緒的同步。系統提供了多種同步方法,如:臨界區(criticalsection),事件(event),互斥

量(mutex),訊號量(semaphore)等。

可以使用postthreadmessage()函式進行執行緒間的通訊。

4、使用多執行緒的場合

幫助理解:乙個理髮師要為abc三位貴賓理髮,為了不使三個貴賓感到自己有先後之分,理髮師可以為a服務n秒,之後為b服務n秒,再為c服務n

秒,然後再為a服務n秒,如此迴圈;只要n足夠小,abc就感覺到自己沒有被怠慢。如果有3個理髮師,當然是最理想的了,可以每個理髮師真正

的為乙個貴賓服務。這裡的理髮師就相當於cpu,乙個理髮師就是單cpu,三個理髮師就是多cpu了;而為三個貴賓理髮,就是3個工作任務。

qq多人同時聊天。

火車站多視窗售票。

大批量檔案複製:複製檔案本身使用乙個執行緒,顯示進度使用乙個執行緒。如果用乙個執行緒的話,則主介面會失去反應,給使用者感覺是宕機了。

程序與執行緒的概念

程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一篇材料,發現有乙個很好的模擬,可以把它們解釋地清晰易懂。1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就...

程序 執行緒 鎖的概念

程序狀態的轉換 程序在執行期間,不斷地從一種狀態轉換到另一種狀態,它可以多次處於就緒狀態和執行狀態,也可以多次處於阻塞狀態。程序表 為實現程序模型,每個程序占用乙個程序表項,該程序表項包含了程序狀態的重要資訊,包括程式計數器 堆疊指標 記憶體分配狀況 所開啟檔案的狀態 帳號和排程資訊等。為什麼多執行...

程序和執行緒的概念

什麼是程式?什麼是程序?程式和程序有什麼關係?程式是計算機儲存系統中的資料檔案 程序的概念 廣義概念 程式關於某個資料集合一次執行活動 狹義概念 程式被載入到記憶體中執行後得到的程序 程式和程序的區別 程式是硬碟中靜態的檔案 儲存系統中的一段二進位制二進位制表示 程序是記憶體中動態的執行實體 資料段...