實(shí)時(shí)操作系統(tǒng) 包括硬實(shí)時(shí)和軟實(shí)時(shí)的區(qū)別_第1頁(yè)
實(shí)時(shí)操作系統(tǒng) 包括硬實(shí)時(shí)和軟實(shí)時(shí)的區(qū)別_第2頁(yè)
實(shí)時(shí)操作系統(tǒng) 包括硬實(shí)時(shí)和軟實(shí)時(shí)的區(qū)別_第3頁(yè)
實(shí)時(shí)操作系統(tǒng) 包括硬實(shí)時(shí)和軟實(shí)時(shí)的區(qū)別_第4頁(yè)
實(shí)時(shí)操作系統(tǒng) 包括硬實(shí)時(shí)和軟實(shí)時(shí)的區(qū)別_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流實(shí)時(shí)操作系統(tǒng) 包括硬實(shí)時(shí)和軟實(shí)時(shí)的區(qū)別.精品文檔.一什么是真正的實(shí)時(shí)操作系統(tǒng)做嵌入式系統(tǒng)開(kāi)發(fā)有一段時(shí)間了,做過(guò)用于手機(jī)平臺(tái)的嵌入式Linux,也接觸過(guò)用于交換機(jī)、媒體網(wǎng)關(guān)平臺(tái)的VxWorks,實(shí)際應(yīng)用后回過(guò)頭來(lái)看理論,才發(fā)現(xiàn)自己理解的膚淺,也發(fā)現(xiàn)CSDN上好多同學(xué)們都對(duì)實(shí)時(shí)、嵌入式這些概念似懂非懂,畢竟如果不做類(lèi)似的產(chǎn)品,平時(shí)接觸的機(jī)會(huì)很少,即使做嵌入式產(chǎn)品開(kāi)發(fā),基本也是只管調(diào)用Platformteam封裝好的API。所以在此總結(jié)一下這些概念,加深自己的理解,同時(shí)也給新手入門(mén),歡迎大家拍磚,爭(zhēng)取寫(xiě)個(gè)連載,本文先總結(jié)一下實(shí)時(shí)的概念,什么是真正的

2、實(shí)時(shí)操作系統(tǒng)?1. 首先說(shuō)一下實(shí)時(shí)的定義及要求:參見(jiàn) Donal Gillies 在 Realtime Computing FAQ 中提出定義:實(shí)時(shí)系統(tǒng)指系統(tǒng)的計(jì)算正確性不僅取決于計(jì)算的邏輯正確性,還取決于產(chǎn)生結(jié)果的時(shí)間。如果未滿(mǎn)足系統(tǒng)的時(shí)間約束,則認(rèn)為系統(tǒng)失效。/faqs/realtime-computing/faq/一個(gè)實(shí)時(shí)操作系統(tǒng)面對(duì)變化的負(fù)載(從最小到最壞的情況)時(shí)必須確定性地保證滿(mǎn)足時(shí)間要求。請(qǐng)注意,必須要滿(mǎn)足確定性,而不是要求速度足夠快!例如,如果使用足夠強(qiáng)大的CPU,Windows在CPU空閑時(shí)可以提供非常短的典型中斷響應(yīng),但是,當(dāng)某些后臺(tái)任務(wù)

3、正在運(yùn)行時(shí),有時(shí)候響應(yīng)會(huì)變得非常漫長(zhǎng),以至于某一個(gè)簡(jiǎn)單的讀取文件的任務(wù)會(huì)長(zhǎng)時(shí)間無(wú)響應(yīng),甚至直接掛死。這是一個(gè)基本的問(wèn)題:并不是Windows不夠快或效率不夠高,而是因?yàn)樗荒芴峁┐_定性,所以,Windows不是一個(gè)實(shí)時(shí)操作系統(tǒng)。根據(jù)實(shí)際應(yīng)用,可以選擇采用硬實(shí)時(shí)操作系統(tǒng)或軟實(shí)時(shí)操作系統(tǒng),硬實(shí)時(shí)當(dāng)然比軟實(shí)時(shí)好,但是,如果你的公司正在準(zhǔn)備開(kāi)發(fā)一款商用軟件,那請(qǐng)你注意了,業(yè)界公認(rèn)比較好的VxWorks(WindRiver開(kāi)發(fā)),會(huì)花光你本來(lái)就很少的銀子,而軟實(shí)時(shí)的操作系統(tǒng),如某些實(shí)時(shí)Linux,一般是開(kāi)源免費(fèi)的,我們公司本來(lái)的產(chǎn)品就是基于VxWorks的,現(xiàn)在業(yè)界都在CostReduction,為了響

