0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CPU與核心及進(jìn)程和線程認(rèn)識

Dbwd_Imgtec ? 來源:未知 ? 作者:李倩 ? 2018-03-30 14:48 ? 次閱讀

CPU與核心

物理核

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

虛擬核

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

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

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

單核cpu和多核cpu

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

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

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

進(jìn)程和線程

理解

進(jìn)程是操作系統(tǒng)進(jìn)行資源(包括cpu、內(nèi)存、磁盤IO等)分配的最小單位

線程是cpu調(diào)度和分配的基本單位

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

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

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

對比

線程切換

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

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

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

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

線程開銷

上下文切換消耗

線程創(chuàng)建和消亡的開銷

線程需要保存維持線程本地棧,會消耗內(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)不停切換線程,看起來像同時(shí)運(yùn)行,實(shí)際上是線程不停切換。

比喻: 一會跑去食廳吃飯,一會跑去客廳看球賽。

并行

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

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

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

計(jì)算密集型

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

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

IO密集型

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

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

總結(jié)

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10698

    瀏覽量

    209328
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    501

    瀏覽量

    19580

原文標(biāo)題:認(rèn)識CPU、核與線程

文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    進(jìn)程線程的區(qū)別

    的重要區(qū)別。進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動,進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位. 線程進(jìn)程的一個(gè)實(shí)體,是CP
    發(fā)表于 12-12 09:28

    【Nanopi2試用體驗(yàn)】高級(十):進(jìn)程綁定CPU核心

    1994568800分別在四個(gè)CPU核心上運(yùn)行了一段時(shí)間。在一些嵌入式設(shè)備中,運(yùn)行的進(jìn)程線程比較單一,如果指定進(jìn)程
    發(fā)表于 02-03 17:28

    進(jìn)程線程的通俗解釋

    本帖最后由 檸檬守護(hù) 于 2016-8-10 17:42 編輯 進(jìn)程(process)和線程(thread)是操作系統(tǒng)的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一篇材料,發(fā)現(xiàn)有一個(gè)
    發(fā)表于 08-10 17:31

    進(jìn)程線程區(qū)別

    `1、進(jìn)程線程的區(qū)別和聯(lián)系進(jìn)程(process)和線程(thread)是操作系統(tǒng)的基本概念,但是它們比較抽象,不容易掌握。計(jì)算機(jī)的核心
    發(fā)表于 11-30 14:06

    線程、進(jìn)程、程序的區(qū)別

    是為了節(jié)約CPU時(shí)間,發(fā)揮利用,根據(jù)具體情況而定。線程的運(yùn)行中需要使用計(jì)算機(jī)的內(nèi)存資源和CPU。通常在一個(gè)進(jìn)程中可以包含若干個(gè)線程,它們可以
    發(fā)表于 03-23 13:09

    關(guān)于“進(jìn)程”與“線程”的最通俗解析

    ` 進(jìn)程(process)和線程(thread)是操作系統(tǒng)的基本概念,但是它們比較抽象,不容易掌握。 最近,我讀到一篇材料,發(fā)現(xiàn)有一個(gè)很好的類比,可以把它們解釋地清晰易懂。 1、計(jì)算機(jī)的核心
    發(fā)表于 06-02 07:43

    線程進(jìn)程有哪些區(qū)別?

    線程進(jìn)程的區(qū)別在于,子進(jìn)程和父進(jìn)程有不同的代碼和數(shù)據(jù)空間,而多個(gè)線程則共享數(shù)據(jù)空間,每個(gè)線程
    發(fā)表于 07-20 07:48 ?1912次閱讀
    <b class='flag-5'>線程</b>與<b class='flag-5'>進(jìn)程</b>有哪些區(qū)別?

    一文讀懂線程、進(jìn)程、程序之間的不同

    線程進(jìn)程的區(qū)別在于,子進(jìn)程和父進(jìn)程有不同的代碼和數(shù)據(jù)空間,而多個(gè)線程則共享數(shù)據(jù)空間,每個(gè)線程
    發(fā)表于 03-12 08:48 ?1291次閱讀
    一文讀懂<b class='flag-5'>線程</b>、<b class='flag-5'>進(jìn)程</b>、程序之間的不同

    進(jìn)程線程定義

    線程CPU調(diào)度的最小單位(程序執(zhí)行流的最小單元),它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單元。一條線程
    的頭像 發(fā)表于 11-20 10:23 ?2566次閱讀

    線程進(jìn)程的關(guān)系與區(qū)別

    線程CPU調(diào)度的最小單位(程序執(zhí)行流的最小單元),它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單元。一條線程
    的頭像 發(fā)表于 11-29 11:01 ?1.3w次閱讀

    進(jìn)程線程分別是什么,它們的區(qū)別是什么

    一、定義 進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動,進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。 線程進(jìn)程的一個(gè)實(shí)體,是CP
    發(fā)表于 03-24 17:26 ?9284次閱讀
    <b class='flag-5'>進(jìn)程</b>和<b class='flag-5'>線程</b>分別是什么,它們的區(qū)別是什么

    講講線程、進(jìn)程CPU中的超線程

    因此,超線程簡單來講就是把這些不能公用的資源加倍。而那些流水線上的操作邏輯電路、ALU單元等則可以不用復(fù)制。以此實(shí)現(xiàn)多個(gè)線程同時(shí)在一個(gè)CPU核心中進(jìn)行處理。
    的頭像 發(fā)表于 08-05 16:38 ?2350次閱讀

    CPU核心中idle進(jìn)程作用

    每一個(gè) CPU 核心都會有一個(gè) idle 進(jìn)程,idle 進(jìn)程是當(dāng)系統(tǒng)沒有調(diào)度 CPU 資源的時(shí)候,會進(jìn)入 idle
    的頭像 發(fā)表于 10-14 09:28 ?1784次閱讀

    進(jìn)程線程的區(qū)別以及優(yōu)缺點(diǎn)

    進(jìn)程線程 1、什么是進(jìn)程線程,有什么區(qū)別? 進(jìn)程是資源(CPU、內(nèi)存等)分配的基本單位,
    的頭像 發(fā)表于 07-21 11:02 ?1213次閱讀

    mcu線程進(jìn)程的區(qū)別是什么

    是程序執(zhí)行的基本單位,它是進(jìn)程中的一個(gè)實(shí)體,是進(jìn)程內(nèi)的一條執(zhí)行路徑。線程CPU調(diào)度的最小單位,它可以看作是輕量級的進(jìn)程,不擁有獨(dú)立的地址空
    的頭像 發(fā)表于 01-04 10:45 ?562次閱讀