新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 您何時(shí)需要實(shí)時(shí)操作系統(tǒng)?

您何時(shí)需要實(shí)時(shí)操作系統(tǒng)?

作者: 時(shí)間:2012-12-21 來源:電子產(chǎn)品世界 收藏

  首先,我們必須考慮任務(wù)同步如何能造成阻塞,而阻塞反過來又如何導(dǎo)致優(yōu)先級(jí)反轉(zhuǎn)。我們假設(shè)有任務(wù) 1 和任務(wù) 2 兩個(gè)任務(wù)正在運(yùn)行,其中任務(wù) 1 具有較高的優(yōu)先級(jí)。如果任務(wù) 1 準(zhǔn)備執(zhí)行,但必須等待任務(wù) 2 完成運(yùn)行,就出現(xiàn)阻塞的狀況。同步化也會(huì)導(dǎo)致這種阻塞;例如,任務(wù) 1 和任務(wù) 2 共享由鎖或信號(hào)量控制的資源,任務(wù) 1 等待任務(wù) 2 對(duì)資源進(jìn)行解鎖?;蛘?,當(dāng)任務(wù) 1 請(qǐng)求目前正由任務(wù) 2 使用的服務(wù)時(shí),也會(huì)出現(xiàn)阻塞狀況。

本文引用地址:http://butianyuan.cn/article/140324.htm

  阻塞允許任務(wù) 2 運(yùn)行,直到任務(wù) 1 等待的條件出現(xiàn)為止(例如,任務(wù) 2 對(duì)兩個(gè)任務(wù)共享的資源解鎖)。此時(shí),任務(wù) 1 可以執(zhí)行。任務(wù) 1 須等待的總時(shí)間就是阻塞因數(shù)。如果任務(wù) 1 滿足一定的時(shí)間限制,該因數(shù)不會(huì)隨任何參數(shù)變化,如線程數(shù)或系統(tǒng)內(nèi)的輸入。換句話說,必須限制阻塞因數(shù)。

  現(xiàn)在,我們引入第三個(gè)任務(wù)(任務(wù) 3)——其優(yōu)先級(jí)比任務(wù) 2 的高但比任務(wù) 1 的低(參見圖 1)。當(dāng)任務(wù) 2 正在運(yùn)行時(shí),任務(wù) 3 準(zhǔn)備運(yùn)行,它會(huì)搶占任務(wù) 2,而任務(wù) 2 在任務(wù) 3 阻塞或完成前都無法運(yùn)行。當(dāng)然,這樣會(huì)增加任務(wù) 1 的阻塞因數(shù);也就是說,它會(huì)進(jìn)一步延遲任務(wù) 1 的運(yùn)行。搶占導(dǎo)致的總延遲就是優(yōu)先級(jí)反轉(zhuǎn)。  


圖 1. 當(dāng)任務(wù) 3 搶占任務(wù) 2 時(shí),任務(wù) 1 等待任務(wù) 2 完成運(yùn)行。這進(jìn)一步延遲了任務(wù) 1 的運(yùn)行?! ?/center>