4、應(yīng)號(hào)召,正在調(diào)研如何把平臺(tái)換成免費(fèi)的嵌入式實(shí)時(shí)Linux。同學(xué)們,如何選擇,自己考慮吧:-)硬實(shí)時(shí) - 代表產(chǎn)品 VxWorks舉一個(gè)經(jīng)常使用的實(shí)例,中高檔汽車(chē)中使用的氣囊。當(dāng)報(bào)告車(chē)輛碰撞的傳感器中斷CPU后,操作系統(tǒng)應(yīng)快速地分配展開(kāi)氣囊的任務(wù),并且不允許任何其他非實(shí)時(shí)處理進(jìn)行干擾,晚一秒鐘展開(kāi)氣囊比沒(méi)有氣囊的情況更糟糕,這就是一個(gè)典型的必須使用硬實(shí)時(shí)的系統(tǒng)。硬實(shí)時(shí)系統(tǒng)指系統(tǒng)要有確保的最壞情況下的服務(wù)時(shí)間,即對(duì)于事件的響應(yīng)時(shí)間的截止期限是無(wú)論如何都必須得到滿(mǎn)足。軟實(shí)時(shí) - 代表產(chǎn)品 軟實(shí)時(shí)Linux再舉一個(gè)實(shí)例,IPTV數(shù)字電視機(jī)頂盒,需要實(shí)時(shí)的處理(解碼)視頻流,如果丟失了一個(gè)或幾個(gè)視頻幀,

5、顯然會(huì)造成視頻的品質(zhì)更差,但是只要做過(guò)簡(jiǎn)單的抖動(dòng)處理的系統(tǒng),丟失幾個(gè)視頻幀就不會(huì)對(duì)整個(gè)系統(tǒng)造成不可挽救的影響。軟實(shí)時(shí)系統(tǒng)就是那些從統(tǒng)計(jì)的角度來(lái)說(shuō),一個(gè)任務(wù)能夠得到有確保的處理時(shí)間,到達(dá)系統(tǒng)的事件也能夠在截止期限到來(lái)之前得到處理,但違反截止期限并不會(huì)帶來(lái)致命的錯(cuò)誤。-請(qǐng)注意:講到這里,想花點(diǎn)墨水區(qū)分一下實(shí)時(shí)和嵌入式的概念,因?yàn)楣P者也長(zhǎng)時(shí)間把這兩者混為一談。實(shí)時(shí)操作系統(tǒng)的概念上文已經(jīng)講的很清楚了,主要就是要能確定性的滿(mǎn)足時(shí)間要求。嵌入式系統(tǒng)很難下一個(gè)定義,有興趣的可以百科一下“嵌入式系統(tǒng)”,一般可以認(rèn)為是板子或芯片上軟硬件的總和,嵌入式系統(tǒng)一定要對(duì)實(shí)時(shí)任務(wù)有很強(qiáng)的支持能力,所以一般嵌入式系統(tǒng)都會(huì)采

6、用實(shí)時(shí)操作系統(tǒng),根據(jù)不同應(yīng)用,選擇采用硬實(shí)時(shí)或軟實(shí)時(shí)。-2. 如何衡量一個(gè)實(shí)時(shí)操作系統(tǒng)的實(shí)時(shí)性能?主要有以下兩個(gè)重要指標(biāo): 指標(biāo)1、中斷響應(yīng)時(shí)間(可屏蔽中斷)計(jì)算機(jī)接收到中斷信號(hào)到操作系統(tǒng)作出響應(yīng),并完成切換轉(zhuǎn)入中斷服務(wù)程序的時(shí)間。對(duì)于搶先式內(nèi)核,要先調(diào)用一個(gè)特定的函數(shù),該函數(shù)通知內(nèi)核即將進(jìn)行中斷服務(wù),使得內(nèi)核可以跟蹤中斷的嵌套。搶先式內(nèi)核的中斷響應(yīng)時(shí)間由下式給出:中斷響應(yīng)時(shí)間關(guān)中斷的最長(zhǎng)時(shí)間+保護(hù)CPU 內(nèi)部寄存器的時(shí)間+進(jìn)入中斷服務(wù)函數(shù)的執(zhí)行時(shí)間+開(kāi)始執(zhí)行中斷服務(wù)例程(ISR)的第一條指令時(shí)間請(qǐng)注意:中斷響應(yīng)時(shí)間是系統(tǒng)在最壞情況下響應(yīng)中斷的時(shí)間,某系統(tǒng)100次中有99次在50ms之內(nèi)響應(yīng)中

