前言:作為一個(gè)后臺(tái)開(kāi)發(fā)人員,我想有必要了解這些基礎(chǔ)知識(shí)。如果本文有不嚴(yán)謹(jǐn)或者疏忽的地方,請(qǐng)指正。

cpu與核心

物理核

  • 物理核數(shù)量=cpu數(shù)(機(jī)子上裝的cpu的數(shù)量)*每個(gè)cpu的核心數(shù)

虛擬核

  • 所謂的4核8線程,4核指的是物理核心。通過(guò)超線程技術(shù),用一個(gè)物理核模擬兩個(gè)虛擬核,每個(gè)核兩個(gè)線程,總數(shù)為8線程。

  • 在操作系統(tǒng)看來(lái)是8個(gè)核,但是實(shí)際上是4個(gè)物理核。

  • 通過(guò)超線程技術(shù)可以實(shí)現(xiàn)單個(gè)物理核實(shí)現(xiàn)線程級(jí)別的并行計(jì)算,但是比不上性能兩個(gè)物理核。

單核cpu和多核cpu

  • 都是一個(gè)cpu,不同的是每個(gè)cpu上的核心數(shù)

  • 多核cpu是多個(gè)單核cpu的替代方案,多核cpu減小了體積,同時(shí)也減少了功耗

  • 一個(gè)核心只能同時(shí)執(zhí)行一個(gè)線程

進(jìn)程和線程

理解

  • 我們打開(kāi)的微信,瀏覽器都是一個(gè)進(jìn)程

  • 進(jìn)程可能有多個(gè)子任務(wù),比如微信要接受消息,發(fā)送消息,這些子任務(wù)就是線程。

  • 資源分配給進(jìn)程,線程共享進(jìn)程資源。

線程切換

  • cpu給線程分配時(shí)間片(也就是分配給線程的時(shí)間),執(zhí)行完時(shí)間片后會(huì)切換都另一個(gè)線程。

  • 切換之前會(huì)保存線程的狀態(tài),下次時(shí)間片再給這個(gè)線程時(shí)才能知道當(dāng)前狀態(tài)。

  • 從保存線程A的狀態(tài)再到切換到線程B時(shí),重新加載線程B的狀態(tài)的這個(gè)過(guò)程就叫上下文切換。

  • 而上下切換時(shí)會(huì)消耗大量的cpu時(shí)間。

線程開(kāi)銷

  • 上下文切換消耗

  • 線程創(chuàng)建和消亡的開(kāi)銷

  • 線程需要保存維持線程本地棧,會(huì)消耗內(nèi)存

串行,并發(fā)與并行

串行

  • 多個(gè)任務(wù),執(zhí)行時(shí)一個(gè)執(zhí)行完再執(zhí)行另一個(gè)。

  • 比喻:吃完飯?jiān)倏辞蛸悺?/p>

并發(fā)

  • 多個(gè)線程在單個(gè)核心運(yùn)行,同一時(shí)間一個(gè)線程運(yùn)行,系統(tǒng)不停切換線程,看起來(lái)像同時(shí)運(yùn)行,實(shí)際上是線程不停切換。

  • 比喻: 一會(huì)跑去食廳吃飯,一會(huì)跑去客廳看球賽。

并行

  • 每個(gè)線程分配給獨(dú)立的核心,線程同時(shí)運(yùn)行。

  • 比喻:一邊吃飯一邊看球賽。

多核下線程數(shù)量選擇

計(jì)算密集型

  • 程序主要為復(fù)雜的邏輯判斷和復(fù)雜的運(yùn)算。

  • cpu的利用率高,不用開(kāi)太多的線程,開(kāi)太多線程反而會(huì)因?yàn)榫€程切換時(shí)切換上下文而浪費(fèi)資源。

IO密集型

  • 程序主要為IO操作,比如磁盤(pán)IO(讀取文件)和網(wǎng)絡(luò)IO(網(wǎng)絡(luò)請(qǐng)求)。

  • 因?yàn)镮O操作會(huì)阻塞線程,cpu利用率不高,可以開(kāi)多點(diǎn)線程,阻塞時(shí)可以切換到其他就緒線程,提高cpu利用率。

總結(jié)

  • 提高性能的一種方式:提高硬件水平,處理速度或核心數(shù)。

  • 另一種方式:根據(jù)場(chǎng)景,合理設(shè)置線程數(shù),軟件上提高cpu利用率。

我覺(jué)得分享是一種精神,分享是我的樂(lè)趣所在,不是說(shuō)我覺(jué)得我講得一定是對(duì)的,我講得可能很多是不對(duì)的,但是我希望我講的東西是我人生的體驗(yàn)和思考,是給很多人反思,也許給你一秒鐘、半秒鐘,哪怕說(shuō)一句話有點(diǎn)道理,引發(fā)自己內(nèi)心的感觸,這就是我最大的價(jià)值。(這是我喜歡的一句話,也是我寫(xiě)博客的初衷)



http://www.cnblogs.com/-new/p/7234332.html