CPU與核心
物理核
物理核數(shù)量 = cpu數(shù)(機(jī)子上裝的cpu的數(shù)量)*每個cpu的核心數(shù)
虛擬核
所謂的4核8線程,4核指的是物理核心。通過超線程技術(shù),用一個物理核模擬兩個虛擬核,每個核兩個線程,總數(shù)為8線程。
在操作系統(tǒng)看來是8個核,但是實際上是4個物理核。
通過超線程技術(shù)可以實現(xiàn)單個物理核實現(xiàn)線程級別的并行計算,但是比不上性能兩個物理核。
單核cpu和多核cpu
都是一個cpu,不同的是每個cpu上的核心數(shù)
多核cpu是多個單核cpu的替代方案,多核cpu減小了體積,同時也減少了功耗
一個核心只能同時執(zhí)行一個線程
進(jìn)程和線程
理解
進(jìn)程是操作系統(tǒng)進(jìn)行資源(包括cpu、內(nèi)存、磁盤IO等)分配的最小單位
線程是cpu調(diào)度和分配的基本單位
我們打開的微信,瀏覽器都是一個進(jìn)程
進(jìn)程可能有多個子任務(wù),比如微信要接受消息,發(fā)送消息,這些子任務(wù)就是線程。
資源分配給進(jìn)程,線程共享進(jìn)程資源。
對比
線程切換
cpu給線程分配時間片(也就是分配給線程的時間),執(zhí)行完時間片后會切換都另一個線程。
切換之前會保存線程的狀態(tài),下次時間片再給這個線程時才能知道當(dāng)前狀態(tài)。
從保存線程A的狀態(tài)再到切換到線程B時,重新加載線程B的狀態(tài)的這個過程就叫上下文切換。
而上下切換時會消耗大量的cpu時間。
線程開銷
上下文切換消耗
線程創(chuàng)建和消亡的開銷
線程需要保存維持線程本地棧,會消耗內(nèi)存
串行,并發(fā)與并行
串行
多個任務(wù),執(zhí)行時一個執(zhí)行完再執(zhí)行另一個。
比喻:吃完飯再看球賽。
并發(fā)
多個線程在單個核心運行,同一時間一個線程運行,系統(tǒng)不停切換線程,看起來像同時運行,實際上是線程不停切換。
比喻: 一會跑去食廳吃飯,一會跑去客廳看球賽。
并行
每個線程分配給獨立的核心,線程同時運行。
比喻:一邊吃飯一邊看球賽。
多核下線程數(shù)量選擇
計算密集型
程序主要為復(fù)雜的邏輯判斷和復(fù)雜的運算。
cpu的利用率高,不用開太多的線程,開太多線程反而會因為線程切換時切換上下文而浪費資源。
IO密集型
程序主要為IO操作,比如磁盤IO(讀取文件)和網(wǎng)絡(luò)IO(網(wǎng)絡(luò)請求)。
因為IO操作會阻塞線程,cpu利用率不高,可以開多點線程,阻塞時可以切換到其他就緒線程,提高cpu利用率。
總結(jié)
提高性能的一種方式:提高硬件水平,處理速度或核心數(shù)。
另一種方式:根據(jù)場景,合理設(shè)置線程數(shù),軟件上提高cpu利用率。
-
cpu
+關(guān)注
關(guān)注
68文章
10825瀏覽量
211146 -
線程
+關(guān)注
關(guān)注
0文章
504瀏覽量
19651
原文標(biāo)題:認(rèn)識CPU、核與線程
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論