7、斷,只有一次響應(yīng)中斷的時(shí)間是250ms,只能認(rèn)為中斷響應(yīng)時(shí)間是250ms。 指標(biāo)2、任務(wù)切換時(shí)間除為中斷處理提供確定性外,實(shí)時(shí)處理也需要支持周期性間隔的任務(wù)調(diào)度。大量控制系統(tǒng)要求周期性采樣與處理。某個(gè)特定任務(wù)必須按照固定的周期(p)執(zhí)行,從而確保系統(tǒng)的穩(wěn)定性??紤]一下汽車(chē)的防抱死系統(tǒng)(ABS)。控制系統(tǒng)對(duì)車(chē)輛的每個(gè)車(chē)輪的轉(zhuǎn)速進(jìn)行采樣(每秒最多 20次)并控制每個(gè)制動(dòng)器的壓力(防止它鎖死)。為了保持控制系統(tǒng)的正常工作,傳感器的采樣與控制必須按照一定的周期間隔。這意味著必須搶占其他處理,以便ABS 任務(wù)能按照期望的周期執(zhí)行。當(dāng)多任務(wù)內(nèi)核決定運(yùn)行另外的任務(wù)時(shí),它把正在運(yùn)行任務(wù)的當(dāng)前狀態(tài)(即CPU寄存

8、器中的全部?jī)?nèi)容)保存到任務(wù)自己的棧區(qū)之中。然后把下一個(gè)將要運(yùn)行的任務(wù)的當(dāng)前狀態(tài)從該任務(wù)的棧中重新裝入CPU的寄存器,并開(kāi)始下一個(gè)任務(wù)的運(yùn)行。這個(gè)過(guò)程就稱(chēng)為任務(wù)切換。做任務(wù)切換所需要的時(shí)間取決于CPU 有多少寄存器要入棧。CPU的寄存器越多,額外負(fù)荷就越重。 系統(tǒng)實(shí)時(shí)性能重要指標(biāo)的典型值-                  VxWorks    uC/OS-II        RT-Linux2.0

9、  QNX6  硬件平臺(tái)  MC68000  33MHz-486  60MHz-486   33MHz-486  任務(wù)切換  3.8us          < 9us            不詳           

10、0;    12.57us  中斷響應(yīng)  < 3us          < 7.5us         25us                7.54us  -參考文獻(xiàn):4種實(shí)時(shí)操作系統(tǒng)實(shí)時(shí)性的分析對(duì)比 - 百度一下可以搜到3. 實(shí)時(shí)操作系統(tǒng)的核心 - 任務(wù)調(diào)度(VxWorks)既然實(shí)

11、時(shí)性對(duì)于實(shí)時(shí)操作系統(tǒng)如此重要,同學(xué)們,我們下面就來(lái)學(xué)習(xí)一下實(shí)現(xiàn)實(shí)時(shí)性的核心模塊 -任務(wù)調(diào)度。筆者所在的公司花了大把銀子購(gòu)買(mǎi)風(fēng)河的VxWorks,但是為了實(shí)現(xiàn)自己的可控性,除了任務(wù)調(diào)度模塊以外全部重寫(xiě),包括內(nèi)存管理、文件管理等其他核心模塊,但唯獨(dú)任務(wù)調(diào)度模塊除外,這可是人家的壓箱底法寶:-)構(gòu)成應(yīng)用軟件系統(tǒng)的程序集合中,獨(dú)立的、相互作用的程序單元,在其執(zhí)行時(shí)稱(chēng)之為任務(wù),從系統(tǒng)的角度來(lái)看,任務(wù)是競(jìng)爭(zhēng)系統(tǒng)資源的最小運(yùn)行單元。單個(gè)CPU中,多任務(wù)機(jī)制制造了一個(gè)多個(gè)任務(wù)同時(shí)執(zhí)行的假象。其實(shí)系統(tǒng)只是根據(jù)一個(gè)多任務(wù)調(diào)度算法,將內(nèi)核插入到這些任務(wù)中執(zhí)行。實(shí)時(shí)系統(tǒng)VxWorks的一個(gè)任務(wù)可有多種狀態(tài),但最基本的

12、狀態(tài)有以下四種:1) 就緒態(tài)(Ready):任務(wù)只等待系統(tǒng)分配CUP資源。2) 掛起態(tài)(Pend):任務(wù)需等待某些不可利用的資源而被阻塞。3) 休眠態(tài)(Sleep):如果系統(tǒng)不需要某一個(gè)任務(wù)工作,則這個(gè)任務(wù)處于休眠狀態(tài)。4) 延遲態(tài)(Delay):任務(wù)被延遲時(shí)所處的狀態(tài)。大家可以在網(wǎng)上搜一下VxWorks任務(wù)調(diào)度的相關(guān)文章,一般都會(huì)配狀態(tài)機(jī)圖。請(qǐng)注意:任務(wù)(task)、進(jìn)程(process)、線(xiàn)程(thread)等概念相互聯(lián)系又相互區(qū)別,因?yàn)椴皇潜疚牡闹攸c(diǎn),這里不多解釋?zhuān)绻朐敿?xì)了解推薦看一看“Windows Kernel Programming”。在VxWorks中,因?yàn)槊總€(gè)任務(wù)沒(méi)有自己獨(dú)

