進(jìn)程和線程區(qū)別

進(jìn)程:進(jìn)程是進(jìn)程實(shí)體的運(yùn)行過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位(具有動態(tài)、并發(fā)、獨(dú)立、異步的特性,以及就緒、執(zhí)行、阻塞3種狀態(tài));引入進(jìn)程是為了使多個(gè)程序可以并發(fā)的執(zhí)行,以提高系統(tǒng)的資源利用率和吞吐量。

線程:是比進(jìn)程更小的可獨(dú)立運(yùn)行的基本單位,可以看做是輕量級的進(jìn)程(具有輕型實(shí)體,獨(dú)立調(diào)度分派單位,可并發(fā)執(zhí)行,共享進(jìn)程資源等屬性);引入目的是為了減少程序在并發(fā)執(zhí)行過程中的開銷,使OS的并發(fā)效率更高。

線程具有許多傳統(tǒng)進(jìn)程所具有的特征,又稱為輕型進(jìn)程或進(jìn)程元,相應(yīng)地把傳統(tǒng)進(jìn)程稱為重型進(jìn)程,傳統(tǒng)進(jìn)程相當(dāng)于只有一個(gè)線程的任務(wù)。一個(gè)進(jìn)程都擁有若干個(gè)線程,至少也有一個(gè)線程。

1) 調(diào)度

線程作為調(diào)度和分派的基本單位,進(jìn)程作為資源擁有的基本單位,使線程基本上不擁有資源,這樣線程便能輕裝前進(jìn),從而可顯著地提高系統(tǒng)的并發(fā)程度。

在同一進(jìn)程中,線程的切換不會引起進(jìn)程的切換,但從一個(gè)進(jìn)程中的線程切換到另一個(gè)進(jìn)程中的線程時(shí),將會引起進(jìn)程的切換。

2) 并發(fā)性

進(jìn)程之間可以并發(fā)執(zhí)行,在一個(gè)進(jìn)程中的多個(gè)線程之間亦可并發(fā)執(zhí)行,使得操作系統(tǒng)具有更好的并發(fā)性,從而能更加有效地提高系統(tǒng)資源的利用率和系統(tǒng)的吞吐量。

3) 擁有資源

進(jìn)程可以擁有資源,是系統(tǒng)中擁有資源的一個(gè)基本單位。一般而言,線程自己不擁有系統(tǒng)資源(也有一點(diǎn)必不可少的資源),但它可以訪問其隸屬進(jìn)程的資源,即一個(gè)進(jìn)程的代碼段、數(shù)據(jù)段及所擁有的系統(tǒng)資源,如已打開的文件、I/O 設(shè)備等,可以供該進(jìn)程中的所有線程所共享。

4) 系統(tǒng)開銷

在創(chuàng)建或撤消進(jìn)程時(shí),系統(tǒng)都要為之創(chuàng)建和回收進(jìn)程控制塊,分配或回收資源,如內(nèi)存空間和 I/O 設(shè)備等,操作系統(tǒng)所付出的開銷明顯大于線程創(chuàng)建或撤消時(shí)的開銷。類似地,在進(jìn)程切換時(shí),涉及到當(dāng)前進(jìn)程 CPU 環(huán)境的保存及新被調(diào)度運(yùn)行進(jìn)程的 CPU 環(huán)境的設(shè)置,而線程的切換則僅需保存和設(shè)置少量寄存器內(nèi)容,不涉及存儲器管理方面的操作,所以就切換代價(jià)而言,進(jìn)程也是遠(yuǎn)高于線程的。此外,由于一個(gè)進(jìn)程中的多個(gè)線程具有相同的地址空間,在同步和通信的實(shí)現(xiàn)方面線程也比進(jìn)程容易。在一些操作系統(tǒng)中,線程的切換、同步和通信都無須操作系統(tǒng)內(nèi)核的干預(yù)。

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

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

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