在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>主機(jī)配件>cpu>

cpu線程多有什么好處

2018年02月12日 10:30 網(wǎng)絡(luò)整理 作者: 用戶評(píng)論(0

中央處理器

中央處理器主要包括運(yùn)算器(算術(shù)邏輯運(yùn)算單元,ALU,Arithmetic Logic Unit)和高速緩沖存儲(chǔ)器(Cache)及實(shí)現(xiàn)它們之間聯(lián)系的數(shù)據(jù)(Data)、控制及狀態(tài)的總線(Bus)。它與內(nèi)部存儲(chǔ)器(Memory)和輸入/輸出(I/O)設(shè)備合稱為電子計(jì)算機(jī)三大核心部件。

一直以來(lái)有這樣的疑惑,在現(xiàn)如今多核多線程的電腦處理器之下,一個(gè)進(jìn)程中的幾個(gè)線程是 怎么運(yùn)行的呢?(是經(jīng)系統(tǒng)和JVM分配少量的資源 最后輪流切換 時(shí)間調(diào)度?還是這幾個(gè)線程分配到不同的核上同時(shí)運(yùn)行?)

今天就這一問(wèn)題查了一些資料,現(xiàn)整理如下:

單個(gè)CPU一個(gè)時(shí)刻只能運(yùn)行一個(gè)線程?

單核CPU電腦同一時(shí)間內(nèi)只能執(zhí)行一個(gè)線程,首先了解一下,CPU執(zhí)行的過(guò)程 ,它是把時(shí)間分成若干個(gè)小時(shí)間段,這些時(shí)間段很小的,系統(tǒng)中有很多進(jìn)程,每個(gè)進(jìn)程中又包含很多線程,在同一 時(shí)間段 內(nèi),電腦CPU只能處理一個(gè)線程(線程A),而下一個(gè) 時(shí)間段 就不一定是上一個(gè)時(shí)間段內(nèi)執(zhí)行的那個(gè)線程(線程A)了,可能是別的線程(線程B 吧)

CPU采用的是類似于時(shí)間片輪轉(zhuǎn)的機(jī)制,也就是說(shuō)同一時(shí)間一條進(jìn)程提出執(zhí)行請(qǐng)求時(shí),其他進(jìn)程只能等待它執(zhí)行完畢,CPU才會(huì)處理其他請(qǐng)求。其他進(jìn)程相當(dāng)于在排隊(duì)等待中。當(dāng)然了,為了避免某條進(jìn)程無(wú)限制時(shí)間的執(zhí)行,一般會(huì)限定一個(gè)時(shí)間,超時(shí) 的話,CPU根據(jù)一定的線程調(diào)度算法來(lái)切換線程。可以看做很多線程在并發(fā)執(zhí)行。其實(shí)還是在某一個(gè)時(shí)間點(diǎn)上只有一個(gè)線程在運(yùn)行罷了。

多核的話,每個(gè)核心都是同樣的原理。但是兩個(gè)核心就可以通過(guò)系統(tǒng)分配資源,同時(shí)執(zhí)行不同的進(jìn)程,這個(gè)就更復(fù)雜了。

每條進(jìn)程都有CPU分配的進(jìn)程號(hào)的。避免混亂。

一個(gè)核心就是實(shí)實(shí)在在的一個(gè)cpu處理設(shè)備 線程的概念可以理解成電腦處理信息的通道 既一個(gè)線程一個(gè)通道 一般來(lái)說(shuō)一個(gè)cpu核心處理一個(gè)通道的信息 但也不是絕對(duì) 因特爾支持超線程技術(shù)的cpu每個(gè)核心可以處理兩個(gè)或多個(gè)通道的信息 這就可以形容為超線程(既多出來(lái)的通道的處理能力)但前提是軟件也必須的支持超線程才行 否則單核雙線程或多線程也只能有單個(gè)通道工作 從某種意義上來(lái)說(shuō)cpu的能力被浪費(fèi)了 所以網(wǎng)友一般就會(huì)說(shuō) 真正的核心數(shù)(通道) 比虛擬出來(lái)的核心(通道)來(lái)個(gè)更實(shí)在。最后 線程數(shù)決定這CPU能同時(shí)處理幾件事情,在沒(méi)有超線程技術(shù)的情況下核心數(shù)等於線程數(shù)。

java線程調(diào)度

CPU對(duì)于各個(gè)線程的調(diào)度是隨機(jī)的(分時(shí)調(diào)度),在Java程序中,JVM負(fù)責(zé)線程的調(diào)度。 線程調(diào)度是指按照特定的機(jī)制為多個(gè)線程分配CPU的使用權(quán),也就是實(shí)際執(zhí)行的時(shí)候是線程,因此CPU調(diào)度的最小單位是線程,而資源分配的最小單位是進(jìn)程。

JVM調(diào)度的模式有兩種:分時(shí)調(diào)度和搶占式調(diào)度。

分時(shí)調(diào)度 是所有線程輪流獲得CPU使用權(quán),并平均分配每個(gè)線程占用CPU的時(shí)間;

搶占式調(diào)度 是根據(jù)線程的優(yōu)先級(jí)別來(lái)獲取CPU的使用權(quán)。JVM的線程調(diào)度模式采用了搶占式模式。既然是搶占調(diào)度,那么我們就能通過(guò)設(shè)置優(yōu)先級(jí)來(lái)“有限”的控制線程的運(yùn)行順序,注意“有限”一次。

CPU核數(shù) 跟多線程 的關(guān)系

要說(shuō)多線程就離不開(kāi)進(jìn)程,進(jìn)程和線程的區(qū)別在這里就不詳細(xì)說(shuō)了,只將關(guān)鍵的幾點(diǎn):

a)進(jìn)程之間是 相互獨(dú)立的,不共享 內(nèi)存和數(shù)據(jù),線程之間 的內(nèi)存和數(shù)據(jù)是 公用的,每個(gè)線程只有自己的一組CPU指令、寄存器和堆棧,對(duì)于線程來(lái)說(shuō)只有CPU里的東西是自己獨(dú)享的,程序中的其他東西都是跟同一個(gè)進(jìn)程里的其他線程共享的。