13、立的虛擬內(nèi)存空間,可以把任務(wù)理解為線(xiàn)程。 -任務(wù)由系統(tǒng)內(nèi)核調(diào)度運(yùn)行一段固定長(zhǎng)度的時(shí)間,稱(chēng)為時(shí)間片。調(diào)度是指為任務(wù)分配資源和時(shí)間,使系統(tǒng)滿(mǎn)足特定的性能要求。調(diào)度算法的目的是在正常情況下,盡可能滿(mǎn)足所有任務(wù)的時(shí)限:在峰值負(fù)載條件下,保證強(qiáng)實(shí)時(shí)任務(wù)滿(mǎn)足時(shí)限。因?yàn)闀r(shí)限是區(qū)分實(shí)時(shí)系統(tǒng)和非實(shí)時(shí)系統(tǒng)的關(guān)鍵因素,因此調(diào)度算法是實(shí)時(shí)系統(tǒng)的基本問(wèn)題。實(shí)時(shí)操作系統(tǒng)所具有的運(yùn)行性能,如吞吐量的大小、周轉(zhuǎn)時(shí)間的長(zhǎng)短、相應(yīng)的及時(shí)性和可預(yù)測(cè)性等在很大程度上都取決于實(shí)時(shí)調(diào)度。進(jìn)程調(diào)度可采用下述兩種方式:1. 非搶占方式。采用這種調(diào)度方式,一旦把處理機(jī)分配給某進(jìn)程后,便讓該進(jìn)程一直執(zhí)行,直到該進(jìn)程完成或發(fā)生某事件而被阻塞,才再

14、把處理機(jī)分配給其他進(jìn)程,決不允許某進(jìn)程搶占已經(jīng)分配出去的處理機(jī)。顯然它難于滿(mǎn)足緊急任務(wù)的要求,實(shí)時(shí)系統(tǒng)中不宜采用這種調(diào)度方式。2. 搶占方式。允許調(diào)度程序根據(jù)某種原則,去停止某個(gè)正在執(zhí)行的進(jìn)程,將已分配給該進(jìn)程的處理機(jī),重新分配給另一進(jìn)程。搶占的原則有:- 時(shí)間片原則。各進(jìn)程按時(shí)間片運(yùn)行,當(dāng)一個(gè)時(shí)間片用完后,便停止該進(jìn)程的執(zhí)行而重新進(jìn)行調(diào)度。-優(yōu)先權(quán)原則。當(dāng)一個(gè)進(jìn)程到來(lái)時(shí),如果其優(yōu)先級(jí)比正在執(zhí)行的進(jìn)程的優(yōu)先級(jí)高,便停止正在執(zhí)行的進(jìn)程,將處理機(jī)分配給優(yōu)先級(jí)高的進(jìn)程,使之執(zhí)行。實(shí)時(shí)系統(tǒng)中一般采用基于優(yōu)先級(jí)的搶占式調(diào)度和輪轉(zhuǎn)調(diào)度的進(jìn)程調(diào)度和中程調(diào)度相結(jié)合的調(diào)度策略。因此既可具有較大的靈活性,又能獲得

15、極小的調(diào)度延遲。VxWorks的wind內(nèi)核缺省調(diào)度機(jī)制為基于優(yōu)先級(jí)的搶占式調(diào)度。采用這種機(jī)制時(shí),系統(tǒng)把處理機(jī)分配給優(yōu)先級(jí)最高的進(jìn)程,使之執(zhí)行。一旦出現(xiàn)了另一個(gè)優(yōu)先級(jí)更高的進(jìn)程時(shí),進(jìn)程調(diào)度程序剝奪當(dāng)前任務(wù)的執(zhí)行,將處理機(jī)分配給高優(yōu)先級(jí)任務(wù)。而在相同優(yōu)先級(jí)的多個(gè)任務(wù)之間,采用時(shí)間片輪轉(zhuǎn)調(diào)度機(jī)制。采用這種機(jī)制時(shí),當(dāng)一個(gè)任務(wù)到達(dá)時(shí),它被排在輪轉(zhuǎn)隊(duì)列的后面,等待分配給自己的時(shí)間片的到來(lái),如果在時(shí)間片內(nèi)沒(méi)有結(jié)束,則再等待屬于自己的時(shí)間片的到來(lái),直到任務(wù)完成。- 優(yōu)先級(jí)搶占式    采用基于優(yōu)先級(jí)的搶占式調(diào)度,系統(tǒng)中每個(gè)任務(wù)都有一個(gè)介于最高0到最低255之間的優(yōu)先級(jí)。任一時(shí)刻,系統(tǒng)內(nèi)核

