




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)時(shí)操作系統(tǒng)詳細(xì)解析1第1頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月本節(jié)提要132546實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介C/OS-Ⅱ內(nèi)核結(jié)構(gòu)C/OS-Ⅱ任務(wù)通信與同步C/OS-Ⅱ任務(wù)管理C/OS-Ⅱ時(shí)間管理C/OS-Ⅱ移植2第2頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介1.1操作系統(tǒng)的分類1.2常見(jiàn)的嵌入式實(shí)時(shí)操作系統(tǒng)1.3實(shí)時(shí)操作系統(tǒng)概念1.4C/OS-Ⅱ簡(jiǎn)介3第3頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月1.1操作系統(tǒng)的分類
嵌入式操作系統(tǒng)的種類繁多,大體上可分為兩種,商用型和免費(fèi)型。商用型的實(shí)操作系統(tǒng)功能穩(wěn)定、可靠,有完善的技術(shù)支持和售后服務(wù),但往往價(jià)格昂貴。免費(fèi)型的實(shí)時(shí)操作系統(tǒng)在價(jià)格方面具有優(yōu)勢(shì),目前主要有Linux和μC/OS,穩(wěn)定性與服務(wù)性存在挑戰(zhàn)。4第4頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月1.1操作系統(tǒng)的分類(1)順序執(zhí)行系統(tǒng):系統(tǒng)內(nèi)只含有一個(gè)程序,獨(dú)占CPU的運(yùn)行時(shí)間,按語(yǔ)句順序執(zhí)行該程序,直至執(zhí)行完畢,另一程序才能啟動(dòng)運(yùn)行。如DOS操作系統(tǒng)。(2)分時(shí)操作系統(tǒng):系統(tǒng)內(nèi)同時(shí)可以有多個(gè)程序運(yùn)行,把CPU的時(shí)間按順序分成若干片,每個(gè)時(shí)間片內(nèi)執(zhí)行不同的程序。如UNIX(3)實(shí)時(shí)操作系統(tǒng):系統(tǒng)內(nèi)有多個(gè)程序運(yùn)行,每個(gè)程序有不同的優(yōu)先級(jí),只有最高優(yōu)先級(jí)的任務(wù)才能占有CPU的控制權(quán)。5第5頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月按實(shí)時(shí)性分類強(qiáng)實(shí)時(shí)系統(tǒng),其系統(tǒng)響應(yīng)時(shí)間在毫秒或微秒級(jí)(數(shù)控機(jī)床);一般實(shí)時(shí)系統(tǒng),其系統(tǒng)響應(yīng)時(shí)間在毫秒-幾秒的數(shù)量級(jí)上,其實(shí)時(shí)性的要求比強(qiáng)實(shí)時(shí)系統(tǒng)要差一些(電子菜譜的查詢)。弱實(shí)時(shí)系統(tǒng),其系統(tǒng)響應(yīng)時(shí)間約為數(shù)十秒或更長(zhǎng)(工程機(jī)械)。6第6頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月按軟件結(jié)構(gòu)分類1)循環(huán)輪詢系統(tǒng):(PollingLoop)最簡(jiǎn)單的軟件結(jié)構(gòu)是循環(huán)輪詢,程序依次檢查系統(tǒng)的每一個(gè)輸入條件,一旦條件成立就進(jìn)行相應(yīng)的處理。Initialize()While(true){if(condition_1)action_1();if(condition_2)action_2();……if(condition_n)acition_n();}缺點(diǎn):響應(yīng)速度慢,占用CPU資源7第7頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月2)事件驅(qū)動(dòng)系統(tǒng):(Event-Drivensystem)事件驅(qū)動(dòng)系統(tǒng)是能對(duì)外部事件直接響應(yīng)的系統(tǒng)。它包括前后臺(tái)、實(shí)時(shí)多任務(wù)、多處理器等,是嵌入式實(shí)時(shí)系統(tǒng)的主要形式。應(yīng)用程序是一個(gè)無(wú)限的循環(huán),循環(huán)中調(diào)用相應(yīng)的函數(shù)完成相應(yīng)的操作,這部分可以看成后臺(tái)行為(background)。中斷服務(wù)程序處理異步事件,這部分可以看成前臺(tái)行為(foreground)。后臺(tái)也可以叫做任務(wù)級(jí),前臺(tái)也叫中斷級(jí)。例如,很多基于微處理器的產(chǎn)品采用前后臺(tái)系統(tǒng)設(shè)計(jì),如微波爐、電話機(jī)、玩具等。從省電的角度出發(fā),平時(shí)微處理器處在停機(jī)狀態(tài),所有的事都靠中斷服務(wù)來(lái)完成。8第8頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月前后臺(tái)系統(tǒng)(后臺(tái)循環(huán)、前臺(tái)中斷)ISRISR后臺(tái)前臺(tái)ISR時(shí)間9第9頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月1.3實(shí)時(shí)操作系統(tǒng)概念(RTOS)RTOS的基本特征:高效的任務(wù)管理1.支持多任務(wù)2.優(yōu)先級(jí)管理3.任務(wù)調(diào)度:基于優(yōu)先級(jí)的搶占式調(diào)度、時(shí)間片輪轉(zhuǎn)調(diào)度的算法4.支持快速而確定的上下文切換快速靈活的任務(wù)間通信1.信號(hào)量:二進(jìn)制、互斥、計(jì)數(shù)器2.通信機(jī)制:消息隊(duì)列、管道等高度的可剪裁性動(dòng)態(tài)鏈接與部件增量加載快速有效的中斷和異常事件處理優(yōu)化的浮點(diǎn)支持動(dòng)態(tài)內(nèi)存管理系統(tǒng)時(shí)鐘和定時(shí)器1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介10第10頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月任務(wù)的基本概念處理復(fù)雜問(wèn)題的方法:分而治之,即把一個(gè)大問(wèn)題分解成多個(gè)相對(duì)簡(jiǎn)單、比較容易解決的小問(wèn)題,小問(wèn)題解決了,大問(wèn)題也就隨之解決。同樣,在設(shè)計(jì)一個(gè)較為復(fù)雜的應(yīng)用程序時(shí),通常也把大型任務(wù)分解成多個(gè)小任務(wù),在計(jì)算機(jī)運(yùn)行這些小任務(wù),最終達(dá)到完成大任務(wù)的目的。操作系統(tǒng)幾乎都是多任務(wù)的。在uC/OS-II中,與小任務(wù)對(duì)應(yīng)的程序?qū)嶓w叫做任務(wù)。11第11頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月嵌入式系統(tǒng)的任務(wù)由于嵌入式系統(tǒng)完成的是對(duì)一個(gè)裝置或設(shè)備的控制任務(wù),任務(wù)的功能相對(duì)固定,故一般情況下嵌入式實(shí)時(shí)系統(tǒng)支持的典型任務(wù)是一個(gè)無(wú)限循環(huán)結(jié)構(gòu)。典型的任務(wù)一個(gè)無(wú)限循環(huán)。voidmytask(void*pdata){for(;;){dosomething;waiting;dosomething;}}從任務(wù)代碼看,任務(wù)實(shí)質(zhì)上是一個(gè)返回類型為void的函數(shù),并在函數(shù)的無(wú)限循環(huán)中完成用戶的工作。問(wèn)題一:用戶應(yīng)用程序如何響應(yīng)用戶的一些外部異步事件?12第12頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月采用中斷技術(shù)來(lái)響應(yīng)外部異步事件,并在中斷服務(wù)程序中處理這些異步事件。嵌入式系統(tǒng)任務(wù)的典型結(jié)構(gòu)如下所示:13第13頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介嵌入式實(shí)時(shí)操作系統(tǒng)_多任務(wù)系統(tǒng)一個(gè)任務(wù),也稱作一個(gè)進(jìn)程,是一個(gè)簡(jiǎn)單的運(yùn)行程序。每個(gè)任務(wù)都是整個(gè)應(yīng)用的某一部分,每個(gè)任務(wù)被賦予一定的優(yōu)先級(jí),有它自己的一套CPU寄存器和自己的??臻g。14第14頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月多任務(wù)運(yùn)行的實(shí)現(xiàn)實(shí)際上是靠CPU(中央處理單元)在許多任務(wù)之間轉(zhuǎn)換、調(diào)度。
CPU只有一個(gè),輪番服務(wù)于一系列任務(wù)中的某一個(gè)。多任務(wù)運(yùn)行使CPU的利用率得到最大的發(fā)揮,并使應(yīng)用程序模塊化。實(shí)時(shí)應(yīng)用程序的設(shè)計(jì)過(guò)程,包括如何把問(wèn)題分割成多個(gè)任務(wù)。
1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介15第15頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月
任務(wù)的狀態(tài)
每個(gè)任務(wù)都處在以下5種狀態(tài)之一的狀態(tài)下,這5種狀態(tài)是休眠態(tài),就緒態(tài)、運(yùn)行態(tài)、掛起態(tài)(等待某一事件發(fā)生)和被中斷態(tài)
1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介16第16頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月任務(wù)切換(ContextSwitchorTaskSwitch)
ContextSwitch在有的書(shū)中翻譯成上下文切換,實(shí)際含義是任務(wù)切換,或CPU寄存器內(nèi)容切換。當(dāng)多任務(wù)內(nèi)核決定運(yùn)行另外的任務(wù)時(shí),它保存正在運(yùn)行任務(wù)的當(dāng)前狀態(tài)(Context),即CPU寄存器中的全部?jī)?nèi)容。這些內(nèi)容保存在任務(wù)的當(dāng)前狀況保存區(qū)(Task’sContextStoragearea),也就是任務(wù)自己的棧區(qū)之中。入棧工作完成以后,就是把下一個(gè)將要運(yùn)行的任務(wù)的當(dāng)前狀況從該任務(wù)的棧中重新裝入CPU的寄存器,并開(kāi)始下一個(gè)任務(wù)的運(yùn)行。這個(gè)過(guò)程叫做任務(wù)切換。任務(wù)切換過(guò)程增加了應(yīng)用程序的額外負(fù)荷。CPU的內(nèi)部寄存器越多,額外負(fù)荷就越重。做任務(wù)切換所需要的時(shí)間取決于CPU有多少寄存器要入棧。1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介17第17頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月非占先式與占先式非占先式(non-preemptive)非占先式調(diào)度法也稱作合作型多任務(wù)(cooperativemultitasking),各個(gè)任務(wù)彼此合作共享一個(gè)CPU。中斷服務(wù)可以使一個(gè)高優(yōu)先級(jí)的任務(wù)由掛起狀態(tài)變?yōu)榫途w狀態(tài)。但中斷服務(wù)以后控制權(quán)還是回到原來(lái)被中斷了的那個(gè)任務(wù),直到該任務(wù)主動(dòng)放棄CPU的使用權(quán)時(shí),那個(gè)高優(yōu)先級(jí)的任務(wù)才能獲得CPU的使用權(quán)。非占先式內(nèi)核的一個(gè)特點(diǎn)是幾乎不需要使用信號(hào)量保護(hù)共享數(shù)據(jù)。運(yùn)行著的任務(wù)占有CPU,而不必?fù)?dān)心被別的任務(wù)搶占。非占先式內(nèi)核的最大缺陷在于其響應(yīng)高優(yōu)先級(jí)的任務(wù)慢,任務(wù)已經(jīng)進(jìn)入就緒態(tài),但還不能運(yùn)行,也許要等很時(shí)間,直到當(dāng)前運(yùn)行著的任務(wù)釋放CPU。內(nèi)核的任務(wù)級(jí)響應(yīng)時(shí)間是不確定的,不知道什么時(shí)候最高優(yōu)先級(jí)的任務(wù)才能拿到CPU的控制權(quán),完全取決于應(yīng)用程序什么時(shí)候釋放CPU。1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介18第18頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月非占先式(Non-Preemptive)低優(yōu)先級(jí)任務(wù)ISR高優(yōu)先級(jí)任務(wù)(1)(2)(3)(4)(5)(6)(7)中斷服務(wù)程序使高優(yōu)先級(jí)任務(wù)就緒低優(yōu)先級(jí)任務(wù)釋放CPU使用權(quán)TIME1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介19第19頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月占先式(preemptive)當(dāng)系統(tǒng)響應(yīng)時(shí)間很重要時(shí),要使用占先式(preemptive)內(nèi)核。最高優(yōu)先級(jí)的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。當(dāng)一個(gè)運(yùn)行著的任務(wù)使一個(gè)比它優(yōu)先級(jí)高的任務(wù)進(jìn)入了就緒態(tài),當(dāng)前任務(wù)的CPU使用權(quán)就被剝奪了,或者說(shuō)被掛起了,那個(gè)高優(yōu)先級(jí)的任務(wù)立刻得到了CPU的控制權(quán)。使用占先式內(nèi)核時(shí),應(yīng)用程序不應(yīng)直接使用不可重入型函數(shù)。低優(yōu)先級(jí)的任務(wù)CPU的使用權(quán)被高優(yōu)先級(jí)任務(wù)剝奪,不可重入型函數(shù)中的數(shù)據(jù)有可能被破壞。1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介20第20頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月占先式(Preemptive)低優(yōu)先級(jí)任務(wù)ISR高優(yōu)先級(jí)任務(wù)(1)(2)(3)(4)(5)(6)中斷服務(wù)程序使高優(yōu)先級(jí)任務(wù)就緒高優(yōu)先級(jí)任務(wù)得到CPU使用權(quán)TIME1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介21第21頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月可以被一個(gè)以上的任務(wù)調(diào)用,而不必?fù)?dān)心數(shù)據(jù)的破壞??芍厝胄秃瘮?shù)任何時(shí)候都可以被中斷,一段時(shí)間以后又可以運(yùn)行,而相應(yīng)數(shù)據(jù)不會(huì)丟失。可重入型函數(shù)或者只使用局部變量,即變量保存在CPU寄存器中或堆棧中,或?qū)θ肿兞坑枰员Wo(hù)。一個(gè)不可重入型函數(shù)的例子intTemp;Voidswap(int*x,int*y){Temp=*x;*X=*Y;*y=Temp;}可重入型函數(shù)1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介22第22頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月使用以下技術(shù)之一即可使Swap()函數(shù)具有可重入性:l
把Temp定義為局部變量l
調(diào)用Swap()函數(shù)之前關(guān)中斷,調(diào)用后再開(kāi)中斷l(xiāng)
用信號(hào)量禁止該函數(shù)在使用過(guò)程中被再次調(diào)用
23第23頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月一個(gè)可重入型函數(shù)的例子Voidswap(int*x,int*y){intTemp;Temp=*x;*X=*Y;*y=Temp;}1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介24第24頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月代碼的臨界區(qū):處理時(shí)不可分割的代碼。一旦這部分代碼開(kāi)始執(zhí)行,則不允許任何中斷打入。在進(jìn)入臨界區(qū)之前要關(guān)中斷,而臨界區(qū)代碼執(zhí)行完以后要立即開(kāi)中斷(在任務(wù)切換時(shí),地址、指令、數(shù)據(jù)等寄存器堆棧保護(hù))。代碼的臨界區(qū)1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介25第25頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月程序進(jìn)行時(shí)可使用的軟硬件環(huán)境稱為資源,2個(gè)以上任務(wù)可同時(shí)訪問(wèn)的共享資源稱為臨界資源。任何任務(wù)所占用的實(shí)體都可稱為資源。資源可以是輸入輸出設(shè)備,例如打印機(jī)、鍵盤(pán)、顯示器,資源也可以是一個(gè)變量、一個(gè)結(jié)構(gòu)或一個(gè)數(shù)組等。任務(wù)1共享內(nèi)存任務(wù)2任務(wù)N資源與臨界資源1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介26第26頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月內(nèi)核(Kernel)
多任務(wù)系統(tǒng)中,內(nèi)核負(fù)責(zé)管理各個(gè)任務(wù),或者說(shuō)為每個(gè)任務(wù)分配CPU時(shí)間,并且負(fù)責(zé)任務(wù)之間的通訊。內(nèi)核提供的基本服務(wù)是任務(wù)切換。內(nèi)核本身也增加了應(yīng)用程序的額外負(fù)荷,代碼空間增加ROM的用量,內(nèi)核本身的數(shù)據(jù)結(jié)構(gòu)增加了RAM的用量。但更主要的是,每個(gè)任務(wù)要有自己的??臻g。通過(guò)提供必不可少的系統(tǒng)服務(wù),諸如信號(hào)量管理,郵箱、消息隊(duì)列、延時(shí)等,實(shí)時(shí)內(nèi)核使得CPU的利用更為有效。1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介27第27頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月調(diào)度(Scheduler)(Dispatcher)
內(nèi)核的主要職責(zé)之一,決定該輪到哪個(gè)任務(wù)運(yùn)行了。多數(shù)實(shí)時(shí)內(nèi)核是基于優(yōu)先級(jí)調(diào)度法的。每個(gè)任務(wù)根據(jù)其重要程度的不同被賦予一定的優(yōu)先級(jí)?;趦?yōu)先級(jí)的調(diào)度法指,CPU總是讓處在就緒態(tài)的優(yōu)先級(jí)最高的任務(wù)先運(yùn)行。究竟何時(shí)讓高優(yōu)先級(jí)任務(wù)掌握CPU的使用權(quán),有兩種不同的情況,這要看用的是什么類型的內(nèi)核,是不可剝奪型(非占先式)的還是可剝奪型(占先式)內(nèi)核。1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介28第28頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月 當(dāng)兩個(gè)或兩個(gè)以上任務(wù)有同樣優(yōu)先級(jí),內(nèi)核允許一個(gè)任務(wù)運(yùn)行事先確定的一段時(shí)間,叫做時(shí)間額度(quantum),然后切換給另一個(gè)任務(wù)。也叫做時(shí)間片調(diào)度。內(nèi)核在滿足以下條件時(shí),把CPU控制權(quán)交給下一個(gè)任務(wù)就緒態(tài)的任務(wù): ●當(dāng)前任務(wù)已無(wú)事可做
●當(dāng)前任務(wù)時(shí)間片用完 ●當(dāng)前任務(wù)在時(shí)間片還沒(méi)結(jié)束時(shí)已經(jīng)完成了。 目前,μC/OS-Ⅱ不支持時(shí)間片輪番調(diào)度法。應(yīng)用程序中各任務(wù)的優(yōu)先級(jí)必須互不相同。時(shí)間片輪番調(diào)度法
1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介29第29頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月任務(wù)優(yōu)先級(jí)
每個(gè)任務(wù)都有其優(yōu)先級(jí)。任務(wù)越重要,賦予的優(yōu)先級(jí)應(yīng)越高。●靜態(tài)優(yōu)先級(jí)應(yīng)用程序執(zhí)行過(guò)程中諸任務(wù)優(yōu)先級(jí)不變,則稱之為靜態(tài)優(yōu)先級(jí)。在靜態(tài)優(yōu)先級(jí)系統(tǒng)中,諸任務(wù)以及它們的時(shí)間約束在程序編譯時(shí)是已知的?!駝?dòng)態(tài)優(yōu)先級(jí)應(yīng)用程序執(zhí)行過(guò)程中,任務(wù)的優(yōu)先級(jí)是可變的,則稱之為動(dòng)態(tài)優(yōu)先級(jí)。1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介30第30頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月優(yōu)先級(jí)反轉(zhuǎn)
使用實(shí)時(shí)內(nèi)核,優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題是實(shí)時(shí)系統(tǒng)中出現(xiàn)得最多的問(wèn)題。
1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介31第31頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月多任務(wù)內(nèi)核應(yīng)允許動(dòng)態(tài)改變?nèi)蝿?wù)的優(yōu)先級(jí)以避免發(fā)生優(yōu)先級(jí)反轉(zhuǎn)現(xiàn)象。為防止發(fā)生優(yōu)先級(jí)反轉(zhuǎn),內(nèi)核能自動(dòng)變換任務(wù)的優(yōu)先級(jí),這叫做優(yōu)先級(jí)繼承(Priorityinheritance)但μC/OS-Ⅱ不支持優(yōu)先級(jí)繼承,一些商業(yè)內(nèi)核有優(yōu)先級(jí)繼承功能
1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介32第32頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月互斥條件
實(shí)現(xiàn)任務(wù)間通訊最簡(jiǎn)便的辦法是使用共享數(shù)據(jù)結(jié)構(gòu)。特別是當(dāng)所有的任務(wù)都在一個(gè)單一地址空間下.能使用全程變量、指針、緩沖區(qū)、鏈表等,使用共享數(shù)據(jù)結(jié)構(gòu)通訊就更為容易。雖然共享數(shù)據(jù)區(qū)法簡(jiǎn)化了任務(wù)間的信息交換,但是必須保證每個(gè)任務(wù)在處理共享數(shù)據(jù)時(shí)的排它性,以避免競(jìng)爭(zhēng)和數(shù)據(jù)的破壞。與共享資源打交道時(shí),使之滿足互斥條件最一般的方法有:
l
關(guān)中斷
l
使用測(cè)試并置位指令
l禁止做任務(wù)切換
l利用信號(hào)量
1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介33第33頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月l
關(guān)中斷和開(kāi)中斷處理共享數(shù)據(jù)時(shí)保證互斥,最簡(jiǎn)便快捷的辦法是關(guān)中斷和開(kāi)中斷。μC/OS-Ⅱ在處理內(nèi)部變量和數(shù)據(jù)結(jié)構(gòu)時(shí)就是使用的這種手段,即使不是全部,也是絕大部分。實(shí)際上μC/OS-Ⅱ提供兩個(gè)宏調(diào)用,允許用戶在應(yīng)用程序的C代碼中關(guān)中斷然后再開(kāi)中斷:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()利用μC/OS_Ⅱ宏調(diào)用關(guān)中斷和開(kāi)中斷voidFunction(void){
OS_ENTER_CRITICAL();
/*在這里處理共享數(shù)據(jù)*/
OS_EXIT_CRITICAL();}1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介34第34頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月l
測(cè)試并置位
如果不使用實(shí)時(shí)內(nèi)核,當(dāng)兩個(gè)任務(wù)共享一個(gè)資源時(shí),一定要約定好,先測(cè)試某一全程變量,如果該變量是0,允許該任務(wù)與共享資源打交道。為防止另一任務(wù)也要使用該資源,前者只要簡(jiǎn)單地將全程變量置為1,這通常稱作測(cè)試并置位(Test-And-Set),或稱作TAS。TAS操作可能是微處理器的單獨(dú)一條不會(huì)被中斷的指令,或者是在程序中關(guān)中斷做TAS操作再開(kāi)中斷。有的微處理器有硬件的TAS指令(如Motorola68000系列,就有這條指令)
利用測(cè)試并置位處理共享資源Disableinterrupts;關(guān)中斷if(‘AccessVariable’is0){如果資源可用,標(biāo)志為0
Setvariableto1; 置資源不可用,標(biāo)志為1
Reenableinterrupts;重開(kāi)中斷
Accesstheresource;處理該資源
Disableinterrupts;關(guān)中斷
Setthe‘AccessVariable’backto0;清資源不可使用,標(biāo)志為0
Reenableinterrupts;重新開(kāi)中斷}else{否則
Reenableinterrupts;開(kāi)中斷/*Youdon’thaveaccesstotheresource,trybacklater;*//*資源不可使用,以后再試;*/}1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介35第35頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月l
禁止,然后允許任務(wù)切換(給任務(wù)切換上鎖和開(kāi)鎖)如果任務(wù)不與中斷服務(wù)子程序共享變量或數(shù)據(jù)結(jié)構(gòu),可以使用禁止、然后允許任務(wù)切換。雖然任務(wù)切換是禁止了,但中斷還是開(kāi)著的。如果這時(shí)中斷來(lái)了,中斷服務(wù)子程序會(huì)在這一臨界區(qū)內(nèi)立即執(zhí)行。中斷服務(wù)子程序結(jié)束時(shí),盡管有優(yōu)先級(jí)高的任務(wù)已經(jīng)進(jìn)入就緒態(tài),內(nèi)核還是返回到原來(lái)被中斷了的任務(wù)。直到執(zhí)行完給任務(wù)切換開(kāi)鎖函數(shù)OSSchedUnlock()。雖然這種方法是可行的,但應(yīng)該盡量避免禁止任務(wù)切換之類操作,因?yàn)閮?nèi)核最主要的功能就是做任務(wù)的調(diào)度與協(xié)調(diào)。用給任務(wù)切換上鎖,然后開(kāi)鎖的方法實(shí)現(xiàn)數(shù)據(jù)共享.voidFunction(void){
OSSchedLock();
/*Youcanaccessshareddatainhere(interruptsarerecognized)*//*在這里處理共享數(shù)據(jù)(中斷是開(kāi)著的)*/
OSSchedUnlock();}1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介36第36頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月l
信號(hào)量(Semaphores)信號(hào)量實(shí)際上是一種約定機(jī)制,在多任務(wù)內(nèi)核中普遍使用.信號(hào)量用于:
1、控制共享資源的使用權(quán)(滿足互斥條件)
2、標(biāo)志某事件的發(fā)生
3、使兩個(gè)任務(wù)的行為同步 二值信號(hào)量只取兩個(gè)值的信號(hào)(0、1) 計(jì)數(shù)式信號(hào)量的值可以是0到255或0到65535,或0到4294967295,一般地說(shuō),對(duì)信號(hào)量只能實(shí)施三種操作:初始化(INITIALIZE),也可稱作建立(CREATE);等信號(hào)(WAIT)也可稱作掛起(PEND);給信號(hào)(SIGNAL)或發(fā)信號(hào)(POST)。信號(hào)量初始化時(shí)要給信號(hào)量賦初值,等待信號(hào)量的任務(wù)表(Waitinglist)應(yīng)清為空。1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介37第37頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月想要得到信號(hào)量的任務(wù)執(zhí)行等待(WAIT)操作。如果該信號(hào)量有效(即信號(hào)量值大于0),則信號(hào)量值減1,任務(wù)得以繼續(xù)運(yùn)行。如果信號(hào)量的值為0,等待信號(hào)量的任務(wù)就被列入等待信號(hào)量任務(wù)表。
任務(wù)以發(fā)信號(hào)操作(SIGNAL)釋放信號(hào)量。如果沒(méi)有任務(wù)在等待信號(hào)量,信號(hào)量的值僅僅是簡(jiǎn)單地加1。如果有任務(wù)在等待該信號(hào)量,那么就會(huì)有一個(gè)任務(wù)進(jìn)入就緒態(tài),信號(hào)量的值也就不加1。于是鑰匙給了等待信號(hào)量的諸任務(wù)中的一個(gè)任務(wù)。
收到信號(hào)量的任務(wù)可能是以下兩者之一。
---等待信號(hào)量任務(wù)中優(yōu)先級(jí)最高的
---最早開(kāi)始等待信號(hào)量的那個(gè)任務(wù),即按先進(jìn)先出的原則(FirstInFirstOut,F(xiàn)IFO)
μC/OS-Ⅱ只支持優(yōu)先級(jí)法。
1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介38第38頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月 要與同一共享數(shù)據(jù)打交道的任務(wù)調(diào)用等待信號(hào)量函數(shù)OSSemPend()。處理完共享數(shù)據(jù)以后再調(diào)用釋放信號(hào)量函數(shù)OSSemPost()。
通過(guò)獲得信號(hào)量處理共享數(shù)據(jù)OS_EVENT*SharedDataSem;voidFunction(void){
INT8Uerr;
OSSemPend(SharedDataSem,0,&err);../*Youcanaccessshareddatainhere(interruptsarerecognized)*/./*共享數(shù)據(jù)的處理在此進(jìn)行,(中斷是開(kāi)著的)*/
OSSemPost(SharedDataSem);}1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介39第39頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介40第40頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月計(jì)數(shù)式信號(hào)量的用法緩沖區(qū)陣列管理方滿足前十個(gè)申請(qǐng)緩沖區(qū)的任務(wù),就好像有10把鑰匙可以發(fā)給諸任務(wù)。當(dāng)所有的鑰匙都用完了,申請(qǐng)緩沖區(qū)的任務(wù)被掛起,直到信號(hào)量重新變?yōu)橛行А?/p>
1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介41第41頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月死鎖(或抱死)(Deadlock(orDeadlyEmbrace))
死鎖也稱作抱死,指兩個(gè)任務(wù)無(wú)限期地互相等待對(duì)方控制著的資源。最簡(jiǎn)單的防止發(fā)生死鎖的方法是讓每個(gè)任務(wù)都:先得到全部需要的資源再做下一步的工作.
內(nèi)核大多允許用戶在申請(qǐng)信號(hào)量時(shí)定義等待超時(shí),以此化解死鎖。1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介42第42頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月時(shí)鐘節(jié)拍(ClockTick)時(shí)鐘節(jié)拍是特定的周期性中斷這個(gè)中斷可以看作是系統(tǒng)心臟的脈動(dòng)。中斷之間的時(shí)間間隔取決于不同的應(yīng)用,一般在10mS到200mS之間。時(shí)鐘的節(jié)拍式中斷使得內(nèi)核可以將任務(wù)延時(shí)若干個(gè)整數(shù)時(shí)鐘節(jié)拍,以及當(dāng)任務(wù)等待事件發(fā)生時(shí),提供等待超時(shí)的依據(jù)。時(shí)鐘節(jié)拍率越快,系統(tǒng)的額外開(kāi)銷就越大。1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介43第43頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月實(shí)時(shí)系統(tǒng)是面向具體應(yīng)用,對(duì)外來(lái)事件在限定時(shí)間內(nèi)能做出反應(yīng)的系統(tǒng)。限定時(shí)間的范圍很廣可以從微秒級(jí)(如信號(hào)處理)到分級(jí)(如聯(lián)機(jī)查詢系統(tǒng))。在實(shí)時(shí)系統(tǒng)中主要有三個(gè)指標(biāo)來(lái)衡量系統(tǒng)的實(shí)時(shí)性。響應(yīng)時(shí)間(ResponseTime):是計(jì)算機(jī)識(shí)別一個(gè)外部事件到作出響應(yīng)的時(shí)間,在控制應(yīng)用中它是最重要的指標(biāo),如果事件不能及時(shí)的處理,系統(tǒng)可能就會(huì)崩潰。生存時(shí)間(SurvivalTime):是數(shù)據(jù)有效等待時(shí)間,在這段時(shí)間里數(shù)據(jù)是有效的。吞吐量(Throughput):是在一給定時(shí)間內(nèi)(秒),系統(tǒng)可以處理的事件總數(shù)。例如通訊控制器用每秒鐘處理的字符數(shù)來(lái)表示吞吐量,吞吐量是平均響應(yīng)時(shí)間的倒數(shù)。實(shí)時(shí)系統(tǒng)的評(píng)價(jià)指標(biāo)1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介44第44頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月1.1操作系統(tǒng)的分類1.2常見(jiàn)的嵌入式實(shí)時(shí)操作系統(tǒng)1.3實(shí)時(shí)操作系統(tǒng)概念1.4C/OS-Ⅱ簡(jiǎn)介1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介45第45頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月1.4C/OS簡(jiǎn)介
1、C/OS——MicroControllerOS,微控制器操作系統(tǒng)2、C/OS簡(jiǎn)介美國(guó)人JeanLabrosse1992年完成應(yīng)用面覆蓋了諸多領(lǐng)域,如照相機(jī)、醫(yī)療器械、音響設(shè)備、發(fā)動(dòng)機(jī)控制、高速公路電話系統(tǒng)、自動(dòng)提款機(jī)等1998年C/OS-II,目前的版本C/OS-IIV2.7x2000年,得到美國(guó)航空管理局(FAA)的認(rèn)證,可以用于飛行器中網(wǎng)站www.ucos-II.com()1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介46第46頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月公開(kāi)源代碼
μCOS不但提供了一個(gè)完整的嵌入式實(shí)時(shí)內(nèi)核的源代碼,而且對(duì)這些代碼的細(xì)節(jié)作了詳盡的解釋,它不僅告訴讀者這個(gè)實(shí)時(shí)內(nèi)核是怎么寫(xiě)的,還解釋了為什么要這樣寫(xiě)。而商業(yè)上的實(shí)時(shí)操作系統(tǒng)軟件不但價(jià)格昂貴(一般都在5千到2萬(wàn)美元的價(jià)位上),而且其中很多都是所謂黑盒子,即不提供源代碼。C/OS的性能特點(diǎn)(一)1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介可移植性(Portable)
絕大部分
C/OS-II的源碼是用移植性很強(qiáng)的ANSIC寫(xiě)的。和微處理器硬件相關(guān)的那部分是用匯編語(yǔ)言寫(xiě)的。匯編語(yǔ)言寫(xiě)的部分已經(jīng)壓到最低限度,使得
C/OS-II便于移植到其他微處理器上。匯編語(yǔ)言寫(xiě)的部分只有200行左右。
C/OS-II可以在絕大多數(shù)8位、16位、32位以至64位微處理器、微控制器、數(shù)字信號(hào)處理器(DSP)上運(yùn)行。移植范例的源代碼可以從因特網(wǎng)上下載。47第47頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月可裁剪(Scalable)
(os_cfg.h)
可以只使用
C/OS-II中應(yīng)用程序需要的那些系統(tǒng)服務(wù)。也就是說(shuō)某產(chǎn)品可以只使用很少幾個(gè)
C/OS-II調(diào)用,而另一個(gè)產(chǎn)品則使用了幾乎所有
C/OS-II的功能,這樣可以減少產(chǎn)品中的
C/OS-II所需的存儲(chǔ)器空間(RAM和ROM)。這種可剪裁性是靠條件編譯實(shí)現(xiàn)的。多任務(wù)
C/OS-II可以管理64個(gè)任務(wù),然而,目前這一版本保留8個(gè)給系統(tǒng)。應(yīng)用程序最多可以有56個(gè)任務(wù)占先式(Preemptive)C/OS的性能特點(diǎn)(二)48第48頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月可確定性
全部
C/OS-II的函數(shù)調(diào)用與服務(wù)的執(zhí)行時(shí)間具有可確定性。任務(wù)棧
每個(gè)任務(wù)有自己?jiǎn)为?dú)的棧,
C/OS-II允許每個(gè)任務(wù)有不同的??臻g,以便壓低應(yīng)用程序?qū)AM的需求。系統(tǒng)服務(wù)
C/OS-II提供很多系統(tǒng)服務(wù),例如郵箱、消息隊(duì)列、信號(hào)量、塊大小固定的內(nèi)存的申請(qǐng)與釋放、時(shí)間相關(guān)函數(shù)等。中斷管理
中斷可以使正在執(zhí)行的任務(wù)暫時(shí)掛起,如果優(yōu)先級(jí)更高的任務(wù)被該中斷喚醒,則高優(yōu)先級(jí)的任務(wù)在中斷嵌套全部退出后立即執(zhí)行,中斷嵌套層數(shù)可達(dá)255層??晒袒≧OMable)
C/OS-II是為嵌入式應(yīng)用而設(shè)計(jì)的,這就意味著,只要讀者有固化手段(C編譯、連接、下載和固化),
C/OS-II可以嵌入到讀者的產(chǎn)品中成為產(chǎn)品的一部分。穩(wěn)定性與可靠性C/OS的性能特點(diǎn)(三)1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介49第49頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月
μC/OS已被移植到以下一些CPU上。Analog設(shè)備公司AD21xxARM公司ARM6,ARM7日立公司64180,H8/3xx,SH系列Intel公司80x86,Pentium,PentiumII,8051,8052,MCS-251,80196,8096三菱公司M16和M32摩托羅拉公司PowerPC,68K,CPU32,CPU32+,68H11,68HC16飛利浦公司XA西門(mén)子公司80C166和TriCoreTI公司TMS320Zilog公司Z—80和Z—1801、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介50第50頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月μC/OS的幾個(gè)典型應(yīng)用1).NSA2010便攜式電話,在日本大約有15000臺(tái)投入市場(chǎng)。使用μC/OS實(shí)時(shí)操作系統(tǒng)。2).CYCLONE移動(dòng)電話,HitachiH8S/2318k微程序控制器,256K閃存和8KRam,μC/OS實(shí)時(shí)操作系統(tǒng)。選擇μC/OS的原因:INFEAR&D的職員從1996年以來(lái)開(kāi)始應(yīng)用Micriμm實(shí)時(shí)操作系統(tǒng)。通過(guò)比較,還沒(méi)有發(fā)現(xiàn)比μC/OS更好的實(shí)時(shí)操作系統(tǒng)。我們將繼續(xù)應(yīng)用μC/OS以及Micriμm的其它產(chǎn)品包括下一代μC/OS-IIV2.52的產(chǎn)品。
1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介51第51頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月3)三軸運(yùn)動(dòng)控制卡
——HitachiSH2微處理器;——7個(gè)任務(wù);——時(shí)鐘頻率10Hz;用于加工眼鏡的塑料鏡片的計(jì)算機(jī)控制車床的運(yùn)動(dòng)控制。選擇μC/OS-II的原因:
主要原因是它與其它市場(chǎng)上的實(shí)時(shí)操作系統(tǒng)相比的相對(duì)低廉的費(fèi)用。另一個(gè)主要原因是資源和內(nèi)設(shè)的可獲得性。最后一點(diǎn),μC/OS-II有足夠的能力使我們能夠順利完成工作。1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介52第52頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月4)MB-20-M信用卡處理裝置TCP/IP協(xié)議;20MHzAm188ES;10項(xiàng)任務(wù);時(shí)鐘頻率100Hz;
MB-20-M被用于對(duì)很多的教學(xué)和商務(wù)設(shè)備的控制使用和收費(fèi),包括身份證,安全卡和圖書(shū)館借閱卡,現(xiàn)在只要應(yīng)用標(biāo)準(zhǔn)磁條的用戶卡都可以在MB-20-M終端上使用。選擇μC/OS-II的原因:
價(jià)格便宜,代碼尺寸小,縮短開(kāi)發(fā)周期1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介53第53頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月5)獨(dú)立靜態(tài)交換機(jī)HitachiH8S/2357CPU4個(gè)任務(wù)時(shí)鐘頻率1000Hz
獨(dú)立靜態(tài)交換機(jī)(SIEL交換機(jī))是一個(gè)可以連續(xù)的瞬時(shí)改變電源的裝置從而控制兩條電線的狀態(tài),最終保證負(fù)載的最佳電力供給。這種機(jī)器同樣可以保護(hù)負(fù)載以防短路。選擇μC/OS—II的原因:與其它實(shí)時(shí)方案相比低廉的價(jià)格,與很多微處理器可以進(jìn)行數(shù)據(jù)傳輸,對(duì)源代碼的完全控制。1、實(shí)時(shí)操作系統(tǒng)概念及C/OS-Ⅱ簡(jiǎn)介54第54頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月本節(jié)提要132546C/OS-Ⅱ簡(jiǎn)介及實(shí)時(shí)操作系統(tǒng)概念C/OS-Ⅱ內(nèi)核結(jié)構(gòu)C/OS-Ⅱ任務(wù)通信與同步C/OS-Ⅱ任務(wù)管理C/OS-Ⅱ時(shí)間管理C/OS-Ⅱ移植55第55頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月uC/OS功能:56第56頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月C/OS-II的文件結(jié)構(gòu)H2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)S
57第57頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月2.1任務(wù)taskC/OS–II支持64個(gè)任務(wù),每個(gè)任務(wù)一個(gè)特定的優(yōu)先級(jí)。優(yōu)先級(jí)越高,數(shù)字越小。系統(tǒng)占用了8個(gè)任務(wù),保留優(yōu)先級(jí)為0、1、2、3、OS_LOWEST_PRIO-3、OS_LOWEST_PRIO-2、OS_LOWEST_PRIO-1、OS_LOWEST_PRIO-0。用戶一般有56個(gè)任務(wù)可用C/OS–II通過(guò)OSTaskCreate()或OSTaskCreateExt()創(chuàng)建任務(wù),后者是前者的擴(kuò)展,有了一些附加功能。2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)58第58頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月C/OS–IITaskStructure
voidYourTask(void*pdata) (1){
for(;;){ (2)/*用戶代碼*/
調(diào)用uC/OS-II的某種系統(tǒng)服務(wù):OSMboxPend();OSQPend();OSSemPend();OSTaskDel(OS_PRIO_SELF);OSTaskSuspend(OS_PRIO_SELF);OSTimeDly();OSTimeDlyHMSM();/*用戶代碼*/}}2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)59第59頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月C/OS–IITaskStructure任務(wù)的幾個(gè)特征:任務(wù)通常是一個(gè)無(wú)限的循環(huán)返回參數(shù)類型必須定義成void(當(dāng)任務(wù)開(kāi)始執(zhí)行時(shí),可以有一個(gè)參數(shù)傳遞給用戶任務(wù)代碼)也可以使用while(1)語(yǔ)句,實(shí)現(xiàn)無(wú)限的循環(huán);任務(wù)可以有返回值類型和參數(shù),但任務(wù)函數(shù)永遠(yuǎn)不會(huì)返回。任務(wù)完成后,任務(wù)可以自我刪除。60第60頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月任務(wù)可以自刪除(進(jìn)入睡眠態(tài))voidYourTask(void*pdata){/*用戶代碼*/OSTaskDel(OS_PRIO_SELF);}一個(gè)CPU在一個(gè)具體時(shí)刻,只能允許一個(gè)任務(wù)占用CPU,任務(wù)的狀態(tài):睡眠態(tài)、就緒態(tài)、運(yùn)行態(tài)、等待態(tài)、中斷服務(wù)態(tài)2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)61第61頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月62第62頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月2.2任務(wù)狀態(tài)//
2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)63第63頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月任務(wù)狀態(tài)64第64頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月uC/OS-II的任務(wù)由三部分組成:任務(wù)控制塊用來(lái)保存任務(wù)屬性任務(wù)的棧用來(lái)保存任務(wù)的工作環(huán)境任務(wù)代碼程序執(zhí)行部分65第65頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月66第66頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月用戶應(yīng)用程序結(jié)構(gòu)67第67頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月68第68頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月2.3任務(wù)控制塊(TCB)任務(wù)控制塊OS_TCB是一個(gè)數(shù)據(jù)結(jié)構(gòu),保存該任務(wù)的相關(guān)參數(shù),包括任務(wù)堆棧指針,狀態(tài),優(yōu)先級(jí),任務(wù)就緒表位置,任務(wù)鏈表指針等。當(dāng)任務(wù)重新得到CPU使用權(quán)時(shí),任務(wù)控制塊能確保任務(wù)從當(dāng)時(shí)被中斷的哪一點(diǎn)絲毫不差的繼續(xù)執(zhí)行。所有的任務(wù)控制塊分為兩條鏈表,空閑鏈表和使用鏈表。2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)69第69頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月μC/OS-II任務(wù)控制塊.ucos-ii.htypedefstructos_tcb{OS_STK*OSTCBStkPtr;指向當(dāng)前任務(wù)棧頂?shù)闹羔?/p>
#ifOS_TASK_CREATE_EXT_EN>0void*OSTCBExtPtr;指向用戶定義的任務(wù)控制塊擴(kuò)展
OS_STK*OSTCBStkBottom;指向任務(wù)棧底的指針
INT32UOSTCBStkSize;棧中可容納的指針元數(shù)
INT16UOSTCBOpt;把“選擇項(xiàng)”傳給OSTaskCreateExt()
INT16UOSTCBId;任務(wù)的識(shí)別碼
#endifstructos_tcb*OSTCBNext;任務(wù)控制塊OS_TCBs的雙重鏈接
structos_tcb*OSTCBPrev;#ifOS_EVENT_ENOS_EVENT*OSTCBEventPtr;/*指向事件控制塊*/#endif2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)70第70頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月#if((OS_Q_EN>0)&&(OS_MAX_QS>0))||(OS_MBOX_EN>0)void*OSTCBMsg;指向傳給任務(wù)的消息的指針#endifINT16UOSTCBDly;任務(wù)延時(shí)若干時(shí)鐘節(jié)拍
INT8UOSTCBStat;任務(wù)的狀態(tài)字0,就緒INT8UOSTCBPrio;任務(wù)優(yōu)先級(jí)
INT8UOSTCBX;用于加速任務(wù)進(jìn)入就緒態(tài)的過(guò)程
INT8UOSTCBY;或進(jìn)入等待事件發(fā)生狀態(tài)的過(guò)程
INT8UOSTCBBitX;INT8UOSTCBBitY;#ifOS_TASK_DEL_ENBOOLEANOSTCBDelReq;表示該任務(wù)是否需要?jiǎng)h除自身
#endif}OS_TCB;2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)71第71頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月
任務(wù)控制塊OS_TCB中幾個(gè)成員的算法OSTCBY=priority>>3;(第幾組)OSTCBBitY=OSMapTbl[priority>>3];(在OSRdyGrp中1的位置)OSTCBX=priority&0x07;OSTCBBitX=OSMapTbl[priority&0x07];000000001100000010200000100300001000400010000500100000601000000710000000IndexOSMapTbl[Index]OSRdyGrp1207654300XXXYYY任務(wù)優(yōu)先級(jí)2017654310891514131211181617232221201926242531302928273432333938373635424041474645444350484955545352515856576362616059[0][1][2][3][4][5][6][7]OSRdyTbl[7]XYos_core.c2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)72第72頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月空任務(wù)列表所有的任務(wù)控制塊都被放置在任務(wù)控制塊列表數(shù)組OSTCBTbl[]中,系統(tǒng)初始化時(shí),所有任務(wù)控制塊被鏈接成空任務(wù)控制塊的單向鏈表,2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)73第73頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月OSInit():主要功能完成一般變量初始化就緒列表初始化空閑任務(wù)鍵表OSTCBFreeList建立事件空閑鍵表OSEventFreeList建立其它相關(guān)功能參數(shù)初始化。創(chuàng)建空閑任務(wù)OS_TaskIdle創(chuàng)建統(tǒng)計(jì)任務(wù)OS_InitTaskSta74第74頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月調(diào)用OSInit()之后的數(shù)據(jù)結(jié)構(gòu):使用任務(wù)塊鏈表75第75頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月任務(wù)建立后,空任務(wù)控制塊指針OSTCBFreeList指向的任務(wù)控制塊就賦給了該任務(wù),然后OSTCBFreeList的值調(diào)整為指向鏈表中的下一個(gè)空任務(wù)控制塊。μC/OS-Ⅱ分配給系統(tǒng)任務(wù)OS_N_SYS_TASKS若干個(gè)任務(wù)控制塊,見(jiàn)文件μC/OS-Ⅱ.H,供其內(nèi)部使用。76第76頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月任務(wù)控制塊的初始化當(dāng)應(yīng)用程序調(diào)用函數(shù)OSTaskCreate()創(chuàng)建一個(gè)任務(wù)時(shí),這個(gè)函數(shù)會(huì)調(diào)用系統(tǒng)函數(shù)OSTCBInit()來(lái)為任務(wù)控制塊進(jìn)行初始化。系統(tǒng)函數(shù)OSTCBInit()的功能:為被創(chuàng)建任務(wù)從空任務(wù)控制塊鏈表獲取一個(gè)任務(wù)控制塊;用任務(wù)屬性對(duì)任務(wù)控制塊各個(gè)成員進(jìn)行賦值;把賦值的任務(wù)控制塊鏈入到任務(wù)控制塊鏈表的頭部。77第77頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月任務(wù)控制塊初始化函數(shù)OS_TCBInit()INT8UOS_TCBInit(INT8Uprio,OS_STK*ptos,OS_STK*pbos,INT16Uid,INT32Ustk_size,void*pext,INT16Uopt){OS_ENTER_CRITICAL();ptcb=OSTCBFreeList;/*GetafreeTCBfromthefreeTCBlist*/if(ptcb!=(OS_TCB*)0){//是否有空任務(wù)OSTCBFreeList=ptcb->OSTCBNext;/*UpdatepointertofreeTCBlist*/OS_EXIT_CRITICAL();ptcb->OSTCBStkPtr=ptos;/*LoadStackpointerinTCB*/ptcb->OSTCBPrio=(INT8U)prio;/*LoadtaskpriorityintoTCB*/ptcb->OSTCBStat=OS_STAT_RDY;/*Taskisreadytorun,’00’*/ptcb->OSTCBDly=0;……函數(shù)OstaskCreate()、OstaskCreateExt()中調(diào)用
2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)os_core.c78第78頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月ptcb->OSTCBY=(INT8U)(prio>>3);/*Pre-computeX,Y,BitXandBitY*/ptcb->OSTCBBitY=OSMapTbl[ptcb->OSTCBY];ptcb->OSTCBX=(INT8U)(prio&0x07);ptcb->OSTCBBitX=OSMapTbl[ptcb->OSTCBX];……OSTCBPrioTbl[prio]=ptcb;ptcb->OSTCBNext=OSTCBList;/*LinkintoTCBchain*/ptcb->OSTCBPrev=(OS_TCB*)0;if(OSTCBList!=(OS_TCB*)0){//是否有任務(wù)OSTCBList->OSTCBPrev=ptcb;}OSTCBList=ptcb;OSRdyGrp|=ptcb->OSTCBBitY;/*Maketaskreadytorun*/OSRdyTbl[ptcb->OSTCBY]|=ptcb->OSTCBBitX;}OS_EXIT_CRITICAL();return(OS_NO_ERR);}79第79頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月啟動(dòng)多任務(wù)多任務(wù)的啟動(dòng)是用戶通過(guò)調(diào)用OSStart()實(shí)現(xiàn)的。voidmain(void){OSInit();/*初始化uC/OS-II.通過(guò)調(diào)用OSTaskCreate()或OSTaskCreateExt()創(chuàng)建至少一個(gè)任務(wù);.OSStart();/*開(kāi)始多任務(wù)調(diào)度!OSStart()永遠(yuǎn)不會(huì)返回*/}80第80頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月voidOSStart(void){INT8Uy;INT8Ux;if(OSRunning==FALSE){y=OSUnMapTbl[OSRdyGrp];x=OSUnMapTbl[OSRdyTbl[y]];OSPrioHighRdy=(INT8U)((y<<3)+x);OSPrioCur=OSPrioHighRdy;OSTCBHighRdy=OSTCBPrioTbl[OSPrioHighRdy];獲得最高級(jí)任務(wù) OSTCBCur=OSTCBHighRdy;OSStartHighRdy(); 啟動(dòng)最高優(yōu)先級(jí)任務(wù)}}81第81頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月調(diào)用OSStart()以后的變量與數(shù)據(jù)結(jié)構(gòu)82第82頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月Os_tcb*的數(shù)組OSTCBPrioTBL[],專門(mén)用來(lái)以任務(wù)的優(yōu)先級(jí)為順序,在數(shù)組的元素里存放指向各個(gè)任務(wù)控制塊的指針。任務(wù)控制塊列表數(shù)組OSTCBTBL[]與OSTCBPrioTBL[]的區(qū)別?83第83頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月2.4就緒表
任務(wù)級(jí)的任務(wù)調(diào)度--OSSchedC/OS是占先式實(shí)時(shí)多任務(wù)內(nèi)核,優(yōu)先級(jí)最高的任務(wù)一旦準(zhǔn)備就緒,則擁有CPU的所有權(quán)開(kāi)始投入運(yùn)行。C/OS中不支持時(shí)間片輪轉(zhuǎn)法,每個(gè)任務(wù)的優(yōu)先級(jí)要求不一樣且是唯一的,所以任務(wù)調(diào)度的工作就是:查找準(zhǔn)備就緒的最高優(yōu)先級(jí)的任務(wù)并進(jìn)行上下文切換。C/OS任務(wù)調(diào)度所花的時(shí)間為常數(shù),與應(yīng)用程序中建立的任務(wù)數(shù)無(wú)關(guān)。2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)84第84頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月C/OS進(jìn)行任務(wù)調(diào)度的思想是,每時(shí)每刻總是讓優(yōu)先級(jí)最高的就緒任務(wù)處于運(yùn)行狀態(tài);為保證這一點(diǎn)它在系統(tǒng)或用戶任務(wù)調(diào)用系統(tǒng)函數(shù)及執(zhí)行中斷服務(wù)程序結(jié)束時(shí),總是調(diào)用調(diào)度器來(lái)確定應(yīng)該運(yùn)行的任務(wù)并運(yùn)行它。C/OS進(jìn)行任務(wù)調(diào)度的依據(jù)就是任務(wù)就緒表;就緒表為每個(gè)任務(wù)安排了一個(gè)二進(jìn)制位,該位的值為1表示對(duì)應(yīng)的任務(wù)處于就緒狀態(tài);該位為0表示對(duì)應(yīng)的任務(wù)處于非就緒態(tài)。C/OS的狀態(tài)有兩個(gè)變量OSRdyGrp、OSRdyTbl[]表示;OSRdyTbl[]數(shù)組的每一個(gè)元素描述八個(gè)任務(wù)的狀態(tài),OSRdyGrp是一個(gè)8位元素,每一位描述了對(duì)應(yīng)OSRdyTbl[]數(shù)組的任務(wù)狀態(tài)。如果OSRdyTbl[]數(shù)組的有任務(wù)就緒,OSRdyGrp會(huì)把該任務(wù)組對(duì)應(yīng)的位置一。85第85頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月每個(gè)就緒的任務(wù)都放入就緒表中(readylist)中,就緒表有兩個(gè)變量:OSRdyGrp、OSRdyTbl[]OSRdyGrp1207654300XXXYYY任務(wù)優(yōu)先級(jí)2017654310891514131211181617232221201926242531302928273432333938373635424041474645444350484955545352515856576362616059[0][1][2][3][4][5][6][7]OSRdyTbl[7]XY優(yōu)先級(jí)最低任務(wù)(空閑任務(wù))優(yōu)先級(jí)最高任務(wù)任務(wù)優(yōu)先級(jí)號(hào)86第86頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月兩個(gè)關(guān)鍵:優(yōu)先級(jí)數(shù)分解為高三位和低三位分別確定;高優(yōu)先級(jí)有著小的優(yōu)先級(jí)號(hào);針對(duì)就緒表的三種操作:使任務(wù)進(jìn)入就緒態(tài)使任務(wù)脫離就緒態(tài)根據(jù)就緒表確定最高優(yōu)先級(jí)87第87頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月優(yōu)先級(jí)和就緒任務(wù)表的位置關(guān)系每個(gè)就緒的任務(wù)都放入就緒表中(readylist)中,就緒表有兩個(gè)變量:OSRdyGrp、OSRdyTbl[]OSRdyGrp1207654300XXXYYY任務(wù)優(yōu)先級(jí)2017654310891514131211181617232221201926242531302928273432333938373635424041474645444350484955545352515856576362616059[0][1][2][3][4][5][6][7]OSRdyTbl[7]XY優(yōu)先級(jí)最低任務(wù)(空閑任務(wù))優(yōu)先級(jí)最高任務(wù)任務(wù)優(yōu)先級(jí)號(hào)2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)88第88頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月根據(jù)優(yōu)先級(jí)確定就緒表(1)假設(shè)優(yōu)先級(jí)為12的任務(wù)進(jìn)入就緒狀態(tài),12=1100b,則OSRdyTbl[1]的第4位置1,且OSRdyGrp的第1位置1,相應(yīng)的數(shù)學(xué)表達(dá)式為:OSRdyGrp|=0x02;OSMapTbl[1]=(00000010)
OSRdyTbl[1]|=0x10;OSMapTbl[4]=(00010000)而優(yōu)先級(jí)為21的任務(wù)就緒21=10101b,則OSRdyTbl[2]的第5位置1,且OSRdyGrp的第2位置1,相應(yīng)的數(shù)學(xué)表達(dá)式為:
OSRdyGrp|=0x04;OSMapTbl[2]=(00000100)
OSRdyTbl[2]|=0x20;OSMapTbl[5]=(00100000)2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)89第89頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月根據(jù)優(yōu)先級(jí)確定就緒表(2)從上面的計(jì)算我們可以得到:若OSRdyGrp及OSRdyTbl[]的第n位置1,則應(yīng)該把OSRdyGrp及OSRdyTbl[]的值與2n相或。uC/OS中,把2n的n=0-7的8個(gè)值先計(jì)算好存在數(shù)組OSMapTbl[7]中,也就是:
OSMapTbl[0]=20=0x01(00000001)
OSMapTbl[1]=21=0x02(00000010)
……OSMapTbl[7]=27=0x80(10000000)000000001100000010200000100300001000400010000500100000601000000710000000IndexBitMask(Binary)2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)os_core.c90第90頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月使任務(wù)進(jìn)入就緒態(tài)如果prio是任務(wù)是優(yōu)先級(jí),也是任務(wù)的識(shí)別號(hào),則將任務(wù)放入就緒表,即使任務(wù)進(jìn)入就緒態(tài)的方法是:OSRdyGrp|=OSMapTbl[prio>>3];OSRdyTbl[prio>>3]|=OSMapTbl[prio&0x07];即:OSRdyGrp|=OSTCBBitY OSRdyTbl[prio>>3]|=OSTCBBitX假設(shè)優(yōu)先級(jí)為12——1100bOSMapTbl[1]=00000010OSMapTbl[4]=00010000OSRdyGrp|=0x02;OSRdyTbl[1]|=0x10;2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)OSTCBY=priority>>3;(第幾組)OSTCBBitY=OSMapTbl[priority>>3];(在OSRdyGrp中1的位置)OSTCBX=priority&0x07;OSTCBBitX=OSMapTbl[priority&0x07];91第91頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月使任務(wù)脫離就緒態(tài)將任務(wù)就緒表OSRdyTbl[prio>>3]相應(yīng)元素的相應(yīng)位清零,而且當(dāng)OSRdyTbl[prio>>3]中的所有位都為零時(shí),即全組任務(wù)中沒(méi)有一個(gè)進(jìn)入就緒態(tài)時(shí),OSRdyGrp的相應(yīng)位才為零。If((OSRdyTbl[prio>>3]&=OSMapTbl[prio&0x07])==0);OSRdyGrp&=OSMapTbl[prio>>3];2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)92第92頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月根據(jù)就緒表確定最高優(yōu)先級(jí)通過(guò)OSRdyGrp值確定高3位,假設(shè)為0x2B=101011b,---〉對(duì)應(yīng)OSRdyTbl[2]和OSRdyTbl[5],高優(yōu)先級(jí)為2通過(guò)OSRdyTbl[2]的值來(lái)確定低3位,假設(shè)為0x12=010010b,---〉第2個(gè)和第5個(gè)任務(wù),取高優(yōu)先級(jí)為2,則最高優(yōu)先級(jí)的任務(wù)號(hào)為17OSRdyGrp0100010000010001任務(wù)優(yōu)先級(jí)2017654310891514131211001000102624253130292827343233393837363542404147464544150484955545352515856576362616059[0][1][2][3][4][5][6][7]OSRdyTbl[7]XY2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)93第93頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月源代碼中使用了查表法查表法具有確定的時(shí)間,增加了系統(tǒng)的可預(yù)測(cè)性,uC/OS中所有的系統(tǒng)調(diào)用時(shí)間都是確定的High3=OSUnMapTbl[OSRdyGrp];Low3=OSUnMapTbl[OSRdyTbl[High3]];Prio=(High3<<3)+Low3;OSRdyGrp1207654300XXXYYY任務(wù)優(yōu)先級(jí)2017654310891514131211181617232221201926242531302928273432333938373635424041474645444350484955545352515856576362616059[0][1][2][3][4][5][6][7]OSRdyTbl[7]XY2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)94第94頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月INT8UconstOSUnMapTbl[]={0,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0};優(yōu)先級(jí)判定表OSUnMapTbl[256](os_core.c中)舉例:
如OSRdyGrp的值為00101000B,即0X28,則查得OSUnMapTbl[OSRdyGrp]的值是3,它相應(yīng)于OSRdyGrp中的第3位置1;如OSRdyTbl[3]的值是11100100B,即0XE4,則查OSUnMapTbl[OSRdyTbl[3]]的值是2,則進(jìn)入就緒態(tài)的最高任務(wù)優(yōu)先級(jí)Prio=3*8+2=26
2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)High3=OSUnMapTbl[OSRdyGrp];Low3=OSUnMapTbl[OSRdyTbl[High3]];Prio=(High3<<3)+Low3;95第95頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月2.5TaskschedulervoidOS_Sched(void)/*os_core.c中*/{INT8Uy;OS_ENTER_CRITICAL();if((OSLockNesting=0)&&(OSIntNesting=0)){ y=OSUnMapTbl[OSRdyGrp];獲得最高優(yōu)先級(jí)的高三位 OSPrioHighRdy=(INT8U)((y<<3)+OSUnMapTbl[OSRdyTbl[y]])if(OSPrioHighRdy!=OSPrioCur){ OSTCBHighRdy=OSTCBPrioTbl[OSPrioHighRdy];//得到任務(wù)控制塊指針OSCtxSwCtr++; OS_TASK_SW(); }}OS_EXIT_CRITICAL();}全局變量OSIntNesting判斷是否還有中斷全局變量OSLockNesting判斷是否給調(diào)度器上鎖2、C/OS-Ⅱ內(nèi)核結(jié)構(gòu)96第96頁(yè),課件共142頁(yè),創(chuàng)作于2023年2月調(diào)度器首先從任務(wù)就緒表中查得的最高優(yōu)先級(jí)別就緒任務(wù)的優(yōu)先級(jí)OSPrioHighRdy;然后確認(rèn)這個(gè)就緒的最高任
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中級(jí)會(huì)計(jì)提升計(jì)劃試題及答案
- 工程項(xiàng)目實(shí)施的常見(jiàn)問(wèn)題試題及答案
- 實(shí)施計(jì)劃初級(jí)護(hù)師考試試題與答案綜合
- 福建省寧德市2025屆普通高中畢業(yè)班五月份質(zhì)量檢測(cè)地理試題及答案
- 大一文科數(shù)學(xué)試卷及答案
- 2025廣告公司創(chuàng)新產(chǎn)品推廣計(jì)劃
- 初中生物會(huì)考試卷及答案2024
- 社會(huì)服務(wù)機(jī)構(gòu)年度工作總結(jié)與服務(wù)計(jì)劃
- 幼兒園春季健康教育工作計(jì)劃2025
- 2025年幼兒園體育活動(dòng)計(jì)劃
- 英語(yǔ)主謂一致課件
- DB45T 2306-2021 百香果無(wú)病毒健康種苗栽培技術(shù)規(guī)程
- 腰椎滑脫的臨床特征
- CQI-30中文審核表格資料
- 關(guān)于清理35KV高壓架空線路樹(shù)障的安全技術(shù)措施
- 2024年度企業(yè)收購(gòu)合同:跨國(guó)公司收購(gòu)國(guó)內(nèi)企業(yè)的股權(quán)轉(zhuǎn)讓
- GCS格拉斯哥昏迷量表
- 人體損傷致殘程度分級(jí)(2017)全文
- 中國(guó)遺傳性血色病診療指南2024版解讀
- 美國(guó)加州租房合同范本(2篇)
- DB11-1983-2022 建筑類涂料與膠粘劑揮發(fā)性有機(jī)化合物含量限值標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論