進程(cheng)和(he)線(xian)程(cheng)關系及區(qu)別(bie)
時間(jian):2018-08-15 來源(yuan):未知
1.定義
進程:是具有一(yi)(yi)定獨立(li)功能的程序關于某個數據集(ji)合上(shang)的一(yi)(yi)次運行(xing)活動,進程是系統進行(xing)
資源分配和(he)調度的一個獨立單位.
線程(cheng):是進程(cheng)的(de)(de)一(yi)個實體,是CPU調度和分派(pai)的(de)(de)基本單位(wei),它是比進程(cheng)更(geng)小的(de)(de)能獨立運(yun)行的(de)(de)
基(ji)本(ben)單位.線程自己(ji)基(ji)本(ben)上不(bu)擁有系統(tong)資(zi)源,只擁有一(yi)點(dian)在(zai)運(yun)行中必不(bu)可少的資(zi)源(如
程序計數器,一組寄存器和棧),但(dan)是它(ta)可與同屬(shu)一個進程的其他(ta)的線程共享進程所擁
有的全部資源.(擁有時間片(pian)的函數)
2.關系
一個線(xian)(xian)程(cheng)可以創建和撤銷另一個線(xian)(xian)程(cheng);同一個進程(cheng)中的多(duo)個線(xian)(xian)程(cheng)之(zhi)間可以并發執(zhi)行.
相對(dui)進程(cheng)而言,線程(cheng)是一(yi)個更加接近于執行體(ti)的(de)概念,它可以與同進程(cheng)中的(de)其他(ta)線程(cheng)共享數據,但擁有(you)(you)自己的(de)棧空間,擁有(you)(you)獨立的(de)執行序列。
3.區別
進(jin)(jin)程(cheng)(cheng)(cheng)和線(xian)(xian)(xian)程(cheng)(cheng)(cheng)的(de)主要(yao)差別在于它(ta)們是(shi)不(bu)同的(de)操(cao)作系統(tong)資源(yuan)(yuan)管理(li)方式。進(jin)(jin)程(cheng)(cheng)(cheng)有(you)獨立的(de)地(di)址空間(jian),一(yi)(yi)(yi)個(ge)進(jin)(jin)程(cheng)(cheng)(cheng)崩潰后,在保護模式下(xia)不(bu)會(hui)對(dui)其它(ta)進(jin)(jin)程(cheng)(cheng)(cheng)產生影響,而線(xian)(xian)(xian)程(cheng)(cheng)(cheng)只是(shi)一(yi)(yi)(yi)個(ge)進(jin)(jin)程(cheng)(cheng)(cheng)中(zhong)的(de)不(bu)同執行路徑(jing)。線(xian)(xian)(xian)程(cheng)(cheng)(cheng)有(you)自(zi)己的(de)堆棧和局部變(bian)量(liang),但線(xian)(xian)(xian)程(cheng)(cheng)(cheng)之(zhi)間(jian)沒有(you)單獨的(de)地(di)址空間(jian),一(yi)(yi)(yi)個(ge)線(xian)(xian)(xian)程(cheng)(cheng)(cheng)死(si)掉(diao)就等于整個(ge)進(jin)(jin)程(cheng)(cheng)(cheng)死(si)掉(diao),所以多進(jin)(jin)程(cheng)(cheng)(cheng)的(de)程(cheng)(cheng)(cheng)序(xu)要(yao)比多線(xian)(xian)(xian)程(cheng)(cheng)(cheng)的(de)程(cheng)(cheng)(cheng)序(xu)健(jian)壯(zhuang),但在進(jin)(jin)程(cheng)(cheng)(cheng)切換(huan)時(shi),耗(hao)費資源(yuan)(yuan)較大,效率要(yao)差一(yi)(yi)(yi)些(xie)。但對(dui)于一(yi)(yi)(yi)些(xie)要(yao)求(qiu)同時(shi)進(jin)(jin)行并(bing)且又要(yao)共享某些(xie)變(bian)量(liang)的(de)并(bing)發操(cao)作,只能用線(xian)(xian)(xian)程(cheng)(cheng)(cheng),不(bu)能用進(jin)(jin)
程。
1) 簡而(er)言(yan)之,一(yi)個(ge)程(cheng)序至少(shao)有一(yi)個(ge)進程(cheng),一(yi)個(ge)進程(cheng)至少(shao)有一(yi)個(ge)線程(cheng).
2) 線(xian)程的劃分尺度小于進程,使得多線(xian)程程序的并發性高(gao)。
3) 另(ling)外,進程(cheng)在執行過程(cheng)中擁有(you)獨立(li)的內存單元(yuan),而多個線程(cheng)共享內存,從而極大地提高了程(cheng)序的運(yun)行效率。
4) 線(xian)程(cheng)(cheng)(cheng)在執行(xing)過程(cheng)(cheng)(cheng)中與進程(cheng)(cheng)(cheng)還是有區別的(de)。每個(ge)獨(du)立(li)的(de)線(xian)程(cheng)(cheng)(cheng)有一個(ge)程(cheng)(cheng)(cheng)序(xu)運行(xing)的(de)入口、順序(xu)執行(xing)序(xu)列和程(cheng)(cheng)(cheng)序(xu)的(de)出口。但是線(xian)程(cheng)(cheng)(cheng)不能夠(gou)獨(du)立(li)執行(xing),必須依存在應(ying)用程(cheng)(cheng)(cheng)序(xu)中,由應(ying)用程(cheng)(cheng)(cheng)序(xu)提供多個(ge)線(xian)程(cheng)(cheng)(cheng)執行(xing)控制。
5) 從邏輯角度來看,多(duo)(duo)線(xian)程(cheng)(cheng)的意義在于(yu)一個應用(yong)程(cheng)(cheng)序中(zhong),有多(duo)(duo)個執(zhi)行部(bu)分可以同時執(zhi)行。但操作(zuo)系(xi)統并沒有將多(duo)(duo)個線(xian)程(cheng)(cheng)看做多(duo)(duo)個獨立的應用(yong),來實(shi)現進(jin)程(cheng)(cheng)的調度和(he)管理以及資源分配。這就是(shi)進(jin)程(cheng)(cheng)和(he)線(xian)程(cheng)(cheng)的重(zhong)要區別。
4.優缺點
線(xian)程(cheng)(cheng)和(he)進(jin)(jin)(jin)程(cheng)(cheng)在使(shi)用(yong)上(shang)(shang)各有優缺點:線(xian)程(cheng)(cheng)執行開(kai)銷小,但不利(li)于資源的管理(li)和(he)保護;而進(jin)(jin)(jin)程(cheng)(cheng)正(zheng)相(xiang)反(fan)。同時,線(xian)程(cheng)(cheng)適合于在SMP機器上(shang)(shang)運行,而進(jin)(jin)(jin)程(cheng)(cheng)則可以跨(kua)機器遷移(指的是可以使(shi)用(yong)socket進(jin)(jin)(jin)行跨(kua)主機進(jin)(jin)(jin)程(cheng)(cheng)間通信)。
SMP的全(quan)稱是"對(dui)稱多處理"(Symmetrical Multi-Processing)技術,是指在一(yi)個
計(ji)算機上匯集了一組處理器(qi)(多(duo)CPU),各CPU之間共(gong)享內存子系統(tong)以及總(zong)線結構。