偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

線程的來(lái)龍去脈,你了解嗎?

網(wǎng)絡(luò) 通信技術(shù)
進(jìn)程最近有些煩惱,整日愁眉苦臉的,拜訪內(nèi)存的時(shí)候也有點(diǎn)心不在焉。內(nèi)存是個(gè)明眼人,開門見山的問(wèn)道:“進(jìn)程啊,最近遇到啥問(wèn)題了?我看你最近情緒有點(diǎn)低落,有啥問(wèn)題你就直接說(shuō)出來(lái)嘛,我讓大家伙兒來(lái)一起幫你想想辦法?!?/div>

 [[280855]]

進(jìn)程最近有些煩惱,整日愁眉苦臉的,拜訪內(nèi)存的時(shí)候也有點(diǎn)心不在焉。

內(nèi)存是個(gè)明眼人,開門見山的問(wèn)道:“進(jìn)程啊,最近遇到啥問(wèn)題了?我看你最近情緒有點(diǎn)低落,有啥問(wèn)題你就直接說(shuō)出來(lái)嘛,我讓大家伙兒來(lái)一起幫你想想辦法。”

進(jìn)程嘆了口氣,說(shuō)道:“唉,最近不是說(shuō) CPU 單核頻率到瓶頸了嗎?人類就用多核芯來(lái)彌補(bǔ)單核處理器性能的不足,咱們的 CPU 不也升級(jí)到四核了嘛。”

“是啊,這是好事啊,現(xiàn)在最多能并行處理 4 個(gè)進(jìn)程,效率比以前高多了,這還不好嗎?”內(nèi)存疑惑的問(wèn)。

“好是好,可我每次上 CPU 運(yùn)行的時(shí)候,都忍不住去想,要是單核頻率不增加,我總的運(yùn)行的時(shí)間不還是沒(méi)有什么變化嗎?以后的應(yīng)用程序越來(lái)越大,越來(lái)越吃 CPU 資源,比如那些大型游戲進(jìn)程,在短時(shí)間內(nèi)需要進(jìn)行大量計(jì)算,靠單核撐不住怎么辦。不談以后,就說(shuō)說(shuō)我自己,我也想能夠早點(diǎn)運(yùn)行完,早點(diǎn)休息啊。”

tobe 注:很明顯單進(jìn)程的運(yùn)行時(shí)間是變小了的,不過(guò)這里主要強(qiáng)調(diào)的是進(jìn)程占用 CPU 的時(shí)間。

內(nèi)存點(diǎn)點(diǎn)頭,贊同道:“這個(gè)問(wèn)題我倒是沒(méi)想到,多核處理器對(duì)單個(gè)進(jìn)程確實(shí)不大友好。那咱得想辦法讓你能夠同時(shí)使用幾個(gè)核心。不過(guò)我一時(shí)間也想不到什么好辦法,還是和大家一起討論下吧。”

在討論會(huì)上,內(nèi)存向大家說(shuō)明了進(jìn)程現(xiàn)在遇到的問(wèn)題。

“一個(gè)進(jìn)程怎么并行?”進(jìn)程調(diào)度器第一個(gè)發(fā)出疑問(wèn):“我總不能把一個(gè)進(jìn)程放在四個(gè)核上吧,這樣不僅毫無(wú)意義,還阻礙了其他進(jìn)程的執(zhí)行。”

關(guān)于進(jìn)程調(diào)度器,可以看這篇文章:進(jìn)程調(diào)度,一個(gè)調(diào)度器的自白

操作系統(tǒng)見多識(shí)廣,說(shuō):“把進(jìn)程一次放在幾個(gè)核上運(yùn)行肯定是不可能的,我在想,咱們的目標(biāo),其實(shí)就是讓多個(gè)核心不沖突地幫助一個(gè)進(jìn)程運(yùn)行嘛。那我們就得把進(jìn)程「拆開」,然后放在幾個(gè)核上。”

操作系統(tǒng)一邊說(shuō),一邊畫了張圖:

線程的來(lái)龍去脈,你了解嗎?

進(jìn)程拆分

“你們看,假如說(shuō) fun1 和 fun2 這兩個(gè)函數(shù)互不關(guān)聯(lián),我們就可以讓兩個(gè)核同時(shí)執(zhí)行他們,這不就做到并行了嗎?”

“你的意思是說(shuō)把一個(gè)進(jìn)程拆成好幾個(gè)進(jìn)程?”

操作系統(tǒng)搖搖頭:“不是拆成多個(gè)進(jìn)程,進(jìn)程切換的代價(jià)太大了,再說(shuō)了,這些拆出來(lái)的函數(shù),他們是共用一個(gè)地址空間的,天生就能夠數(shù)據(jù)共享,如果拆成進(jìn)程,我們還得再考慮進(jìn)程之間的通信問(wèn)題,那多麻煩。不過(guò)為了跟進(jìn)程區(qū)分,就叫他們「線程(Thread)」吧”

進(jìn)程一驚,要把自己拆成線程?那自己不就沒(méi)了?趕忙問(wèn)道:“那我豈不是沒(méi)有存在的余地了?”

進(jìn)程調(diào)度器也慌了:“要是沒(méi)了進(jìn)程,我是不是也要被退休了?”

操作系統(tǒng)趕忙解釋道:你們誤會(huì)了,我要拆開的,是進(jìn)程的執(zhí)行流,進(jìn)程不是包含了資源所有權(quán)和執(zhí)行流嗎,資源所有權(quán)還是由進(jìn)程來(lái)把控,執(zhí)行流就分給幾個(gè)線程,就像這樣:

線程的來(lái)龍去脈,你了解嗎?

執(zhí)行流

