CPU進程與線程的區(qū)別
CPU進程與線程的區(qū)別
愛學(xué)習(xí)的小伙伴們,你們知道CPU進程與線程的關(guān)系和區(qū)別嗎?不知道的話跟著學(xué)習(xí)啦小編一起來學(xué)習(xí)CPU進程與線程的關(guān)系和區(qū)別吧。
CPU進程與線程的關(guān)系和區(qū)別
進程是具有一定獨立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運行活動,進程是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。
線程是進程的一個實體,是CPU調(diào)度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。
進程和線程的關(guān)系:
(1)一個線程只能屬于一個進程,而一個進程可以有多個線程,但至少有一個線程。
(2)資源分配給進程,同一進程的所有線程共享該進程的所有資源。
(3)處理機分給線程,即真正在處理機上運行的是線程。
(4)線程在執(zhí)行過程中,需要協(xié)作同步。不同進程的線程間要利用消息通信的辦法實現(xiàn)同步。
進程與線程的區(qū)別:
(1)調(diào)度:線程作為調(diào)度和分配的基本單位,進程作為擁有資源的基本單位
(2)并發(fā)性:不僅進程之間可以并發(fā)執(zhí)行,同一個進程的多個線程之間也可并發(fā)執(zhí)行
(3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統(tǒng)資源,但可以訪問隸屬于進程的資源.
(4) 系統(tǒng)開銷:在創(chuàng)建或撤消進程時,由于系統(tǒng)都要為之分配和回收資源,導(dǎo)致系統(tǒng)的開銷明顯大于創(chuàng)建或撤消線程時的開銷。但是進程有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其它進程產(chǎn)生影響,而線程只是一個進程中的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個進程死掉就等于所有的線程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些
結(jié)論:
(1)線程是進程的一部分
(2)CPU調(diào)度的是線程
(3)系統(tǒng)為進程分配資源,不對線程分配資源
CPU進程與線程的關(guān)系和區(qū)別相關(guān)文章:
3.關(guān)于linux的進程中的各個線程cpu占用情況進行分析和查看