




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
22實時系統(tǒng)概 前后臺系統(tǒng)(FOREGROUND/BACKGROUND 任務(wù)切換(CONTEXTSWITCHORTASK 不可剝奪型內(nèi)核(NON-PREEMPTIVE 死鎖(或抱死)(DEADLOCK(ORDEADLY 事件標(biāo)志(EVENT 任務(wù)間的通訊(INTERTASK 消息郵箱(MESSAGEMAIL 消息隊列(MESSAGE 時鐘節(jié)拍(CLOCKI對存對存儲器的需 使用實時內(nèi)核的優(yōu)缺 實時系統(tǒng)小 第2實時系統(tǒng)概第2實時系統(tǒng)概Switch航空航穩(wěn)溫調(diào)過程控發(fā)動機計算機調(diào)制解實時應(yīng)用軟件的設(shè)計一般比非實時應(yīng)用軟件設(shè)計難一些。本章講述實時系前后臺系統(tǒng)(Foreground/Background不復(fù)雜的小系統(tǒng)一般設(shè)計成如圖2.1所示的樣子。這種系統(tǒng)可稱為前后臺系統(tǒng)或超循環(huán)系統(tǒng)。應(yīng)用程序是一個無限的循環(huán),循環(huán)中調(diào)用相應(yīng)的函數(shù)完成相應(yīng)的操作,這部分可以看成后臺行為)。中斷服務(wù)程序處理異步事件,這部分可以看成前臺(foregroundl一定是靠中斷服務(wù)來保證的。因為中斷服務(wù)提供的信息一直要等到后臺程序走到該處理這個信息這一步時才能得到處理,這種系統(tǒng)在處理信息的及時性上,比實際可確定的。進(jìn)而,如果程序修改了,循環(huán)的時序也會受到影響1圖2-1前后臺ha,所有的事都靠中圖2-1前后臺ha,所有的事都靠中斷服務(wù)來完成代碼的臨界不允許任何中斷打入。為確保臨界段代碼的執(zhí)行,在進(jìn)入臨界段之前要關(guān)中斷,而臨界段碼執(zhí)行完以后要立即開中斷。(參閱2.03共享資源資享資源打交道時,必須獨占該資源。這叫做互斥(mutualexclusion。在2.18節(jié)“互斥”中,多任多任務(wù)運行的實現(xiàn)實際上是靠CPU(中央處理單元)在許多任務(wù)之間轉(zhuǎn)換、調(diào)度。2UU任一個任務(wù),也稱作一個線程,是一個簡單的程序,該程序可以認(rèn)為CPU完全只屬該程CPU如圖22所示。圖2.2多任務(wù)3不能運行,就進(jìn)入了被中斷狀態(tài)。圖2.3表示μC/OS-Ⅱ中一些函數(shù)提供的服務(wù),這任務(wù)切換(ContextSithorTask內(nèi)容切換。當(dāng)多任務(wù)內(nèi)核決定運行另外的任務(wù)時,它保存正在運行任務(wù)的當(dāng)前狀態(tài)(Contextarea就是把下一個將要運行的任務(wù)的當(dāng)前狀況從該任務(wù)的棧中重新裝入CPU的寄存器,并開始下4內(nèi)核)內(nèi)核)調(diào)度調(diào)度(Scheduler)dispatcher,也是調(diào)度的意思。這是內(nèi)核的主要不可剝奪型內(nèi)核(Non-Preemptive放棄CPU控制權(quán)的企圖。5中斷來了,如果此時中斷是開著的,CPU由中斷向量[F2.4(2)]進(jìn)入中斷服務(wù)子程序,中斷中斷來了,如果此時中斷是開著的,CPU由中斷向量[F2.4(2)]進(jìn)入中斷服務(wù)子程序,中斷CPU的控制權(quán),完全取決于應(yīng)用程序什么時候釋放CPU。2.10可剝奪型內(nèi)CPU的控制權(quán)。如果是中斷服務(wù)6任務(wù)級系統(tǒng)響應(yīng)時間得到了最優(yōu)化,且是可知的。C/OSⅡ?qū)儆诳蓜儕Z型內(nèi)核2.11可重入性程序清單2.1可重入7voidstrcpy(char*dest,char{while(*dest++=*src++);程序程序清單不可重入型程序員打算讓Swap()生時Temp1,中斷服務(wù)子程序使更優(yōu)先級的任務(wù)就緒,當(dāng)中斷完成時調(diào)用Swap()函數(shù)是Temp賦值為3。這對該任務(wù)本身來說,實現(xiàn)兩個變量的交換是沒有問題Z4,X3。然后高優(yōu)先級的任務(wù)通過調(diào)用內(nèi)核服務(wù)函數(shù)中的延遲一個時鐘節(jié)拍[F2.6(4)],釋放了CPU的使用權(quán),低優(yōu)先級任務(wù)得以繼續(xù)運行[F2.6(5)].注8intvoidswap(int*x,int{Temp=*x=*y=}}*dest=}把把Temp調(diào)用Swp函數(shù)之前關(guān)中斷,調(diào)動后再開中用信號量禁止該函數(shù)在使用過程中被再次調(diào)如果中斷發(fā)生在Swap()函數(shù)調(diào)用之前或調(diào)用之后,兩個任務(wù)中的X,Y2.12時間片輪番調(diào)度(quantum時,把CPU控制權(quán)交給下一個任務(wù)就緒態(tài)的任務(wù):92.13任務(wù)優(yōu)先2.14靜態(tài)優(yōu)2.13任務(wù)優(yōu)先2.14靜態(tài)優(yōu)先2.15動態(tài)優(yōu)先2.16優(yōu)先級反轉(zhuǎn)是如何出現(xiàn)的。如圖,任務(wù)1優(yōu)先級高于任務(wù)2,任務(wù)2優(yōu)先級高于任務(wù)3。任務(wù)1和任使用其共享資源。使用共享資源之前,首先必須得到該資源的信號量(Semaphore)(見2.2.7(41327(11)]。直到此時,由于實時內(nèi)核知道有個高優(yōu)先級的31剝奪CPU2搶走了CPU時間。內(nèi)核恢復(fù)任務(wù)3本來的優(yōu)先級并把信號量交給任務(wù)1,任務(wù)1得以順利運行。[圖2CPU2.8(1122.8(3)]到[圖2.8(1013的完成過程。在某種程2.17任務(wù)優(yōu)先級分2.17任務(wù)優(yōu)先級分一項有意思的技術(shù)可稱之為單調(diào)執(zhí)行率調(diào)度法RMS(RateMonotonicScheduling)∑n(21/ni這里Ei是任務(wù)i最長執(zhí)行時間,Ti∑n(21/ni這里Ei是任務(wù)i最長執(zhí)行時間,Ti是任務(wù)i的執(zhí)行周期。換句話說,Ei/Ti是任務(wù)i100%。使CPU100%并不好,因為那樣的話程序就沒有了修改的余地,也沒法增加新功能了。作為系統(tǒng)設(shè)計的一條原則,CPU利用率應(yīng)小于60%到70%。表2.1基于任務(wù)到CPU最高允許使用率(21-任務(wù)24....互斥條 2.18.12.18.1程序清單關(guān)中斷和開中分。實際上μC/OS-Ⅱ提供兩個宏調(diào)用,允許用戶在應(yīng)用程序的C代碼中關(guān)中斷然后再開中斷:OS_ENTER_CRITICALOS_EXIT_CRITICAL()[參見8.03.02OS_ENTER_CRITICAL()程序清單2.4利用μC/OS_Ⅱ宏調(diào)用關(guān)中斷和開voidFunction{. /*在這里處理共享數(shù)據(jù)}Disable Accesstheresource(read/writefrom/tovariables);/*讀/寫變Reenable 2.18.22.18.2程序清單2.5利用測試并置位處2.18.3Disable ifAccessVariableis0 Setvariableto Reenable Accessthe Disable SettheAccessVariablebackto Reenable else Reenable /*Youdon’thaveaccesstotheresource,trybacklater;}程序清單2程序清單2.6用給任務(wù)切換上鎖,然后開鎖的方法實現(xiàn)數(shù)據(jù)共享2.18.4信號量)(譯者注:信號與信號量在英文中都叫做Semaphore,并不加以區(qū)分,而說它有兩種類制信號量通常指若干位的組合。而本書中解釋為事件標(biāo)志的置位與清除(見2.21))。010voidFunction{. /*Youcanaccessshareddatainhere(interruptsarerecognized)*/./*在這里處理共享數(shù)據(jù)(中斷是開著的)這里的中斷是與此函數(shù)部共享數(shù)據(jù)結(jié)}信號量賦初值,等待信號量的任務(wù)表(Waitinglist)應(yīng)清為空。信號量賦初值,等待信號量的任務(wù)表(Waitinglist)應(yīng)清為空。道的任務(wù)調(diào)用等待信號量函數(shù)OSSemPend()。處理完共享數(shù)據(jù)以后再調(diào)用釋放信號量函數(shù)程序清單通過獲得信號量處理共享數(shù)voidFunction(void){INT8Uerr;OSSemPend(SharedDataSem,0,&err);. /*Youcanaccessshareddatainhere(interruptsarerecognized)*/./*共享數(shù)據(jù)的處理在此進(jìn)行,(中斷是開著的}打印機送數(shù)據(jù)時會出現(xiàn)什么現(xiàn)象。打印機會打出相互交叉的兩個任務(wù)的數(shù)據(jù)。例如任務(wù)1打印機送數(shù)據(jù)時會出現(xiàn)什么現(xiàn)象。打印機會打出相互交叉的兩個任務(wù)的數(shù)據(jù)。例如任務(wù)1TTasaskk1!2!”2.11程序清單.號量INT8UCommSendCmd(char*cmd,char*response,INT16U{Acquireport'ssemaphore;Sendcommandtodevice;Waitforresponse(withtimeout);if(timedout){Releasereturn(errorCommSendCmd()函數(shù)的任務(wù)申請并得CommSendCmd()函數(shù)的任務(wù)申請并得函數(shù)程序29用信號量管理緩沖區(qū)BUF{BUFAcquireasemaphore;Disableinterrupts; =}elseReleasesemaphore;return(no}}BufFreeList=ptr->BufNext;Enableinterrupts;return}voidBufRel(BUF{Disableptr->BufNext=BufFreeList;BufFreeList=ptr;Release}2.19死鎖(或抱死(Delck(orDayc)正獨享R1T2T2T1R2,T2R1,于是哪個任務(wù)2.20同0,信號量用于這種類型同步的稱作單向同步(unilateralrendezvous)。一個兩個任務(wù)可以用兩個信號量同步它們的行為。如圖2.14所示。這叫做雙向同步(bilateralrendezvous)。雙向同步同單向同步類似,只是兩個任務(wù)要相互同步。例如則程序清單2.10運行到某一處的第一個任務(wù)發(fā)信號給第二個任務(wù)程序清單雙向程序清單雙向同步2.21事件標(biāo)志(Event{for(;;)PerformSignaltask Waitforsignalfromtask#2; Continueoperation;}}{for(;;)PerformSignaltask Waitforsignalfromtask#1; Continueoperation;}}2.22任務(wù)間的通訊(Intetsk2.23消息郵2.23消息郵箱eeMil邊的數(shù)字表示定時器設(shè)定值,即任務(wù)最長可以等多少個時鐘節(jié)拍(ClockTicks),關(guān)于時鐘2.24消2.24消息隊列esage2.18示意中斷服務(wù)子程序如何將消息放入消息隊列。圖中兩個大寫的I“10100等2.25中2.25中中斷使得CPU可以在事件發(fā)生時才予以處理,而不必讓微處理器連續(xù)不斷地查詢(Polling)是否有事件發(fā)生。通過兩條特殊指令:關(guān)中斷(Disableinterrupt)和開中斷2.26中斷延2.27中斷響護(hù)現(xiàn)場,將CPU的各寄存器推入堆棧。這段時間將被記作中斷響應(yīng)時間。2.27中斷響護(hù)現(xiàn)場,將CPU的各寄存器推入堆棧。這段時間將被記作中斷響應(yīng)時間。[2.3]保存CPU[2.4]保存CPUμC/OSOSIntEnter(),可剝奪2.28中斷恢復(fù)時間Inerupt個由實時內(nèi)核提供的函數(shù)。在μC/OS-Ⅱ中,這個函數(shù)叫做OSIntExit(),這個函數(shù)用于辨2.29中斷延遲、響應(yīng)和恢2.30中斷處理時中斷服務(wù)必須全部小于100μS,500μS1mS。如果中斷服務(wù)是在任何給定的時間開始,2.31非屏蔽中斷)2.31非屏蔽中斷)的話,中斷響應(yīng)會推遲20μS。2.242.242.32時鐘節(jié)拍(Ck)1有關(guān)。以下是這類問題可能的解決方案重新安排任務(wù)的優(yōu)先時間要求苛刻的代碼用匯編語言不管怎么樣,抖動總是存在2.33對存儲器的需核時的情況則很不一樣。內(nèi)核本身需要額外的代碼空間)。內(nèi)核的大小取決于多種因素1K到10K8位U務(wù)調(diào)度、任務(wù)切換、信號量處理、延時及超時服務(wù)約需要1K到3K[2.12]總代碼量=應(yīng)用程序代碼+內(nèi)核[2.12]總代碼量=應(yīng)用程序代碼+內(nèi)核計人員決定分配給每個任務(wù)多少??臻g時,應(yīng)該盡可能使之接近實際需求量(有時,這是相所需的??臻g大小可以分別定義(μC/OS-II可以做到)。相反,有些內(nèi)核要求每個任務(wù)所需等。如果內(nèi)核不支持單獨的中斷用棧,總的[2.13RAM總需求=應(yīng)用程序的RAM需求任務(wù)棧需求+最大中斷嵌套棧需求*任如果內(nèi)核支持中斷用棧分離,總 [2.14]RAM總需求=應(yīng)用程序RAM需求+內(nèi)核數(shù)據(jù)區(qū)的RAM需求+各任務(wù)棧需求之總和+最多中斷嵌套之棧需求除非有特別大的中斷嵌外的代碼空間取決于內(nèi)核的大小,而2.34使用實時內(nèi)核的優(yōu)缺實時內(nèi)核也稱為實時操作系統(tǒng)或RT。它的使用使得實時應(yīng)用程序的設(shè)計和擴展變得S了盡可能快捷、有效的處理。通過有效的服務(wù),如信號量了盡可能快捷、有效的處理。通過有效的服務(wù),如信號量、郵箱、隊列、延時、超時等RTOS核的價格,額外的ROM/RAM開銷,2到4百分點的CPU額外負(fù)荷。至于對使用RTOS連想都不敢想。當(dāng)今80個以上的RTOS商家,生產(chǎn)面向8位、16位、32位、甚至是64位的微處理compilers)。RTOS的價格從70美元到30,000美元。RTOS制造商還可能索取每個目標(biāo)系統(tǒng)商家稱之為硅片軟件(SiliconSof
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出售園林鋪面合同范本
- 保潔物料供貨合同范本
- 企業(yè)策劃宣傳合同范本
- 農(nóng)機割臺租售合同范本
- 出口螺桿驗貨合同范本
- 公司分期手機合同范本
- 企業(yè)職員培養(yǎng)合同范本
- 企業(yè)終止租賃合同范本
- 化糞池安裝合同范本
- 2024年深圳市南山區(qū)蓓蕾幼教集團招聘考試真題
- 環(huán)境空氣氣態(tài)污染物(SO2、NO2、O3、CO)連續(xù)自動監(jiān)測系統(tǒng)安裝驗收技術(shù)規(guī)范(HJ 193-2013部分代替 HJ-T 193-2005)
- 《生活垃圾轉(zhuǎn)運站技術(shù)規(guī)范+CJJT+47-2016》詳細(xì)解讀
- 總體國家安全觀-創(chuàng)新引領(lǐng)10周年全文課件
- 鳥類知識科普課件
- 中國通用電氣有限公司員工手冊
- 自建房培訓(xùn)課件甘肅
- 閩教版四年級下冊勞動教案
- 汽車電氣設(shè)備構(gòu)造與維修(高職版)全套教學(xué)課件
- 中小學(xué)必背飛花令詩詞-(春、月、風(fēng)、花、山、江、人、日、動物、顏色、數(shù)字)
- 緩刑解除矯正個人總結(jié)
- 北師大版小學(xué)數(shù)學(xué)六年級下冊全冊一課一練課課練(含答案)
評論
0/150
提交評論