b)操作系統(tǒng)創(chuàng)建進(jìn)程時(shí)要分配好多外部資源,所以開(kāi)銷(xiāo)大。(這個(gè)跟操作系統(tǒng)有關(guān),有人做過(guò)實(shí)驗(yàn),window創(chuàng)建進(jìn)程的開(kāi)銷(xiāo)大,Linux創(chuàng)建進(jìn)程的開(kāi)銷(xiāo)就很小。)

再來(lái)說(shuō)一下CPU,過(guò)去單CPU時(shí)代,最先是單任務(wù)階段 在一個(gè)時(shí)間點(diǎn) 只能執(zhí)行單一程序。之后發(fā)展到多任務(wù)階段,計(jì)算機(jī)能在同一時(shí)間點(diǎn)并行執(zhí)行多任務(wù)或多進(jìn)程。雖然并不是真正意義上的“同一時(shí)間點(diǎn)”,而是多個(gè)任務(wù)或進(jìn)程共享一個(gè)CPU,并交由操作系統(tǒng)來(lái)完成多任務(wù)間對(duì)CPU的運(yùn)行切換,以使得每個(gè)任務(wù)都有機(jī)會(huì)獲得一定的時(shí)間片運(yùn)行。而現(xiàn)在多核CPU的情況下,同一時(shí)間點(diǎn)可以執(zhí)行多個(gè)任務(wù)(并行),具體到這個(gè)任務(wù)在CPU哪個(gè)核上運(yùn)行,這個(gè)就跟操作系統(tǒng)和CPU本身的設(shè)計(jì)相關(guān)了。

我們假設(shè)一個(gè)極端的情況:在一臺(tái)單核計(jì)算機(jī)上只運(yùn)行2個(gè)程序,一個(gè)是我們的程序A,另一個(gè)是操作系統(tǒng)的程序B,每個(gè)程序是一個(gè)進(jìn)程。單核CPU的時(shí)候,A和B在CPU上交替運(yùn)行,具體的分配方式由操作系統(tǒng)來(lái)判斷,我這里猜測(cè)應(yīng)該跟A和B的線程數(shù)有關(guān),因?yàn)榫€程是CPU級(jí)別的,如果A有5個(gè)線程,B也有5個(gè)線程,那么CPU分配給A和B的時(shí)間應(yīng)該是1:1的;如果A增加到15個(gè)線程,CPU分配給A和B的時(shí)間應(yīng)該是3:1的比例。所以此時(shí)如果A的線程數(shù)多,那么獲得的CPU執(zhí)行次數(shù)就多,處理的速度也就快了。以上假設(shè)的前提是:

①A和B的優(yōu)先級(jí)相同,

②A和B都是只消耗CPU資源的程序。

如果相同的情況用一個(gè)雙核的計(jì)算機(jī)來(lái)處理又會(huì)是什么結(jié)果呢?假設(shè)這個(gè)雙核的計(jì)算機(jī)和操作系統(tǒng)比較傻,把A進(jìn)程分配到核1上,B進(jìn)程分配到核2上,那不管A有幾個(gè)線程,都是用核1來(lái)處理,那么時(shí)間肯定是一樣的。不過(guò)現(xiàn)實(shí)中應(yīng)該不會(huì)有這么傻的CPU和操作系統(tǒng)吧。所以趕緊還是會(huì)根據(jù)線程來(lái)進(jìn)行處理,當(dāng)A的線程比B多時(shí),會(huì)占用核2來(lái)處理A的線程。

