- 相關(guān)推薦
基于μC/OS-II操作系統(tǒng)的任務(wù)調(diào)度機(jī)制
論文關(guān)鍵詞:μC/OS-II;多任務(wù);任務(wù)調(diào)度
論文摘要:μC/OS-II操作系統(tǒng)之所以在10多年的時間里作為一個嵌入式實(shí)時的多任務(wù)操作系統(tǒng)得到了廣泛的應(yīng)用,原因之一是它的任務(wù)機(jī)制存在許多的優(yōu)點(diǎn)。多任務(wù)運(yùn)行的最大難點(diǎn)就在于多任務(wù)的調(diào)度。
WANG Yu-rong,ZHU Jian-bin
(Computer Science College Wuhan University of Science and Engineering,Wuhan 430073,China)
Abstract:As a multi-task embedded real time operation system, μC/OS-II Operating Systems has been widely used in more ten years.One of the reason is that the Operating Systems has many advantages.The hardest point is the schedul of tasks when we run multi-task Operating Systems.
Key words:μC/OS-II;Multi-task;task-scheduling
1 引言
嵌入式系統(tǒng)是一種應(yīng)用范圍非常廣泛的系統(tǒng)。可以這樣理解,除了桌面和服務(wù)器外所有計算設(shè)備都屬于嵌入式系統(tǒng)。在短短十多年的時間里,伴隨著微技術(shù)、軟件技術(shù)的發(fā)展,嵌入式系統(tǒng)被廣泛的用于如生物儀器、智能汽車、設(shè)備、網(wǎng)絡(luò)設(shè)備、儀器儀表、手持設(shè)備等諸多領(lǐng)域。[1] 它是以應(yīng)用為中心的,而嵌入式操作系統(tǒng)則是嵌入式系統(tǒng)應(yīng)用中的核心。
嵌入式系統(tǒng)是計算機(jī)硬件和軟件的結(jié)合體,或許還加上等其他部分,被設(shè)計來完成專門的功能。在一些情況下,嵌入式系統(tǒng)是一個大的系統(tǒng)或產(chǎn)品的一部分,就象汽車上的防抱死裝置,與通用計算機(jī)相對。最初的嵌入式系統(tǒng)是不帶操作系統(tǒng)的,只是用來完成某一個特定的單一功能,隨著軟硬件技術(shù)的發(fā)展,完成單一功能的嵌入式系統(tǒng)已經(jīng)不能適應(yīng)的需要,因此出現(xiàn)了帶操作系統(tǒng)的嵌入式系統(tǒng)。現(xiàn)在嵌入式系統(tǒng)的準(zhǔn)確定義是:以嵌入式計算機(jī)為技術(shù)核心,面向用戶、面向產(chǎn)品、面向應(yīng)用,軟硬件可剪裁的,適用于對功能、可靠性、、體積、功耗等綜合性能有嚴(yán)格要求的專用計算機(jī)系統(tǒng)。[2]
μC/OS-II操作系統(tǒng)是一個完整的,可移植、固化、裁剪的占先式實(shí)時多任務(wù)操作系統(tǒng)。它之所以這么受歡迎,其中一個很重要的方面是因?yàn)樗膶?shí)時性和多任務(wù)管理機(jī)制。由此可見它對任務(wù)的管理是成功的。在μC/OS-II操作系統(tǒng)中,一個任務(wù),也稱作一個線程,就是一個簡單的程序,這個程序在執(zhí)行時可以任務(wù)CPU完全屬于該程序自己。而多任務(wù)的運(yùn)行實(shí)際上并不是有多個CPU讓多任務(wù)使用,而是靠CPU在多個任務(wù)間的轉(zhuǎn)換和調(diào)度。
2 任務(wù)狀態(tài)
μC/OS-II操作系統(tǒng)的任務(wù)狀態(tài)有五種,分別是睡眠態(tài)、就緒態(tài)、運(yùn)行態(tài)、等待狀態(tài)和中斷服務(wù)態(tài)。
睡眠態(tài)是指程序還在存儲設(shè)備中,還沒有被μC/OS-II操作系統(tǒng)管理,此時的任務(wù)只能通過任務(wù)創(chuàng)建函數(shù)才能脫離此狀態(tài),調(diào)用創(chuàng)建任務(wù)函數(shù)后,任務(wù)才能從睡眠態(tài)變成就緒態(tài),在這個意義上來說,睡眠態(tài)就是μC/OS-II操作系統(tǒng)的入口,而任務(wù)創(chuàng)建函數(shù)就是入口的鑰匙。[3]
任務(wù)被建立后,任務(wù)就進(jìn)入到了就緒態(tài),準(zhǔn)備運(yùn)行了。如果新建立任務(wù)的優(yōu)先級高于就緒態(tài)中的其他任務(wù)的優(yōu)先級,則新建立的任務(wù)就會立即得到CPU的使用權(quán),會被優(yōu)先執(zhí)行,從而進(jìn)入到運(yùn)行態(tài);而在就緒態(tài)的任務(wù)也可以通過調(diào)用任務(wù)刪除函數(shù)回到睡眠態(tài)。
由于任何時刻只有一個任務(wù)處于運(yùn)行態(tài),所以一旦運(yùn)行態(tài)中的任務(wù)被剝奪了CPU的使用權(quán),它就從運(yùn)行態(tài)回到等待狀態(tài)。也可以通過人為的控制郵箱、信號量、延遲時間等使正在運(yùn)行的任務(wù)從運(yùn)行態(tài)轉(zhuǎn)到等待狀態(tài)。如果正在運(yùn)行的任務(wù)是允許中斷的,此時若中斷服務(wù)程序正好到來,正在運(yùn)行的任務(wù)也會進(jìn)入中斷服務(wù)狀態(tài),而進(jìn)入中斷服務(wù)狀態(tài)的任務(wù)只有中斷任務(wù)把CPU的控制權(quán)還給中斷前的任務(wù)時,才能從中斷服務(wù)狀態(tài)退出來。運(yùn)行態(tài)的任務(wù)也是可以被刪除的,如果此時調(diào)用了任務(wù)刪除函數(shù),運(yùn)行態(tài)的任務(wù)也會直接回到睡眠態(tài)。
一旦正在運(yùn)行的任務(wù)通過將自己延遲一段時間或是由于要等待某一事件的發(fā)生而進(jìn)入到了等待狀態(tài),如果延遲時間滿,或是等待的某一事件發(fā)生了,任務(wù)就進(jìn)入到了就緒態(tài);或者等待狀態(tài)的任務(wù)被刪除了,那么它也會進(jìn)入到睡眠態(tài)。由此看來,睡眠態(tài)又是μC/OS-II操作系統(tǒng)的出口,而出口的鑰匙是任務(wù)刪除函數(shù),與任務(wù)建立函數(shù)相對。
3 任務(wù)調(diào)度
μC/OS-II操作系統(tǒng)總是運(yùn)行進(jìn)入就緒態(tài)任務(wù)中優(yōu)先級最高的任務(wù)。它可以管理多達(dá)64個任務(wù),但目前的版本里已經(jīng)有兩個任務(wù)被系統(tǒng)占用。一般來說用戶可以使用從優(yōu)先級4到優(yōu)先級OS_LOWEST_PRIO-4一共56個優(yōu)先級。對于多任務(wù)的管理,μC/OS-II操作系統(tǒng)是通過調(diào)度器完成了。其中任務(wù)級的調(diào)度是由函數(shù)OSSched()完成,而中斷級的調(diào)度是通過函數(shù)OSIntExiT()完成。這兩個函數(shù)是很相似的,所不同的其中一點(diǎn)就是OSSched()調(diào)用了任務(wù)切換函數(shù)OS_TASK_SW(),而退出中斷服務(wù)子程序OSIntExiT()卻調(diào)用的是OSIntCtxSw()函數(shù)。這是因?yàn)橹袛喾⻊?wù)子程序已經(jīng)將CPU寄存器存入到中斷了的任務(wù)的堆棧中,所以只需要恢復(fù)堆棧中的內(nèi)容即可。
μC/OS-II操作系統(tǒng)是一個商業(yè)用的實(shí)時操作系統(tǒng)。這是因?yàn)樗强蓜儕Z型內(nèi)核。可剝奪型內(nèi)核是指當(dāng)有高優(yōu)先級任務(wù)到來時,不用等待低優(yōu)先級的任務(wù)執(zhí)行完畢,可以直接切換到高優(yōu)先級的任務(wù)執(zhí)行,即高優(yōu)先級任務(wù)可以剝奪低優(yōu)先級任務(wù)的CPU的使用權(quán)。μC/OS-II操作系統(tǒng)是一個多任務(wù)的實(shí)時操作系統(tǒng)。對于多任務(wù)的調(diào)度,它主要通過以下四類方法的使用來完成。
3.1優(yōu)先級
對于μC/OS-II操作系統(tǒng)定義的每一個任務(wù),在創(chuàng)建任務(wù)之初,一定會給這個任務(wù)分配一個合適的優(yōu)先級。如果一個操作系統(tǒng)在調(diào)度算法選擇上只是基于優(yōu)先級調(diào)度,即支持靜態(tài)優(yōu)先級,那么這個操作系統(tǒng)只是一個準(zhǔn)實(shí)時操作系統(tǒng)。而在μC/OS-II操作系統(tǒng)中,任務(wù)的優(yōu)先級是可變的,即支持動態(tài)優(yōu)先級。因此μC/OS-II操作系統(tǒng)是一個實(shí)時操作系統(tǒng)。改變?nèi)蝿?wù)優(yōu)先級的函數(shù)是OSTaskChangePrio()。
3.2互斥信號量與信號量
在μC/OS-II操作系統(tǒng)中,互斥信號量被定義為一個二值信號,可以實(shí)現(xiàn)對共享資源的獨(dú)占式占用。當(dāng)這個資源被一個任務(wù)占用時,就被定義為1。其他的需要這個資源的任務(wù)如果檢查到互斥型信號量是1,則進(jìn)入等待狀態(tài),當(dāng)占用此資源的任務(wù)釋放這個資源時,互斥型信號量則被置為0,此時等待這個資源的任務(wù)隊(duì)列中優(yōu)先級最高的任務(wù)則可以獲得這個資源而得以執(zhí)行。
在μC/OS-II操作系統(tǒng)中,信號量有兩種用法:一種是執(zhí)行與互斥信號量相同的功能。二是如果一個資源允許多個任務(wù)調(diào)用,但現(xiàn)在要調(diào)用此資源的任務(wù)數(shù)目卻多于允許使用此資源的數(shù)目,此時就需要用到信號量。這種情況下就會為資源設(shè)置一個計數(shù)器,如果被一個任務(wù)調(diào)用一次就自動減一,被一個任務(wù)釋放一次就自動加一,只要這個計數(shù)器是大于零的,其他的任務(wù)就可以調(diào)用這個資源。
3.3消息郵箱和消息隊(duì)列
用來傳遞消息緩沖區(qū)指針的數(shù)據(jù)結(jié)構(gòu)叫做消息郵箱。消息郵箱所傳遞的是指向消息的指針,并非消息本身。如果一個任務(wù)獲得了這個指針,即獲得了該指針指向的一個特定數(shù)據(jù)結(jié)構(gòu)。
消息郵箱不僅用來傳遞一個消息,而且也可定義一個指針數(shù)組,讓數(shù)組的每個元素都存放一個消息緩沖區(qū)指針。那么任務(wù)就可通過這個指針數(shù)組指針的方法來傳遞多個消息。這種可以傳遞多個消息的數(shù)據(jù)結(jié)構(gòu)叫做消息隊(duì)列。
消息郵箱和消息隊(duì)列在功能上的不同點(diǎn)是郵箱中只能存放一則消息指針,而隊(duì)列可以存放多則消息指針。
3.4事件標(biāo)志組
當(dāng)某個任務(wù)需要與多個任務(wù)同步時,必須要使用事件標(biāo)志組。事件標(biāo)志組一旦建立之后,只有當(dāng)某個任務(wù)需要事件標(biāo)志組中的某些事件標(biāo)志位(置位或者清0),這個任務(wù)才能繼續(xù)運(yùn)行。而且?guī)讉任務(wù)可以同時得到所需要的事件標(biāo)志而進(jìn)入就緒態(tài)。因此只要任務(wù)所需要的標(biāo)志位滿足要求,任務(wù)便可以進(jìn)入就緒態(tài)。而使用信號量的任務(wù)是在等待該信號量的任務(wù)中優(yōu)先級最高的任務(wù)才能得到信號量進(jìn)入就緒態(tài)。
事件標(biāo)志組可以使一個任務(wù)與多個任務(wù)同步,而信號量只能使一個任務(wù)與另一個任務(wù)同步。這是事件標(biāo)志組與信號量的不同之處。
4 結(jié)論
本文在理論上對μC/OS-II操作系統(tǒng)的任務(wù)調(diào)度原理及方法進(jìn)行了詳細(xì)的研究,了解了μC/OS-II操作系統(tǒng)所定義的任務(wù)狀態(tài),找到了整個狀態(tài)循環(huán)過程中的出口和入口,并分析了此操作系統(tǒng)是如何運(yùn)用優(yōu)先級、信號量等一些方法進(jìn)行任務(wù)的調(diào)度。在研究的同時,也使得我們了解了μC/OS-II操作系統(tǒng)不同于其他一些操作系統(tǒng)的地方。正是由于這些不同點(diǎn),使得μC/OS-II操作系統(tǒng)在短短十多年的時間里迅速發(fā)展起來并得到了廣泛的應(yīng)用。
參考文獻(xiàn):
[1]季志均,馬文麗,陳虎,鄭文嶺.四種嵌入式實(shí)時操作系統(tǒng)關(guān)鍵技術(shù)分析[J].應(yīng)用研究,2005,(9):4-8.
[2]張.兩種嵌入式實(shí)時操作系統(tǒng)的分析和比較[J].移動,2003.
[3]Jean J. Labrosse. 邵貝貝.等.μC/OS2Ⅱ源碼公開的實(shí)時嵌入式操作系統(tǒng)(第2 版)[M].北京:北京航空航天大學(xué)出版社,2003.
[4]任哲.嵌入式實(shí)時操作系統(tǒng)μC/OS-II原理及應(yīng)用[M].北京: 北京航空航天大學(xué)出版社,2005.
[5]涂剛,陽富民,胡貫榮。嵌入式操作系統(tǒng)綜述[J].計算機(jī)應(yīng)用研究,2000,(11):4-9.
【基于μC/OS-II操作系統(tǒng)的任務(wù)調(diào)度機(jī)制】相關(guān)文章:
基于MSP430單片機(jī)的實(shí)時多任務(wù)操作系統(tǒng)03-18
組件機(jī)制與操作系統(tǒng)的實(shí)現(xiàn)03-18
一種基于比特表的實(shí)時多任務(wù)新調(diào)度算法03-18
移動通信企業(yè)基于4C理論的體驗(yàn)營銷03-21
基于公司治理的盈利分配機(jī)制11-23
基于PKI機(jī)制的公鑰加密體系研究12-08
基于氧化應(yīng)激學(xué)說的衰老機(jī)制探究05-09