進程 線程 協程 單核cpu 多核cpu

一個電腦只有一個CPU。

一個CPU可以有多個核心。

最初一個核心只處理一個線程。單核單線程、雙核雙線程。但是這會造成資源浪費,打一個比方,一個核心相當於一家超市,A管進貨,B管擺貨,C管收銀。但是現在沒有貨可擺的時候,B是不是可以去當收銀員呢?

這就出現了超線程技術,單核雙線程,雙核四線程。就是把一個核心模擬成兩個核心,在一個核心一些資源閒着的時候,可以利用起來,當成一個核心來用。


在運行一般的小程序,很少有滿載的情況,沒有滿負荷工作的話,總有一些資源在閒置。那這時候,超線程就有用了。
如果是3D渲染一類的極端任務,CPU一直滿載,超線程就沒什麼用了。

 

程和線程的主要差別在於它們是不同的操作系統資源管理方式。進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不同執行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等於整個進程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對於一些要求同時進行並且又要共享某些變量的併發操作,只能用線程,不能用進程。 一個程序至少有一個進程,一個進程至少有一個線程.

線程是進程的一部分

CPU調度的是線程並非是進程,線程是隸屬於進程的,所以我們也可以認爲是進程在切換。

系統爲進程分配資源,不對線程分配資源,進程內的資源對於線程是共享的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章