剛才說(shuō)的是只消耗CPU資源的程序,但這樣的程序在實(shí)際應(yīng)用中基本上是沒(méi)有的,總會(huì)有跟資源打交道的。比如讀個(gè)文件,查個(gè)數(shù)據(jù)庫(kù),訪問(wèn)一個(gè)網(wǎng)絡(luò)連接等等。這個(gè)時(shí)候多線程才真正體現(xiàn)出優(yōu)勢(shì),在一個(gè)進(jìn)程中,線程a去讀文件,線程b去查數(shù)據(jù)庫(kù),線程c去訪問(wèn)網(wǎng)絡(luò),a先用一下CPU,然后去讀文件,此時(shí)CPU空閑,b就用一下,然后去查數(shù)據(jù)庫(kù),相對(duì)于讀文件、查數(shù)據(jù)庫(kù)、訪問(wèn)網(wǎng)絡(luò)來(lái)說(shuō)CPU計(jì)算的時(shí)間幾乎可以忽略不計(jì),所以多線程實(shí)際上是計(jì)算機(jī)多種資源的并行運(yùn)用,跟CPU有幾個(gè)核心是沒(méi)什么關(guān)系的。

cpu線程多有什么好處

理論上說(shuō),一個(gè)核心只能對(duì)應(yīng)一條線程。而Intel的超線程技術(shù),是利用CPU閑置的資源整合出的虛擬線程,就計(jì)算性能來(lái)說(shuō),是不及物理核心的實(shí)際線程好的。但是,卻可以在一定程度上提升處理器并行處理的能力。和亂序執(zhí)行一樣,超線程也是一種提高處理器使用效率的方案。

就你舉得例子來(lái)說(shuō)。當(dāng)一個(gè)核心處理A任務(wù)時(shí),并不是整個(gè)核心都在參與工作,還有很大的閑置資源,而這些資源可以用來(lái)對(duì)B、C、D中某一個(gè)或幾個(gè)進(jìn)行預(yù)處理等等工作。但是,超線程技術(shù)的一大問(wèn)題就是和主線程的爭(zhēng)奪。比如虛擬線程和物理實(shí)際線程都需要調(diào)用某一緩存單元時(shí),虛擬線程就會(huì)暫停工作;

但是,如果該單元先于物理線程被虛擬線程調(diào)用,那么,虛擬線程就會(huì)影響物理主線程的工作,反而降低了執(zhí)行效率。當(dāng)下新一代的超線程技術(shù)在這個(gè)問(wèn)題上做了比較好的完善,所以效果還是不錯(cuò)的,盡管無(wú)法和物理線程相比。當(dāng)下的一個(gè)雙核四線程的處理器,比如I3,在并行計(jì)算上,能超過(guò)物理三核心,和入門(mén)級(jí)四核心看齊,已經(jīng)很不錯(cuò)了。

非常好我支持^.^

(316) 98.4%

不好我反對(duì)

(5) 1.6%

( 發(fā)表人:龔婷 )

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 久久久噜噜噜www成人网 | 四虎国产永久在线精品免费观看 | 美女国产在线观看免费观看 | 国产va在线观看 | 日本高清视频色www在线观看 | 51视频在线观看免费国产 | 午夜一级毛片 | 日韩精品一区二区三区毛片 | 163黄页网又粗又长又舒服 | 久久三级网站 | 一级免费视频 | 色吧在线观看 | 亚洲午夜网站 | 国产午夜免费一区二区三区 | 色激情网| 色屁屁www免费看视频影院 | 亚洲欧美圣爱天天综合 | 欧美黄色高清 | 精品国产一二三区在线影院 | 1024你懂的在线播放欧日韩 | 成人影院在线观看视频 | 四虎影院中文字幕 | 黄a网站| 黄色在线网 | 午夜痒痒网 | 日韩久久精品视频 | 在线观看精品视频看看播放 | 羞羞爱爱 | 日本www在线观看 | 俺去俺来也www色官网免费的 | 色多多www视频在线观看免费 | 天天射天天爱天天干 | 久久天天躁夜夜躁狠狠躁2020 | q2002在线观看免费 | 97色在线视频观看香蕉 | www.亚洲.com | 三级网址在线观看 | 欧美人与zoxxxx视频 | 免费看国产黄色片 | 久久亚洲精品国产精品婷婷 | 中文字幕一区2区3区 |