圖 2. 任務(wù) 2 繼承了任務(wù) 1 的優(yōu)先級(jí),因而阻止了任務(wù) 3 搶占任務(wù) 2。
任務(wù) 3 不再延遲任務(wù) 1 的運(yùn)行。

  實(shí)際上,可以有多個(gè)任務(wù)以這種方式搶占任務(wù) 2,從而導(dǎo)致連續(xù)阻塞的結(jié)果。在這種情況下,任務(wù) 2 可能被無限期地?fù)屨迹a(chǎn)生無限期的優(yōu)先級(jí)反轉(zhuǎn),導(dǎo)致任務(wù) 1 無法滿足其最后期限。

  這時(shí)優(yōu)先級(jí)繼承就會(huì)發(fā)揮作用。如果我們回到上述假設(shè)中,在同步期內(nèi)使任務(wù) 2 以任務(wù) 1 的優(yōu)先級(jí)運(yùn)行,那么任務(wù) 3 就無法搶占任務(wù) 2,這樣就能避免優(yōu)先級(jí)反轉(zhuǎn)的產(chǎn)生(參見圖 2)。

  分區(qū)調(diào)度程序

  保證資源的可用性對(duì)許多系統(tǒng)都至關(guān)重要。如果某個(gè)關(guān)鍵子系統(tǒng)(如 周期)丟失,用戶就無法獲取該子系統(tǒng)提供的服務(wù)。例如,在拒絕服務(wù) (DoS) 攻擊中,惡意用戶會(huì)利用需要優(yōu)先級(jí)高的進(jìn)程處理的請(qǐng)求攻擊系統(tǒng)。該進(jìn)程會(huì)使 過載并導(dǎo)致其他進(jìn)程的 周期匱乏,從而使用戶無法使用系統(tǒng)。

  安全漏洞并非是導(dǎo)致進(jìn)程匱乏的唯一原因。在許多情況下,增加系統(tǒng)的軟件功能都會(huì)導(dǎo)致系統(tǒng)“瀕臨危險(xiǎn)邊緣”,導(dǎo)致現(xiàn)有應(yīng)用程序的 CPU 時(shí)間匱乏。及時(shí)運(yùn)行的應(yīng)用程序或服務(wù)不再按預(yù)期或要求的那樣迅速響應(yīng)。根據(jù)以往經(jīng)驗(yàn),解決這一問題的唯一途徑是更新硬件或重新編碼(重新設(shè)計(jì)軟件),但這兩種方法都不盡如人意。

  為解決這些問題,系統(tǒng)設(shè)計(jì)人員需要一種可通過硬件或軟件執(zhí)行 CPU 預(yù)算的分區(qū)計(jì)劃,以阻止進(jìn)程或線程獨(dú)占其他進(jìn)程或線程所需的CPU 周期。因?yàn)閷?shí)時(shí)操作系統(tǒng)已經(jīng)提供了對(duì) CPU、內(nèi)存和其他計(jì)算資源的集中訪問,所以它是執(zhí)行 CPU 分區(qū)預(yù)算的最佳選擇。

  某些實(shí)時(shí)操作系統(tǒng)提供了固定分區(qū)調(diào)度算法。系統(tǒng)設(shè)計(jì)人員能利用這種調(diào)度算法對(duì)任務(wù)進(jìn)行分組或分區(qū),然后為每個(gè)分區(qū)分配一定比例的 CPU 時(shí)間。利用這種方法,任何既定分區(qū)內(nèi)的任務(wù)消耗的 CPU 時(shí)間都不會(huì)超過該分區(qū)靜態(tài)確定的比例。例如,我們假設(shè)為分區(qū)分配了 30% 的 CPU。如果該分區(qū)內(nèi)的進(jìn)程隨后成為拒絕服務(wù)攻擊的目標(biāo),它會(huì)消耗不超過 30% 的 CPU 時(shí)間。這種分配限制確保了其他進(jìn)程保持各自的可用性;例如,它能保證可訪問的用戶界面(如遠(yuǎn)程終端)。因此,操作人員能訪問系統(tǒng)并解決問題——無需按動(dòng)復(fù)位開關(guān)。

  但是,這種方法也存在問題。由于調(diào)度算法是固定的,因此一個(gè)分區(qū)無法使用分配到另一個(gè)分區(qū)的 CPU 周期,即使這些分區(qū)未使用其分配的周期。這種方法會(huì)浪費(fèi) CPU 周期并阻止系統(tǒng)處理高峰需求。因此,系統(tǒng)設(shè)計(jì)人員必須使用更昂貴的處理器應(yīng)對(duì)運(yùn)行緩慢的系統(tǒng),或限制系統(tǒng)能支持的功能數(shù)量。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


關(guān)鍵詞: QNX 嵌入式 CPU

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