進程和線程的定義和區別


進程和線程的定義和區別

1、進程定義

進程:是具有一定獨立功能的程序關於某個數據集合上的一次進行活動,是系統進行資源分配和調度的一個獨立單位。

 

2、線程定義

線程:是進程的一個實體,是cpu調度和分派的基本單位,他是比進程更小的能夠獨立運行的基本單位,線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源。一個線程可以創建和撤銷拎一個線程。

 

區別:

1、一個線程只能屬於一個進程,而一個進程可以擁有多個線程。

2、線程是進程工作的最新單位。

3、一個進程會分配一個地址空間,進程與進程之間不共享地址空間。即不共享內存。

4、同一個進行下的不同的多個線程,共享父進程的地址空間。

5、線程在執行過程中,需要協助同步。不同進程的線程間要利用消息通信的辦法實現同步。

6、線程作為調度和分配的基本單位,進程作為擁有資源的基本單位。

 

進程的優點:

1、每個進程互相獨立,不影響主程序的穩定性,子進程崩潰不影響其他進程。

2、通過增加CPU,就可以擴充性能。

3、可以盡量減少線程加鎖與解鎖的影響,極大的提高了性能。

 

進程的缺點:

1、邏輯控制復雜,需要和主程序交互。

2、多進程調度開銷大。

 

線程的優點:

1、程序邏輯和控制方式簡單。

2、所有線程可以直接共享內存和變量等。

3、線程方式消耗的總資源比進程方式少。

 

線程的缺點:

1、每個線程和主程序共用地址空間,最大內存地址受限。

2、線程之間的同步和加鎖不易控制。

3、一個線程的崩潰可能影響到整個程序的穩定性。

 

 

•進程(process):
狹義定義:進程就是一段程序的執行過程。
廣義定義:進程是一個具有獨立功能的程序關於某個數據集合的一次運行活動。他是操作系統動態執行的基本單元,在傳統的操作系統中,進程即是基本的分配單元,也是基本的執行單元。

1)進程是一個實體,每個進程都有自己的地址空間,一般情況下,包含文本區域、數據區域、堆棧
2)進程是執行中的程序,程序是一個沒有生命的實體,只有處理器賦予程序生命時,他才能成為一個活動的實體,我們稱之為進程
3)進程本身不會運行,是線程的容器。線程不能單獨執行,必須組成進程
4)一個程序至少有一個進程,一個進程至少有一個線程
5)對於操作系統來講,一個任務就是一個進程,比如打開一個瀏覽器就是啟動一個瀏覽器進程。打開一個記事本就是啟動一個記事本進程,打開2個記事本就是啟動2個記事本進程
6)有些進程還不止同時做一件事情。比如打開word,他可以同時進行打字、打印、拼音檢查等等,在一個進程內部,要同時干多件事情。


進程狀態:
1)就緒:獲取出CPU外的所有資源、只要處理器分配資源就可以馬上執行
2)運行:獲得處理器分配的資源,程序開始執行
3)阻塞:當程序條件不夠的時候,需要等待提交滿足的時候才能執行。



•線程:
1)一個進程中至少有一個線程,不然就沒有存在的意義
2)在一個進程內部,要同時干多件事情,就需要同時運行多個子任務,我們把進程內的這些子任務叫做線程
3)多線程就是為了同步完成多項任務(在單個程序中同時運行多個線程完成不同的任務和工作),不是為了提高運行效率,而是為了提高資源使用效率來提高系統的效率
4)一個簡單的比喻,多線程就像是火車上的每節車廂,而進程就是火車
5)線程是程序執行流的最小單元。一個標准的線程由當前的線程ID、當前指令指針、寄存器和堆棧組成
6)同一個進程中的多個線程之間可以並發執行


線程狀態:
1)就緒:指線程具備運行的所有條件,邏輯上可以運行,在等待處理機
2)運行:指線程占用處理機正在運行
3)阻塞:線程在等待一個事件,邏輯上不可執行


如果我們要同時執行多個任務怎么辦?
1)啟動多個進程,每個進程雖然只有一個線程,但是多個進程可以一塊執行多個任務
2)啟動一個進程,在一個進程內啟動多個線程,這樣多個線程也可以一塊執行多個任務


多任務:
1)一邊瀏覽網頁、一邊聽歌、一邊看電影;這就是多任務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM