Linux中進程和線程的對比與區(qū)別
1.概念 
進程:正在運行中的程序。 
線程:進程中的一條執(zhí)行路徑。 
2.區(qū)別 
(1)通常在一個進程中可以包含若干個線程,它們可以利用進程所擁有的資源。在引入線程的操作系統(tǒng)中,通常都是把進程作為分配資源的基本單位,而把線程作為獨立運行和獨立調(diào)度的基本單位。 
(2)線程和進程的區(qū)別在于,子進程和父進程有不同的代碼和數(shù)據(jù)空間,而多個線程則共享數(shù)據(jù)空間,每個線程有自己的執(zhí)行堆棧和程序計數(shù)器為其執(zhí)行上下文。多線程主要是為了節(jié)約CPU時間,發(fā)揮利用,根據(jù)具體情況而定。線程的運行中需要使用計算機的內(nèi)存資源和CPU。 
(3)進程間相互獨立,同一進程的各線程間共享。某進程內(nèi)的線程在其它進程不可見。 
(4)線程的上下文切換遠大于進程間上下文切換的速度。 
(5)進程是不可執(zhí)行的實體,程序是一個沒有生命的實體,只有當處理器賦予程序生命時,它才能成為一個活動的實體,我們稱其為進程。 
3.線程和進程的關(guān)系以及區(qū)別? 
進程和線程的關(guān)系: 
(1)一個線程只能屬于一個進程,而一個進程可以有多個線程,但至少有一個線程。 
(2)資源分配給進程,同一進程的所有線程共享該進程的所有資源。 
(3)處理機分給線程,即真正在處理機上運行的是線程。 
(4)線程在執(zhí)行過程中,需要協(xié)作同步。不同進程的線程間要利用消息通信的辦法實現(xiàn)同步。線程是指進程內(nèi)的一個執(zhí)行單元,也是進程內(nèi)的可調(diào)度實體. 
進程與線程的區(qū)別: 
(1)調(diào)度:線程作為調(diào)度和分配的基本單位,進程作為擁有資源的基本單位 
(2)并發(fā)性:不僅進程之間可以并發(fā)執(zhí)行,同一個進程的多個線程之間也可并發(fā)執(zhí)行 
(3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統(tǒng)資源,但可以訪問隸屬于進程的資源. 
(4)系統(tǒng)開銷:在創(chuàng)建或撤消進程時,由于系統(tǒng)都要為之分配和回收資源,導致系統(tǒng)的開銷明顯大于創(chuàng)建或撤消線程時的開銷。
以上就是Linux 中線程和進程的區(qū)別的詳解,如有疑問請留言或者到本站的社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答
圖片精選