性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

程序小白
認(rèn)證:優(yōu)質(zhì)創(chuàng)作者
所在專題目錄 查看專題
閑話內(nèi)核——一切皆為程序片服務(wù)
可搶占式內(nèi)核帶來(lái)的挑戰(zhàn)——并發(fā)
裸奔、事件驅(qū)動(dòng)、傳統(tǒng)多任務(wù)到底孰優(yōu)孰劣?
RTOS中的斷言機(jī)制——assert
作者動(dòng)態(tài) 更多
基于stm32采用PWM驅(qū)動(dòng)伺服控制器學(xué)習(xí)筆記
5天前
基于STM32驅(qū)動(dòng)TM1638學(xué)習(xí)筆記——軟件篇
04-19 12:42
基于TM1638驅(qū)動(dòng)8位數(shù)碼管設(shè)計(jì)分享
02-24 11:26
RT-Thread驅(qū)動(dòng)之路: Studio創(chuàng)建FAL分區(qū)⑤
01-02 08:30
RT-Thread驅(qū)動(dòng)之路: Studio 掛載通用SPI flash④
2024-12-23 13:41

可搶占式內(nèi)核帶來(lái)的挑戰(zhàn)——并發(fā)

      并發(fā)的本質(zhì):并發(fā)并不是并行,尤其在單核處理器中使用多任務(wù)的程序構(gòu)架,任務(wù)被交替的執(zhí)行,表現(xiàn)出的一種現(xiàn)象仿佛是并行執(zhí)行,實(shí)際是在進(jìn)程間來(lái)回切換任務(wù)執(zhí)行,雖然會(huì)有一定的開(kāi)銷(xiāo),但是交替執(zhí)行在處理效率和程序結(jié)構(gòu)上還是帶來(lái)了很大的好處。

      搶占式的內(nèi)核有它的優(yōu)勢(shì),但并不是所有的應(yīng)用場(chǎng)景都必須選擇搶占式的內(nèi)核,不選擇可搶占式內(nèi)核的理由:

潘多拉魔盒之并發(fā):

      假如你先擇了搶占式內(nèi)核,那么你在程序設(shè)計(jì)和調(diào)試的問(wèn)題上,就會(huì)像是打開(kāi)了潘多拉魔盒一樣。每個(gè)指令之間都可以互相搶占,由于CPU的資源是被共享的,最顯而易見(jiàn)的共享資源是誰(shuí)--全局變量啊

      所以引入了并發(fā)的問(wèn)題。然而并不是所有的共享資源都這樣的顯而易見(jiàn),有的也許比你想象的更具有偽裝性,例如:來(lái)自于標(biāo)準(zhǔn)庫(kù)或者其他源代碼的非可重入代碼。這是搶占式內(nèi)核最大的問(wèn)題,為了解決這一問(wèn)題任務(wù)間引入了同步與通信機(jī)制來(lái)為解決這一問(wèn)題提供工具。

      吾之拙見(jiàn):此處并發(fā)是一種病態(tài),如何發(fā)現(xiàn)隱藏的資源共享,是解決并發(fā)問(wèn)題的關(guān)鍵。

可搶占式內(nèi)核的空間開(kāi)銷(xiāo):

      需要更多的堆??臻g,因?yàn)樗械膿屨继幚矶际窃诙褩V羞M(jìn)行,也就是要消耗更多的RAM。

可搶占式內(nèi)核的時(shí)間開(kāi)銷(xiāo):

      任務(wù)的切換,調(diào)度的啟用,更多的臨界區(qū)被設(shè)定,這些都需要額外的CPU時(shí)間開(kāi)銷(xiāo)。

在程序設(shè)計(jì)中,開(kāi)發(fā)者容易遇到的由于并發(fā)所引入的問(wèn)題:

競(jìng)爭(zhēng)條件:何為競(jìng)爭(zhēng),就是兩個(gè)優(yōu)先級(jí)不同的任務(wù)同時(shí)對(duì)某一資源進(jìn)行操作時(shí),由于任務(wù)的優(yōu)先級(jí)不同,當(dāng)一個(gè)任務(wù)在操作到一半的時(shí)候,被另一個(gè)任務(wù)搶占然后操作該資源,最后而得到的一個(gè)異常的結(jié)果。

死鎖:兩個(gè)或兩個(gè)以上的進(jìn)程因其中的每個(gè)進(jìn)程都在等待其他進(jìn)程做完某些事情而不能繼續(xù)執(zhí)行,這種情形稱為死鎖,舉個(gè)栗子,任務(wù)A持有小a資源,在運(yùn)行過(guò)程中要申請(qǐng)B任務(wù)持有小b的資源,因?yàn)榈貌坏蕉蛔枞@時(shí)候B任務(wù)開(kāi)始運(yùn)行, 由于需要申請(qǐng)A任務(wù)的小a資源因?yàn)榈貌坏?,而被阻塞,這時(shí)候雙方都在等待對(duì)方釋放資源而被阻塞,都得不到運(yùn)行,形成了死鎖。

優(yōu)先級(jí)倒置:這也是因?yàn)橘Y源的持有導(dǎo)致的,任務(wù)的本質(zhì)也就是資源管理,當(dāng)高優(yōu)先級(jí)的任務(wù)搶占運(yùn)行時(shí),由于需要申請(qǐng)低優(yōu)先級(jí)的任務(wù)中的資源而被阻塞,這時(shí)候,按道理會(huì)啟用低優(yōu)先級(jí)的任務(wù)進(jìn)行執(zhí)行,突然來(lái)了一個(gè)中優(yōu)先級(jí)的任務(wù),結(jié)果低優(yōu)先級(jí)任務(wù)被強(qiáng)占,高優(yōu)先級(jí)任務(wù)被阻塞,只有中優(yōu)先級(jí)任務(wù)被運(yùn)行。

饑餓:這個(gè)最好理解,就是由于優(yōu)先級(jí)任務(wù)設(shè)置的不合適,高優(yōu)先級(jí)任務(wù)長(zhǎng)時(shí)間霸占CPU,導(dǎo)致低優(yōu)先級(jí)任務(wù)無(wú)法運(yùn)行。

不確定性:當(dāng)系統(tǒng)內(nèi)核從合作式變?yōu)閾屨际絻?nèi)核,任務(wù)的執(zhí)行就變得異常復(fù)雜,某一時(shí)刻發(fā)生的一個(gè)事件可能會(huì)系統(tǒng)任務(wù)發(fā)生強(qiáng)占,由于事件的發(fā)生存在不確定性,所以任務(wù)的運(yùn)行順序也就變得越來(lái)越模糊,只能通過(guò)運(yùn)行的結(jié)果,任務(wù)被切換的順序去分析某個(gè)事件在某個(gè)時(shí)刻的發(fā)生是否合理。

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺(jué)得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 6
收藏 4
關(guān)注 150
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