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