16、一旦發(fā)現(xiàn)一個(gè)優(yōu)先級(jí)更高的任務(wù)轉(zhuǎn)變?yōu)榫途w態(tài),內(nèi)核就保存當(dāng)前任務(wù)的上下文并把當(dāng)前任務(wù)狀態(tài)轉(zhuǎn)換為阻塞態(tài),同時(shí)切換到這個(gè)高優(yōu)先級(jí)任務(wù)的上下文執(zhí)行。- 輪轉(zhuǎn)調(diào)度算法    采用輪轉(zhuǎn)調(diào)度算法,系統(tǒng)讓處于就緒態(tài)的優(yōu)先級(jí)相同的一組任務(wù)依次輪流執(zhí)行預(yù)先確定長(zhǎng)度的時(shí)間片。這是一種處理機(jī)平均分配的方法。如果不使用輪轉(zhuǎn)調(diào)度算法,優(yōu)先級(jí)相同的一組任務(wù)中第一個(gè)獲得處理機(jī)的任務(wù)將不會(huì)被阻塞而獨(dú)占處理機(jī),如果沒(méi)有阻塞或其他情況發(fā)生,它不會(huì)放棄處理機(jī)的使用權(quán)。- 搶占調(diào)度與輪轉(zhuǎn)調(diào)度混合方式    有時(shí),基于優(yōu)先級(jí)的搶占式調(diào)度可與輪轉(zhuǎn)調(diào)度相結(jié)合。當(dāng)優(yōu)先級(jí)相同的一組任務(wù)依次輪流平均分配處理機(jī)

17、時(shí),若有高優(yōu)先級(jí)的任務(wù)轉(zhuǎn)變?yōu)榫途w態(tài)則可搶占該組任務(wù)。直到再一次符合執(zhí)行條件時(shí),該組任務(wù)才可再次共享處理機(jī)。    為了任務(wù)控制的靈活性,VxWorks內(nèi)核還提供了動(dòng)態(tài)優(yōu)先級(jí)機(jī)制,任務(wù)的優(yōu)先級(jí)在運(yùn)行期間可動(dòng)態(tài)地變化。同時(shí),為了防止優(yōu)先級(jí)反轉(zhuǎn),還具有優(yōu)先級(jí)繼承機(jī)制,通過(guò)使用互斥信號(hào)量可以防止高優(yōu)先級(jí)的任務(wù)被迫等待一段不確定時(shí)間,直到一個(gè)低優(yōu)先級(jí)任務(wù)完成。參考文獻(xiàn):實(shí)時(shí)操作系統(tǒng)VxWorks的內(nèi)核任務(wù)調(diào)度研究 - 百度一下可以搜到4. Linux的任務(wù)調(diào)度通用Linux系統(tǒng)支持實(shí)時(shí)和非實(shí)時(shí)兩種進(jìn)程,實(shí)時(shí)進(jìn)程相對(duì)于普通進(jìn)程具有絕對(duì)的優(yōu)先級(jí)。對(duì)應(yīng)地,實(shí)時(shí)進(jìn)程采用SCHED_FIFO或

18、者SCHED_RR調(diào)度策略,普通的進(jìn)程采用SCHED_OTHER調(diào)度策略。在調(diào)度算法的實(shí)現(xiàn)上,Linux中的每個(gè)任務(wù)有四個(gè)與調(diào)度相關(guān)的參數(shù),它們是rt_priority、policy、priority(nice)、counter。調(diào)度程序根據(jù)這四個(gè)參數(shù)進(jìn)行進(jìn)程調(diào)度。在SCHED_OTHER調(diào)度策略中,調(diào)度器總是選擇那個(gè)priority+counter值最大的進(jìn)程來(lái)調(diào)度執(zhí)行。從邏輯上分析SCHED_OTHER調(diào)度策略存在著調(diào)度周期(epoch),在每一個(gè)調(diào)度周期中,一個(gè)進(jìn)程的priority和counter值的大小影響了當(dāng)前時(shí)刻應(yīng)該調(diào)度哪一個(gè)進(jìn)程來(lái)執(zhí)行,其中priority是一個(gè)固定不變的值,在

19、進(jìn)程創(chuàng)建時(shí)就已經(jīng)確定,它代表了該進(jìn)程的優(yōu)先級(jí),也代表這該進(jìn)程在每一個(gè)調(diào)度周期中能夠得到的時(shí)間片的多少;counter是一個(gè)動(dòng)態(tài)變化的值,它反映了一個(gè)進(jìn)程在當(dāng)前的調(diào)度周期中還剩下的時(shí)間片。在每一個(gè)調(diào)度周期的開(kāi)始,priority的值被賦給counter,然后每次該進(jìn)程被調(diào)度執(zhí)行時(shí),counter值都減少。當(dāng)counter值為零時(shí),該進(jìn)程用完自己在本調(diào)度周期中的時(shí)間片,不再參與本調(diào)度周期的進(jìn)程調(diào)度。當(dāng)所有進(jìn)程的時(shí)間片都用完時(shí),一個(gè)調(diào)度周期結(jié)束,然后周而復(fù)始。另外可以看出Linux系統(tǒng)中的調(diào)度周期不是靜態(tài)的,它是一個(gè)動(dòng)態(tài)變化的量,比如處于可運(yùn)行狀態(tài)的進(jìn)程的多少和它們priority值都可以影響一個(gè)e

