- 相關推薦
基于μC/OS-II操作系統的任務調度機制
論文關鍵詞:μC/OS-II;多任務;任務調度
論文摘要:μC/OS-II操作系統之所以在10多年的時間里作為一個嵌入式實時的多任務操作系統得到了廣泛的應用,原因之一是它的任務機制存在許多的優點。多任務運行的最大難點就在于多任務的調度。
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 引言
嵌入式系統是一種應用范圍非常廣泛的系統。可以這樣理解,除了桌面和服務器外所有計算設備都屬于嵌入式系統。在短短十多年的時間里,伴隨著微技術、軟件技術的發展,嵌入式系統被廣泛的用于如生物儀器、智能汽車、設備、網絡設備、儀器儀表、手持設備等諸多領域。[1] 它是以應用為中心的,而嵌入式操作系統則是嵌入式系統應用中的核心。
嵌入式系統是計算機硬件和軟件的結合體,或許還加上等其他部分,被設計來完成專門的功能。在一些情況下,嵌入式系統是一個大的系統或產品的一部分,就象汽車上的防抱死裝置,與通用計算機相對。最初的嵌入式系統是不帶操作系統的,只是用來完成某一個特定的單一功能,隨著軟硬件技術的發展,完成單一功能的嵌入式系統已經不能適應的需要,因此出現了帶操作系統的嵌入式系統。現在嵌入式系統的準確定義是:以嵌入式計算機為技術核心,面向用戶、面向產品、面向應用,軟硬件可剪裁的,適用于對功能、可靠性、、體積、功耗等綜合性能有嚴格要求的專用計算機系統。[2]
μC/OS-II操作系統是一個完整的,可移植、固化、裁剪的占先式實時多任務操作系統。它之所以這么受歡迎,其中一個很重要的方面是因為它的實時性和多任務管理機制。由此可見它對任務的管理是成功的。在μC/OS-II操作系統中,一個任務,也稱作一個線程,就是一個簡單的程序,這個程序在執行時可以任務CPU完全屬于該程序自己。而多任務的運行實際上并不是有多個CPU讓多任務使用,而是靠CPU在多個任務間的轉換和調度。
2 任務狀態
μC/OS-II操作系統的任務狀態有五種,分別是睡眠態、就緒態、運行態、等待狀態和中斷服務態。
睡眠態是指程序還在存儲設備中,還沒有被μC/OS-II操作系統管理,此時的任務只能通過任務創建函數才能脫離此狀態,調用創建任務函數后,任務才能從睡眠態變成就緒態,在這個意義上來說,睡眠態就是μC/OS-II操作系統的入口,而任務創建函數就是入口的鑰匙。[3]
任務被建立后,任務就進入到了就緒態,準備運行了。如果新建立任務的優先級高于就緒態中的其他任務的優先級,則新建立的任務就會立即得到CPU的使用權,會被優先執行,從而進入到運行態;而在就緒態的任務也可以通過調用任務刪除函數回到睡眠態。
由于任何時刻只有一個任務處于運行態,所以一旦運行態中的任務被剝奪了CPU的使用權,它就從運行態回到等待狀態。也可以通過人為的控制郵箱、信號量、延遲時間等使正在運行的任務從運行態轉到等待狀態。如果正在運行的任務是允許中斷的,此時若中斷服務程序正好到來,正在運行的任務也會進入中斷服務狀態,而進入中斷服務狀態的任務只有中斷任務把CPU的控制權還給中斷前的任務時,才能從中斷服務狀態退出來。運行態的任務也是可以被刪除的,如果此時調用了任務刪除函數,運行態的任務也會直接回到睡眠態。
一旦正在運行的任務通過將自己延遲一段時間或是由于要等待某一事件的發生而進入到了等待狀態,如果延遲時間滿,或是等待的某一事件發生了,任務就進入到了就緒態;或者等待狀態的任務被刪除了,那么它也會進入到睡眠態。由此看來,睡眠態又是μC/OS-II操作系統的出口,而出口的鑰匙是任務刪除函數,與任務建立函數相對。
3 任務調度
μC/OS-II操作系統總是運行進入就緒態任務中優先級最高的任務。它可以管理多達64個任務,但目前的版本里已經有兩個任務被系統占用。一般來說用戶可以使用從優先級4到優先級OS_LOWEST_PRIO-4一共56個優先級。對于多任務的管理,μC/OS-II操作系統是通過調度器完成了。其中任務級的調度是由函數OSSched()完成,而中斷級的調度是通過函數OSIntExiT()完成。這兩個函數是很相似的,所不同的其中一點就是OSSched()調用了任務切換函數OS_TASK_SW(),而退出中斷服務子程序OSIntExiT()卻調用的是OSIntCtxSw()函數。這是因為中斷服務子程序已經將CPU寄存器存入到中斷了的任務的堆棧中,所以只需要恢復堆棧中的內容即可。
μC/OS-II操作系統是一個商業用的實時操作系統。這是因為它是可剝奪型內核。可剝奪型內核是指當有高優先級任務到來時,不用等待低優先級的任務執行完畢,可以直接切換到高優先級的任務執行,即高優先級任務可以剝奪低優先級任務的CPU的使用權。μC/OS-II操作系統是一個多任務的實時操作系統。對于多任務的調度,它主要通過以下四類方法的使用來完成。
3.1優先級
對于μC/OS-II操作系統定義的每一個任務,在創建任務之初,一定會給這個任務分配一個合適的優先級。如果一個操作系統在調度算法選擇上只是基于優先級調度,即支持靜態優先級,那么這個操作系統只是一個準實時操作系統。而在μC/OS-II操作系統中,任務的優先級是可變的,即支持動態優先級。因此μC/OS-II操作系統是一個實時操作系統。改變任務優先級的函數是OSTaskChangePrio()。
3.2互斥信號量與信號量
在μC/OS-II操作系統中,互斥信號量被定義為一個二值信號,可以實現對共享資源的獨占式占用。當這個資源被一個任務占用時,就被定義為1。其他的需要這個資源的任務如果檢查到互斥型信號量是1,則進入等待狀態,當占用此資源的任務釋放這個資源時,互斥型信號量則被置為0,此時等待這個資源的任務隊列中優先級最高的任務則可以獲得這個資源而得以執行。
在μC/OS-II操作系統中,信號量有兩種用法:一種是執行與互斥信號量相同的功能。二是如果一個資源允許多個任務調用,但現在要調用此資源的任務數目卻多于允許使用此資源的數目,此時就需要用到信號量。這種情況下就會為資源設置一個計數器,如果被一個任務調用一次就自動減一,被一個任務釋放一次就自動加一,只要這個計數器是大于零的,其他的任務就可以調用這個資源。
3.3消息郵箱和消息隊列
用來傳遞消息緩沖區指針的數據結構叫做消息郵箱。消息郵箱所傳遞的是指向消息的指針,并非消息本身。如果一個任務獲得了這個指針,即獲得了該指針指向的一個特定數據結構。
消息郵箱不僅用來傳遞一個消息,而且也可定義一個指針數組,讓數組的每個元素都存放一個消息緩沖區指針。那么任務就可通過這個指針數組指針的方法來傳遞多個消息。這種可以傳遞多個消息的數據結構叫做消息隊列。
消息郵箱和消息隊列在功能上的不同點是郵箱中只能存放一則消息指針,而隊列可以存放多則消息指針。
3.4事件標志組
當某個任務需要與多個任務同步時,必須要使用事件標志組。事件標志組一旦建立之后,只有當某個任務需要事件標志組中的某些事件標志位(置位或者清0),這個任務才能繼續運行。而且幾個任務可以同時得到所需要的事件標志而進入就緒態。因此只要任務所需要的標志位滿足要求,任務便可以進入就緒態。而使用信號量的任務是在等待該信號量的任務中優先級最高的任務才能得到信號量進入就緒態。
事件標志組可以使一個任務與多個任務同步,而信號量只能使一個任務與另一個任務同步。這是事件標志組與信號量的不同之處。
4 結論
本文在理論上對μC/OS-II操作系統的任務調度原理及方法進行了詳細的研究,了解了μC/OS-II操作系統所定義的任務狀態,找到了整個狀態循環過程中的出口和入口,并分析了此操作系統是如何運用優先級、信號量等一些方法進行任務的調度。在研究的同時,也使得我們了解了μC/OS-II操作系統不同于其他一些操作系統的地方。正是由于這些不同點,使得μC/OS-II操作系統在短短十多年的時間里迅速發展起來并得到了廣泛的應用。
參考文獻:
[1]季志均,馬文麗,陳虎,鄭文嶺.四種嵌入式實時操作系統關鍵技術分析[J].應用研究,2005,(9):4-8.
[2]張.兩種嵌入式實時操作系統的分析和比較[J].移動,2003.
[3]Jean J. Labrosse. 邵貝貝.等.μC/OS2Ⅱ源碼公開的實時嵌入式操作系統(第2 版)[M].北京:北京航空航天大學出版社,2003.
[4]任哲.嵌入式實時操作系統μC/OS-II原理及應用[M].北京: 北京航空航天大學出版社,2005.
[5]涂剛,陽富民,胡貫榮。嵌入式操作系統綜述[J].計算機應用研究,2000,(11):4-9.
【基于μC/OS-II操作系統的任務調度機制】相關文章:
組件機制與操作系統的實現03-18
一種基于比特表的實時多任務新調度算法03-18
移動通信企業基于4C理論的體驗營銷03-21
基于公司治理的盈利分配機制11-23
基于PKI機制的公鑰加密體系研究12-08
基于氧化應激學說的衰老機制探究05-09
基于貨物當前狀態全程跟蹤的調度算法03-07