進(jìn)程、線程知識整理

一、說說概念

1、進(jìn)程(process)

廣義定義:進(jìn)程是一個具有一定獨(dú)立功能的程序關(guān)于某個數(shù)據(jù)集合的一次運(yùn)行活動。它是操作系統(tǒng)動態(tài)執(zhí)行的基本單元,在傳統(tǒng)的操作系統(tǒng)中,進(jìn)程既是基本的分配單元,也是基本的執(zhí)行單元。

簡單的來講進(jìn)程的概念主要有兩點(diǎn)第一,進(jìn)程是一個實(shí)體。每一個進(jìn)程都有它自己的地址空間,一般情況下,包括文本區(qū)域(text region)、數(shù)據(jù)區(qū)域(data region)和堆棧(stack region)。文本區(qū)域存儲處理器執(zhí)行的代碼;數(shù)據(jù)區(qū)域存儲變量和進(jìn)程執(zhí)行期間使用的動態(tài)分配的內(nèi)存;堆棧區(qū)域存儲著活動過程調(diào)用的指令和本地變量。第二,進(jìn)程是一個“執(zhí)行中的程序”。程序是一個沒有生命的實(shí)體,只有處理器賦予程序生命時,它才能成為一個活動的實(shí)體,我們稱其為進(jìn)程。

進(jìn)程狀態(tài):進(jìn)程有三個狀態(tài),就緒、運(yùn)行和阻塞。就緒狀態(tài)其實(shí)就是獲取了出cpu外的所有資源,只要處理器分配資源就可以馬上執(zhí)行。就緒狀態(tài)有排隊(duì)序列什么的,排隊(duì)原則不再贅述。運(yùn)行態(tài)就是獲得了處理器分配的資源,程序開始執(zhí)行。阻塞態(tài),當(dāng)程序條件不夠時候,需要等待條件滿足時候才能執(zhí)行,如等待i/o操作時候,此刻的狀態(tài)就叫阻塞態(tài)。

2、線程

通常在一個進(jìn)程中可以包含若干個線程,當(dāng)然一個進(jìn)程中至少有一個線程,不然沒有存在的意義。線程可以利用進(jìn)程所擁有的資源,在引入線程的操作系統(tǒng)中,通常都是把進(jìn)程作為分配資源的基本單位,而把線程作為獨(dú)立運(yùn)行和獨(dú)立調(diào)度的基本單位,由于線程比進(jìn)程更小,基本上不擁有系統(tǒng)資源,故對它的調(diào)度所付出的開銷就會小得多,能更高效的提高系統(tǒng)多個程序間并發(fā)執(zhí)行的程度。

4、多線程

在一個程序中,這些獨(dú)立運(yùn)行的程序片段叫作“線程”(Thread),利用它編程的概念就叫作“多線程處理”。多線程是為了同步完成多項(xiàng)任務(wù),不是為了提高運(yùn)行效率,而是為了提高資源使用效率來提高系統(tǒng)的效率。線程是在同一時間需要完成多項(xiàng)任務(wù)的時候?qū)崿F(xiàn)的。

二、說說區(qū)別

1、進(jìn)程與線程的區(qū)別:

進(jìn)程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式。進(jìn)程有獨(dú)立的地址空間,一個進(jìn)程崩潰后,在保護(hù)模式下不會對其它進(jìn)程產(chǎn)生影響,而線程只是一個進(jìn)程中的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨(dú)的地址空間,一個線程死掉就等于整個進(jìn)程死掉,所以多進(jìn)程的程序要比多線程的程序健壯,但在進(jìn)程切換時,耗費(fèi)資源較大,效率要差一些。但對于一些要求同時進(jìn)行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進(jìn)程。

  1. 簡而言之,一個程序至少有一個進(jìn)程,一個進(jìn)程至少有一個線程.

  2. 線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高。

  3. 另外,進(jìn)程在執(zhí)行過程中擁有獨(dú)立的內(nèi)存單元,而多個線程共享內(nèi)存,從而極大地提高了程序的運(yùn)行效率。

  4. 線程在執(zhí)行過程中與進(jìn)程還是有區(qū)別的。每個獨(dú)立的線程有一個程序運(yùn)行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個線程執(zhí)行控制。

  5. 從邏輯角度來看,多線程的意義在于一個應(yīng)用程序中,有多個執(zhí)行部分可以同時執(zhí)行。但操作系統(tǒng)并沒有將多個線程看做多個獨(dú)立的應(yīng)用,來實(shí)現(xiàn)進(jìn)程的調(diào)度和管理以及資源分配。這就是進(jìn)程和線程的重要區(qū)別。

三、說說優(yōu)缺點(diǎn)

線程和進(jìn)程在使用上各有優(yōu)缺點(diǎn):線程執(zhí)行開銷小,但不利于資源的管理和保護(hù);而進(jìn)程正相反。同時,線程適合于在SMP(多核處理機(jī))機(jī)器上運(yùn)行,而進(jìn)程則可以跨機(jī)器遷移。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容