20、poch的長(zhǎng)短。值得注意的一點(diǎn)是,在2.4以上的內(nèi)核中,priority被nice所取代,但二者作用類(lèi)似??梢?jiàn)SCHED_OTHER調(diào)度策略本質(zhì)上是一種比例共享的調(diào)度策略,它的這種設(shè)計(jì)方法能夠保證進(jìn)程調(diào)度時(shí)的公平性-一個(gè)低優(yōu)先級(jí)的進(jìn)程在每一個(gè)epoch中也會(huì)得到自己應(yīng)得的那些CPU執(zhí)行時(shí)間,另外它也提供了不同進(jìn)程的優(yōu)先級(jí)區(qū)分,具有高priority值的進(jìn)程能夠獲得更多的執(zhí)行時(shí)間。對(duì)于實(shí)時(shí)進(jìn)程來(lái)說(shuō),它們使用的是基于實(shí)時(shí)優(yōu)先級(jí)rt_priority的優(yōu)先級(jí)調(diào)度策略,但根據(jù)不同的調(diào)度策略,同一實(shí)時(shí)優(yōu)先級(jí)的進(jìn)程之間的調(diào)度方法有所不同:-SCHED_FIFO:不同的進(jìn)程根據(jù)靜態(tài)優(yōu)先級(jí)進(jìn)行排隊(duì),然后在同一

21、優(yōu)先級(jí)的隊(duì)列中,誰(shuí)先準(zhǔn)備好運(yùn)行就先調(diào)度誰(shuí),并且正在運(yùn)行的進(jìn)程不會(huì)被終止直到以下情況發(fā)生:1.被有更高優(yōu)先級(jí)的進(jìn)程所強(qiáng)占CPU;2.自己因?yàn)橘Y源請(qǐng)求而阻塞;3.自己主動(dòng)放棄CPU(調(diào)用sched_yield); - SCHED_RR:這種調(diào)度策略跟上面的SCHED_FIFO一模一樣,除了它給每個(gè)進(jìn)程分配一個(gè)時(shí)間片,時(shí)間片到了正在執(zhí)行的進(jìn)程就放棄執(zhí)行;時(shí)間片的長(zhǎng)度可以通過(guò)sched_rr_get_interval調(diào)用得到; 由于Linux系統(tǒng)本身是一個(gè)面向桌面的系統(tǒng),所以將它應(yīng)用于實(shí)時(shí)應(yīng)用中時(shí)存在如下的一些問(wèn)題:- Linux系統(tǒng)中的調(diào)度單位為10ms,所以它不能夠提供精確的定時(shí); - 當(dāng)一個(gè)進(jìn)程

22、調(diào)用系統(tǒng)調(diào)用進(jìn)入內(nèi)核態(tài)運(yùn)行時(shí),它是不可被搶占的; - Linux內(nèi)核實(shí)現(xiàn)中使用了大量的封中斷操作會(huì)造成中斷的丟失; - 由于使用虛擬內(nèi)存技術(shù),當(dāng)發(fā)生頁(yè)出錯(cuò)時(shí),需要從硬盤(pán)中讀取交換數(shù)據(jù),但硬盤(pán)讀寫(xiě)由于存儲(chǔ)位置的隨機(jī)性會(huì)導(dǎo)致隨機(jī)的讀寫(xiě)時(shí)間,這在某些情況下會(huì)影響一些實(shí)時(shí)任務(wù)的截止期限; - 雖然Linux進(jìn)程調(diào)度也支持實(shí)時(shí)優(yōu)先級(jí),但缺乏有效的實(shí)時(shí)任務(wù)的調(diào)度機(jī)制和調(diào)度算法;它的網(wǎng)絡(luò)子系統(tǒng)的協(xié)議處理和其它設(shè)備的中斷處理都沒(méi)有與它對(duì)應(yīng)的進(jìn)程的調(diào)度關(guān)聯(lián)起來(lái),并且它們自身也沒(méi)有明確的調(diào)度機(jī)制; 參考文獻(xiàn):基于Linux的實(shí)時(shí)系統(tǒng) - 百度一下可以搜到5. 實(shí)時(shí)Linux研究呼哧呼哧寫(xiě)了半天,終于到了重頭戲,實(shí)