tobe 注:在進(jìn)程模型里,進(jìn)程擁有對(duì)內(nèi)存、I/O 通道、I/O 設(shè)備和文件等資源的控制權(quán),稱之為「資源所有權(quán)」?!笀?zhí)行流」可以看做進(jìn)程在 CPU 上的執(zhí)行過(guò)程(直觀一點(diǎn)就是高級(jí)語(yǔ)言里的語(yǔ)句)。

進(jìn)程恍然大悟:“也就是說(shuō)我仍然是資源的掌控者,那些線程就相當(dāng)于幫我干活的小弟?”

“沒(méi)錯(cuò),而且從這種角度看,你本身還是一個(gè)單線程進(jìn)程。”

聽了這么久,內(nèi)存發(fā)問(wèn)了:“創(chuàng)建進(jìn)程的時(shí)候,我要保存進(jìn)程 PCB ,那為了創(chuàng)建線程,我是不是還得創(chuàng)建一個(gè) TCB(Thread Control Block)?”

“當(dāng)然了,線程切換需要的信息就得存在 TCB 里面。不過(guò)你放心,TCB 要比 PCB 小得多,所以線程切換會(huì)比進(jìn)程切換快很多。”

線程的來(lái)龍去脈,你了解嗎?

多線程進(jìn)程模型

大家聽完,紛紛覺得「線程」這個(gè)模型完美的解決了當(dāng)前的問(wèn)題,說(shuō)道:“要不我們現(xiàn)在就在操作系統(tǒng)里添上線程模型吧,早點(diǎn)解決進(jìn)程的問(wèn)題。”

但是操作系統(tǒng)面露難色,說(shuō):“線程模型只是我們的一個(gè)假想,貿(mào)然加進(jìn)來(lái)的話,可能會(huì)出問(wèn)題,系統(tǒng)崩潰可就不好了,還是要以穩(wěn)定為主。。。但這個(gè)模型還是得試的,要不我們先創(chuàng)建一個(gè)線程庫(kù),靠一個(gè)用戶級(jí)別的應(yīng)用程序——線程調(diào)度器來(lái)管理這些線程吧。”

進(jìn)程不解的問(wèn):“可是這樣的話,我還是被分配在一個(gè)單獨(dú)的核心上啊,即使是多線程,也只能在單核上運(yùn)行。再說(shuō)了,如果這些線程里有一個(gè)被阻塞,在你看來(lái),是整個(gè)進(jìn)程阻塞了,那其他線程,即使是就緒態(tài),也得不到 CPU 資源。”

操作系統(tǒng)仔細(xì)想了下,說(shuō):“沒(méi)辦法,用戶級(jí)線程確實(shí)有這兩個(gè)缺點(diǎn),但相比起讓內(nèi)核來(lái)實(shí)現(xiàn)線程,用戶級(jí)線程也有他的好處——線程切換不需要我進(jìn)行狀態(tài)轉(zhuǎn)換(從用戶態(tài)到內(nèi)核態(tài)),開銷小,除此之外,線程庫(kù)可以有多個(gè)調(diào)度算法,能夠?yàn)閼?yīng)用程序量身定做調(diào)度算法。”

tobe 注:有一種解決線程阻塞的方案叫 jacketing,他可以把一個(gè)產(chǎn)生阻塞的系統(tǒng)調(diào)用轉(zhuǎn)化成一個(gè)非阻塞的系統(tǒng)調(diào)用,比如說(shuō),不直接調(diào)用系統(tǒng)級(jí)的 I/O 例程,而是讓線程調(diào)用應(yīng)用級(jí)的 I/O jacket 例程,這個(gè) jacket 例程會(huì)檢查 I/O 設(shè)備是否忙,如果忙的話,就不執(zhí)行 I/O 操作,轉(zhuǎn)而調(diào)度其他線程,避免了因等待 I/O 設(shè)備而造成的進(jìn)程阻塞。

用戶級(jí)線程很快投入使用,Linux系統(tǒng)中的 pthread(POSIX thread)庫(kù)可以說(shuō)是大獲成功,操作系統(tǒng)做出了一項(xiàng)重大決定——支持內(nèi)核級(jí)線程。

內(nèi)核級(jí)線程解決了進(jìn)程并行的問(wèn)題,除此之外,由于內(nèi)核看得到線程的存在,一個(gè)線程阻塞了,位于同一個(gè)進(jìn)程中的其它線程仍然能夠運(yùn)行。

線程的來(lái)龍去脈,你了解嗎?

用戶級(jí)線程和內(nèi)核級(jí)線程

進(jìn)程表示現(xiàn)在自己十分開心。

 

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2018-02-24 13:21:02

2019-08-02 08:59:21

Token認(rèn)證服務(wù)器

2013-10-25 13:18:20

搜狗瀏覽器

2021-06-01 10:49:22

線程池Java開發(fā)

2021-06-03 14:23:57

線程線程池JAVA

2012-09-27 10:24:22

監(jiān)控機(jī)房

2012-09-06 17:54:28

2014-04-17 16:42:03

DevOps

2022-07-26 00:00:22

HTAP系統(tǒng)數(shù)據(jù)庫(kù)

2022-06-07 07:37:40

線程進(jìn)程開發(fā)

2018-11-21 09:32:10

IT云計(jì)算

2012-02-06 13:52:33

JavaScript

2025-01-03 08:09:15

2010-09-07 14:54:01

PPP幀中繼

2023-11-09 08:22:38

2023-07-26 07:41:53

Python線程狀態(tài)

2010-09-06 14:03:06

PPP身份認(rèn)證

2021-11-09 09:48:13

Logging python模塊

2018-02-02 10:56:19

屏蔽機(jī)房擴(kuò)建

2021-01-15 07:44:21

SQL注入攻擊黑客
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)