23、時(shí)Linux研究。前文說(shuō)過(guò),風(fēng)河的VxWorks雖然性能大大的好,但是要花很多銀子,對(duì)于一般的軟實(shí)時(shí)應(yīng)用系統(tǒng)來(lái)說(shuō),還是用開(kāi)源免費(fèi)的實(shí)時(shí)Linux比較好。筆者所在的公司也正在研究將平臺(tái)轉(zhuǎn)為L(zhǎng)inux。有許多種方法可以賦予普通Linux實(shí)時(shí)的能力:5.1 瘦內(nèi)核(微內(nèi)核)- Thin-Kernel瘦內(nèi)核(或微內(nèi)核)方法使用了第二個(gè)內(nèi)核作為硬件與 Linux 內(nèi)核間的抽象接口。非實(shí)時(shí) Linux內(nèi)核在后臺(tái)運(yùn)行,作為瘦內(nèi)核的一項(xiàng)低優(yōu)先級(jí)任務(wù)托管全部非實(shí)時(shí)任務(wù)。實(shí)時(shí)任務(wù)直接在瘦內(nèi)核上運(yùn)行。瘦內(nèi)核主要用于(除了托管實(shí)時(shí)任務(wù)外)中斷管理。瘦內(nèi)核截取中斷以確保非實(shí)時(shí)內(nèi)核無(wú)法搶占瘦內(nèi)核的運(yùn)行。這允許瘦內(nèi)核提供硬

24、實(shí)時(shí)支持。雖然瘦內(nèi)核方法有自己的優(yōu)勢(shì)(硬實(shí)時(shí)支持與標(biāo)準(zhǔn) Linux 內(nèi)核共存),但這種方法也有缺點(diǎn)。實(shí)時(shí)任務(wù)和非實(shí)時(shí)任務(wù)是獨(dú)立的,這造成了調(diào)試?yán)щy。而且,非實(shí)時(shí)任務(wù)并未得到 Linux 平臺(tái)的完全支持(瘦內(nèi)核執(zhí)行稱(chēng)為瘦 的一個(gè)原因)。使用這種方法的例子有 RTLinux (現(xiàn)在由 Wind River Systems 專(zhuān)有),實(shí)時(shí)應(yīng)用程序接口(RTAI)和 Xenomai。5.2 超微內(nèi)核這里瘦內(nèi)核方法依賴(lài)于包含任務(wù)管理的最小內(nèi)核,而超微內(nèi)核法對(duì)內(nèi)核進(jìn)行更進(jìn)一步的縮減。通過(guò)這種方式,它不像是一個(gè)內(nèi)核而更像是一個(gè)硬件抽象層(HAL)。超微內(nèi)核為運(yùn)行于更高級(jí)別的多個(gè)操作系統(tǒng)提供了硬件資源共享。因?yàn)?/p>

25、超微內(nèi)核對(duì)硬件進(jìn)行了抽象,因此它可為更高級(jí)別的操作系統(tǒng)提供優(yōu)先權(quán),從而支持實(shí)時(shí)性。注意,這種方法和運(yùn)行多個(gè)操作系統(tǒng)的虛擬化方法有一些相似之處。使用這種方法的情況下,超微內(nèi)核在實(shí)時(shí)和非實(shí)時(shí)內(nèi)核中對(duì)硬件進(jìn)行抽象。這與 hypervisor 從客戶(hù)(guest)操作系統(tǒng)對(duì)裸機(jī)進(jìn)行抽象的方式很相似。 關(guān)于超微內(nèi)核的示例是操作系統(tǒng)的 Adaptive Domain Environment for Operating Systems(ADEOS)。ADEOS 支持多個(gè)并發(fā)操作系統(tǒng)同步運(yùn)行。當(dāng)發(fā)生硬件事件后,ADEOS對(duì)鏈中的每個(gè)操作系統(tǒng)進(jìn)行查詢(xún)以確定使用哪一個(gè)系統(tǒng)處理事件。 5.3 資源內(nèi)核(Resour

26、ce-kernel)另一個(gè)實(shí)時(shí)架構(gòu)是資源內(nèi)核法。這種方法為內(nèi)核增加一個(gè)模塊,為各種資源提供預(yù)留(reservation)。這種機(jī)制保證了對(duì)時(shí)分復(fù)用(time-multiplexed)系統(tǒng)資源的訪(fǎng)問(wèn)(CPU、網(wǎng)絡(luò)或磁盤(pán)帶寬)。這些資源擁有多個(gè)預(yù)留參數(shù),如循環(huán)周期、需要的處理時(shí)間(也就是完成處理所需的時(shí)間),以及截止時(shí)間。資源內(nèi)核提供了一組應(yīng)用程序編程接口(API),允許任務(wù)請(qǐng)求這些預(yù)留資源。然后資源內(nèi)核可以合并這些請(qǐng)求,使用任務(wù)定義的約束定義一個(gè)調(diào)度,從而提供確定的訪(fǎng)問(wèn)(如果無(wú)法提供確定性則返回錯(cuò)誤)。通過(guò)調(diào)度算法,如 Earliest-Deadline-First(EDF),內(nèi)核可以處理動(dòng)態(tài)的

27、調(diào)度負(fù)載。資源內(nèi)核法實(shí)現(xiàn)的一個(gè)示例是 CMU 公司的 Linux/RK,它把可移植的資源內(nèi)核集成到 Linux 中作為一個(gè)可加載模塊。這種實(shí)現(xiàn)演化成商用的 TimeSys Linux/RT 產(chǎn)品。5.4 標(biāo)準(zhǔn)的Linux內(nèi)核最新版本2.6中加入了實(shí)時(shí)功能目前探討的這些方法在架構(gòu)上都很有趣,但是它們都在內(nèi)核的外圍運(yùn)行。然而,如果對(duì)標(biāo)準(zhǔn) Linux 內(nèi)核進(jìn)行必要的修改使其支持實(shí)時(shí)性,結(jié)果會(huì)怎么樣呢?今天,在 2.6 內(nèi)核中,通過(guò)對(duì)內(nèi)核進(jìn)行簡(jiǎn)單配置使其完全可搶占,您就可以得到軟實(shí)時(shí)功能。在標(biāo)準(zhǔn) 2.6 Linux內(nèi)核中,當(dāng)用戶(hù)空間的進(jìn)程執(zhí)行內(nèi)核調(diào)用時(shí)(通過(guò)系統(tǒng)調(diào)用),它便不能被搶占。這意味著如果低優(yōu)

28、先級(jí)進(jìn)程進(jìn)行了系統(tǒng)調(diào)用后,高優(yōu)先級(jí)進(jìn)程必須等到調(diào)用結(jié)束后才能訪(fǎng)問(wèn) CPU。新的配置選項(xiàng) CONFIG_PREEMPT 改變了這一內(nèi)核行為,在高優(yōu)先級(jí)任務(wù)可用的情況下(即使此進(jìn)程正在進(jìn)行系統(tǒng)調(diào)用),它允許進(jìn)程被搶占。 但這種配置選項(xiàng)也是一種折衷。雖然此選項(xiàng)實(shí)現(xiàn)了軟實(shí)時(shí)性能并且即使在負(fù)載條件下也可使操作系統(tǒng)順利地運(yùn)行,但這樣做也付出了代價(jià)。代價(jià)就是略微減低了吞吐量以及內(nèi)核性能,原因是 CONFIG_PREEMPT 選項(xiàng)增加了開(kāi)銷(xiāo)。這種選項(xiàng)對(duì)桌面和嵌入式系統(tǒng)而言是有用的,但并不是在任何場(chǎng)景下都有用(例如,服務(wù)器)。 在 2.6 內(nèi)核中另一項(xiàng)有用的配置選項(xiàng)是高精度定時(shí)器。這個(gè)新選項(xiàng)允許定時(shí)器以 1s

29、的精度運(yùn)行(如果底層硬件支持的話(huà)),并通過(guò)紅黑樹(shù)實(shí)現(xiàn)對(duì)定時(shí)器的高效管理。通過(guò)紅黑樹(shù),可以使用大量的定時(shí)器而不會(huì)對(duì)定時(shí)器子系統(tǒng)(O(log n))的性能造成影響。 只需要一點(diǎn)額外的工作,就可以通過(guò) PREEMPT_RT 補(bǔ)丁實(shí)現(xiàn)硬實(shí)時(shí)。PREEMPT_RT補(bǔ)丁提供了多項(xiàng)修改,可實(shí)現(xiàn)硬實(shí)時(shí)支持。其中一些修改包括重新實(shí)現(xiàn)一些內(nèi)核鎖定原語(yǔ),從而實(shí)現(xiàn)完全可搶占,實(shí)現(xiàn)內(nèi)核互斥的優(yōu)先級(jí)繼承,并把中斷處理程序轉(zhuǎn)換為內(nèi)核線(xiàn)程以實(shí)現(xiàn)線(xiàn)程可搶占。二硬實(shí)時(shí)和軟實(shí)時(shí)區(qū)別分類(lèi): rtems2010-01-14 09:44 1497人閱讀 評(píng)論(0) 收藏 舉報(bào)嵌入式實(shí)時(shí)系統(tǒng)中采用的操作系統(tǒng)我們稱(chēng)為嵌入式實(shí)時(shí)操作系統(tǒng),它既是嵌入式操作系統(tǒng),又是實(shí)時(shí)操作系統(tǒng)。作為一種嵌入式操作系統(tǒng),它具有嵌入式軟件共有的可裁剪、低資源占用、低功耗等特點(diǎn);而作為一種實(shí)時(shí)操作系統(tǒng)(本文對(duì)實(shí)時(shí)操作系統(tǒng)特性的討論僅限于強(qiáng)實(shí)時(shí)操作系統(tǒng),下面提到的實(shí)時(shí)操作系統(tǒng)也均指強(qiáng)實(shí)時(shí)操作系統(tǒng)),它

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論